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;
+ }
}