From 18fa8c464759b33d2c7d47765475168e394ed8df Mon Sep 17 00:00:00 2001 From: Aaron Beitch Date: Wed, 16 May 2018 09:16:19 -0700 Subject: [PATCH] EOS 4.20.5F --- .../arista-exp-eos-igmpsnooping.yang | 4 + .../qos/arista-exp-eos-qos-acl-config.yang | 1121 +++++++++++++++++ .../models/qos/arista-exp-eos-qos-config.yang | 682 ++++++++++ .../eos/models/qos/arista-exp-eos-qos.yang | 25 + .../eos/models/vlan/vlan-translation.yang | 157 ++- .../models/acl/arista-acl-deviations.yang | 116 +- .../models/bgp/arista-bgp-deviations.yang | 51 +- .../interfaces/arista-intf-augments.yang | 22 + .../interfaces/arista-intf-deviations.yang | 110 +- .../models/isis/arista-isis-augments.yang | 30 + .../models/isis/arista-isis-deviations.yang | 244 +++- .../models/lacp/arista-lacp-augments.yang | 4 +- .../models/lacp/arista-lacp-deviations.yang | 10 - .../models/lldp/arista-lldp-augments.yang | 69 + .../models/lldp/arista-lldp-deviations.yang | 30 +- .../arista-local-routing-deviations.yang | 76 ++ .../models/mpls/arista-mpls-augments.yang | 27 + .../arista-netinst-deviations.yang | 10 +- .../arista-vlan-augments.yang | 47 +- 19 files changed, 2724 insertions(+), 111 deletions(-) create mode 100644 experimental/eos/models/qos/arista-exp-eos-qos-acl-config.yang create mode 100644 experimental/eos/models/qos/arista-exp-eos-qos-config.yang create mode 100644 experimental/eos/models/qos/arista-exp-eos-qos.yang create mode 100644 release/openconfig/models/isis/arista-isis-augments.yang create mode 100644 release/openconfig/models/lldp/arista-lldp-augments.yang create mode 100644 release/openconfig/models/local-routing/arista-local-routing-deviations.yang create mode 100644 release/openconfig/models/mpls/arista-mpls-augments.yang diff --git a/experimental/eos/models/igmpsnooping/arista-exp-eos-igmpsnooping.yang b/experimental/eos/models/igmpsnooping/arista-exp-eos-igmpsnooping.yang index f08164b..dcede08 100644 --- a/experimental/eos/models/igmpsnooping/arista-exp-eos-igmpsnooping.yang +++ b/experimental/eos/models/igmpsnooping/arista-exp-eos-igmpsnooping.yang @@ -19,6 +19,10 @@ module arista-exp-eos-igmpsnooping { "Models for the IGMP Snooping subsystem of Arista EOS Copyright (c) 2017 Arista Networks, Inc. All rights reserved."; + revision 2017-10-23 { + description + "Initial revision"; + } augment "/eos-exp:arista/eos-exp:eos" { container bridging { diff --git a/experimental/eos/models/qos/arista-exp-eos-qos-acl-config.yang b/experimental/eos/models/qos/arista-exp-eos-qos-acl-config.yang new file mode 100644 index 0000000..3af848b --- /dev/null +++ b/experimental/eos/models/qos/arista-exp-eos-qos-acl-config.yang @@ -0,0 +1,1121 @@ + +module arista-exp-eos-qos-acl-config { + yang-version 1; + + namespace "http://arista.com/yang/experimental/eos/qos/acl"; + prefix "qos-acl-config-exp"; + + import arista-eos-types { prefix eos-types; } + import arista-exp-eos { + prefix eos-exp; + } + import arista-exp-eos-qos { + prefix qos-exp; + } + + organization "Arista Networks "; + + description "Models for qos subsystem of Arista EOS + Copyright (c) 2017 Arista Networks, Inc. All rights reserved."; + + revision 2017-09-26 { + description + "Initial revision"; + } + + augment "/eos-exp:arista/eos-exp:eos/qos-exp:qos"{ + container acl { + description "qos acl subsystem config/state"; + container input { + description "config"; + container cli { + description "set from CLI/Openconfig"; + uses Qos-Input-AclConfig; + } + } + } + } + + typedef Acl-Ecn { + type enumeration { + enum ce { + description "Type: Acl::Ecn, Name: ce, Value: 3"; + } + enum dontCare { + description "Type: Acl::Ecn, Name: dontCare, Value: 0"; + } + enum ect { + description "Type: Acl::Ecn, Name: ect, Value: 4"; + } + enum ectCe { + description "Type: Acl::Ecn, Name: ectCe, Value: 1"; + } + enum nonEct { + description "Type: Acl::Ecn, Name: nonEct, Value: 2"; + } + } + description "Type: Acl::Ecn"; + } + + grouping Qos-Action { + description "Type: Qos::Action"; + leaf actionType { + type Qos-ActionType; + description "Path: /actionType, " + + "Type: enum Qos::ActionType"; + } + container rate { + description "Path: /rate, " + + "Type: entity Qos::ActionRate"; + uses Qos-ActionRate; + } + leaf value { + type uint32; + description "Path: /value, " + + "Type: U32"; + } + } + + grouping Qos-ActionRate { + description "Type: Qos::ActionRate"; + leaf rateUnit { + type Qos-RateUnit; + description "Path: /rateUnit, " + + "Type: enum Qos::RateUnit"; + } + leaf val { + type uint32; + description "Path: /val, " + + "Type: value Qos::ActionRateType"; + } + } + + typedef Qos-ActionType { + type enumeration { + enum actionSetBandwidth { + description "Type: Qos::ActionType, Name: actionSetBandwidth, Value: 1"; + } + enum actionSetCos { + description "Type: Qos::ActionType, Name: actionSetCos, Value: 2"; + } + enum actionSetDrop { + description "Type: Qos::ActionType, Name: actionSetDrop, Value: 5"; + } + enum actionSetDropPrecedence { + description "Type: Qos::ActionType, Name: actionSetDropPrecedence, Value: 6"; + } + enum actionSetDscp { + description "Type: Qos::ActionType, Name: actionSetDscp, Value: 3"; + } + enum actionSetShape { + description "Type: Qos::ActionType, Name: actionSetShape, Value: 0"; + } + enum actionSetTc { + description "Type: Qos::ActionType, Name: actionSetTc, Value: 4"; + } + } + description "Type: Qos::ActionType"; + } + + typedef Qos-BurstUnit { + type enumeration { + enum burstUnitBytes { + description "Type: Qos::BurstUnit, Name: burstUnitBytes, Value: 0"; + } + enum burstUnitKBytes { + description "Type: Qos::BurstUnit, Name: burstUnitKBytes, Value: 1"; + } + enum burstUnitMBytes { + description "Type: Qos::BurstUnit, Name: burstUnitMBytes, Value: 2"; + } + enum burstUnitPackets { + description "Type: Qos::BurstUnit, Name: burstUnitPackets, Value: 3"; + } + } + description "Type: Qos::BurstUnit"; + } + + grouping Qos-ClassAction { + description "Type: Qos::ClassAction"; + leaf count { + type boolean; + description "Path: /count, " + + "Type: bool"; + } + leaf name { + type string; + description "Path: /name, " + + "Type: Tac::Name"; + } + container policer { + description "Path: /policer, " + + "Type: entity Qos::PolicerConfig"; + uses Qos-PolicerConfig; + } + list policyAction { + key actionType; + description "Path: /policyAction, " + + "Type: ['actionType' enum Qos::ActionType]entity Qos::Action"; + uses Qos-Action; + } + } + + grouping Qos-ClassMapConfig { + description "Type: Qos::ClassMapConfig"; + leaf cpStaticType { + type Qos-ClassMapCpStaticType; + description "Path: /cpStaticType, " + + "Type: enum Qos::ClassMapCpStaticType"; + } + leaf cpType { + type Qos-ClassMapCpType; + description "Path: /cpType, " + + "Type: enum Qos::ClassMapCpType"; + } + leaf dynamic { + type boolean; + description "Path: /dynamic, " + + "Type: bool"; + } + list match { + key option; + description "Path: /match, " + + "Type: ['option' enum Qos::ClassMapMatchOption]entity Qos::ClassMapMatch"; + uses Qos-ClassMapMatch; + } + leaf matchCondition { + type Qos-ClassMapMatchCondition; + description "Path: /matchCondition, " + + "Type: enum Qos::ClassMapMatchCondition"; + } + leaf name { + type string; + description "Path: /name, " + + "Type: Tac::Name"; + } + leaf type { + type Qos-MapType; + description "Path: /type, " + + "Type: enum Qos::MapType"; + } + leaf uniqueId { + type eos-types:double; + description "Path: /uniqueId, " + + "Type: value Qos::UniqueId"; + } + leaf version { + type uint32; + description "Path: /version, " + + "Type: U32"; + } + } + + typedef Qos-ClassMapCpStaticType { + type enumeration { + enum cmapCpStaticAclLog { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticAclLog, Value: 20"; + } + enum cmapCpStaticArp { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticArp, Value: 4"; + } + enum cmapCpStaticArpInspect { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticArpInspect, Value: 57"; + } + enum cmapCpStaticArpResolver { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticArpResolver, Value: 17"; + } + enum cmapCpStaticBfd { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticBfd, Value: 37"; + } + enum cmapCpStaticBgp { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticBgp, Value: 35"; + } + enum cmapCpStaticBpdu { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticBpdu, Value: 1"; + } + enum cmapCpStaticCfm { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticCfm, Value: 55"; + } + enum cmapCpStaticCfmSnoop { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticCfmSnoop, Value: 56"; + } + enum cmapCpStaticCvx { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticCvx, Value: 49"; + } + enum cmapCpStaticCvxHeartbeat { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticCvxHeartbeat, Value: 50"; + } + enum cmapCpStaticDefault { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticDefault, Value: 19"; + } + enum cmapCpStaticDot1xMab { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticDot1xMab, Value: 54"; + } + enum cmapCpStaticDrop { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticDrop, Value: 18"; + } + enum cmapCpStaticEgressAclLog { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticEgressAclLog, Value: 45"; + } + enum cmapCpStaticGlean { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticGlean, Value: 13"; + } + enum cmapCpStaticIgmp { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticIgmp, Value: 10"; + } + enum cmapCpStaticInvalid { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticInvalid, Value: 0"; + } + enum cmapCpStaticIpBroadcast { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticIpBroadcast, Value: 23"; + } + enum cmapCpStaticIpMc { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticIpMc, Value: 22"; + } + enum cmapCpStaticIpUnicast { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticIpUnicast, Value: 21"; + } + enum cmapCpStaticIpmcMiss { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticIpmcMiss, Value: 8"; + } + enum cmapCpStaticIpmcRsvd { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticIpmcRsvd, Value: 7"; + } + enum cmapCpStaticIpv6Nd { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticIpv6Nd, Value: 24"; + } + enum cmapCpStaticL2Broadcast { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticL2Broadcast, Value: 27"; + } + enum cmapCpStaticL2Rsvd { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticL2Rsvd, Value: 29"; + } + enum cmapCpStaticL2Unicast { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticL2Unicast, Value: 28"; + } + enum cmapCpStaticL3DestMiss { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticL3DestMiss, Value: 9"; + } + enum cmapCpStaticL3LpmOverflow { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticL3LpmOverflow, Value: 32"; + } + enum cmapCpStaticL3SlowPath { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticL3SlowPath, Value: 14"; + } + enum cmapCpStaticL3Ttl0 { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticL3Ttl0, Value: 16"; + } + enum cmapCpStaticL3Ttl1 { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticL3Ttl1, Value: 15"; + } + enum cmapCpStaticLacp { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticLacp, Value: 2"; + } + enum cmapCpStaticLinkLocal { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticLinkLocal, Value: 33"; + } + enum cmapCpStaticLldp { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticLldp, Value: 3"; + } + enum cmapCpStaticMacLearn { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticMacLearn, Value: 53"; + } + enum cmapCpStaticMax { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticMax, Value: 58"; + } + enum cmapCpStaticMcastSnoop { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticMcastSnoop, Value: 34"; + } + enum cmapCpStaticMirroring { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticMirroring, Value: 51"; + } + enum cmapCpStaticMlag { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticMlag, Value: 36"; + } + enum cmapCpStaticMplsLabelMiss { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticMplsLabelMiss, Value: 47"; + } + enum cmapCpStaticMplsTtl01 { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticMplsTtl01, Value: 46"; + } + enum cmapCpStaticMtu { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticMtu, Value: 44"; + } + enum cmapCpStaticMvrp { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticMvrp, Value: 42"; + } + enum cmapCpStaticOspfIsis { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticOspfIsis, Value: 31"; + } + enum cmapCpStaticPim { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticPim, Value: 48"; + } + enum cmapCpStaticPimPtp { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticPimPtp, Value: 30"; + } + enum cmapCpStaticPtp { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticPtp, Value: 41"; + } + enum cmapCpStaticPtpSnoop { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticPtpSnoop, Value: 52"; + } + enum cmapCpStaticSelfIp { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticSelfIp, Value: 6"; + } + enum cmapCpStaticSelfIpTc6To7 { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticSelfIpTc6To7, Value: 5"; + } + enum cmapCpStaticSflow { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticSflow, Value: 26"; + } + enum cmapCpStaticTc3To5 { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticTc3To5, Value: 11"; + } + enum cmapCpStaticTc6To7 { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticTc6To7, Value: 12"; + } + enum cmapCpStaticUnicastArp { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticUnicastArp, Value: 25"; + } + enum cmapCpStaticUrm { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticUrm, Value: 38"; + } + enum cmapCpStaticVrrp { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticVrrp, Value: 43"; + } + enum cmapCpStaticVxlanEncap { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticVxlanEncap, Value: 39"; + } + enum cmapCpStaticVxlanVtepLearn { + description "Type: Qos::ClassMapCpStaticType, Name: cmapCpStaticVxlanVtepLearn, Value: 40"; + } + } + description "Type: Qos::ClassMapCpStaticType"; + } + + typedef Qos-ClassMapCpType { + type enumeration { + enum cmapCpDynamic { + description "Type: Qos::ClassMapCpType, Name: cmapCpDynamic, Value: 1"; + } + enum cmapCpNone { + description "Type: Qos::ClassMapCpType, Name: cmapCpNone, Value: 2"; + } + enum cmapCpStatic { + description "Type: Qos::ClassMapCpType, Name: cmapCpStatic, Value: 0"; + } + } + description "Type: Qos::ClassMapCpType"; + } + + grouping Qos-ClassMapMatch { + description "Type: Qos::ClassMapMatch"; + leaf builtInClassMatchValue { + type Qos-ClassMapMatchBuiltIn; + description "Path: /builtInClassMatchValue, " + + "Type: enum Qos::ClassMapMatchBuiltIn"; + } + container dscpEcnValue { + description "Path: /dscpEcnValue, " + + "Type: entity Qos::ClassMapMatchDscpEcn"; + uses Qos-ClassMapMatchDscpEcn; + } + list intColl { + key index; + description "Path: /intColl, " + + "Type: [U32]U32"; + leaf index { + type uint32; + description "Path: /intColl/, " + + "Type: U32"; + } + leaf value { + type uint32; + description "Path: /intColl/, " + + "Type: U32"; + } + } + leaf intValue { + type uint32; + description "Path: /intValue, " + + "Type: U32"; + } + container macValue { + description "Path: /macValue, " + + "Type: entity Qos::ClassMapMatchMac"; + uses Qos-ClassMapMatchMac; + } + container mplsTrafficClassVal { + description "Path: /mplsTrafficClassVal, " + + "Type: entity Qos::ClassMapMatchMplsTrafficClass"; + uses Qos-ClassMapMatchMplsTrafficClass; + } + leaf option { + type Qos-ClassMapMatchOption; + description "Path: /option, " + + "Type: enum Qos::ClassMapMatchOption"; + } + leaf strValue { + type string; + description "Path: /strValue, " + + "Type: Tac::String"; + } + container vlanValue { + description "Path: /vlanValue, " + + "Type: entity Qos::ClassMapMatchVlan"; + uses Qos-ClassMapMatchVlan; + } + } + + typedef Qos-ClassMapMatchBuiltIn { + type enumeration { + enum matchArp { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchArp, Value: 35"; + } + enum matchArpNeeded { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchArpNeeded, Value: 15"; + } + enum matchBfd { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchBfd, Value: 20"; + } + enum matchBpdu { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchBpdu, Value: 6"; + } + enum matchDhcp { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchDhcp, Value: 29"; + } + enum matchIgmp { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchIgmp, Value: 34"; + } + enum matchInvalid { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchInvalid, Value: 0"; + } + enum matchIpBroadcast { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchIpBroadcast, Value: 39"; + } + enum matchIpv6nd { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchIpv6nd, Value: 24"; + } + enum matchIsis { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchIsis, Value: 25"; + } + enum matchLacp { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchLacp, Value: 5"; + } + enum matchLayer2Broadcast { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchLayer2Broadcast, Value: 40"; + } + enum matchLayer2Control { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchLayer2Control, Value: 2"; + } + enum matchLayer3Control { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchLayer3Control, Value: 21"; + } + enum matchLayer3SlowPath { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchLayer3SlowPath, Value: 36"; + } + enum matchLinkLocalMulticast { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchLinkLocalMulticast, Value: 30"; + } + enum matchLldp { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchLldp, Value: 4"; + } + enum matchMacSourceMiss { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchMacSourceMiss, Value: 38"; + } + enum matchMlagControl { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchMlagControl, Value: 1"; + } + enum matchMlagControlHeartbeat { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchMlagControlHeartbeat, Value: 3"; + } + enum matchMplsRouteMiss { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchMplsRouteMiss, Value: 31"; + } + enum matchMstp { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchMstp, Value: 8"; + } + enum matchMulticastRouteMiss { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchMulticastRouteMiss, Value: 17"; + } + enum matchMvrp { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchMvrp, Value: 37"; + } + enum matchNatMiss { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchNatMiss, Value: 32"; + } + enum matchOspf { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchOspf, Value: 26"; + } + enum matchPim { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchPim, Value: 28"; + } + enum matchPtp { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchPtp, Value: 11"; + } + enum matchPvst { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchPvst, Value: 7"; + } + enum matchRoutedIpOptions { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchRoutedIpOptions, Value: 19"; + } + enum matchSelfBgp { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchSelfBgp, Value: 22"; + } + enum matchSelfIpAll { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchSelfIpAll, Value: 12"; + } + enum matchSelfIpHighPriority { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchSelfIpHighPriority, Value: 13"; + } + enum matchSelfIpLowPriority { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchSelfIpLowPriority, Value: 14"; + } + enum matchTtlException { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchTtlException, Value: 23"; + } + enum matchUnicastRouteMiss { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchUnicastRouteMiss, Value: 16"; + } + enum matchUnicastRouteOverflow { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchUnicastRouteOverflow, Value: 18"; + } + enum matchUnicastRpfFailure { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchUnicastRpfFailure, Value: 33"; + } + enum matchVrrp { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchVrrp, Value: 27"; + } + enum matchVxlanEncapsulation { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchVxlanEncapsulation, Value: 9"; + } + enum matchVxlanVtepLearn { + description "Type: Qos::ClassMapMatchBuiltIn, Name: matchVxlanVtepLearn, Value: 10"; + } + } + description "Type: Qos::ClassMapMatchBuiltIn"; + } + + typedef Qos-ClassMapMatchCondition { + type enumeration { + enum matchConditionAll { + description "Type: Qos::ClassMapMatchCondition, Name: matchConditionAll, Value: 1"; + } + enum matchConditionAny { + description "Type: Qos::ClassMapMatchCondition, Name: matchConditionAny, Value: 0"; + } + } + description "Type: Qos::ClassMapMatchCondition"; + } + + grouping Qos-ClassMapMatchDscpEcn { + description "Type: Qos::ClassMapMatchDscpEcn"; + leaf dscp { + type uint8; + description "Path: /dscp, " + + "Type: value Qos::DscpVal"; + } + list dscpColl { + key "index-max index-min"; + description "Path: /dscpColl, " + + "Type: [value Qos::DscpRange]bool"; + leaf index-max { + type uint8; + description "Path: /dscpColl//max, " + + "Type: value Qos::DscpVal"; + } + leaf index-min { + type uint8; + description "Path: /dscpColl//min, " + + "Type: value Qos::DscpVal"; + } + leaf value { + type boolean; + description "Path: /dscpColl/, " + + "Type: bool"; + } + } + leaf dscpNameValid { + type boolean; + description "Path: /dscpNameValid, " + + "Type: bool"; + } + leaf ecn { + type Acl-Ecn; + description "Path: /ecn, " + + "Type: enum Acl::Ecn"; + } + leaf tosId { + type uint8; + description "Path: /tosId, " + + "Type: U8"; + } + leaf tosMask { + type uint8; + description "Path: /tosMask, " + + "Type: U8"; + } + } + + grouping Qos-ClassMapMatchMac { + description "Type: Qos::ClassMapMatchMac"; + leaf aclName { + type string; + description "Path: /aclName, " + + "Type: Tac::String"; + } + leaf etherType { + type uint16; + description "Path: /etherType, " + + "Type: U16"; + } + } + + grouping Qos-ClassMapMatchMplsTrafficClass { + description "Type: Qos::ClassMapMatchMplsTrafficClass"; + leaf isValid { + type boolean; + description "Path: /isValid, " + + "Type: bool"; + } + list mplsTrafficClassColl { + key "index-max index-min"; + description "Path: /mplsTrafficClassColl, " + + "Type: [value Qos::MplsTrafficClassRange]bool"; + leaf index-max { + type uint8; + description "Path: /mplsTrafficClassColl//max, " + + "Type: value Qos::MplsTrafficClassVal"; + } + leaf index-min { + type uint8; + description "Path: /mplsTrafficClassColl//min, " + + "Type: value Qos::MplsTrafficClassVal"; + } + leaf value { + type boolean; + description "Path: /mplsTrafficClassColl/, " + + "Type: bool"; + } + } + } + + typedef Qos-ClassMapMatchOption { + type enumeration { + enum matchBuiltIn { + description "Type: Qos::ClassMapMatchOption, Name: matchBuiltIn, Value: 7"; + } + enum matchDscpEcn { + description "Type: Qos::ClassMapMatchOption, Name: matchDscpEcn, Value: 4"; + } + enum matchIpAccessGroup { + description "Type: Qos::ClassMapMatchOption, Name: matchIpAccessGroup, Value: 1"; + } + enum matchIpv6AccessGroup { + description "Type: Qos::ClassMapMatchOption, Name: matchIpv6AccessGroup, Value: 2"; + } + enum matchMacAccessGroup { + description "Type: Qos::ClassMapMatchOption, Name: matchMacAccessGroup, Value: 6"; + } + enum matchMplsTrafficClass { + description "Type: Qos::ClassMapMatchOption, Name: matchMplsTrafficClass, Value: 5"; + } + enum matchVlan { + description "Type: Qos::ClassMapMatchOption, Name: matchVlan, Value: 3"; + } + } + description "Type: Qos::ClassMapMatchOption"; + } + + grouping Qos-ClassMapMatchVlan { + description "Type: Qos::ClassMapMatchVlan"; + leaf maskValid { + type boolean; + description "Path: /maskValid, " + + "Type: bool"; + } + leaf vlan { + type uint16; + description "Path: /vlan, " + + "Type: U16"; + } + list vlanColl { + key "index-max index-min"; + description "Path: /vlanColl, " + + "Type: [value Qos::VlanRange]bool"; + leaf index-max { + type uint16; + description "Path: /vlanColl//max, " + + "Type: value Bridging::VlanId"; + } + leaf index-min { + type uint16; + description "Path: /vlanColl//min, " + + "Type: value Bridging::VlanId"; + } + leaf value { + type boolean; + description "Path: /vlanColl/, " + + "Type: bool"; + } + } + leaf vlanMask { + type uint16; + description "Path: /vlanMask, " + + "Type: U16"; + } + } + + grouping Qos-ClassPriority { + description "Type: Qos::ClassPriority"; + leaf cmapName { + type string; + description "Path: /cmapName, " + + "Type: Tac::String"; + } + leaf index { + type uint32; + description "Path: /index, " + + "Type: U32"; + } + } + + grouping Qos-Input-AclConfig { + description "Type: Qos::Input::AclConfig"; + list cmapType { + key type; + description "Path: /cmapType, " + + "Type: ['type' enum Qos::MapType]entity Qos::Input::ClassMapTypeConfig"; + uses Qos-Input-ClassMapTypeConfig; + } + leaf configPriority { + type uint32; + description "Path: /configPriority, " + + "Type: U32"; + } + list namedPolicer { + key name; + description "Path: /namedPolicer, " + + "Type: ['name' Tac::Name]entity Qos::NamedPolicerConfig"; + uses Qos-NamedPolicerConfig; + } + list pmapType { + key type; + description "Path: /pmapType, " + + "Type: ['type' enum Qos::MapType]entity Qos::Input::PolicyMapTypeConfig"; + uses Qos-Input-PolicyMapTypeConfig; + } + leaf routedPortSubIntfQosAclSharing { + type boolean; + description "Path: /routedPortSubIntfQosAclSharing, " + + "Type: bool"; + } + leaf sviPolicyQosSharing { + type boolean; + description "Path: /sviPolicyQosSharing, " + + "Type: bool"; + } + leaf usingQosRoutedPortSubIntfAclSharingCli { + type boolean; + description "Path: /usingQosRoutedPortSubIntfAclSharingCli, " + + "Type: bool"; + } + } + + grouping Qos-Input-ClassMapTypeConfig { + description "Type: Qos::Input::ClassMapTypeConfig"; + list cmap { + key name; + description "Path: /cmap, " + + "Type: ['name' Tac::Name]entity Qos::ClassMapConfig"; + uses Qos-ClassMapConfig; + } + leaf type { + type Qos-MapType; + description "Path: /type, " + + "Type: enum Qos::MapType"; + } + } + + grouping Qos-Input-PolicyMapTypeConfig { + description "Type: Qos::Input::PolicyMapTypeConfig"; + list pmap { + key name; + description "Path: /pmap, " + + "Type: ['name' Tac::Name]entity Qos::PolicyMapConfig"; + uses Qos-PolicyMapConfig; + } + leaf type { + type Qos-MapType; + description "Path: /type, " + + "Type: enum Qos::MapType"; + } + } + + typedef Qos-MapType { + type enumeration { + enum mapControlPlane { + description "Type: Qos::MapType, Name: mapControlPlane, Value: 0"; + } + enum mapPdp { + description "Type: Qos::MapType, Name: mapPdp, Value: 2"; + } + enum mapQos { + description "Type: Qos::MapType, Name: mapQos, Value: 1"; + } + } + description "Type: Qos::MapType"; + } + + grouping Qos-NamedPolicerConfig { + description "Type: Qos::NamedPolicerConfig"; + leaf bc { + type uint32; + description "Path: /bc, " + + "Type: U32"; + } + leaf bcUnit { + type Qos-BurstUnit; + description "Path: /bcUnit, " + + "Type: enum Qos::BurstUnit"; + } + leaf be { + type uint32; + description "Path: /be, " + + "Type: U32"; + } + leaf beUnit { + type Qos-BurstUnit; + description "Path: /beUnit, " + + "Type: enum Qos::BurstUnit"; + } + leaf cir { + type uint64; + description "Path: /cir, " + + "Type: U64"; + } + leaf cirUnit { + type Qos-RateUnit; + description "Path: /cirUnit, " + + "Type: enum Qos::RateUnit"; + } + leaf cmdVersion { + type uint32; + description "Path: /cmdVersion, " + + "Type: U32"; + } + list greenActions { + key actionType; + description "Path: /greenActions, " + + "Type: ['actionType' enum Qos::ActionType]entity Qos::Action"; + uses Qos-Action; + } + leaf name { + type string; + description "Path: /name, " + + "Type: Tac::Name"; + } + leaf named { + type boolean; + description "Path: /named, " + + "Type: bool"; + } + leaf paramChangeVersion { + type uint32; + description "Path: /paramChangeVersion, " + + "Type: U32"; + } + leaf pir { + type uint64; + description "Path: /pir, " + + "Type: U64"; + } + leaf pirUnit { + type Qos-RateUnit; + description "Path: /pirUnit, " + + "Type: enum Qos::RateUnit"; + } + list redActions { + key actionType; + description "Path: /redActions, " + + "Type: ['actionType' enum Qos::ActionType]entity Qos::Action"; + uses Qos-Action; + } + leaf shared { + type boolean; + description "Path: /shared, " + + "Type: bool"; + } + leaf uniqueId { + type eos-types:double; + description "Path: /uniqueId, " + + "Type: value Qos::UniqueId"; + } + leaf version { + type uint32; + description "Path: /version, " + + "Type: U32"; + } + list yellowActions { + key actionType; + description "Path: /yellowActions, " + + "Type: ['actionType' enum Qos::ActionType]entity Qos::Action"; + uses Qos-Action; + } + } + + grouping Qos-PolicerConfig { + description "Type: Qos::PolicerConfig"; + leaf bc { + type uint32; + description "Path: /bc, " + + "Type: U32"; + } + leaf bcUnit { + type Qos-BurstUnit; + description "Path: /bcUnit, " + + "Type: enum Qos::BurstUnit"; + } + leaf be { + type uint32; + description "Path: /be, " + + "Type: U32"; + } + leaf beUnit { + type Qos-BurstUnit; + description "Path: /beUnit, " + + "Type: enum Qos::BurstUnit"; + } + leaf cir { + type uint64; + description "Path: /cir, " + + "Type: U64"; + } + leaf cirUnit { + type Qos-RateUnit; + description "Path: /cirUnit, " + + "Type: enum Qos::RateUnit"; + } + leaf cmdVersion { + type uint32; + description "Path: /cmdVersion, " + + "Type: U32"; + } + list greenActions { + key actionType; + description "Path: /greenActions, " + + "Type: ['actionType' enum Qos::ActionType]entity Qos::Action"; + uses Qos-Action; + } + leaf named { + type boolean; + description "Path: /named, " + + "Type: bool"; + } + leaf pir { + type uint64; + description "Path: /pir, " + + "Type: U64"; + } + leaf pirUnit { + type Qos-RateUnit; + description "Path: /pirUnit, " + + "Type: enum Qos::RateUnit"; + } + list redActions { + key actionType; + description "Path: /redActions, " + + "Type: ['actionType' enum Qos::ActionType]entity Qos::Action"; + uses Qos-Action; + } + list yellowActions { + key actionType; + description "Path: /yellowActions, " + + "Type: ['actionType' enum Qos::ActionType]entity Qos::Action"; + uses Qos-Action; + } + } + + grouping Qos-PolicyMapConfig { + description "Type: Qos::PolicyMapConfig"; + list classAction { + key name; + description "Path: /classAction, " + + "Type: ['name' Tac::Name]entity Qos::ClassAction"; + uses Qos-ClassAction; + } + container classActionDefault { + description "Path: /classActionDefault, " + + "Type: entity Qos::ClassAction"; + uses Qos-ClassAction; + } + container classDefault { + description "Path: /classDefault, " + + "Type: entity Qos::ClassMapConfig"; + uses Qos-ClassMapConfig; + } + list classPrio { + key index; + description "Path: /classPrio, " + + "Type: ['index' U32]entity Qos::ClassPriority"; + uses Qos-ClassPriority; + } + list coppStaticClassPrio { + key index; + description "Path: /coppStaticClassPrio, " + + "Type: ['index' U32]entity Qos::ClassPriority"; + uses Qos-ClassPriority; + } + leaf dynamic { + type boolean; + description "Path: /dynamic, " + + "Type: bool"; + } + leaf name { + type string; + description "Path: /name, " + + "Type: Tac::Name"; + } + leaf shared { + type boolean; + description "Path: /shared, " + + "Type: bool"; + } + leaf type { + type Qos-MapType; + description "Path: /type, " + + "Type: enum Qos::MapType"; + } + leaf uniqueId { + type eos-types:double; + description "Path: /uniqueId, " + + "Type: value Qos::UniqueId"; + } + leaf version { + type uint32; + description "Path: /version, " + + "Type: U32"; + } + } + + typedef Qos-RateUnit { + type enumeration { + enum rateUnitInvalid { + description "Type: Qos::RateUnit, Name: rateUnitInvalid, Value: 4"; + } + enum rateUnitKbps { + description "Type: Qos::RateUnit, Name: rateUnitKbps, Value: 2"; + } + enum rateUnitMbps { + description "Type: Qos::RateUnit, Name: rateUnitMbps, Value: 3"; + } + enum rateUnitPps { + description "Type: Qos::RateUnit, Name: rateUnitPps, Value: 0"; + } + enum rateUnitbps { + description "Type: Qos::RateUnit, Name: rateUnitbps, Value: 1"; + } + } + description "Type: Qos::RateUnit"; + } +} diff --git a/experimental/eos/models/qos/arista-exp-eos-qos-config.yang b/experimental/eos/models/qos/arista-exp-eos-qos-config.yang new file mode 100644 index 0000000..c457d82 --- /dev/null +++ b/experimental/eos/models/qos/arista-exp-eos-qos-config.yang @@ -0,0 +1,682 @@ +module arista-exp-eos-qos-config { + yang-version 1; + + namespace "http://arista.com/yang/experimental/eos/qos/config"; + prefix "qos-config-exp"; + + import arista-eos-types { prefix eos-types; } + import arista-exp-eos { + prefix eos-exp; + } + import arista-exp-eos-qos { + prefix qos-exp; + } + + organization "Arista Networks "; + + description "Models for qos config subsystem of Arista EOS + Copyright (c) 2017 Arista Networks, Inc. All rights reserved."; + + revision 2017-09-26 { + description + "Initial revision"; + } + + augment "/eos-exp:arista/eos-exp:eos/qos-exp:qos"{ + container input { + description "Path: /Sysdb/qos/input, " + + "Type: directory Tac::Dir"; + container config { + description "Path: /Sysdb/qos/input/config, " + + "Type: directory Tac::Dir"; + container cli { + description "Path: /Sysdb/qos/input/config/cli, " + + "Type: entity Qos::Input::Config"; + uses Qos-Input-Config; + } + } + } + } + + grouping Pfc-PortConfig { + description "Type: Pfc::PortConfig"; + leaf enabled { + type boolean; + description "Path: /enabled, " + + "Type: bool"; + } + container portTimerConfig { + description "Path: /portTimerConfig, " + + "Type: value Pfc::PortTimerConfig"; + uses Pfc-PortTimerConfig; + } + leaf portWatchdogVersion { + type uint32; + description "Path: /portWatchdogVersion, " + + "Type: U32"; + } + leaf priorities { + type uint8; + description "Path: /priorities, " + + "Type: U8"; + } + leaf watchdogEnabled { + type boolean; + description "Path: /watchdogEnabled, " + + "Type: bool"; + } + leaf watchdogPortAction { + type Pfc-WatchdogAction; + description "Path: /watchdogPortAction, " + + "Type: enum Pfc::WatchdogAction"; + } + } + + grouping Pfc-PortTimerConfig { + description "Type: Pfc::PortTimerConfig"; + leaf portWatchdogOperPollingInterval { + type eos-types:double; + description "Path: /portWatchdogOperPollingInterval, " + + "Type: double"; + } + leaf portWatchdogPollingInterval { + type eos-types:double; + description "Path: /portWatchdogPollingInterval, " + + "Type: double"; + } + container portWatchdogRecoveryCfg { + description "Path: /portWatchdogRecoveryCfg, " + + "Type: value Pfc::WatchdogRecoveryConfig"; + uses Pfc-WatchdogRecoveryConfig; + } + leaf portWatchdogTimeout { + type eos-types:double; + description "Path: /portWatchdogTimeout, " + + "Type: double"; + } + leaf usePerPortTimerValues { + type boolean; + description "Path: /usePerPortTimerValues, " + + "Type: bool"; + } + } + + typedef Pfc-WatchdogAction { + type enumeration { + enum drop { + description "Type: Pfc::WatchdogAction, Name: drop, Value: 2"; + } + enum errdisable { + description "Type: Pfc::WatchdogAction, Name: errdisable, Value: 1"; + } + enum invalid { + description "Type: Pfc::WatchdogAction, Name: invalid, Value: 0"; + } + enum notifyOnly { + description "Type: Pfc::WatchdogAction, Name: notifyOnly, Value: 3"; + } + } + description "Type: Pfc::WatchdogAction"; + } + + grouping Pfc-WatchdogRecoveryConfig { + description "Type: Pfc::WatchdogRecoveryConfig"; + leaf forcedRecovery { + type boolean; + description "Path: /forcedRecovery, " + + "Type: bool"; + } + leaf recoveryTime { + type eos-types:double; + description "Path: /recoveryTime, " + + "Type: double"; + } + } + + typedef Qos-Direction { + type enumeration { + enum input { + description "Type: Qos::Direction, Name: input, Value: 0"; + } + enum output { + description "Type: Qos::Direction, Name: output, Value: 1"; + } + } + description "Type: Qos::Direction"; + } + + grouping Qos-EcnDelayThreshold { + description "Type: Qos::EcnDelayThreshold"; + leaf threshold { + type uint32; + description "Path: /threshold, " + + "Type: value Qos::EcnDelayThresholdValue"; + } + leaf unit { + type Qos-EcnDelayThresholdUnit; + description "Path: /unit, " + + "Type: enum Qos::EcnDelayThresholdUnit"; + } + } + + typedef Qos-EcnDelayThresholdUnit { + type enumeration { + enum ecnDelayThresholdInvalidUnit { + description "Type: Qos::EcnDelayThresholdUnit, Name: ecnDelayThresholdInvalidUnit, Value: 1"; + } + enum ecnDelayThresholdNs { + description "Type: Qos::EcnDelayThresholdUnit, Name: ecnDelayThresholdNs, Value: 0"; + } + } + description "Type: Qos::EcnDelayThresholdUnit"; + } + + grouping Qos-EcnWredConfig { + description "Type: Qos::EcnWredConfig"; + leaf maxDroprate { + type uint8; + description "Path: /maxDroprate, " + + "Type: value Qos::Percent"; + } + leaf maxThd { + type uint32; + description "Path: /maxThd, " + + "Type: value Qos::QueueThreshold"; + } + leaf minThd { + type uint32; + description "Path: /minThd, " + + "Type: value Qos::QueueThreshold"; + } + leaf unit { + type Qos-QueueThresholdUnit; + description "Path: /unit, " + + "Type: enum Qos::QueueThresholdUnit"; + } + leaf weight { + type uint32; + description "Path: /weight, " + + "Type: value Qos::Weight"; + } + } + + grouping Qos-GuaranteedBw { + description "Type: Qos::GuaranteedBw"; + leaf bw { + type uint32; + description "Path: /bw, " + + "Type: value Qos::GuaranteedBwVal"; + } + leaf unit { + type Qos-GuaranteedBwUnit; + description "Path: /unit, " + + "Type: enum Qos::GuaranteedBwUnit"; + } + } + + typedef Qos-GuaranteedBwUnit { + type enumeration { + enum guaranteedBwKbps { + description "Type: Qos::GuaranteedBwUnit, Name: guaranteedBwKbps, Value: 0"; + } + enum guaranteedBwPercent { + description "Type: Qos::GuaranteedBwUnit, Name: guaranteedBwPercent, Value: 2"; + } + enum guaranteedBwPps { + description "Type: Qos::GuaranteedBwUnit, Name: guaranteedBwPps, Value: 1"; + } + } + description "Type: Qos::GuaranteedBwUnit"; + } + + grouping Qos-Input-Config { + description "Type: Qos::Input::Config"; + leaf agentName { + type string; + description "Path: /agentName, " + + "Type: Tac::String"; + } + leaf configPriority { + type uint32; + description "Path: /configPriority, " + + "Type: U32"; + } + leaf cosRewriteEnabled { + type Qos-RewriteEnableMode; + description "Path: /cosRewriteEnabled, " + + "Type: enum Qos::RewriteEnableMode"; + } + list cosToTcMap { + key index; + description "Path: /cosToTcMap, " + + "Type: [value Qos::Cos]value Qos::TrafficClass"; + leaf index { + type uint8; + description "Path: /cosToTcMap/, " + + "Type: value Qos::Cos"; + } + leaf value { + type uint8; + description "Path: /cosToTcMap/, " + + "Type: value Qos::TrafficClass"; + } + } + leaf dscpRewriteEnabled { + type boolean; + description "Path: /dscpRewriteEnabled, " + + "Type: bool"; + } + list dscpToTcMap { + key index; + description "Path: /dscpToTcMap, " + + "Type: [value Qos::Dscp]value Qos::TrafficClass"; + leaf index { + type uint8; + description "Path: /dscpToTcMap/, " + + "Type: value Qos::Dscp"; + } + leaf value { + type uint8; + description "Path: /dscpToTcMap/, " + + "Type: value Qos::TrafficClass"; + } + } + leaf ecnAllowNonEct { + type boolean; + description "Path: /ecnAllowNonEct, " + + "Type: bool"; + } + container ecnDelayThreshold { + description "Path: /ecnDelayThreshold, " + + "Type: value Qos::EcnDelayThreshold"; + uses Qos-EcnDelayThreshold; + } + container globalEcnConfig { + description "Path: /globalEcnConfig, " + + "Type: entity Qos::EcnWredConfig"; + uses Qos-EcnWredConfig; + } + leaf hwConfigVerificationEnabled { + type boolean; + description "Path: /hwConfigVerificationEnabled, " + + "Type: bool"; + } + list hwMonitoredPri { + key index; + description "Path: /hwMonitoredPri, " + + "Type: [U8]bool"; + leaf index { + type uint8; + description "Path: /hwMonitoredPri/, " + + "Type: U8"; + } + leaf value { + type boolean; + description "Path: /hwMonitoredPri/, " + + "Type: bool"; + } + } + list intfConfig { + key intfId; + description "Path: /intfConfig, " + + "Type: ['intfId' value Arnet::IntfId]entity Qos::IntfConfig"; + uses Qos-IntfConfig; + } + leaf intfConfigPriority { + type uint32; + description "Path: /intfConfigPriority, " + + "Type: U32"; + } + leaf pfcGlobalEnabled { + type boolean; + description "Path: /pfcGlobalEnabled, " + + "Type: bool"; + } + list servicePolicyConfig { + key "key-direction key-pmapName key-type"; + description "Path: /servicePolicyConfig, " + + "Type: ['key' value Qos::ServicePolicyKey]entity Qos::ServicePolicyConfig"; + leaf key-direction { + type Qos-Direction; + description "Path: /direction, " + + "Type: enum Qos::Direction"; + } + leaf key-pmapName { + type string; + description "Path: /pmapName, " + + "Type: Tac::Name"; + } + leaf key-type { + type Qos-MapType; + description "Path: /type, " + + "Type: enum Qos::MapType"; + } + leaf clearCountersTime { + type eos-types:double; + description "Path: /clearCountersTime, " + + "Type: double"; + } + list intfIds { + key index; + description "Path: /intfIds, " + + "Type: [value Arnet::IntfId]bool"; + leaf index { + type eos-types:Arnet-IntfId; + description "Path: /intfIds/, " + + "Type: value Arnet::IntfId"; + } + leaf value { + type boolean; + description "Path: /intfIds/, " + + "Type: bool"; + } + } + } + list tcToCosMap { + key index; + description "Path: /tcToCosMap, " + + "Type: [value Qos::TrafficClass]value Qos::Cos"; + leaf index { + type uint8; + description "Path: /tcToCosMap/, " + + "Type: value Qos::TrafficClass"; + } + leaf value { + type uint8; + description "Path: /tcToCosMap/, " + + "Type: value Qos::Cos"; + } + } + list tcToDscpMap { + key index; + description "Path: /tcToDscpMap, " + + "Type: [value Qos::TrafficClass]value Qos::Dscp"; + leaf index { + type uint8; + description "Path: /tcToDscpMap/, " + + "Type: value Qos::TrafficClass"; + } + leaf value { + type uint8; + description "Path: /tcToDscpMap/, " + + "Type: value Qos::Dscp"; + } + } + list tcToMcTxQueueMap { + key index; + description "Path: /tcToMcTxQueueMap, " + + "Type: [value Qos::TrafficClass]value Qos::TxQueueId"; + leaf index { + type uint8; + description "Path: /tcToMcTxQueueMap/, " + + "Type: value Qos::TrafficClass"; + } + leaf value { + type uint8; + description "Path: /tcToMcTxQueueMap/, " + + "Type: value Qos::TxQueueId"; + } + } + list tcToTxQueueMap { + key index; + description "Path: /tcToTxQueueMap, " + + "Type: [value Qos::TrafficClass]value Qos::TxQueueId"; + leaf index { + type uint8; + description "Path: /tcToTxQueueMap/, " + + "Type: value Qos::TrafficClass"; + } + leaf value { + type uint8; + description "Path: /tcToTxQueueMap/, " + + "Type: value Qos::TxQueueId"; + } + } + leaf watchdogAction { + type Pfc-WatchdogAction; + description "Path: /watchdogAction, " + + "Type: enum Pfc::WatchdogAction"; + } + leaf watchdogNonDisruptivePriorities { + type uint8; + description "Path: /watchdogNonDisruptivePriorities, " + + "Type: U8"; + } + leaf watchdogPollingInterval { + type eos-types:double; + description "Path: /watchdogPollingInterval, " + + "Type: double"; + } + container watchdogRecoveryCfg { + description "Path: /watchdogRecoveryCfg, " + + "Type: value Pfc::WatchdogRecoveryConfig"; + uses Pfc-WatchdogRecoveryConfig; + } + leaf watchdogTimeout { + type eos-types:double; + description "Path: /watchdogTimeout, " + + "Type: double"; + } + } + + grouping Qos-IntfConfig { + description "Type: Qos::IntfConfig"; + leaf defaultCos { + type uint8; + description "Path: /defaultCos, " + + "Type: value Qos::Cos"; + } + leaf defaultDscp { + type uint8; + description "Path: /defaultDscp, " + + "Type: value Qos::Dscp"; + } + leaf fabricPfcDlb { + type uint8; + description "Path: /fabricPfcDlb, " + + "Type: U8"; + } + leaf intfId { + type eos-types:Arnet-IntfId; + description "Path: /intfId, " + + "Type: value Arnet::IntfId"; + } + container pfcPortConfig { + description "Path: /pfcPortConfig, " + + "Type: entity Pfc::PortConfig"; + uses Pfc-PortConfig; + } + container shapeRate { + description "Path: /shapeRate, " + + "Type: value Qos::ShapeRate"; + uses Qos-ShapeRate; + } + leaf trustMode { + type Qos-TrustMode; + description "Path: /trustMode, " + + "Type: enum Qos::TrustMode"; + } + list txQueueConfig { + key "txQueue-id txQueue-type"; + description "Path: /txQueueConfig, " + + "Type: ['txQueue' value Qos::TxQueue]entity Qos::TxQueueConfig"; + leaf txQueue-id { + type uint8; + description "Path: /id, " + + "Type: value Qos::TxQueueId"; + } + leaf txQueue-type { + type Qos-QueueType; + description "Path: /type, " + + "Type: enum Qos::QueueType"; + } + leaf bandwidth { + type uint8; + description "Path: /bandwidth, " + + "Type: value Qos::Percent"; + } + leaf delayEcnEnabled { + type boolean; + description "Path: /delayEcnEnabled, " + + "Type: bool"; + } + container ecnConfig { + description "Path: /ecnConfig, " + + "Type: entity Qos::EcnWredConfig"; + uses Qos-EcnWredConfig; + } + container ecnDelayThreshold { + description "Path: /ecnDelayThreshold, " + + "Type: value Qos::EcnDelayThreshold"; + uses Qos-EcnDelayThreshold; + } + container guaranteedBw { + description "Path: /guaranteedBw, " + + "Type: value Qos::GuaranteedBw"; + uses Qos-GuaranteedBw; + } + container nonEctConfig { + description "Path: /nonEctConfig, " + + "Type: entity Qos::EcnWredConfig"; + uses Qos-EcnWredConfig; + } + leaf priority { + type Qos-TxQueuePriority; + description "Path: /priority, " + + "Type: enum Qos::TxQueuePriority"; + } + container shapeRate { + description "Path: /shapeRate, " + + "Type: value Qos::ShapeRate"; + uses Qos-ShapeRate; + } + container wredConfig { + description "Path: /wredConfig, " + + "Type: entity Qos::EcnWredConfig"; + uses Qos-EcnWredConfig; + } + } + } + + typedef Qos-MapType { + type enumeration { + enum mapControlPlane { + description "Type: Qos::MapType, Name: mapControlPlane, Value: 0"; + } + enum mapPdp { + description "Type: Qos::MapType, Name: mapPdp, Value: 2"; + } + enum mapQos { + description "Type: Qos::MapType, Name: mapQos, Value: 1"; + } + } + description "Type: Qos::MapType"; + } + + typedef Qos-QueueThresholdUnit { + type enumeration { + enum bytes { + description "Type: Qos::QueueThresholdUnit, Name: bytes, Value: 0"; + } + enum kbytes { + description "Type: Qos::QueueThresholdUnit, Name: kbytes, Value: 1"; + } + enum mbytes { + description "Type: Qos::QueueThresholdUnit, Name: mbytes, Value: 2"; + } + enum segments { + description "Type: Qos::QueueThresholdUnit, Name: segments, Value: 3"; + } + } + description "Type: Qos::QueueThresholdUnit"; + } + + typedef Qos-QueueType { + type enumeration { + enum mcq { + description "Type: Qos::QueueType, Name: mcq, Value: 1"; + } + enum ucq { + description "Type: Qos::QueueType, Name: ucq, Value: 0"; + } + enum unknown { + description "Type: Qos::QueueType, Name: unknown, Value: 2"; + } + } + description "Type: Qos::QueueType"; + } + + typedef Qos-RewriteEnableMode { + type enumeration { + enum rewriteDisabled { + description "Type: Qos::RewriteEnableMode, Name: rewriteDisabled, Value: 2"; + } + enum rewriteEnabled { + description "Type: Qos::RewriteEnableMode, Name: rewriteEnabled, Value: 1"; + } + enum rewriteInvalid { + description "Type: Qos::RewriteEnableMode, Name: rewriteInvalid, Value: 0"; + } + } + description "Type: Qos::RewriteEnableMode"; + } + + grouping Qos-ShapeRate { + description "Type: Qos::ShapeRate"; + leaf rate { + type uint32; + description "Path: /rate, " + + "Type: value Qos::ShapeRateVal"; + } + leaf unit { + type Qos-ShapeRateUnit; + description "Path: /unit, " + + "Type: enum Qos::ShapeRateUnit"; + } + } + + typedef Qos-ShapeRateUnit { + type enumeration { + enum shapeRateKbps { + description "Type: Qos::ShapeRateUnit, Name: shapeRateKbps, Value: 0"; + } + enum shapeRatePps { + description "Type: Qos::ShapeRateUnit, Name: shapeRatePps, Value: 1"; + } + } + description "Type: Qos::ShapeRateUnit"; + } + + typedef Qos-TrustMode { + type enumeration { + enum cos { + description "Type: Qos::TrustMode, Name: cos, Value: 0"; + } + enum dscp { + description "Type: Qos::TrustMode, Name: dscp, Value: 1"; + } + enum invalid { + description "Type: Qos::TrustMode, Name: invalid, Value: 3"; + } + enum untrusted { + description "Type: Qos::TrustMode, Name: untrusted, Value: 2"; + } + } + description "Type: Qos::TrustMode"; + } + + typedef Qos-TxQueuePriority { + type enumeration { + enum priorityInvalid { + description "Type: Qos::TxQueuePriority, Name: priorityInvalid, Value: 2"; + } + enum priorityRoundRobin { + description "Type: Qos::TxQueuePriority, Name: priorityRoundRobin, Value: 0"; + } + enum priorityStrict { + description "Type: Qos::TxQueuePriority, Name: priorityStrict, Value: 1"; + } + } + description "Type: Qos::TxQueuePriority"; + } +} diff --git a/experimental/eos/models/qos/arista-exp-eos-qos.yang b/experimental/eos/models/qos/arista-exp-eos-qos.yang new file mode 100644 index 0000000..f3a24bf --- /dev/null +++ b/experimental/eos/models/qos/arista-exp-eos-qos.yang @@ -0,0 +1,25 @@ +module arista-exp-eos-qos { + yang-version 1; + namespace "http://arista.com/yang/experimental/eos/qos"; + prefix qos-exp; + + import arista-exp-eos { + prefix eos-exp; + } + + organization "Arista Networks "; + description + "Container for qos features. + + Copyright (c) 2017 Arista Networks, Inc. All rights reserved."; + + revision 2017-09-26 { + description + "Initial revision"; + } + + augment "/eos-exp:arista/eos-exp:eos" { + container qos; + } + +} diff --git a/experimental/eos/models/vlan/vlan-translation.yang b/experimental/eos/models/vlan/vlan-translation.yang index b08827c..8e6d7f4 100644 --- a/experimental/eos/models/vlan/vlan-translation.yang +++ b/experimental/eos/models/vlan/vlan-translation.yang @@ -21,55 +21,132 @@ module vlan-translation { import iana-if-type { prefix ift; } - import openconfig-extensions { - prefix oc-ext; - } organization "Arista Networks"; + contact + "Arista Networks, Inc. + Product Support"; description "This module defines VLAN translation configuration, associated with interfaces - Copyright (c) 2016 Arista Networks, Inc. All rights reserved."; - oc-ext:openconfig-version "1.0.0"; - grouping vlan-tpid { - leaf tpid { - type identityref { - base oc-vlan-types:TPID_TYPES; + revision 2017-11-29 { + description + "Initial revision."; + reference "1.0.0"; + } + + grouping vlan-tag-required { + description + "configuration for dropping untagged frames on dot1q tunnel ports"; + leaf vlan-tag-required { + type boolean; + description + "if this flag is set, then on a dot1q tunnel port, untagged frames and + priority tagged frames( Dot1Q tagged frames with vlan id 0 ) will be dropped"; + } + } + + grouping vlan-translation-intf-config { + description + "Per interface VLAN translation configuration"; + leaf ingress-mapping-required { + type boolean; + description + "if this flag is set, then on ingress any vlan tagged packet that does not have + a corresponding VLAN mapping, will be dropped"; + } + } + + grouping translation-key { + description + "key for VLAN translation"; + leaf translation-key { + type union { + type oc-vlan-types:vlan-id; + type oc-vlan-types:qinq-id; } - default "oc-vlan-types:TPID_0X8100"; description - "Optionally set the tag protocol identifier field (TPID) that - is accepted on the port/interface"; + "the vlan-translation-key"; + } + } + + grouping vlan-translation-config { + description + "VLAN translation config grouping"; + uses translation-key; + leaf bridging-vlan { + type oc-vlan-types:vlan-id; + description + "The VLAN in which packets matching the VLAN + translation key are bridged"; + } + leaf inner-vlan-tag { + type oc-vlan-types:vlan-id; + description + "The inner VLAN tag to be pushed on the + packets"; + } + leaf tunnel { + type boolean; + description + "Selective QinQ"; } } grouping vlan-translation { description - "VLAN translation grouping."; - list vlan-translation { - key "vlan-translation-key"; - leaf vlan-translation-key { + "Configuration and State parameters for VLAN Translations"; + container config { + description + "Configuration parameters for VLAN Translations"; + uses vlan-translation-config; + } + container state { + config false; + description + "State variables for VLAN Translations"; + uses vlan-translation-config; + } + } + + grouping vlan-translation-top { + description + "Top-level grouping for VLAN Translations configurations"; + container vlan-translation { + description + "Container for VLAN Translation configuration + and state variables"; + container config { description - "VLAN ID or QinQ VLAN tag pair used to identify a - bridging endpoint"; - type union { - type oc-vlan-types:vlan-id; - type oc-vlan-types:qinq-id; - } + "Interface configuration parameters for VLAN Translation"; + uses vlan-translation-intf-config; } - leaf bridging-vlan { + container state { description - "The VLAN in which packets matching the VLAN - translation key are bridged"; - type oc-vlan-types:vlan-id; + "Interface state variables for VLAN Translation"; + uses vlan-translation-intf-config; + } + list ingress { + key "translation-key"; + uses translation-key; + uses vlan-translation; + description + "Ingress VLAN Translation configuration"; + } + list egress { + key "translation-key"; + uses translation-key; + uses vlan-translation; + description + "Egress VLAN Translation configuration"; } } } - augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-vlan:switched-vlan/oc-vlan:config" { + augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-vlan:switched-vlan" { when "oc-if:type = 'ift:ethernetCsmacd'" { description "Active when the interface is Ethernet"; @@ -77,17 +154,33 @@ module vlan-translation { description "Adds VLAN translation settings to individual Ethernet interfaces"; - uses vlan-tpid; - uses vlan-translation; + uses vlan-translation-top; } - augment "/oc-if:interfaces/oc-if:interface/oc-lag:aggregation/oc-vlan:switched-vlan/oc-vlan:config" { + augment "/oc-if:interfaces/oc-if:interface/oc-lag:aggregation/oc-vlan:switched-vlan" { when "oc-if:type = 'ift:ieee8023adLag'" { description "Active when the interface is a LAG"; } description "Adds VLAN translation settings to a LAG interface"; - uses vlan-tpid; - uses vlan-translation; + uses vlan-translation-top; + } + augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-vlan:switched-vlan/oc-vlan:config" { + when "oc-if:type = 'ift:ethernetCsmacd'" { + description + "Active when the interface is Ethernet"; + } + description + "Adds setting to drop untagged and priority frames on an Ethernet dot1q tunnel interface"; + uses vlan-tag-required; + } + augment "/oc-if:interfaces/oc-if:interface/oc-lag:aggregation/oc-vlan:switched-vlan/oc-vlan:config" { + when "oc-if:type = 'ift:ieee8023adLag'" { + description + "Active when the interface is a LAG"; + } + description + "Adds setting to drop untagged and priority frames on a LAG dot1q tunnel interface"; + uses vlan-tag-required; } } diff --git a/release/openconfig/models/acl/arista-acl-deviations.yang b/release/openconfig/models/acl/arista-acl-deviations.yang index 1410ede..eac7399 100644 --- a/release/openconfig/models/acl/arista-acl-deviations.yang +++ b/release/openconfig/models/acl/arista-acl-deviations.yang @@ -21,15 +21,16 @@ module arista-acl-deviations { revision 2017-11-01 { description "Initial deviations file"; + reference "1.0.0"; } typedef ipv4-address-mask { type string { - pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' + '/' + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + - '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$'; + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; } description "An IPv4 address represented in dotted quad notation followed by @@ -49,7 +50,7 @@ module arista-acl-deviations { typedef ipv6-address-mask { type string { pattern - '^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' + + '(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' + '([0-9a-fA-F]{1,4}:){1,7}:|' + '([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}' + '([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' + @@ -67,7 +68,7 @@ module arista-acl-deviations { '([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' + '([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' + '[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' + - ':((:[0-9a-fA-F]{1,4}){1,7}|:))$'; + ':((:[0-9a-fA-F]{1,4}){1,7}|:))'; } description "An IPv6 address represented in full, shortened, or mixed @@ -87,34 +88,123 @@ module arista-acl-deviations { deviation "/oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:ipv4/oc-acl:config/oc-acl:source-address" { description - "Source IPv4 address and mask"; + "Source IPv4 address and mask represented as a prefix and mask length, or + an address and 32-bit mask."; deviate replace { - type ipv4-prefix-or-mask; + type string { + pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' + + '/' + + '((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))' + + '|(([0-9])|([1-2][0-9])|(3[0-2]))'; + } } } deviation "/oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:ipv4/oc-acl:config/oc-acl:destination-address" { description - "Destination IPv4 address and mask"; + "Destination IPv4 address and mask represented as a prefix and mask length, or + an address and 32-bit mask."; deviate replace { - type ipv4-prefix-or-mask; + type string { + pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' + + '/' + + '((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))' + + '|(([0-9])|([1-2][0-9])|(3[0-2]))'; + } } } deviation "/oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:ipv6/oc-acl:config/oc-acl:source-address" { description - "Source IPv6 address and mask"; + "Source IPv6 address represented as a prefix and mask length, or + an address and 128-bit mask."; deviate replace { - type ipv6-prefix-or-mask; + type string { + pattern '(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' + + '([0-9a-fA-F]{1,4}:){1,7}:|' + + '([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}' + + '([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' + + '([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' + + '([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' + + '([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' + + '[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' + + ':((:[0-9a-fA-F]{1,4}){1,7}|:))' + + '/' + + '(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])|' + + '(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' + + '([0-9a-fA-F]{1,4}:){1,7}:|' + + '([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}' + + '([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' + + '([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' + + '([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' + + '([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' + + '[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' + + ':((:[0-9a-fA-F]{1,4}){1,7}|:))'; + } + } } - } deviation "/oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:ipv6/oc-acl:config/oc-acl:destination-address" { description - "Destination IPv6 address and mask"; + "Destination IPv6 address represented as a prefix and mask length, or + an address and 128-bit mask."; deviate replace { - type ipv6-prefix-or-mask; + type string { + pattern '(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' + + '([0-9a-fA-F]{1,4}:){1,7}:|' + + '([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}' + + '([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' + + '([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' + + '([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' + + '([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' + + '[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' + + ':((:[0-9a-fA-F]{1,4}){1,7}|:))' + + '/' + + '(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])|' + + '(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' + + '([0-9a-fA-F]{1,4}:){1,7}:|' + + '([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}' + + '([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' + + '([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' + + '([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' + + '([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' + + '[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' + + ':((:[0-9a-fA-F]{1,4}){1,7}|:))'; + } } } + deviation "/oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:state/oc-acl:matched-octets" { + description + "Byte counter is not supported"; + deviate not-supported; + } + + deviation "/oc-acl:acl/oc-acl:interfaces/oc-acl:interface/oc-acl:ingress-acl-sets/oc-acl:ingress-acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:state/oc-acl:matched-packets" { + description + "Per-interface ACL counters are not supported"; + deviate not-supported; + } + + deviation "/oc-acl:acl/oc-acl:interfaces/oc-acl:interface/oc-acl:ingress-acl-sets/oc-acl:ingress-acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:state/oc-acl:matched-octets" { + description + "Per-interface ACL counters are not supported"; + deviate not-supported; + } + + deviation "/oc-acl:acl/oc-acl:interfaces/oc-acl:interface/oc-acl:egress-acl-sets/oc-acl:egress-acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:state/oc-acl:matched-packets" { + description + "Per-interface ACL counters are not supported"; + deviate not-supported; + } + + deviation "/oc-acl:acl/oc-acl:interfaces/oc-acl:interface/oc-acl:egress-acl-sets/oc-acl:egress-acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:state/oc-acl:matched-octets" { + description + "Per-interface ACL counters are not supported"; + deviate not-supported; + } } diff --git a/release/openconfig/models/bgp/arista-bgp-deviations.yang b/release/openconfig/models/bgp/arista-bgp-deviations.yang index 17c8911..22f7a4b 100644 --- a/release/openconfig/models/bgp/arista-bgp-deviations.yang +++ b/release/openconfig/models/bgp/arista-bgp-deviations.yang @@ -24,21 +24,27 @@ module arista-bgp-deviations { deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:neighbors/oc-netinst:neighbor/oc-netinst:timers/oc-netinst:config/oc-netinst:connect-retry" { description "connect-retry is reported but not configurable in EOS"; - deviate replace { + deviate add { config false; } } deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:neighbors/oc-netinst:neighbor/oc-netinst:transport/oc-netinst:config/oc-netinst:mtu-discovery" { description "MTU discovery is implicitly always true in EOS"; - deviate replace { + deviate add { config false; + } + deviate replace { default "true"; } } deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:peer-groups/oc-netinst:peer-group/oc-netinst:transport/oc-netinst:config/oc-netinst:mtu-discovery" { - deviate replace { + description + "MTU discovery is implicitly always true in EOS"; + deviate add { config false; + } + deviate replace { default "true"; } } @@ -94,8 +100,43 @@ module arista-bgp-deviations { } deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:route-selection-options/oc-netinst:config/oc-netinst:external-compare-router-id" { description - "EOS default value for external-compare-router-id is false"; - deviate replace { + "EOS value is a triStateBool which is represented by the absence of the leaf so this leaf can not have a default value"; + deviate delete { + default "true"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:route-selection-options/oc-netinst:state/oc-netinst:external-compare-router-id" { + description + "EOS value is a triStateBool which is represented by the absence of the leaf so this leaf can not have a default value"; + deviate delete { + default "true"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:route-selection-options/oc-netinst:config/oc-netinst:advertise-inactive-routes" { + description + "EOS value is a triStateBool which is represented by the absence of the leaf so this leaf can not have a default value"; + deviate delete { + default "false"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:route-selection-options/oc-netinst:state/oc-netinst:advertise-inactive-routes" { + description + "EOS value is a triStateBool which is represented by the absence of the leaf so this leaf can not have a default value"; + deviate delete { + default "false"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:route-selection-options/oc-netinst:config/oc-netinst:always-compare-med" { + description + "EOS value is a triStateBool which is represented by the absence of the leaf so this leaf can not have a default value"; + deviate delete { + default "false"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:route-selection-options/oc-netinst:state/oc-netinst:always-compare-med" { + description + "EOS value is a triStateBool which is represented by the absence of the leaf so this leaf can not have a default value"; + deviate delete { default "false"; } } diff --git a/release/openconfig/models/interfaces/arista-intf-augments.yang b/release/openconfig/models/interfaces/arista-intf-augments.yang index 05c643b..f27e838 100644 --- a/release/openconfig/models/interfaces/arista-intf-augments.yang +++ b/release/openconfig/models/interfaces/arista-intf-augments.yang @@ -88,4 +88,26 @@ module arista-intf-augments { "Fallback status on this interface."; } } + augment "/oc-if:interfaces/oc-if:interface/oc-if:state" { + description + "Add leaf for tracking inactive interfaces."; + leaf inactive { + type boolean; + description + "Interface may be inactive due to configuration."; + } + } + + augment "/oc-if:interfaces/oc-if:interface/oc-if:config" { + description + "Add leaf for configuring load interval on this interface."; + leaf load-interval { + type uint16 { + range "0..600"; + } + default "300"; + description + "Configure load-interval on this interface."; + } + } } diff --git a/release/openconfig/models/interfaces/arista-intf-deviations.yang b/release/openconfig/models/interfaces/arista-intf-deviations.yang index e7b1292..7eb5bf7 100644 --- a/release/openconfig/models/interfaces/arista-intf-deviations.yang +++ b/release/openconfig/models/interfaces/arista-intf-deviations.yang @@ -11,6 +11,12 @@ module arista-intf-deviations { import openconfig-if-aggregate { prefix oc-lag; } + import openconfig-vlan { + prefix oc-vlan; + } + import openconfig-if-ip { + prefix oc-ip; + } organization "Arista Networks, Inc."; @@ -28,32 +34,108 @@ module arista-intf-deviations { reference "1.0.0"; } - deviation "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-eth:config/oc-eth:duplex-mode" { + deviation "/oc-if:interfaces/oc-if:interface/oc-if:state/oc-if:counters/oc-if:in-unknown-protos" { + description + "EOS does not support in-unknown-protos counter"; + deviate not-supported; + } + deviation "/oc-if:interfaces/oc-if:interface/oc-if:state/oc-if:counters/oc-if:in-fcs-errors" { + description + "EOS does not support in-fcs-errors counter"; + deviate not-supported; + } + deviation "/oc-if:interfaces/oc-if:interface/oc-if:state/oc-if:counters/oc-if:carrier-transitions" { + description + "EOS does not support carrier-transitions counter"; + deviate not-supported; + } + deviation "/oc-if:interfaces/oc-if:interface/oc-if:state/oc-if:counters/oc-if:last-clear" { + description + "EOS does not support last-clear counter"; + deviate not-supported; + } + deviation "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-eth:state/oc-eth:counters/oc-eth:in-8021q-frames" { + description + "EOS does not support in-8021q-frames counter"; + deviate not-supported; + } + deviation "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-eth:state/oc-eth:counters/oc-eth:out-8021q-frames" { + description + "EOS does not support out-8021q-frames counter"; + deviate not-supported; + } + deviation "/oc-if:interfaces/oc-if:interface/oc-lag:aggregation/oc-lag:config/oc-lag:min-links" { description - "EOS only supports full-duplex mode"; + "EOS default value for min-links is 0"; deviate add { - default "FULL"; - must "../duplex-mode = 'FULL'"; + default "0"; } } - deviation "/oc-if:interfaces/oc-if:interface/oc-lag:aggregation/oc-lag:config/oc-lag:lag-type" { + deviation "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:config/oc-ip:mtu" { description - "lag-type cannot be configured at the aggregate interface level. - The type is controlled by configuring it on the aggregate member interfaces"; + "EOS default value for IP MTU is 1500"; + deviate add { + default "1500"; + } + } + deviation "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:config/oc-ip:mtu" { + description + "EOS default value for IP MTU is 1500"; + deviate add { + default "1500"; + } + } + typedef vlan-mode-type-eos { + type enumeration { + enum "ACCESS" { + description + "Access mode VLAN interface (No 802.1q header)"; + } + enum "TRUNK" { + description + "Trunk mode VLAN interface"; + } + enum "DOT1Q-TUNNEL" { + description + "Q-in-Q VLAN interface"; + } + } + description + "Set the interface to access, trunk or dot1q-tunnel mode"; + } + + deviation "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-vlan:switched-vlan/oc-vlan:config/oc-vlan:interface-mode" { + description + "switchport mode in EOS can be set to values other than in oc-vlan-types:vlan-mode-type"; deviate replace { - config false; + type string; + } + deviate add { + must "../interface-mode = 'ACCESS' or ../interface-mode = 'TRUNK' or ../interface-mode = 'DOT1Q-TUNNEL'"; } } - deviation "/oc-if:interfaces/oc-if:interface/oc-lag:aggregation/oc-lag:config/oc-lag:min-links" { + deviation "/oc-if:interfaces/oc-if:interface/oc-lag:aggregation/oc-vlan:switched-vlan/oc-vlan:config/oc-vlan:interface-mode" { description - "EOS default value for min-links is 0"; + "switchport mode in EOS can be set to values other than in oc-vlan-types:vlan-mode-type"; + deviate replace { + type string; + } deviate add { - default "0"; + must "../interface-mode = 'ACCESS' or ../interface-mode = 'TRUNK' or ../interface-mode = 'DOT1Q-TUNNEL'"; } } - deviation "/oc-if:interfaces/oc-if:interface/oc-lag:aggregation/oc-lag:state/oc-lag:lag-type" { + deviation "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-eth:config/oc-eth:auto-negotiate" { description - "lag-type not supported at the aggregate state level."; - deviate not-supported; + "In EOS different interface may have different default value"; + deviate delete { + default "true"; + } + } + deviation "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-eth:config/oc-eth:enable-flow-control" { + description + "In EOS different interface may have different default value"; + deviate delete { + default "false"; + } } } diff --git a/release/openconfig/models/isis/arista-isis-augments.yang b/release/openconfig/models/isis/arista-isis-augments.yang new file mode 100644 index 0000000..daf677b --- /dev/null +++ b/release/openconfig/models/isis/arista-isis-augments.yang @@ -0,0 +1,30 @@ +module arista-isis-augments { + namespace "http://arista.com/yang/openconfig/isis/augments"; + prefix arista-isis-deviations; + + import openconfig-network-instance { + prefix oc-netinst; + } + import openconfig-isis { + prefix oc-isis; + } + + organization + "Arista Networks, Inc."; + contact + "Arista Networks, Inc. + Product Support"; + description + "This module contains OpenConfig ISIS augments in Arista EOS. + + Copyright (c) 2018 Arista Networks, Inc. All rights reserved."; + + revision 2018-01-12 { + description + "Initial augment file."; + } + + augment "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:afi-safi/oc-netinst:af/oc-netinst:multi-topology/oc-netinst:config" { + uses oc-isis:rt-admin-config; + } +} diff --git a/release/openconfig/models/isis/arista-isis-deviations.yang b/release/openconfig/models/isis/arista-isis-deviations.yang index 8b37fa2..a7633a6 100644 --- a/release/openconfig/models/isis/arista-isis-deviations.yang +++ b/release/openconfig/models/isis/arista-isis-deviations.yang @@ -25,7 +25,7 @@ module arista-isis-deviations { description "Configuration of authentication-check is not supported in EOS, it is always enabled."; deviate add { - must "../authentication-check = true" { + must "../authentication-check = 'true'" { error-message "Configuration of authentication-check is not supported in EOS, it is always enabled"; } } @@ -42,20 +42,11 @@ module arista-isis-deviations { "Configuration of multiple area addresses are not supported in EOS"; deviate not-supported; } - deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:afi-safi/oc-netinst:af/oc-netinst:config/oc-netinst:safi-name" { - description - "UNICAST is the only SAFI type supported in EOS"; - deviate add { - must "../safi-name = UNICAST" { - error-message "UNICAST is the only SAFI type supported in EOS"; - } - } - } deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:config/oc-netinst:poi-tlv" { description "Configuration of poi-tlv is not supported in EOS"; deviate add { - must "../poi-tlv = false" { + must "../poi-tlv = 'false'" { error-message "Configuration of poi-tlv is not supported in EOS"; } } @@ -64,7 +55,7 @@ module arista-isis-deviations { description "Configuration of iid-tlv is not supported in EOS"; deviate add { - must "../iid-tlv = false" { + must "../iid-tlv = 'false'" { error-message "Configuration of iid-tlv is not supported in EOS"; } } @@ -74,6 +65,22 @@ module arista-isis-deviations { "fast-flooding is not supported in EOS"; deviate not-supported; } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:lsp-bit/oc-netinst:overload-bit/oc-netinst:reset-triggers/oc-netinst:reset-trigger" { + description + "Configuration of multiple reset-triggers for overload-bit is not supported in EOS"; + deviate add { + max-elements "1"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:lsp-bit/oc-netinst:overload-bit/oc-netinst:reset-triggers/oc-netinst:reset-trigger/oc-netinst:config/oc-netinst:delay" { + description + "Overload Bit delay range is restricted in EOS"; + deviate replace { + type uint16 { + range "1..3600"; + } + } + } deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:reference-bandwidth/oc-netinst:config/oc-netinst:reference-bandwidth" { description "reference-bandwith is not supported in EOS"; @@ -84,26 +91,149 @@ module arista-isis-deviations { "NSR is not supported in EOS"; deviate not-supported; } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:config/oc-netinst:helper-only" { + description + "Helper-only is enabled by default in EOS"; + deviate add { + default "true"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:timers/oc-netinst:config/oc-netinst:lsp-lifetime-interval" { + description + "LSP lifetime interval range is restricted in EOS"; + deviate replace { + type uint16 { + range "60..65535"; + } + } + } deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:timers/oc-netinst:config/oc-netinst:lsp-refresh-interval" { description "Configuration of lsp-refresh-interval is not supported in EOS"; deviate not-supported; } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:timers/oc-netinst:spf/oc-netinst:config/oc-netinst:spf-hold-interval" { + description + "SPF hold interval range is restricted in EOS, default is 2000"; + deviate replace { + type uint64 { + range "1000..300000"; + } + default "2000"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:timers/oc-netinst:spf/oc-netinst:config/oc-netinst:spf-first-interval" { + description + "SPF first interval range is restricted in EOS, default is 1000"; + deviate replace { + type uint64 { + range "1..300000"; + } + } + deviate add { + default "1000"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:timers/oc-netinst:spf/oc-netinst:config/oc-netinst:spf-second-interval" { + description + "SPF second interval range is restricted in EOS, default is 1000"; + deviate replace { + type uint64 { + range "1..300000"; + } + } + deviate add { + default "1000"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:timers/oc-netinst:lsp-generation/oc-netinst:config/oc-netinst:lsp-max-wait-interval" { + description + "LSP max wait interval range is restricted in EOS, default is 5000"; + deviate replace { + type uint64 { + range "1000..300000"; + } + } + deviate add { + default "5000"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:timers/oc-netinst:lsp-generation/oc-netinst:config/oc-netinst:lsp-first-wait-interval" { + description + "LSP first wait interval range is restricted in EOS, default is 50"; + deviate replace { + type uint64 { + range "1..300000"; + } + } + deviate add { + default "50"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:timers/oc-netinst:lsp-generation/oc-netinst:config/oc-netinst:lsp-second-wait-interval" { + description + "LSP second wait interval range is restricted in EOS, default is 50"; + deviate replace { + type uint64 { + range "1..300000"; + } + } + deviate add { + default "50"; + } + } deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:transport/oc-netinst:config/oc-netinst:lsp-mtu-size" { description "Configuration of lsp-mtu-size is not supported in EOS"; deviate not-supported; } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:mpls/oc-netinst:igp-ldp-sync/oc-netinst:config/oc-netinst:enabled" { + description + "MPLS igp-ldp-sync is disabled by default in EOS"; + deviate replace { + default "false"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:mpls/oc-netinst:igp-ldp-sync/oc-netinst:config/oc-netinst:post-session-up-delay" { + description + "post-session-up-delay range is restricted in EOS, default is 5"; + deviate replace { + type uint16 { + range "1..60"; + } + } + deviate add { + default "5"; + } + } deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:igp-shortcuts" { description "igp-shortcuts is not supported in EOS"; deviate not-supported; } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:afi-safi/oc-netinst:af/oc-netinst:config/oc-netinst:safi-name" { + description + "UNICAST is the only SAFI type supported in EOS"; + deviate add { + must "../safi-name = 'UNICAST'" { + error-message "UNICAST is the only SAFI type supported in EOS"; + } + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:global/oc-netinst:afi-safi/oc-netinst:af/oc-netinst:config/oc-netinst:metric" { + description + "metric range is restricted in EOS"; + deviate replace { + type uint32 { + range "1..16777214"; + } + } + } deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:levels/oc-netinst:level/oc-netinst:config/oc-netinst:metric-style" { description "Configuration of metric-style is not supported in EOS, it is always WIDE_METRIC"; deviate add { - must "../metric-style = WIDE_METRIC" { + must "../metric-style = 'WIDE_METRIC'" { error-message "Configuration of metric-style is not supported in EOS, it is always WIDE_METRIC"; } } @@ -112,19 +242,103 @@ module arista-isis-deviations { description "Configuration of authentication-check is not supported in EOS, it is always enabled."; deviate add { - must "../authentication-check = true" { + must "../authentication-check = 'true'" { error-message "Configuration of authentication-check is not supported in EOS, it is always enabled"; } } } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:levels/oc-netinst:level/oc-netinst:traffic-engineering/oc-netinst:config/oc-netinst:ipv6-router-id" { + description + "ipv6-router-id is not supported in EOS"; + deviate not-supported; + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:levels/oc-netinst:level/oc-netinst:route-preference/oc-netinst:config/oc-netinst:external-route-preference" { + description + "external-route-preference range is restricted in EOS"; + deviate replace { + type uint8 { + range "1..255"; + } + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:levels/oc-netinst:level/oc-netinst:route-preference/oc-netinst:config/oc-netinst:internal-route-preference" { + description + "internal-route-preference range is restricted in EOS"; + deviate replace { + type uint8 { + range "1..255"; + } + } + } deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:config/oc-netinst:hello-padding" { description "Enum LOOSE and DISABLED of type oc-isis-types:hello-padding-type are not supported in EOS"; deviate add { default "STRICT"; - must "../hello-padding = STRICT or ../hello-padding = ADAPTIVE" { + must "../hello-padding = 'STRICT' or ../hello-padding = 'ADAPTIVE'" { error-message "Hello Padding must be either STRICT or ADAPTIVE"; } } } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:afi-safi/oc-netinst:af/oc-netinst:config/oc-netinst:enabled" { + description + "explicit enable/disable of address-family is not supported in EOS"; + deviate not-supported; + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:levels/oc-netinst:level/oc-netinst:timers/oc-netinst:config/oc-netinst:hello-interval" { + description + "hello-interval range is restricted in EOS"; + deviate replace { + type uint32 { + range "1..300"; + } + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:levels/oc-netinst:level/oc-netinst:timers/oc-netinst:config/oc-netinst:hello-multiplier" { + description + "hello-multiplier range is restricted in EOS"; + deviate replace { + type uint8 { + range "3..100"; + } + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:levels/oc-netinst:level/oc-netinst:afi-safi/oc-netinst:af/oc-netinst:config/oc-netinst:enabled" { + description + "explicit enable/disable of address-family is not supported in EOS"; + deviate not-supported; + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:levels/oc-netinst:level/oc-netinst:afi-safi/oc-netinst:af/oc-netinst:config/oc-netinst:metric" { + description + "metric range is restricted in EOS"; + deviate replace { + type union { + type uint32 { + range "1..16777214"; + } + type enumeration { + enum "GLOBAL_METRIC" { + description + "When set to GLOBAL_METRIC, metric configured under global afi-safi container will be advertised"; + } + } + } + default "GLOBAL_METRIC"; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:timers/oc-netinst:config/oc-netinst:csnp-interval" { + description + "configuration of csnp-interval is not supported in EOS"; + deviate not-supported; + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:timers/oc-netinst:config/oc-netinst:lsp-pacing-interval" { + description + "configuration of lsp-pacing-interval is not supported in EOS"; + deviate not-supported; + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:isis/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:bfd/oc-netinst:config/oc-netinst:bfd-tlv" { + description + "configuration of bfd-tlv is not supported in EOS"; + deviate not-supported; + } } diff --git a/release/openconfig/models/lacp/arista-lacp-augments.yang b/release/openconfig/models/lacp/arista-lacp-augments.yang index 80d3cba..740954e 100644 --- a/release/openconfig/models/lacp/arista-lacp-augments.yang +++ b/release/openconfig/models/lacp/arista-lacp-augments.yang @@ -36,9 +36,9 @@ module arista-lacp-augments { } augment "/oc-lacp:lacp/oc-lacp:interfaces/oc-lacp:interface/oc-lacp:members/oc-lacp:member/oc-lacp:state" { - description - "A member interface's selected state, can be one of the following: selected, standby and unselected"; leaf selected { + description + "A member interface's selected state, can be one of the following: selected, standby and unselected"; type selected-enum; default "unselected"; } diff --git a/release/openconfig/models/lacp/arista-lacp-deviations.yang b/release/openconfig/models/lacp/arista-lacp-deviations.yang index 510a694..6439fed 100644 --- a/release/openconfig/models/lacp/arista-lacp-deviations.yang +++ b/release/openconfig/models/lacp/arista-lacp-deviations.yang @@ -28,11 +28,6 @@ module arista-lacp-deviations { default "32768"; } } - deviation "/oc-lacp:lacp/oc-lacp:interfaces/oc-lacp:interface/oc-lacp:config/oc-lacp:interval" { - description - "EOS does not support port channel level interval"; - deviate not-supported; - } deviation "/oc-lacp:lacp/oc-lacp:interfaces/oc-lacp:interface/oc-lacp:config/oc-lacp:lacp-mode" { description "EOS does not support port channel level lacp-mode"; @@ -43,11 +38,6 @@ module arista-lacp-deviations { "EOS does not support port channel level system priority"; deviate not-supported; } - deviation "/oc-lacp:lacp/oc-lacp:interfaces/oc-lacp:interface/oc-lacp:state/oc-lacp:interval" { - description - "EOS does not support port channel level interval"; - deviate not-supported; - } deviation "/oc-lacp:lacp/oc-lacp:interfaces/oc-lacp:interface/oc-lacp:state/oc-lacp:lacp-mode" { description "EOS does not support port channel level lacp-mode"; diff --git a/release/openconfig/models/lldp/arista-lldp-augments.yang b/release/openconfig/models/lldp/arista-lldp-augments.yang new file mode 100644 index 0000000..9a3b70a --- /dev/null +++ b/release/openconfig/models/lldp/arista-lldp-augments.yang @@ -0,0 +1,69 @@ +module arista-lldp-augments { + namespace "http://arista.com/yang/openconfig/lldp/augments"; + prefix arista-lldp-augments; + + import openconfig-lldp { + prefix oc-lldp; + } + + organization + "Arista Networks, Inc."; + contact + "Arista Networks, Inc. + Product Support"; + description + "This module contains OpenConfig lldp augments in Arista EOS. + + Copyright (c) 2018 Arista Networks, Inc. All rights reserved."; + + revision 2018-03-06 { + description + "Initial augment file."; + } + + typedef transmit-mode-enum { + type enumeration { + enum "ALL" { + description + "Include address of all interfaces in the TLV"; + } + enum "INTERFACE" { + description + "Include the address of configured interface in the TLV"; + } + enum "BEST" { + description + "The default option for address in the TLV is 'best'"; + } + } + } + + augment "/oc-lldp:lldp/oc-lldp:config" { + container management-address { + description + "Configuration data for management-address TLV of LLDP PDU"; + leaf network-instance { + type string; + description + "Address of all interfaces or of the configured interface in this network-instance will + be included in the management-address TLV of the LLDP PDU depending on the + transmit-mode."; + } + leaf transmit-mode { + type transmit-mode-enum; + description + "Indicates the transmit-mode for the management-address TLV. A value of 'all' indicates + that address of all interface in the network-instance are included in the + mangement-address TLV. A value of 'interface' indicates that the address of interface + identified by the leaf 'interface' is included in the TLV."; + } + leaf interface { + type string; + description + "Interface whose address in this network-instance will be included in the + management-address TLV of the LLDP PDU. This is applicable only if the leaf + 'transmit-mode' is set to INTERFACE."; + } + } + } +} diff --git a/release/openconfig/models/lldp/arista-lldp-deviations.yang b/release/openconfig/models/lldp/arista-lldp-deviations.yang index f29b038..0421dc2 100644 --- a/release/openconfig/models/lldp/arista-lldp-deviations.yang +++ b/release/openconfig/models/lldp/arista-lldp-deviations.yang @@ -24,35 +24,35 @@ module arista-lldp-deviations { deviation "/oc-lldp:lldp/oc-lldp:config/oc-lldp:system-name" { description "system-name is reported but not configurable in EOS"; - deviate replace { + deviate add { config false; } } deviation "/oc-lldp:lldp/oc-lldp:config/oc-lldp:system-description" { description "system-description is reported but not configurable in EOS"; - deviate replace { + deviate add { config false; } } deviation "/oc-lldp:lldp/oc-lldp:config/oc-lldp:chassis-id" { description "chassis-id is reported but not configurable in EOS"; - deviate replace { + deviate add { config false; } } deviation "/oc-lldp:lldp/oc-lldp:config/oc-lldp:chassis-id-type" { description "chassis-id-type is reported but not configurable in EOS"; - deviate replace { + deviate add { config false; } } deviation "/oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:config/oc-lldp:name" { description "name is reported but not configurable in EOS"; - deviate replace { + deviate add { config false; } } @@ -61,23 +61,21 @@ module arista-lldp-deviations { "last-update is not supported. Please see last-update-time instead"; deviate not-supported; } - augment "/oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:neighbors/oc-lldp:neighbor/oc-lldp:state" { - description - "UNIX timestamp of the last update (number of seconds since the Epoch)"; - leaf last-update-time { - type uint64; - units "seconds"; - } - } deviation "/oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:neighbors/oc-lldp:neighbor/oc-lldp:state/oc-lldp:age" { description - "age is not supported. Please see creation-time instead"; + "age is not supported. Please see registration-time instead"; deviate not-supported; } augment "/oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:neighbors/oc-lldp:neighbor/oc-lldp:state" { - description - "UNIX timestamp of the neighbor registration event (number of seconds since the Epoch)"; + leaf last-update-time { + description + "UNIX timestamp of the last update (number of seconds since the Epoch)"; + type uint64; + units "seconds"; + } leaf registration-time { + description + "UNIX timestamp of the neighbor registration event (number of seconds since the Epoch)"; type uint64; units "seconds"; } diff --git a/release/openconfig/models/local-routing/arista-local-routing-deviations.yang b/release/openconfig/models/local-routing/arista-local-routing-deviations.yang new file mode 100644 index 0000000..4157a9c --- /dev/null +++ b/release/openconfig/models/local-routing/arista-local-routing-deviations.yang @@ -0,0 +1,76 @@ +module arista-local-routing-deviations { + namespace "http://arista.com/yang/openconfig/local-routing/deviations"; + prefix arista-local-routing-deviations; + + import openconfig-network-instance { + prefix oc-netinst; + } + + organization + "Arista Networks, Inc."; + contact + "Arista Networks, Inc. + Product Support"; + description + "This module contains OpenConfig local-routing deviations in Arista EOS. + + Copyright (c) 2017 Arista Networks, Inc. All rights reserved."; + + revision 2017-11-22 { + description + "Initial deviations file."; + } + + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:static-routes/oc-netinst:static/oc-netinst:next-hops/oc-netinst:next-hop/oc-netinst:config/oc-netinst:recurse" { + description + "configuring recurse is not supported by EOS"; + deviate not-supported; + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:static-routes/oc-netinst:static/oc-netinst:next-hops/oc-netinst:next-hop/oc-netinst:state/oc-netinst:recurse" { + description + "configuring recurse is not supported by EOS"; + deviate not-supported; + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:static-routes/oc-netinst:static/oc-netinst:next-hops/oc-netinst:next-hop/oc-netinst:config/oc-netinst:metric" { + description + "metric EOS range restriction. metric for static routes corresponds to their administrative distance in EOS"; + deviate replace { + type uint32 { + range "1..255"; + } + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:static-routes/oc-netinst:static/oc-netinst:next-hops/oc-netinst:next-hop/oc-netinst:state/oc-netinst:metric" { + description + "metric EOS range restriction. metric for static routes corresponds to their administrative distance in EOS"; + deviate replace { + type uint32 { + range "1..255"; + } + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:static-routes/oc-netinst:static/oc-netinst:next-hops/oc-netinst:next-hop/oc-netinst:interface-ref/oc-netinst:config/oc-netinst:subinterface" { + description + "subinterface next-hop currently not supported"; + deviate not-supported; + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:static-routes/oc-netinst:static/oc-netinst:next-hops/oc-netinst:next-hop/oc-netinst:interface-ref/oc-netinst:state/oc-netinst:subinterface" { + description + "subinterface next-hop currently not supported"; + deviate not-supported; + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:static-routes/oc-netinst:static/oc-netinst:next-hops/oc-netinst:next-hop/oc-netinst:interface-ref/oc-netinst:config/oc-netinst:interface" { + description + "change type from leafref to string: temporary fix until vlan interfaces are mapped"; + deviate replace { + type string; + } + } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:static-routes/oc-netinst:static/oc-netinst:next-hops/oc-netinst:next-hop/oc-netinst:interface-ref/oc-netinst:state/oc-netinst:interface" { + description + "change type from leafref to string: temporary fix until vlan interfaces are mapped"; + deviate replace { + type string; + } + } +} diff --git a/release/openconfig/models/mpls/arista-mpls-augments.yang b/release/openconfig/models/mpls/arista-mpls-augments.yang new file mode 100644 index 0000000..dcaea0a --- /dev/null +++ b/release/openconfig/models/mpls/arista-mpls-augments.yang @@ -0,0 +1,27 @@ +module arista-mpls-augments { + namespace "http://arista.com/yang/openconfig/mpls/augments"; + prefix arista-mpls-augments; + + import openconfig-network-instance { + prefix oc-netinst; + } + + organization "Arista Networks "; + description + "This module contains OpenConfig MPLS augments in Arista EOS. + + Copyright (c) 2017 Arista Networks, Inc. All rights reserved."; + + revision 2017-12-21 { + description + "Initial augment file."; + } + + augment "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:global/oc-netinst:reserved-label-blocks/oc-netinst:reserved-label-block/oc-netinst:config" { + leaf local-id { + type string; + description + "Local-id labels supported in EOS: dynamic, bgp-sr, isis-sr, l2evpn, srlb, static"; + } + } +} diff --git a/release/openconfig/models/network-instance/arista-netinst-deviations.yang b/release/openconfig/models/network-instance/arista-netinst-deviations.yang index 02d28ca..bda3bfc 100644 --- a/release/openconfig/models/network-instance/arista-netinst-deviations.yang +++ b/release/openconfig/models/network-instance/arista-netinst-deviations.yang @@ -25,7 +25,7 @@ module arista-netinst-deviations { description "default-import-policy is REJECT_ROUTE in EOS"; deviate add { - must "../default-import-policy = REJECT_ROUTE" { + must "../default-import-policy = 'REJECT_ROUTE'" { error-message "default-import-policy can only be set to REJECT_ROUTE in EOS"; } } @@ -43,4 +43,12 @@ module arista-netinst-deviations { "a global enabled command for VRFs is not fully supported in EOS"; deviate not-supported; } + deviation "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:config" { + description + "only default and L3 instances are supported in EOS"; + deviate add { + must "type='DEFAULT_INSTANCE' or type='L3VRF'"; + } + } + } diff --git a/release/openconfig/models/network-instance/arista-vlan-augments.yang b/release/openconfig/models/network-instance/arista-vlan-augments.yang index ecff19b..a60c091 100644 --- a/release/openconfig/models/network-instance/arista-vlan-augments.yang +++ b/release/openconfig/models/network-instance/arista-vlan-augments.yang @@ -5,11 +5,25 @@ module arista-vlan-augments { import openconfig-network-instance { prefix oc-netinst; } + import openconfig-interfaces { + prefix oc-if; + } + import openconfig-if-ethernet { + prefix oc-eth; + } + import openconfig-if-aggregate { + prefix oc-lag; + } + import openconfig-vlan { + prefix oc-vlan; + } + import iana-if-type { + prefix ift; + } - organization - "Arista Networks "; + organization "Arista Networks "; description - "This module contains OpenConfig LACP augments in Arista EOS. + "This module contains OpenConfig vlan augments in Arista EOS. Copyright (c) 2017 Arista Networks, Inc. All rights reserved."; @@ -38,4 +52,31 @@ module arista-vlan-augments { augment "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:vlans/oc-netinst:vlan/oc-netinst:state" { uses vlanAddionalEOSConfig; } + + grouping trunkGroupsEOSConfig { + leaf-list trunk-groups { + type string; + description + "Set of trunk groups the interface is a member of"; + } + } + + augment "/oc-if:interfaces/oc-if:interface/oc-lag:aggregation/oc-vlan:switched-vlan/oc-vlan:config" { + description + "Adds trunk group settings to a LAG interface"; + when "oc-if:type = 'ift:ieee8023adLag'" { + description + "Active when the interface is a LAG"; + } + uses trunkGroupsEOSConfig; + } + augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-vlan:switched-vlan/oc-vlan:config" { + description + "Adds trunk group settings to an Ethernet interface"; + when "oc-if:type = 'ift:ethernetCsmacd'" { + description + "Active when the interface is Ethernet"; + } + uses trunkGroupsEOSConfig; + } }