diff --git a/vendor/cisco/nx/9.3-14/Cisco-NX-OS-device.yang b/vendor/cisco/nx/9.3-14/Cisco-NX-OS-device.yang new file mode 100644 index 000000000..b37971794 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/Cisco-NX-OS-device.yang @@ -0,0 +1,181555 @@ +module Cisco-NX-OS-device { + yang-version 1; + namespace "http://cisco.com/ns/yang/cisco-nx-os-device"; + prefix top; + organization "Cisco Systems, Inc."; + contact " Cisco Systems, Inc., Customer Service, Postal: 170 W Tasman Drive, San Jose, CA 95134, Tel: +1 800 553-NETS, e-mail: cs-yang@cisco.com"; + description "NXOS Device YANG Model"; + reference "971899e2987af307bc57d9aacacd1775403c26a2"; + revision 2024-09-11 { + description + "Initial Revision + Generated by mtx 1.0.1 Built on Wed Feb 10 14:12:33 PST 2021 by peicheng"; + } + + typedef address_Ipv4 { + type string { + pattern ".*(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])(%[p\\{N\\}p\\{L\\}]+)?.*"; + } + description "global address Ipv4 base type"; + } + + typedef address_Ipv6 { + type string { + pattern ".*((.*:|.*[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[p\\{N\\}p\\{L\\}]+)?.*"; + pattern ".*(([^:]+:){6}(([^:]+:[^:]+).*|(.*\\..*).*)).*|.*((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?.*"; + } + description "global address Ipv6 base type"; + } + + typedef address_Ip { + type union { + type address_Ipv4; + type address_Ipv6; + } + description "global address Ip base type"; + } + + typedef address_Mac { + type string { + pattern "([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}"; + } + description "global address MAC base type"; + } + + typedef mtx_array_ifindex { + type string { + pattern "[-/\\w\\d]+(,[-:/\\w\\d]+)*"; + } + description "global array base type"; + } + + typedef mtx_array_uint8 { + type string { + pattern "([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])+(,([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]))*"; + } + description "global array base type"; + } + + typedef mtx_array_uint16 { + type string { + pattern "(6553[0-5]|655[0-2][0-9]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]\\d{4}|[0-9]\\d{0,3})+(,(6553[0-5]|655[0-2][0-9]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[0-5]\\d{4}|[0-9]\\d{0,3}))*"; + } + description "global array base type"; + } + + typedef mtx_array_uint32 { + type string { + pattern "(429496729[0-6]|42949672[0-8]\\d|4294967[01]\\d{2}|429496[0-6]\\d{3}|42949[0-5]\\d{4}|4294[0-8]\\d{5}|429[0-3]\\d{6}|42[0-8]\\d{7}|4[01]\\d{8}|[1-3]\\d{9}|[1-9]\\d{8}|[1-9]\\d{7}|[1-9]\\d{6}|[1-9]\\d{5}|[1-9]\\d{4}|[1-9]\\d{3}|[1-9]\\d{2}|[1-9]\\d|\\d)+(,(429496729[0-6]|42949672[0-8]\\d|4294967[01]\\d{2}|429496[0-6]\\d{3}|42949[0-5]\\d{4}|4294[0-8]\\d{5}|429[0-3]\\d{6}|42[0-8]\\d{7}|4[01]\\d{8}|[1-3]\\d{9}|[1-9]\\d{8}|[1-9]\\d{7}|[1-9]\\d{6}|[1-9]\\d{5}|[1-9]\\d{4}|[1-9]\\d{3}|[1-9]\\d{2}|[1-9]\\d|\\d))*"; + } + description "global array base type"; + } + + typedef mtx_array_uint64 { + type string { + pattern "\\d{0,20}(,\\d{0,20})*"; + } + description "global array base type"; + } + + typedef mtx_array_bit { + type string { + pattern "([0-9]+(-[0-9]+)?(,[0-9]+(-[0-9]+)?)*)*"; + } + description "global array base type"; + } + + typedef mtx_array_community { + type string { + pattern "((unknown|regular|extended|route-target|rd):((unknown:.*:(0*(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])))|(as2-nn2:(0*(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])):(0*(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])))|(as2-nn4:(0*(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])):(0*(429496729[0-5]|42949672[0-8][0-9]|4294967[01][0-9]{2}|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|[1-3][0-9]{9}|[1-9][0-9]{1,8}|[0-9])))|(as4-nn2:(0*(429496729[0-5]|42949672[0-8][0-9]|4294967[01][0-9]{2}|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|[1-3][0-9]{9}|[1-9][0-9]{1,8}|[0-9])):(0*(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])))|(as4-nn4:(0*(429496729[0-5]|42949672[0-8][0-9]|4294967[01][0-9]{2}|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|[1-3][0-9]{9}|[1-9][0-9]{1,8}|[0-9])):(0*(429496729[0-5]|42949672[0-8][0-9]|4294967[01][0-9]{2}|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|[1-3][0-9]{9}|[1-9][0-9]{1,8}|[0-9])))|(ipv4-nn2:(((1[0-9]?[0-9]|[1-9]?[0-9]|2[0-4][0-9]|25[0-5])\\.){3}(1[0-9]?[0-9]|[1-9]?[0-9]|2[0-4][0-9]|25[0-5])):(0*(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])))|(ipv4-nn4:(((1[0-9]?[0-9]|[1-9]?[0-9]|2[0-4][0-9]|25[0-5])\\.){3}(1[0-9]?[0-9]|[1-9]?[0-9]|2[0-4][0-9]|25[0-5])):(0*(429496729[0-5]|42949672[0-8][0-9]|4294967[01][0-9]{2}|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|[1-3][0-9]{9}|[1-9][0-9]{1,8}|[0-9])))))"; + } + description "global array base type"; + } + + typedef aaa_AccountStatus { + type enumeration { + enum active { + value 0; + description "Active"; + } + enum inactive { + value 1; + description "Inactive"; + } + } + default "active"; + } + + typedef aaa_AuthMechanism { + type enumeration { + enum plain-text { + value 1; + description "Plain Text"; + } + enum gssapi-kerb5 { + value 2; + description "Gssapi Kerb5"; + } + enum gssapi-md5 { + value 3; + description "Gssapi Md5"; + } + } + default "plain-text"; + } + + typedef aaa_BannerMsg { + type string; + } + + typedef aaa_Boolean { + type enumeration { + enum no { + value 0; + description "No"; + } + enum yes { + value 1; + description "Yes"; + } + } + default "yes"; + } + + typedef aaa_Clear { + type enumeration { + enum no { + value 0; + description "No"; + } + enum yes { + value 1; + description "Yes"; + } + } + default "no"; + } + + typedef aaa_CmdType { + type enumeration { + enum config { + value 0; + description "Config"; + } + enum exec { + value 1; + description "Exec"; + } + } + default "config"; + } + + typedef aaa_Delimiter { + type string; + } + + typedef aaa_Email { + type address_Email { + pattern "|[a-zA-Z0-9\\._%\\+-]+@[a-zA-Z0-9\\.-]+"; + } + } + + typedef aaa_EncKey { + type string { + length "0..240"; + pattern ".*"; + } + } + + typedef aaa_HistoryDepth { + type uint8 { + range "0..15"; + } + default "5"; + } + + typedef aaa_IdleTimer { + type uint16 { + range "0..1440"; + } + } + + typedef aaa_KeyEnc { + type enumeration { + enum 0 { + value 0; + description "Clear Text"; + } + enum 6 { + value 6; + description "Type-6 Encrypted"; + } + enum 7 { + value 7; + description "Encrypted"; + } + } + default "0"; + } + + typedef aaa_KeyEncUserPass { + type enumeration { + enum unspecified { + value 255; + description "Unspecified"; + } + enum clear { + value 0; + description "Clear Text"; + } + enum Encrypt { + value 5; + description "Encrypted"; + } + } + } + + typedef aaa_LdapAttribute { + type string { + length "0..63"; + } + } + + // NXOS supports maximum limits in the type definitions + typedef aaa_LdapDn { + type string { + length "0..127"; + } + } + + typedef aaa_LdapFilter { + type string { + length "0..127"; + } + } + + // Ldap Logging Level + typedef aaa_LdapLogLevel { + type enumeration { + enum emergency { + value 0; + description "Emergency"; + } + enum alert { + value 1; + description "Alert"; + } + enum critical { + value 2; + description "Critical"; + } + enum error { + value 3; + description "Error"; + } + enum warning { + value 4; + description "Warning"; + } + enum notification { + value 5; + description "Notification"; + } + enum informational { + value 6; + description "Informational"; + } + enum debug { + value 7; + description "Debug"; + } + } + default "critical"; + } + + typedef aaa_LdapPwdEnc { + type enumeration { + enum 0 { + value 0; + description "Clear Text"; + } + enum 7 { + value 7; + description "Encrypted"; + } + } + default "7"; + } + + typedef aaa_LdapSSLStrictnessLevel { + type enumeration { + enum strict { + value 0; + description "Strict"; + } + enum permissive { + value 1; + description "Permissive"; + } + } + default "strict"; + } + + typedef aaa_LoggingLevel { + type enumeration { + enum Emergency { + value 0; + description "Emergency"; + } + enum Alert { + value 1; + description "Alert"; + } + enum Critical { + value 2; + description "Critical"; + } + enum Error { + value 3; + description "Error"; + } + enum Warning { + value 4; + description "Warning"; + } + enum Notif { + value 5; + description "Notifications"; + } + enum Inform { + value 6; + description "Informational"; + } + enum Debug { + value 7; + description "Debug"; + } + } + default "Error"; + } + + typedef aaa_MonitoringPasswordType { + type aaa_EncKey { + length "1..32"; + } + default "wawy"; + } + + typedef aaa_MonitoringUserType { + type string { + pattern ".*[a-zA-Z0-9][a-zA-Z0-9_\\.-]{0,63}.*"; + } + default "test"; + } + + typedef aaa_NoRolePolicy { + type enumeration { + enum no-login { + value 0; + description "No Login"; + } + enum assign-default-role { + value 1; + description "Assign Default Role"; + } + } + } + + typedef aaa_Order { + type uint16 { + range "0..16"; + } + } + + typedef aaa_Passwd { + type string { + length "1..127"; + pattern ".*"; + } + } + + typedef aaa_Phone { + type address_Phone; + } + + typedef aaa_Port { + type uint32 { + range "1..65535"; + } + } + + typedef aaa_PrivLvlType { + type uint32 { + range "1..15"; + } + default "15"; + } + + typedef aaa_ProviderGroupDeadtime { + type uint32 { + range "0..1440"; + } + default "0"; + } + + // Limited by NXOS maximum size for server group + typedef aaa_ProviderGroupName { + type string { + length "0..127"; + } + } + + typedef aaa_ProviderGroupProtocol { + type enumeration { + enum tacacs { + value 0; + description "TACACS"; + } + enum radius { + value 1; + description "RADIUS"; + } + enum ldap { + value 2; + description "LDAP"; + } + } + } + + typedef aaa_ProviderGroupSnmpIndex { + type uint32; + } + + typedef aaa_ProviderSnmpIndex { + type uint32; + } + + typedef aaa_ProviderState { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum operable { + value 1; + description "Operable"; + } + enum inoperable { + value 2; + description "Inoperable"; + } + } + default "unknown"; + } + + typedef aaa_PwdChangeCount { + type uint8 { + range "0..10"; + } + } + + typedef aaa_PwdChangeInterval { + type uint16 { + range "1..745"; + } + } + + typedef aaa_PwdExpWarnTime { + type uint8 { + range "0..30"; + } + } + + typedef aaa_PwdHistory { + type string; + } + + typedef aaa_PwdLifeTime { + type uint32 { + range "0..99999"; + } + } + + typedef aaa_PwdPolicy { + type enumeration { + enum enable { + value 0; + description "Enable"; + } + enum disable { + value 1; + description "Disable"; + } + } + default "enable"; + } + + typedef aaa_RadPort { + type uint32 { + range "0..65535"; + } + } + + typedef aaa_RadSrvUseType { + type enumeration { + enum Auth { + value 0; + description "Authentication"; + } + enum Author { + value 1; + description "Authorization"; + } + enum Acc { + value 2; + description "Accounting"; + } + enum All { + value 3; + description "All"; + } + } + default "All"; + } + + typedef aaa_Realm { + type enumeration { + enum local { + value 0; + description "Local"; + } + enum radius { + value 1; + description "RADIUS"; + } + enum tacacs { + value 2; + description "TACACS+"; + } + enum ldap { + value 3; + description "LDAP"; + } + } + default "local"; + } + + typedef aaa_Retries { + type uint32 { + range "0..5"; + } + default "1"; + } + + typedef aaa_RuleAccessType { + type enumeration { + enum none { + value 0; + description "none"; + } + enum read { + value 1; + description "Read"; + } + enum read-write { + value 2; + description "Read Write"; + } + enum command { + value 3; + description "Command"; + } + } + } + + typedef aaa_RuleCmdStrType { + type string { + length "0..128"; + } + } + + typedef aaa_RuleEntityType { + type string { + length "0..512"; + } + } + + typedef aaa_RuleNumberType { + type uint32 { + range "1..256"; + } + } + + typedef aaa_RulePermissionType { + type enumeration { + enum none { + value 0; + description "none"; + } + enum permit { + value 1; + description "Permit"; + } + enum deny { + value 2; + description "Deny"; + } + } + } + + typedef aaa_RuleScopeType { + type enumeration { + enum none { + value 0; + description "none"; + } + enum feature { + value 2; + description "Feature"; + } + enum feature-group { + value 3; + description "Feature Group"; + } + enum oid { + value 21; + description "OID"; + } + } + } + + typedef aaa_SearchMapEntryType { + type enumeration { + enum user-profile { + value 1; + description "User Profile"; + } + enum trusted-cert { + value 2; + description "Trusted Cert"; + } + enum crl-lookup { + value 3; + description "Crl Lookup"; + } + enum user-switch-bind { + value 4; + description "User Switch Bind"; + } + enum user-certdn-match { + value 5; + description "User Certdn Match"; + } + enum user-pubkey-match { + value 6; + description "User Pubkey Match"; + } + } + default "user-profile"; + } + + typedef aaa_SecretEncType { + type enumeration { + enum 0 { + value 0; + description "No Encryption"; + } + enum 5 { + value 5; + description "MD5 encrpytion"; + } + enum 8 { + value 8; + description "PBKDF2 encryption"; + } + enum 9 { + value 9; + description "SCRYPT encryption"; + } + } + default "0"; + } + + typedef aaa_SshData { + type string { + length "0..16384"; + pattern ".*[a-zA-Z0-9=\\n\\r/\\+ _\\.@-]*.*"; + } + } + + typedef aaa_TimeMin { + type uint32 { + range "0..1440"; + } + default "0"; + } + + typedef aaa_TimeSec { + type uint32 { + range "1..60"; + } + default "5"; + } + + typedef aaa_UnixUID { + type uint16 { + range "99..15999"; + } + } + + typedef aaa_UserCertDataType { + type string; + } + + typedef aaa_UserRolePrivType { + type enumeration { + enum noDataPriv { + value 0; + description "No Privilege"; + } + enum readPriv { + value 1; + description "Read Privilege"; + } + enum writePriv { + value 2; + description "Write Privilege"; + } + } + default "noDataPriv"; + } + + typedef aaa_authenticationProtocol { + type enumeration { + enum pap { + value 0; + description "PAP"; + } + enum chap { + value 1; + description "CHAP"; + } + enum mschap { + value 2; + description "MS-CHAP"; + } + enum mschapv2 { + value 3; + description "MS-CHAPv2"; + } + enum ascii { + value 4; + description "ASCII"; + } + } + } + + typedef aaa_loginShellType { + type enumeration { + enum shellvsh { + value 1; + description "vsh shell type"; + } + enum shellbash { + value 2; + description "bash shell type"; + } + } + default "shellvsh"; + } + + // Bank type + typedef ac_BankT { + type enumeration { + enum even { + value 1; + description "Even"; + } + enum Odd { + value 2; + description "Odd"; + } + } + default "even"; + } + + typedef acl_ACEStats { + type uint8; + default "0"; + } + + // Ip port name + typedef acl_AclName { + type string { + length "0..64"; + } + } + + // ACE action type + typedef acl_ActionType { + type enumeration { + enum invalid { + value 0; + description "Invalid ace action type"; + } + enum permit { + value 1; + description "Permit ace action type"; + } + enum deny { + value 2; + description "Deny ace action type"; + } + } + default "invalid"; + } + + // Capture Session + typedef acl_CaptureSes { + type uint16 { + range "0..48"; + } + default "0"; + } + + // config State + typedef acl_ConfigState { + type uint8; + default "0"; + } + + // Direction type + typedef acl_Direction { + type enumeration { + enum in { + value 0; + description "Ingress Direction for packets"; + } + enum out { + value 1; + description "Egress Direction for packets"; + } + } + default "in"; + } + + // Fragment type + typedef acl_Fragments { + type enumeration { + enum disabled { + value 0; + description "Disable fragment handling"; + } + enum deny-all { + value 1; + description "Drop all the fragments"; + } + enum permit-all { + value 2; + description "Allow all the fragments"; + } + } + } + + // http option (http-method) value enum + typedef acl_HttpOptionType { + type enumeration { + enum get { + value 1; + description "get http option type"; + } + enum put { + value 2; + description "put http option type"; + } + enum head { + value 3; + description "head http option type"; + } + enum post { + value 4; + description "post http option type"; + } + enum delete { + value 5; + description "delete http option type"; + } + enum trace { + value 6; + description "trace http option type"; + } + enum connect { + value 7; + description "connect http option type"; + } + enum invalid { + value 0; + description "invalid http option type"; + } + } + default "invalid"; + } + + // Name of interface, e.g. "Eth1/2" + typedef acl_IfName { + type nw_IfId; + } + + // MPLS Label Mask Range + typedef acl_LabelMaskRange { + type uint32 { + range "0..1048575"; + } + default "1048575"; + } + + // MPLS Label Range + typedef acl_LabelRange { + type uint32 { + range "0..1048575"; + } + } + + // MAC Protocol + typedef acl_MACProtocol { + + type uint32 { + range "0..65536"; + } + default "65536"; + } + + // ACL name + typedef acl_Name { + type string { + length "1..64"; + } + } + + // L4 port relationship operator + typedef acl_Operator { + type enumeration { + enum none { + value 0; + description "none of the operator"; + } + enum lt { + value 4; + description "specifies less than operator"; + } + enum gt { + value 5; + description "specifies greater than operator"; + } + enum eq { + value 6; + description "specifies equal to operator"; + } + enum neq { + value 7; + description "specifies not equal to operator"; + } + enum range { + value 8; + description "specifies range operator"; + } + } + default "none"; + } + + // Packet Length + typedef acl_PktLen { + type uint16 { + range "19..9210"; + } + default "19"; + } + + // L4 port number + typedef acl_PortNumber { + type uint16; + default "0"; + } + + // ACL name + typedef acl_RemarkStr { + type string { + length "1..100"; + } + } + + // ACE sequence number + typedef acl_SequenceNumber { + type uint32 { + range "0..4294967295"; + } + } + + // TCP Flags Mask + typedef acl_TcpFlagsMask { + type uint8 { + range "0..64"; + } + default "0"; + } + + // TCP option length + typedef acl_TcpOptionLengthType { + type uint32 { + range "0..41"; + } + default "41"; + } + + // time-range name + typedef acl_TimeRangeName { + type string { + length "0..64"; + } + } + + // UDF mask + typedef acl_UdfMask { + type uint16 { + range "0..65535"; + } + } + + // UDF name + typedef acl_UdfName { + type string { + length "1..16"; + } + } + + // UDF value + typedef acl_UdfVal { + type uint16 { + range "0..65535"; + } + } + + // VLAN Acl action type + typedef acl_VAclActionType { + type enumeration { + enum invalid { + value 0; + description "invalid vlan acl action type"; + } + enum forward { + value 1; + description "forward vlan acl action"; + } + enum drop { + value 2; + description "drop vlan acl action"; + } + enum redirect { + value 3; + description "redirect vlan acl action"; + } + } + default "invalid"; + } + + // VLAN Acl action log enable/disable + typedef acl_VAclLog { + type uint8; + default "0"; + } + + // VLAN Acl match acl type + // Refer to CLI_ACL_IP/CLI_ACL_IPV6/CLI_ACL_MAC for values + typedef acl_VAclMatchType { + type uint16; + default "0"; + } + + // Vlan List String for VLAN Acl Policy + typedef acl_VlanListStr { + type string { + length "0..512"; + } + } + + // VLAN + typedef acl_VlanType { + type uint32 { + range "0..4095"; + } + default "4095"; + } + + // nve vni ID + typedef acl_VniType { + type uint32 { + range "0..16777216"; + } + default "16777216"; + } + + // cos type + typedef acl_cosType { + type uint8 { + range "0..8"; + } + default "8"; + } + + // erspan DSCP + typedef acl_erspanDscpType { + type uint8 { + range "0..64"; + } + default "64"; + } + + // erspan gre protocol + typedef acl_erspanGreType { + type uint32 { + range "0..65536"; + } + default "65536"; + } + + // VLAN Acl policy operation apply/remove + typedef acl_operation { + type uint8; + default "1"; + } + + typedef action_Descr { + type string; + } + + typedef action_OperSt { + type enumeration { + enum scheduled { + value 0; + description "Scheduled"; + } + enum processing { + value 1; + description "Processing"; + } + enum completed { + value 2; + description "Completed"; + } + enum cancelled { + value 3; + description "Cancelled"; + } + enum failed { + value 4; + description "Failed"; + } + enum indeterminate { + value 5; + description "Indeterminate"; + } + enum suspended { + value 6; + description "Suspended"; + } + enum crashsuspect { + value 7; + description "Crash-Suspect"; + } + } + default "scheduled"; + } + + // Task status qualifier + typedef action_Qual { + type string; + } + + // Result history retention size: how many records + // to keep per rule + typedef action_RetentionSize { + type uint16 { + range "1..1024"; + } + default "100"; + } + + // Resuilt history retention time: how long records are + // to be kept per rule + typedef action_RetentionTime { + type union { + type string; + type uint64; + } + } + + // Type of the task + typedef action_Type { + type enumeration { + enum clear { + value 1; + description "Clear"; + } + enum reset { + value 2; + description "Reset"; + } + enum reload { + value 3; + description "Reload"; + } + enum locate { + value 4; + description "Locate"; + } + enum install { + value 5; + description "Install"; + } + enum test { + value 6; + description "Test"; + } + enum collect { + value 7; + description "Collect"; + } + enum interface-in-service { + value 8; + description "Set Interface In-Service"; + } + } + default "clear"; + } + + // Operational state of Rule + typedef actrl_OperSt { + type enumeration { + enum enabled { + value 1; + description "enabled"; + } + enum disabled { + value 2; + description "disabled"; + } + } + default "disabled"; + } + + // Policy control tag + typedef actrl_PcTag { + type vz_GPCTag; + } + + // Scope id (24-bit) + typedef actrl_ScopeId { + + type uint32 { + range "1..16777215"; + } + default "1"; + } + + // Security Label (12-bit) + typedef actrl_SecLbl { + + type uint16 { + range "1..4095"; + } + } + + typedef address_Email { + type string; + } + + typedef address_HostNameOrDottedQuad { + type string { + length "1..256"; + pattern ".*[A-Za-z]([A-Za-z0-9-]*[A-Za-z0-9])?(\\.[A-Za-z]([A-Za-z0-9-]*[A-Za-z0-9])?)*.*|.*(.*25[0-5]|.*2[0-4][0-9]|.*1[0-9][0-9]|.*[1-9][0-9]|.*[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.(25[0-5].*|2[0-4][0-9].*|1[0-9][0-9].*|[1-9][0-9].*|[0-9].*).*"; + } + } + + typedef address_Phone { + type string; + } + + // Socket Port Number + typedef address_PortNumber { + type uint16; + } + + // Adjacency Flags + typedef adjacency_AdjFlags { + + type string; + } + + // Adjacency operational state + typedef adjacency_AdjOperSt { + type enumeration { + enum unspecified { + value 0; + description "Unknown"; + } + enum incomplete { + value 1; + description "Incomplete"; + } + enum normal { + value 2; + description "Resolved"; + } + } + } + + // Database type + typedef adjacency_DbT { + type enumeration { + enum ip { + value 1; + description "IP database"; + } + enum ipv6 { + value 2; + description "IPv6 database"; + } + } + default "ip"; + } + + typedef aggregate_AdminState { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum up { + value 1; + description "Up"; + } + enum down { + value 2; + description "Down"; + } + } + default "down"; + } + + // Address Family Type + typedef aggregate_AfT { + type enumeration { + enum ipv4-ucast { + value 0; + description "Ipv4 unicast address family"; + } + enum vpnv4-ucast { + value 1; + description "Vpnv4 unicast address family"; + } + enum ipv6-ucast { + value 2; + description "Ipv6 unicast address family"; + } + enum vpnv6-ucast { + value 3; + description "Vpnv6 unicast address family"; + } + enum l2-evpn { + value 4; + description "L2-Evpn unicast address family"; + } + } + default "l2-evpn"; + } + + typedef aggregate_BfdStatus { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum admin_down { + value 1; + description "Admin Down"; + } + enum down { + value 2; + description "Oper Down"; + } + enum init { + value 3; + description "Intialization"; + } + enum up { + value 4; + description "Up"; + } + } + default "admin_down"; + } + + typedef aggregate_BooleanFlag { + type enumeration { + enum no { + value 0; + description "No"; + } + enum yes { + value 1; + description "Yes"; + } + } + default "no"; + } + + // + // + // + // + // + // + // + // + // + // + // + // + // Bandwidth metric of the SVI in kilobits per second. + typedef aggregate_Bw { + type uint32 { + range "1..400000000"; + } + default "10000000"; + } + + typedef aggregate_ConfTmplStatus { + type enumeration { + enum inactive { + value 0; + description "ConfigTmplInactive"; + } + enum active { + value 1; + description "ConfigTmplOperational"; + } + enum failed { + value 2; + description "ConfigTmplFailed"; + } + } + default "inactive"; + } + + typedef aggregate_ConfigSourceType { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum cli { + value 1; + description "Cli"; + } + enum controller { + value 2; + description "Controller"; + } + } + default "cli"; + } + + typedef aggregate_ConfigStatus { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum configReady { + value 1; + description "ConfigReady"; + } + enum configNotReady { + value 2; + description "ConfigNotReady"; + } + enum configPurgeInProgress { + value 4; + description "ConfigPurgeInProgress"; + } + } + default "configNotReady"; + } + + typedef aggregate_ControllerID { + type uint32 { + range "0..16"; + } + default "0"; + } + + typedef aggregate_ControllerIdBitmap { + type mtx_array_bit; + } + + typedef aggregate_CpuType { + type string; + } + + typedef aggregate_CtrlrType { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum l2-vxlan { + value 1; + description "L2Vxlan"; + } + enum vxlan { + value 2; + description "Vxlan"; + } + } + default "l2-vxlan"; + } + + typedef aggregate_EpType { + + type string; + default "unicast"; + } + + typedef aggregate_GroupAddr { + type string; + } + + typedef aggregate_HostReachabilityMode { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum floodAndLearn { + value 1; + description "FloodAndLearn"; + } + enum controller { + value 2; + description "Controller"; + } + enum bgp { + value 3; + description "Bgp"; + } + } + default "floodAndLearn"; + } + + typedef aggregate_IngressRepProtocolType { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum static { + value 1; + description "Static"; + } + enum bgp { + value 2; + description "Bgp"; + } + } + default "unknown"; + } + + typedef aggregate_IntfAssignMode { + type enumeration { + enum dedicated { + value 0; + description "Dedicated"; + } + enum shared { + value 1; + description "Shared"; + } + } + } + + typedef aggregate_IntfTrunkVlans { + type l2_VlanBitmap; + default "1-4092"; + } + + typedef aggregate_IntfType { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum port { + value 1; + description "Port"; + } + enum port-channel { + value 2; + description "Port Channel"; + } + enum tunnel { + value 3; + description "Tunnel"; + } + enum loopback { + value 4; + description "Loopback"; + } + enum svi { + value 5; + description "SVI"; + } + } + } + + typedef aggregate_MTU { + type uint32 { + range "1..9216"; + } + default "9216"; + } + + // Mac type + typedef aggregate_MacType { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum unicast { + value 1; + description "Unicast"; + } + enum multicast { + value 2; + description "Multicast"; + } + } + default "unicast"; + } + + // Minimum rx interval (in ms) + typedef aggregate_MinRxIntvl { + type uint16 { + range "0..999"; + } + default "50"; + } + + // Minimum tx interval (in ms) + typedef aggregate_MinTxIntvl { + type uint16 { + range "0..999"; + } + default "50"; + } + + typedef aggregate_ModuleType { + type string; + } + + typedef aggregate_OperState { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum up { + value 1; + description "Up"; + } + enum down { + value 2; + description "Down"; + } + } + default "down"; + } + + typedef aggregate_ReplicationModeType { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum replicationServer { + value 1; + description "ReplicationServer"; + } + enum ingressReplication { + value 2; + description "IngressReplication"; + } + enum ipMulticast { + value 3; + description "IpMulticast"; + } + } + default "unknown"; + } + + typedef aggregate_ResourceStatus { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum vlanCreated { + value 1; + description "VlanCreated"; + } + enum vlanFailed { + value 2; + description "VlanFailed"; + } + enum vnidCreated { + value 3; + description "VnidCreated"; + } + enum vnidFailed { + value 4; + description "VnidFailed"; + } + enum vlansCarved { + value 5; + description "VlansCarved"; + } + enum vlansNotCarved { + value 6; + description "VlansNotCarved"; + } + enum vnidCreationReceived { + value 7; + description "VnidCreationReceived"; + } + enum myTEPIPPublished { + value 101; + description "MyTEPIPPublished"; + } + enum controllerIntfNotCarved { + value 201; + description "ControllerIntfNotCarved"; + } + enum controllerIntfCarved { + value 202; + description "ControllerIntfCarved"; + } + } + default "unknown"; + } + + // Route target policy type + typedef aggregate_RttPType { + type enumeration { + enum import { + value 1; + description "Import"; + } + enum export { + value 2; + description "Export"; + } + } + default "import"; + } + + typedef aggregate_TunnelType { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum vxlanipv4 { + value 1; + description "VxLanOverIPV4"; + } + enum vxlanipv6 { + value 2; + description "VxLanOverIPV6"; + } + enum nvgre { + value 3; + description "NVGRE"; + } + } + } + + typedef aggregate_VpcKeepaliveStatus { + type enumeration { + enum VpcOobUnknown { + value 0; + description "VpcOobUnknown"; + } + enum VpcOobDisabled { + value 1; + description "VpcOobDisabled"; + } + enum VpcOobPeerAlive { + value 2; + description "VpcOobPeerAlive"; + } + enum VpcOobPeerNotAlive { + value 3; + description "VpcOobPeerNotAlive"; + } + enum VpcOobPeerAliveDomainMismatch { + value 4; + description "VpcOobPeerAliveDomainMismatch"; + } + enum VpcOobSuspended { + value 5; + description "VpcOobSuspended"; + } + enum VpcOobNotOperational { + value 6; + description "VpcOobNotOperational"; + } + enum VpcOobSuspendedVrf { + value 7; + description "VpcOobSuspendedVrf"; + } + enum VpcOobMisconfig { + value 8; + description "VpcOobMisconfig"; + } + } + default "VpcOobUnknown"; + } + + typedef aggregate_VpcOperStatus { + type enumeration { + enum down { + value 0; + description "down"; + } + enum up { + value 1; + description "up"; + } + } + default "down"; + } + + typedef aggregate_VpcPeerLinkStatus { + type enumeration { + enum VpcPeerNolink { + value 0; + description "VpcPeerNolink"; + } + enum VpcPeerLinkDown { + value 1; + description "VpcPeerLinkDown"; + } + enum VpcPeerOk { + value 2; + description "VpcPeerOk"; + } + enum VpcPeerNotfound { + value 3; + description "VpcPeerNotfound"; + } + } + default "VpcPeerNolink"; + } + + // Fabric Forwarding Mode + typedef aggregate_fabFwdMode { + type enumeration { + enum standard { + value 0; + description "Standard"; + } + enum anycastgw { + value 1; + description "Anycast Gateway"; + } + enum proxygw { + value 2; + description "ProxyGw"; + } + } + default "standard"; + } + + // Burst interval shift + typedef analytics_BurstIntvlShift { + type uint8 { + range "0..255"; + } + default "0"; + } + + // Mode + typedef analytics_CModeT { + type enumeration { + enum aci { + value 0; + description "ACI mode"; + } + enum standalone { + value 1; + description "Standalone mode"; + } + } + default "aci"; + } + + // Collector buket identifier + typedef analytics_CollBucketId { + type uint8 { + range "1..255"; + } + } + + // Collect Interval + typedef analytics_CollIntvl { + type uint32 { + range "100..64000"; + } + default "100"; + } + + // Collector version + typedef analytics_CollVersion { + type enumeration { + enum v5 { + value 1; + description "Version 5"; + } + enum v9 { + value 2; + description "Version 9"; + } + enum cisco-v1 { + value 3; + description "Cisco proprietary version 1"; + } + } + default "cisco-v1"; + } + + // Collect params + typedef analytics_CollectParams { + + type string; + default "src-intf"; + } + + // Collector identifier + typedef analytics_CollectorId { + type uint32 { + range "0..4294967295"; + } + } + + // Default filtering policy type + typedef analytics_DefPolicyT { + type enumeration { + enum permit { + value 0; + description "Permit"; + } + enum deny { + value 1; + description "Deny"; + } + } + default "permit"; + } + + // Direction type + typedef analytics_DirectionT { + type enumeration { + enum in { + value 1; + description "Ingress"; + } + enum out { + value 2; + description "Egress"; + } + enum both { + value 3; + description "Both"; + } + } + default "in"; + } + + // Event Export Max + typedef analytics_EventExportMax { + type uint32 { + range "0..32000"; + } + default "3"; + } + + // IP filter type + typedef analytics_FltType { + type enumeration { + enum ipv4 { + value 1; + description "Ipv4 type"; + } + enum ipv6 { + value 2; + description "Ipv6 type"; + } + enum ce { + value 3; + description "CE type"; + } + } + default "ipv4"; + } + + // Forwarding instance target identifier + typedef analytics_FwdInstTargetId { + type uint32 { + range "0..16777215"; + } + } + + // Hash value + typedef analytics_HashT { + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + // Hash width type + typedef analytics_HashWidthT { + type uint16 { + range "1..255"; + } + default "12"; + } + + // IP packet identifier shift + typedef analytics_IpPktIdShift { + type uint8 { + range "0..255"; + } + default "0"; + } + + // Layer4 port + typedef analytics_L4Port { + type uint32 { + range "1..65535"; + } + } + + // Latency Unit + typedef analytics_LatencyUnit { + type enumeration { + enum micro-sec { + value 0; + description "Micro Second"; + } + enum milli-sec { + value 1; + description "Milli Second"; + } + } + default "micro-sec"; + } + + // Latency Value + typedef analytics_LatencyValue { + type uint32 { + range "0..65535"; + } + } + + // Match params + typedef analytics_MatchParams { + + type string; + } + + // Mode + typedef analytics_ModeT { + type enumeration { + enum analytics { + value 0; + description "Analytics mode"; + } + enum netflow { + value 1; + description "Netflow mode"; + } + } + default "netflow"; + } + + // MTU + typedef analytics_Mtu { + type uint16 { + range "576..9216"; + } + default "1500"; + } + + // Oclass ID + typedef analytics_OclassId { + type uint16 { + range "0..256"; + } + default "0"; + } + + // Payload length identifier + typedef analytics_PayloadLenIdT { + type uint8 { + range "0..10"; + } + } + + // Payload length + typedef analytics_PayloadLenT { + + type uint32 { + range "0..16383"; + } + default "0"; + } + + // Receive window size identifier + typedef analytics_RcvWindowSzIdT { + type uint8 { + range "0..4"; + } + } + + // Receive window size + typedef analytics_RcvWindowSzT { + type uint32 { + range "0..65535"; + } + default "0"; + } + + // TCP options header length identifier + typedef analytics_TCPOptHdrLenIdT { + type uint8 { + range "0..6"; + } + } + + // TCP options header length + typedef analytics_TCPOptHdrLenT { + type uint32 { + range "0..15"; + } + default "0"; + } + + // Sequence number guess threshold + typedef analytics_ThresholdT { + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + // Vrfname + typedef analytics_VrfName { + type l3_VrfName; + default "default"; + } + + // Ability to configure latency resolution + typedef analytics_configLatencyResFactorT { + type enumeration { + enum enable { + value 1; + description "enable"; + } + enum disable { + value 0; + description "disable"; + } + } + default "disable"; + } + + // Create Count + typedef analytics_createCount { + type uint32 { + range "0..16777215"; + } + default "0"; + } + + // Hit Count + typedef analytics_hitCount { + type uint32 { + range "0..16777215"; + } + default "0"; + } + + // Num tcam entries type + typedef analytics_numTcamEntT { + type uint32 { + range "1..65535"; + } + default "1024"; + } + + // Num tcam entries per V4 type + typedef analytics_numTcamEntV4T { + type uint16 { + range "1..256"; + } + default "1"; + } + + // Num tcam entries per V6 type + typedef analytics_numTcamEntV6T { + type uint16 { + range "1..256"; + } + default "4"; + } + + // Ability to expose oport/oclass information + typedef analytics_oportSupportT { + type enumeration { + enum enable { + value 1; + description "enable"; + } + enum disable { + value 0; + description "disable"; + } + } + default "disable"; + } + + // Adjacency Flags + typedef arp_AdjFlags { + + type string; + } + + // Adjacency operational state + typedef arp_AdjOperSt { + type enumeration { + enum unspecified { + value 0; + description "Unknown"; + } + enum incomplete { + value 1; + description "Incomplete"; + } + enum normal { + value 2; + description "Resolved"; + } + } + } + + typedef arp_AdjRouteDist { + type uint32 { + range "2..250"; + } + default "250"; + } + + // ARP Cache Limit + typedef arp_ArpCacheLimit { + type uint32 { + range "1..614400"; + } + default "196608"; + } + + // ARP Cache Syslog Rate + typedef arp_ArpCacheSyslogRate { + type uint32 { + range "1..1000"; + } + default "1"; + } + + // Config Error + typedef arp_ConfigErr { + + type string; + } + + // Config Error Inst MO + typedef arp_ConfigErrInst { + + type string; + } + + // Database type + typedef arp_DbT { + type enumeration { + enum ip { + value 1; + description "IP database"; + } + enum supcache { + value 2; + description "SupCache database"; + } + } + default "ip"; + } + + // Event History Size + typedef arp_EventLogSize { + type enumeration { + enum disabled { + value 0; + description "Disable"; + } + enum small { + value 1; + description "Small"; + } + enum medium { + value 2; + description "Medium"; + } + enum large { + value 3; + description "Large"; + } + } + default "small"; + } + + // Event Log Type + typedef arp_EventType { + type enumeration { + enum cli { + value 0; + description "CLI Events"; + } + enum client-events { + value 1; + description "Client Events"; + } + enum client-errors { + value 2; + description "Client Errors"; + } + enum control-events { + value 3; + description "Control Events"; + } + enum internal-events { + value 4; + description "Internal Events"; + } + enum internal-errors { + value 5; + description "Internal Errors"; + } + enum high-availability { + value 6; + description "High Availability Events"; + } + enum ip-sync { + value 7; + description "IP Sync Events"; + } + enum local-cache-events { + value 8; + description "ARP Local Cache Events"; + } + enum local-cache-errors { + value 9; + description "ARP Local Cache Errors"; + } + enum pkt-messages { + value 10; + description "Packet Messages Logs"; + } + enum snmp { + value 11; + description "SNMP Events"; + } + enum suppress-events { + value 12; + description "ARP Suppression Events"; + } + enum suppress-errors { + value 13; + description "ARP Suppression Errors"; + } + enum sync { + value 14; + description "Sync Event Logs"; + } + enum arp-controller-errors { + value 15; + description "Controller MAC-IP route error logs"; + } + enum arp-dme-event { + value 16; + description "DME debug event"; + } + enum arp-sm-trace { + value 17; + description "ARP State Machine Logs"; + } + enum arp-event-ext { + value 18; + description "ARP Internal event extension logs"; + } + enum adjacency-control { + value 101; + description "Adjacency Control Logs"; + } + enum adjacency-errors { + value 102; + description "Adjacency Error Logs"; + } + enum adjacency-ipc-events { + value 103; + description "Adjacency IPC Logs"; + } + enum adjacency-stats { + value 104; + description "Adjacency Stats Logs"; + } + enum adjacency-high-availability { + value 105; + description "Adjacency High Availability Logs"; + } + enum adjacency-cli { + value 106; + description "Adjacency CLI Logs"; + } + enum adjacency-sdb { + value 107; + description "Adjacency SDB Logs"; + } + enum adjacency-snmp { + value 108; + description "Adjacency SNMP Logs"; + } + enum adjacency-netbroker { + value 109; + description "Adjacency Net Broker Logs"; + } + enum am-dme-event { + value 110; + description "Adjacency DME event debugs"; + } + enum am-event { + value 111; + description "Adjacency event debugs"; + } + } + } + + // ARP Evpn Refresh timeout + typedef arp_EvpnTimeout { + type uint16 { + range "600..30000"; + } + default "600"; + } + + // COS for ARP packet + typedef arp_IpArpCos { + type uint32 { + range "0..7"; + } + default "6"; + } + + // Logging Level + typedef arp_LoggingLevel { + type enumeration { + enum emergency { + value 0; + description "Emergency"; + } + enum alert { + value 1; + description "Alert"; + } + enum critical { + value 2; + description "Critical"; + } + enum error { + value 3; + description "Error"; + } + enum warning { + value 4; + description "Warning"; + } + enum notification { + value 5; + description "Notification"; + } + enum informational { + value 6; + description "Informational"; + } + enum debug { + value 7; + description "Debug"; + } + } + default "error"; + } + + // MAC Delete adjaceny refresh timeout + typedef arp_MacDelTimeout { + type uint16; + } + + // Max packet count + typedef arp_MaxPacket { + type uint32 { + range "0..32767"; + } + default "1000"; + } + + // ARP off list timeout + typedef arp_OffListTimeout { + type uint16 { + range "180..1800"; + } + default "180"; + } + + // RARP Fabric Forwarding Rate Limit + typedef arp_RarpForwadingRate { + type uint16 { + range "200..400"; + } + default "200"; + } + + // Static Adjacency operational state + typedef arp_StAdjOperSt { + type enumeration { + enum down { + value 0; + description "Down"; + } + enum up { + value 1; + description "Incomplete"; + } + enum unspecified { + value 10; + description "Unspecified"; + } + } + default "unspecified"; + } + + // Static Adjacency operational state qualifier + typedef arp_StAdjOperStQual { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum subnet-mismatch { + value 1; + description "Subnet mismatch"; + } + enum invalid-mac { + value 2; + description "Invalid MAC"; + } + enum invalid-ip { + value 3; + description "Invalid IP"; + } + enum invalid-vrf { + value 4; + description "Invalid VRF"; + } + enum own-mac { + value 5; + description "Own MAC"; + } + enum if-down { + value 6; + description "Interface down"; + } + enum up { + value 7; + description "Up"; + } + enum invalid-if { + value 8; + description "Invalid Interface"; + } + enum invalid-clidata { + value 9; + description "Invalid CLI Data"; + } + enum no-memory { + value 10; + description "No Memory"; + } + } + default "unspecified"; + } + + // Suppression Cache flag + typedef arp_SupCacheFlag { + + type string; + } + + // Suppression ARP Mode + typedef arp_SuppressArpMode { + type enumeration { + enum disabled { + value 0; + description "Disabled"; + } + enum l2suppressarp { + value 1; + description "L2SuppressARP"; + } + enum l2l3suppressarp { + value 2; + description "L2L3SuppressARP"; + } + enum invalid { + value 3; + description "Invalid"; + } + } + } + + // ARP suppress timeout + typedef arp_SuppressionTimeout { + type uint16 { + range "0..28800"; + } + default "0"; + } + + // Syslog threshold + typedef arp_SyslogCnt { + type uint32 { + range "0..65535"; + } + default "10000"; + } + + // throttle timeout + typedef arp_ThrottleTimeout { + type uint16 { + range "300..1800"; + } + default "300"; + } + + // ARP timeout + typedef arp_Timeout { + type uint16 { + range "60..28800"; + } + default "1500"; + } + + typedef bd_AclName { + type string { + length "0..64"; + } + } + + // Default SVI autoState + typedef bd_DefaultSVIAutoState { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "enable"; + } + + typedef bd_Description { + type string { + length "0..64"; + } + } + + typedef bd_MonitorName { + type string { + length "0..64"; + } + } + + typedef bd_QueueId { + type uint16 { + range "0..7"; + } + } + + // Actual Values are from 64 + // To be controlled in the BI logic + typedef bd_SamplingMbPackets { + type uint32 { + range "0..1024"; + } + } + + // Actual Range is from 122 to 100 + // To be controlled in the BI logic + typedef bd_SamplingMbRate { + type uint32 { + range "0..100000"; + } + } + + // Actual Range is from 10 to 16777215 + // To be controlled in the BI logic + typedef bd_SamplingRate { + type uint32 { + range "0..16777215"; + } + } + + // Address family type + typedef bfd_AfT { + type enumeration { + enum ipv4 { + value 1; + description "IPv4 address family"; + } + enum ipv6 { + value 2; + description "IPv6 address family"; + } + } + default "ipv4"; + } + + // Application private data + typedef bfd_AppData { + type mtx_array_uint8; + } + + // Application session flags + typedef bfd_AppFlags { + + type string; + } + + // Application ID + typedef bfd_AppId { + type uint32; + } + + // Authentication hex key + typedef bfd_AuthHexKey { + type mtx_array_uint8; + } + + // Authentication hex key size + typedef bfd_AuthHexKeySize { + type uint8 { + range "0..40"; + } + } + + // BFD AuthInterop Cfg + typedef bfd_AuthInterop { + type enumeration { + enum enable { + value 1; + description "Enabled"; + } + enum disable { + value 0; + description "Disabled"; + } + } + default "disable"; + } + + // Authentication key + typedef bfd_AuthKey { + type string { + length "min..20"; + } + } + + // Authentication key id + typedef bfd_AuthKeyId { + type uint8 { + range "1..255"; + } + } + + // Authentication Sequence Number + typedef bfd_AuthSeqno { + type uint32; + } + + // Authentication type + typedef bfd_AuthT { + type enumeration { + enum none { + value 0; + description "No authentication"; + } + enum sha1 { + value 4; + description "Keyed SHA1"; + } + enum met-sha1 { + value 5; + description "Met Keyed SHA1"; + } + } + default "none"; + } + + // Detection multiplier + typedef bfd_DetectMult { + type uint8 { + range "1..50"; + } + default "3"; + } + + // Diag Code + typedef bfd_DiagCode { + type enumeration { + enum none { + value 0; + description "No Diagnostic"; + } + enum detect-timeout { + value 1; + description "Control Detection Time Expired"; + } + enum echo-fail { + value 2; + description "Echo Function Failed"; + } + enum nbr-signal-down { + value 3; + description "Neighbor Signaled Session Down"; + } + enum fwd-plane-reset { + value 4; + description "Forwarding Plane Reset"; + } + enum path-down { + value 5; + description "Path Down"; + } + enum concat-path-down { + value 6; + description "Concatenated Path Down"; + } + enum admin-down { + value 7; + description "Administratively Down"; + } + enum rev-concat-path-down { + value 8; + description "Reverse Concatenated Path Down"; + } + } + } + + // Session discriminator + typedef bfd_Discr { + type uint32; + } + + // echo rx interval (in ms) + typedef bfd_EchoRxIntvl { + type uint16 { + range "0..999"; + } + default "0"; + } + + typedef bfd_IfControl { + + type string; + } + + // Interface Detection multiplier + typedef bfd_IfDetectMult { + type uint8 { + range "0..50"; + } + default "3"; + } + + // Interface Minimum rx interval (in ms) + typedef bfd_IfMinRxIntvl { + type uint16 { + range "0..999"; + } + default "50"; + } + + // Interface Minimum tx interval (in ms) + typedef bfd_IfMinTxIntvl { + type uint16 { + range "0..999"; + } + default "50"; + } + + // Multihop Minimum rx interval (in ms) + typedef bfd_MhMinRxIntvl { + type uint16 { + range "250..999"; + } + default "250"; + } + + // Multihop Minimum tx interval (in ms) + typedef bfd_MhMinTxIntvl { + type uint16 { + range "250..999"; + } + default "250"; + } + + // Minimum rx interval (in ms) + typedef bfd_MinRxIntvl { + type uint16 { + range "50..999"; + } + default "50"; + } + + // Minimum tx interval (in ms) + typedef bfd_MinTxIntvl { + type uint16 { + range "50..999"; + } + default "50"; + } + + // Oper State + typedef bfd_OperSt { + type enumeration { + enum admin-down { + value 0; + description "AdminDown"; + } + enum down { + value 1; + description "Down"; + } + enum init { + value 2; + description "Init"; + } + enum up { + value 3; + description "Up"; + } + } + } + + // Packet flags + typedef bfd_PktFlags { + + type string; + } + + // Packet Interval (in ms) + typedef bfd_PktInterval { + type uint32; + } + + // Application sap ID + typedef bfd_SapId { + type uint32; + } + + // Slow interval (in ms) + typedef bfd_SlowIntvl { + type uint16 { + range "1000..30000"; + } + default "2000"; + } + + // BFD Start timeout + typedef bfd_StTm { + type uint32; + default "0"; + } + + // Startup interval (in second) + typedef bfd_StartupIntvl { + type uint16 { + range "0..30"; + } + default "5"; + } + + // BFD Cfg State + typedef bfd_TrkMbrLnk { + type enumeration { + enum enable { + value 1; + description "Enabled"; + } + enum disable { + value 0; + description "Disabled"; + } + } + default "disable"; + } + + // Additional Paths capability in DomAf + typedef bgp_AddlPathCapT { + + type string; + } + + // Administrative state + typedef bgp_AdminSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "disabled"; + } + + // Advertisement Interval + typedef bgp_AdvInterval { + type uint16 { + range "0..600"; + } + } + + // Advertise l2vpn evpn + typedef bgp_AdvertL2vpnEvpn { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 0; + description "Disabled"; + } + } + default "disabled"; + } + + typedef bgp_AdvtMapCondition { + type enumeration { + enum none { + value 0; + description "no options"; + } + enum exist { + value 1; + description "Exist Route Map"; + } + enum non-exist { + value 2; + description "Non-Exist Route Map"; + } + } + default "none"; + } + + // Address family type + typedef bgp_AfT { + type enumeration { + enum ipv4-ucast { + value 1; + description "IPv4 unicast address family"; + } + enum ipv4-mcast { + value 2; + description "IPv4 multicast address family"; + } + enum vpnv4-ucast { + value 3; + description "Vpnv4 unicast address family"; + } + enum ipv6-ucast { + value 5; + description "IPv6 unicast address family"; + } + enum ipv6-mcast { + value 6; + description "IPv6 multicast address family"; + } + enum vpnv6-ucast { + value 7; + description "Vpnv6 unicast address family"; + } + enum l2vpn-evpn { + value 9; + description "L2Vpn EVpn address family"; + } + enum ipv4-lucast { + value 10; + description "IPv4 labeled unicast address family"; + } + enum ipv6-lucast { + value 11; + description "IPv6 labeled unicast address family"; + } + enum lnkstate { + value 12; + description "Link state address family"; + } + enum ipv4-mvpn { + value 13; + description "IPv4 mvpn address family"; + } + enum ipv6-mvpn { + value 14; + description "IPv6 mvpn address family"; + } + enum l2vpn-vpls { + value 15; + description "L2Vpn vpls address family"; + } + enum ipv4-mdt { + value 16; + description "IPv4 mdt address family"; + } + enum vpnv6-mcast { + value 8; + description "Vpnv6 multicast address family"; + } + } + default "ipv4-ucast"; + } + + // Activate the affinity group + typedef bgp_AffGrpActv { + type uint16 { + range "0..65535"; + } + } + + // BGP SRv6 SID Allocation mode + typedef bgp_AllocMod { + type enumeration { + enum none { + value 0; + description "Unspecified"; + } + enum per-vrf { + value 1; + description "Allocate SRv6 SID per VRF"; + } + } + default "none"; + } + + // AS path database size + typedef bgp_AsPathDbSz { + type uint32; + } + + // AS segment type + typedef bgp_AsSegT { + type enumeration { + enum sequence { + value 1; + description "Sequence"; + } + enum set { + value 2; + description "Set"; + } + } + default "set"; + } + + // AS Set + typedef bgp_AsSet { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 0; + description "Disabled"; + } + } + default "disabled"; + } + + // Asn number + typedef bgp_AsnNum { + type string; + } + + // Customizes AS_PATH attribute for routes received from eBGP neighbor + typedef bgp_AsnPropagation { + type enumeration { + enum none { + value 0; + description "no options"; + } + enum no-prepend { + value 1; + description "no-prepend"; + } + enum replace-as { + value 2; + description "no-prepend+replace-as"; + } + enum dual-as { + value 3; + description "noPrepend+replace-as+dual-as"; + } + } + default "none"; + } + + // Attribute Filtering control direction + typedef bgp_AttrFltrDir { + type enumeration { + enum in { + value 1; + description "Perform path-attribute filtering on inbound updates"; + } + enum out { + value 2; + description "Perform path-attribute filtering on outbound updates"; + } + } + default "in"; + } + + // BGP Path Attribute Filtering Action Type + typedef bgp_AttrFltrType { + type enumeration { + enum treataswithdraw { + value 0; + description "Treat the filtered BGP Update Message as withdrawn"; + } + enum discard { + value 1; + description "Discard the attribute in the filtered BGP Update Message"; + } + } + } + + // BGP Attribute Types. + typedef bgp_AttrTypes { + type uint16; + } + + // Attribute database size + typedef bgp_AttribDbSz { + type uint32; + } + + // multihop bfd authentication name + typedef bgp_AuthNameT { + type enumeration { + enum none { + value 0; + description "Unspecified"; + } + enum key-sha1 { + value 1; + description "Keyed-SHA1"; + } + } + } + + // BestPath Timeout Limit + typedef bgp_BestPathIntvl { + type uint16 { + range "1..3600"; + } + default "300"; + } + + // BFD session type + typedef bgp_BfdSessionType { + type enumeration { + enum none { + value 0; + description "BFD session type none"; + } + enum singlehop { + value 1; + description "BFD single hop session"; + } + enum multihop { + value 2; + description "BFD multihop session"; + } + } + default "none"; + } + + typedef bgp_BgpDscp { + type enumeration { + enum 0 { + value 0; + description "0"; + } + enum 1 { + value 1; + description "1"; + } + enum 2 { + value 2; + description "2"; + } + enum 3 { + value 3; + description "3"; + } + enum 4 { + value 4; + description "4"; + } + enum 5 { + value 5; + description "5"; + } + enum 6 { + value 6; + description "6"; + } + enum 7 { + value 7; + description "7"; + } + enum cs1 { + value 8; + description "CS1(precedence 1) dscp (001000)"; + } + enum 9 { + value 9; + description "9"; + } + enum af11 { + value 10; + description "AF11 dscp (001010)"; + } + enum 11 { + value 11; + description "11"; + } + enum af12 { + value 12; + description "AF12 dscp (001100)"; + } + enum 13 { + value 13; + description "13"; + } + enum af13 { + value 14; + description "AF13 dscp (001110)"; + } + enum 15 { + value 15; + description "15"; + } + enum cs2 { + value 16; + description "CS2(precedence 2) dscp (010000)"; + } + enum 17 { + value 17; + description "17"; + } + enum af21 { + value 18; + description "AF21 dscp (010010)"; + } + enum 19 { + value 19; + description "19"; + } + enum af22 { + value 20; + description "AF22 dscp (010100)"; + } + enum 21 { + value 21; + description "21"; + } + enum af23 { + value 22; + description "AF23 dscp (010110)"; + } + enum 23 { + value 23; + description "23"; + } + enum cs3 { + value 24; + description "CS3(precedence 3) dscp (011000)"; + } + enum 25 { + value 25; + description "25"; + } + enum af31 { + value 26; + description "AF31 dscp (011010)"; + } + enum 27 { + value 27; + description "27"; + } + enum af32 { + value 28; + description "AF32 dscp (011100)"; + } + enum 29 { + value 29; + description "29"; + } + enum af33 { + value 30; + description "AF33 dscp (011110)"; + } + enum 31 { + value 31; + description "31"; + } + enum cs4 { + value 32; + description "CS4(precedence 4) dscp (100000)"; + } + enum 33 { + value 33; + description "33"; + } + enum af41 { + value 34; + description "AF41 dscp (100010)"; + } + enum 35 { + value 35; + description "35"; + } + enum af42 { + value 36; + description "AF42 dscp (100100)"; + } + enum 37 { + value 37; + description "37"; + } + enum af43 { + value 38; + description "AF43 dscp (100110)"; + } + enum 39 { + value 39; + description "39"; + } + enum cs5 { + value 40; + description "CS5(precedence 5) dscp (101000)"; + } + enum 41 { + value 41; + description "41"; + } + enum 42 { + value 42; + description "42"; + } + enum 43 { + value 43; + description "43"; + } + enum 44 { + value 44; + description "44"; + } + enum 45 { + value 45; + description "45"; + } + enum ef { + value 46; + description "EF dscp (101110)"; + } + enum 47 { + value 47; + description "47"; + } + enum cs6 { + value 48; + description "CS6(precedence 6) dscp (110000)"; + } + enum 49 { + value 49; + description "49"; + } + enum 50 { + value 50; + description "50"; + } + enum 51 { + value 51; + description "51"; + } + enum 52 { + value 52; + description "52"; + } + enum 53 { + value 53; + description "53"; + } + enum 54 { + value 54; + description "54"; + } + enum 55 { + value 55; + description "55"; + } + enum cs7 { + value 56; + description "CS7(precedence 7) dscp (111000)"; + } + enum 57 { + value 57; + description "57"; + } + enum 58 { + value 58; + description "58"; + } + enum 59 { + value 59; + description "59"; + } + enum 60 { + value 60; + description "60"; + } + enum 61 { + value 61; + description "61"; + } + enum 62 { + value 62; + description "62"; + } + enum 63 { + value 63; + description "63"; + } + } + default "cs6"; + } + + // BMP server state + typedef bgp_BmpSt { + type enumeration { + enum enabled { + value 0; + description "Enabled"; + } + enum disabled { + value 1; + description "Disabled"; + } + } + default "enabled"; + } + + // Additional Paths capability in Neighbor Af + typedef bgp_CapAddlPathCapT { + + type string; + } + + // Capability type + typedef bgp_CapT { + + type string; + } + + // Cluster ID + typedef bgp_ClusterId { + type string; + } + + // Connection Attempts + typedef bgp_ConnAttempts { + type uint32; + default "0"; + } + + // Connection info + typedef bgp_ConnMode { + + type string; + } + + // Discarded Attribute Length + typedef bgp_DiscardedAttrLen { + + type uint32 { + range "0..4294967295"; + } + } + + // BGP Distance + typedef bgp_Distance { + type uint16 { + range "1..255"; + } + } + + // VRF Id + typedef bgp_DomId { + type uint32; + } + + // Domain operational state + typedef bgp_DomOperSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum up { + value 1; + description "VRF Operationally up"; + } + enum down { + value 2; + description "VRF Operationally down"; + } + } + default "unknown"; + } + + // Egress Peer Engineering EPE for neighbor status + typedef bgp_EgressPeerEng { + type enumeration { + enum none { + value 0; + description "Disabled"; + } + enum enabled { + value 1; + description "Egress Peer Engineering Enabled"; + } + enum enabled-adj-sid { + value 2; + description "Advertise Adjacency-SIDs for multi-hop neighbor paths"; + } + } + default "none"; + } + + // Event History Buffer Type + typedef bgp_EhType { + type enumeration { + enum none { + value 0; + } + enum cli { + value 1; + description "Cli buffer"; + } + enum events { + value 2; + description "Events buffer"; + } + enum periodic { + value 3; + description "Periodic buffer"; + } + enum detail { + value 4; + description "Detailed buffer"; + } + enum errors { + value 5; + description "Errors buffer"; + } + enum objstore { + value 6; + description "Objstore buffer"; + } + enum socket { + value 7; + description "Socket buffer"; + } + enum nve { + value 8; + description "NVE buffer"; + } + } + default "none"; + } + + // EVPN route-type + typedef bgp_EvpnRtType { + type enumeration { + enum none { + value 0; + description "Unspecified"; + } + enum a-d { + value 1; + description "Ethernet Auto-Discovery route"; + } + enum mac-ip { + value 2; + description "MAC/IP Advertisement route"; + } + enum imet { + value 3; + description "Inclusive Multicast Ethernet Tag route"; + } + enum eth-seg { + value 4; + description "Ethernet Segment route"; + } + enum ip-pfx { + value 5; + description "IP Prefix route"; + } + } + default "none"; + } + + // Filter State type for Path-Attribute Filtering + typedef bgp_FltrSt { + type nw_AdminSt; + default "enabled"; + } + + // Graceful restart controls + typedef bgp_GrCtrl { + + type string; + default "complete"; + } + + // Graceful restart interval + typedef bgp_GrIntvl { + type uint16 { + range "1..3600"; + } + default "120"; + } + + // Graceful stale interval + typedef bgp_GrStaleIntvl { + type uint16 { + range "1..3600"; + } + default "300"; + } + + // Hex SHA secret + typedef bgp_HkeyValT { + type string { + length "0..40"; + } + } + + // Hold Interval + typedef bgp_HoldIntvl { + type uint16 { + range "3..3600"; + } + default "180"; + } + + // Import route type + typedef bgp_ImportRtT { + type enumeration { + enum vpn-unicast { + value 0; + description "Import routes of vpn unicast category"; + } + enum l2vpn-evpn { + value 1; + description "Import routes from l2vpn evpn category"; + } + } + } + + // Inherit template peer control bits. This contains common fields of peer and peer-session templates (please refer to + // MOs PeerCont and SessionCont). + typedef bgp_InheritContPeerCtrlType { + + type string; + } + + // Inherit template peer-policy control gigabits. (Please refer + // to MO PolicyCont). + typedef bgp_InheritContPeerPolicyCtrlType { + + type string; + } + + // isolate controls isolate mode + typedef bgp_IsolateMode { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + enum include-local { + value 3; + description "Remote and Local"; + } + } + default "disabled"; + } + + // Keepalive Interval + typedef bgp_KaIntvl { + type uint16 { + range "0..3600"; + } + default "60"; + } + + // Key ID to use in BFD frames + typedef bgp_KeyIdT { + type uint16 { + range "1..255"; + } + } + + // Binary SHA secret + typedef bgp_KeyValT { + type string { + length "0..20"; + } + } + + // Last error len + typedef bgp_LastErrLen { + type uint8; + } + + // Last error value + typedef bgp_LastErrVal { + type uint32; + } + + // Label + typedef bgp_Lbl { + type uint32; + default "0"; + } + + // Link Attribute TLV flags for Link-state + typedef bgp_LnkLsAttrFlags { + + type string; + default "none"; + } + + // Log Neighbor changes + typedef bgp_LogNbrSt { + type enumeration { + enum none { + value 0; + description "none"; + } + enum enable { + value 1; + description "Enable"; + } + enum disable { + value 2; + description "Disable"; + } + } + default "none"; + } + + // Link-State status + typedef bgp_LsAdminSt { + type enumeration { + enum inactive { + value 0; + description "Inactive"; + } + enum active { + value 1; + description "Active"; + } + } + default "inactive"; + } + + // Link-State attribute entry type + typedef bgp_LsAttrEntryType { + type enumeration { + enum none { + value 0; + description "Unspecified"; + } + enum peer-node-sid { + value 1101; + description "Peer Node Segment Identifier"; + } + enum peer-adj-sid { + value 1102; + description "Peer Adjacency Segment Identifier"; + } + enum peer-set-sid { + value 1103; + description "Peer Set Segment Identifier"; + } + } + default "none"; + } + + // Link-State NLRI Type + typedef bgp_LsNlriType { + type enumeration { + enum none { + value 0; + description "Unspecified"; + } + enum node { + value 1; + description "Node NLRI"; + } + enum link { + value 2; + description "Link NLRI"; + } + enum ipv4-topo { + value 3; + description "IPv4 Topology Prefix NLRI"; + } + enum ipv6-topo { + value 4; + description "IPv6 Topology Prefix NLRI"; + } + } + default "none"; + } + + // Link-State Protocol Identifier + typedef bgp_LsProtoId { + type enumeration { + enum none { + value 0; + description "Unspecified"; + } + enum isis-l1 { + value 1; + description "IS-IS Level 1"; + } + enum isis-l2 { + value 2; + description "IS-IS Level 2"; + } + enum ospf-v2 { + value 3; + description "OSPFv2"; + } + enum direct { + value 4; + description "Direct"; + } + enum static { + value 5; + description "Static configuration"; + } + enum ospf-v3 { + value 6; + description "OSPFv3"; + } + enum epe { + value 7; + description "Egress Peer Engineering"; + } + } + default "none"; + } + + // Major notify error + typedef bgp_MajNotifErr { + type enumeration { + enum none { + value 0; + description "None"; + } + enum hdr-err { + value 1; + description "Header Error"; + } + enum open-msg-err { + value 2; + description "Open Message Error"; + } + enum upd-msg-err { + value 3; + description "Update Message Error"; + } + enum hold-timer-exp { + value 4; + description "Holdtimer Expired"; + } + enum fsm-err { + value 5; + description "FSM Error"; + } + enum cease-err { + value 6; + description "Cease Error"; + } + enum cap-msg-err { + value 7; + description "Capability Message Error"; + } + enum process-restart-err { + value 101; + description "Process Restart Error"; + } + enum fd-read-err { + value 102; + description "FD Read Error"; + } + enum fd-ioctl-err { + value 103; + description "FD Ioctl Error"; + } + enum peer-close-sess-err { + value 104; + description "Peer Closed Session Error"; + } + enum rcvd-notif-err { + value 105; + description "Peer Received Notification Error"; + } + enum rcvd-dup-conn-req { + value 106; + description "Received Duplicate Connection Request"; + } + enum dyn-cap-no-buf { + value 107; + description "Dynamic Capability no Buffer"; + } + } + } + + // Maximum AS Limit + typedef bgp_MaxAsLimit { + type uint16 { + range "0..512"; + } + } + + // Maximum Ecmp + typedef bgp_MaxEcmp { + type uint8 { + range "1..64"; + } + default "1"; + } + + // Maximum Peers + typedef bgp_MaxPeerCnt { + type uint32 { + range "0..1000"; + } + } + + // Maximum Prefix + typedef bgp_MaxPfx { + type uint32; + } + + // Action when the prefixes crosses the maximum limit + typedef bgp_MaxPfxAct { + type enumeration { + enum log { + value 1; + description "Log"; + } + enum shut { + value 2; + description "Shutdown"; + } + enum restart { + value 3; + description "Restart"; + } + } + default "shut"; + } + + // Duration before we restart the peer when the maximum + // prefix limit is reached + typedef bgp_MaxPfxDuration { + + type uint16 { + range "0..65535"; + } + } + + // Threshold at which warning is issued when number of prefixes + // crosses the threshold, units in percentage + typedef bgp_MaxPfxThresh { + type uint8 { + range "0..100"; + } + } + + // MED dampening interval + typedef bgp_MedIntvl { + type uint32 { + range "0..4294967295"; + } + } + + // Memory consumed (in bytes) + typedef bgp_MemConsumed { + type uint32; + } + + // Metric + typedef bgp_Metric { + type uint32; + } + + // multihop bfd Tx/Rx interval type + typedef bgp_MhTxRxIntvlT { + type uint16 { + range "250..999"; + } + } + + // Minor notify error + typedef bgp_MinNotifErr { + type enumeration { + enum none { + value 0; + description "None"; + } + enum unspecified-msg-hdr-err { + value 1; + description "Unspecified Msg Header Error"; + } + enum conn-not-synced { + value 2; + description "Connection not Synchronized"; + } + enum bad-msg-len { + value 3; + description "Bad Message Length"; + } + enum bad-msg-type { + value 4; + description "Bad Message Type"; + } + enum unknown-msg-hdr-err { + value 5; + description "Unknown Message Header Error"; + } + enum unspecified-open-err { + value 6; + description "Unspecified Open Error"; + } + enum unsupp-version { + value 7; + description "Unsupported Version"; + } + enum bad-peer-as { + value 8; + description "Bad Peer AS"; + } + enum bad-peer-rtrid { + value 9; + description "Bad Peer Router ID"; + } + enum unsupp-opt-param { + value 10; + description "Unsupported Optional Parameter"; + } + enum auth-err { + value 11; + description "Authentication Error"; + } + enum bad-holdtime { + value 12; + description "Unacceptable Holdtime"; + } + enum unsupp-cap { + value 13; + description "Unsupported Capability"; + } + enum unknown-open-hdr-err { + value 14; + description "Unknown Open Header Error"; + } + enum unspecified-update-err { + value 15; + description "Unspecified Update Error"; + } + enum malformed-attr-list { + value 16; + description "Malformed Attribute List"; + } + enum unrecognized-wellknown-attr { + value 17; + description "Unrecognized Wellknown Attr"; + } + enum missing-wellknown-attr { + value 18; + description "Missing Well-known Attribute"; + } + enum attr-flags-err { + value 19; + description "Attribute Flags Error"; + } + enum attr-len-err { + value 20; + description "Attribute Length Error"; + } + enum invalid-origin-attr { + value 21; + description "Invalid Origin Attribute"; + } + enum as-loop-err { + value 22; + description "Bgp AS Routing Loop Error"; + } + enum invalid-nh-attr { + value 23; + description "Invalid Next-hop Attribute"; + } + enum opt-attr-err { + value 24; + description "Optional Attribute Error"; + } + enum invalid-nw-field { + value 25; + description "Invalid Network Field"; + } + enum bad-as-path { + value 26; + description "Malformed AS Path"; + } + enum unknown-update-hdr-err { + value 27; + description "Unknown Update Header Error"; + } + enum unspecified-cease-err { + value 28; + description "Unspecified Cease Error"; + } + enum max-pfx-count-err { + value 29; + description "Maximum Prefix Count"; + } + enum admin-shut { + value 30; + description "Administratively Shutdown"; + } + enum peer-decfg { + value 31; + description "Peer Deconfigured"; + } + enum session-cleared { + value 32; + description "Session Cleared"; + } + enum conn-rej { + value 33; + description "Connection Rejected"; + } + enum other-cfg-chg { + value 34; + description "Other Configuration Change Error"; + } + enum conn-coll-resolution { + value 35; + description "Connection Collision Resolution"; + } + enum out-of-rsrc { + value 36; + description "Out of Resource"; + } + enum dyn-cap-cfg-chg { + value 37; + description "Dynamic Capability Configuration Change"; + } + enum ttl-cfg-chg { + value 38; + description "TTL Configuration Change"; + } + enum ttl-security-cfg-chg { + value 39; + description "TTL Security Configuration Change"; + } + enum passive-neighbor-cfg-chg { + value 40; + description "Passive Neighbor Configuration Change"; + } + enum af-cfg-chg { + value 41; + description "Address-family Configuration Change"; + } + enum rr-cfg-chg { + value 42; + description "Route-reflector Configuration Change"; + } + enum rtrid-cfg-chg { + value 43; + description "Router-id Configuration Change"; + } + enum confed-id-chg { + value 44; + description "Confederation Id Change"; + } + enum confed-membership-change { + value 45; + description "Confederation Membership Change"; + } + enum gr-cfg-chg { + value 46; + description "Graceful-restart Configuration Change"; + } + enum soft-recfg-chg { + value 47; + description "Soft-reconfiguration Change"; + } + enum updatesrc-if-chg { + value 48; + description "Update-source Interface Change"; + } + enum localas-chg { + value 49; + description "Local-as Change"; + } + enum unknown-cease-err { + value 50; + description "Unknown Cease Error"; + } + enum unspecified-cap-msg-err { + value 51; + description "Unspecified Cappability Message Error"; + } + enum unknown-seq-num { + value 52; + description "Unknown Sequence Number"; + } + enum invalid-cap-len { + value 53; + description "Invalid Capability Length"; + } + enum bad-cap-val { + value 54; + description "Malformed Capability Value"; + } + enum unsupp-cap-code { + value 55; + description "Unsupported Capability Code"; + } + enum unknown-cap-err { + value 56; + description "Unknown Capability Error"; + } + } + } + + // Mode + typedef bgp_Mode { + type enumeration { + enum fabric { + value 1; + description "Fabric"; + } + enum external { + value 2; + description "External"; + } + } + default "fabric"; + } + + // multihop bfd multiplier + typedef bgp_MultiplierT { + type uint16 { + range "1..50"; + } + } + + // MCAST-VPN NLRI route-type + typedef bgp_MvpnRtType { + type enumeration { + enum none { + value 0; + description "Unspecified"; + } + enum interas-ipmsi-ad { + value 1; + description "Multicast Inter-AS PMSI Auto Discovery route"; + } + enum intraas-ipmsi-ad { + value 2; + description "Multicast Intra-AS PMSI Auto Discovery route"; + } + enum spmsi-ad { + value 3; + description "Multicast S-PMSI Auto Discovery route"; + } + enum leaf-ad { + value 4; + description "Multicast Leaf Auto Discovery route"; + } + enum sa-ad { + value 5; + description "Multicast Source-Active Auto Discovery route"; + } + enum shared-c-mcast { + value 6; + description "Shared C-Multicast route"; + } + enum source-c-mcast { + value 7; + description "Source C-Multicast route"; + } + } + default "none"; + } + + // Number of paths + typedef bgp_NumPaths { + type uint32; + } + + // Number of Peers + typedef bgp_NumPeers { + type uint32; + } + + // Order (for AS path segments and AS path items) + typedef bgp_Order { + type uint16; + } + + // Origin + typedef bgp_Origin { + type enumeration { + enum igp { + value 1; + description "Learned Via IGP"; + } + enum egp { + value 2; + description "Learned Via EGP"; + } + enum incomplete { + value 3; + description "Learned by some other Means"; + } + } + default "igp"; + } + + // Authentication status + typedef bgp_PasswdSet { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 0; + } + } + default "disabled"; + } + + // Path flags + typedef bgp_PathFlags { + + type string; + } + + // Path id + typedef bgp_PathId { + type uint32; + } + + // Path status + typedef bgp_PathSt { + type enumeration { + enum deleted { + value 0; + description "Deleted"; + } + enum staled { + value 1; + description "Staled"; + } + enum valid { + value 2; + description "Valid"; + } + enum invalid { + value 3; + description "InValid"; + } + enum history { + value 4; + description "history"; + } + enum suppressed { + value 5; + description "suppressed"; + } + enum dampened { + value 6; + description "dampened"; + } + } + } + + // Path type + typedef bgp_PathT { + type enumeration { + enum internal { + value 1; + description "Internal"; + } + enum external { + value 2; + description "External"; + } + enum confederation { + value 3; + description "Confederation"; + } + enum local { + value 4; + description "Local"; + } + enum aggregate { + value 5; + description "Aggregate"; + } + enum redistribute { + value 6; + description "Redistribute"; + } + enum injected { + value 7; + description "Injected"; + } + } + default "internal"; + } + + // Peer Address Family Control + typedef bgp_PeerAfControl { + + type string; + } + + // Peer AF flags + typedef bgp_PeerAfFlags { + + type string; + } + + // Peer Control + typedef bgp_PeerControl { + + type string; + } + + // TODO: Change this to nw:Cnt64 Count of BGP Messages + typedef bgp_PeerCount { + type uint64; + } + + // Peer Fabric Type + typedef bgp_PeerFabType { + type enumeration { + enum fabric-internal { + value 0; + description "Fabric internal"; + } + enum fabric-external { + value 1; + description "Fabric external"; + } + enum fabric-border-leaf { + value 2; + description "Fabric Border Leaf"; + } + } + default "fabric-internal"; + } + + // Peer flags + typedef bgp_PeerFlags { + + type string; + } + + // Graceful restart interval + typedef bgp_PeerGrIntvl { + type uint16 { + range "0..4095"; + } + } + + // Peer graceful restart state + typedef bgp_PeerGrSt { + type enumeration { + enum na { + value 1; + description "Not applicable"; + } + enum reset { + value 2; + description "Reset"; + } + enum up { + value 3; + description "Up"; + } + } + default "na"; + } + + // Peer Index + typedef bgp_PeerIdx { + type uint16; + } + + // Peer operational state + typedef bgp_PeerOperSt { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum illegal { + value 1; + description "Illegal"; + } + enum shut { + value 2; + description "Shut"; + } + enum idle { + value 3; + description "Idle"; + } + enum connect { + value 4; + description "Connect"; + } + enum active { + value 5; + description "Active"; + } + enum open-sent { + value 6; + description "Open sent"; + } + enum open-confirm { + value 7; + description "Open confirm"; + } + enum established { + value 8; + description "Established"; + } + enum closing { + value 9; + description "Closing"; + } + enum error { + value 10; + description "Error"; + } + enum unknown { + value 11; + description "Unknown"; + } + } + default "unspecified"; + } + + // Peer Type + typedef bgp_PeerType { + type enumeration { + enum ibgp { + value 1; + description "ibgp"; + } + enum ebgp { + value 2; + description "ebgp"; + } + } + default "ibgp"; + } + + // Pfx Flushed + typedef bgp_PfxFlushed { + type uint64; + } + + // TODO: Change this to nw:Cnt64 Counts for Prefix Peers + typedef bgp_PfxPeerCounts { + type uint64; + } + + // Prefix Peer Timeout + typedef bgp_PfxPeerTimeout { + type uint16 { + range "0..1200"; + } + } + + // Prefix Peer Wait + typedef bgp_PfxPeerWaitTime { + type uint16 { + range "0..1200"; + } + } + + // TODO: Change this to nw:Cnt64 Pfx Saved + typedef bgp_PfxSaved { + type uint64; + } + + // Pfx Sent + typedef bgp_PfxSent { + type uint64; + } + + // Prefix-Sid attribute entry type + typedef bgp_PfxSidAttrEntryType { + type enumeration { + enum none { + value 0; + description "Unspecified"; + } + enum label-index { + value 1; + description "Label Index"; + } + enum ipv6-sid { + value 2; + description "IPv6-SID"; + } + enum origin-srgb { + value 3; + description "Originator SRGB"; + } + enum srv6-L3-sid { + value 5; + description "SRv6-Service-L3-SID"; + } + } + default "none"; + } + + // PMSI Tunnel Type + typedef bgp_PmsiTunType { + type enumeration { + enum none { + value 0; + description "Unspecified"; + } + enum ingress-repl { + value 1; + description "Ingress Replication"; + } + } + default "none"; + } + + // Prefix Priority level + typedef bgp_PrfxPriorityLevelT { + type enumeration { + enum none { + value 0; + description "Unspecified"; + } + enum high { + value 1; + description "Set priority to high"; + } + } + } + + // private-as Control + typedef bgp_PrivateASControl { + type enumeration { + enum none { + value 0; + } + enum remove-exclusive { + value 1; + description "Remove private AS"; + } + enum remove-all { + value 2; + description "Remove all private AS"; + } + enum replace-as { + value 3; + description "Replace private AS with local AS"; + } + } + default "none"; + } + + // Password Type + typedef bgp_PwdType { + type enumeration { + enum 0 { + value 0; + description "Specifies an UNENCRYPTED neighbor password"; + } + enum 3 { + value 3; + description "Specifies an 3DES ENCRYPTED neighbor password"; + } + enum 7 { + value 7; + description "Specifies a Cisco type 7 ENCRYPTED neighbor password"; + } + enum LINE { + value 5; + description "UNENCRYPTED (cleartext) neighbor password convert to MD5 ENCRYPTED password"; + } + } + default "LINE"; + } + + // Reconnect Interval Value + typedef bgp_ReConnectIntvl { + type uint16 { + range "1..60"; + } + default "60"; + } + + // Route control direction + typedef bgp_RtCtrlDir { + type enumeration { + enum in { + value 1; + description "Incoming"; + } + enum out { + value 2; + description "Outgoing"; + } + } + default "in"; + } + + // Route control operational state + typedef bgp_RtCtrlOperSt { + type enumeration { + enum unresolved { + value 1; + description "Unresolved"; + } + enum resolved { + value 2; + description "Resolved"; + } + } + default "unresolved"; + } + + // Route flags + typedef bgp_RtFlags { + + type string; + } + + // Labeled address-family route flags + typedef bgp_RtLblAfFlags { + + type string; + } + + // Route version + typedef bgp_RtVer { + type uint32; + } + + // Segment Routing Global Block + typedef bgp_SRGBRange { + type uint32 { + range "0..471804"; + } + default "0"; + } + + // BGP SR option support in Segment-Routing + typedef bgp_SgmntRtg { + type enumeration { + enum none { + value 0; + description "Unspecified"; + } + enum srv6 { + value 1; + description "Support SRv6 option in Segment-Routing"; + } + } + default "none"; + } + + // Peer shut state qualifier + typedef bgp_ShutStQual { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum admin { + value 1; + description "Administratively down"; + } + enum no-mem { + value 2; + description "No memory"; + } + enum exceeded-pfxlimit { + value 3; + description "Exceeded prefix limit"; + } + enum admin-up { + value 4; + description "Administratively up"; + } + enum no-affinity { + value 5; + description "No Affinity"; + } + } + default "unspecified"; + } + + // Event History Buffer Size + typedef bgp_Size { + type uint32 { + range "0..4 | 8192..1048576"; + } + default "0"; + } + + // FD to connect to the peer + typedef bgp_SockFD { + type uint32; + } + + // Soft Reconfiguration + typedef bgp_SoftReconfigBackup { + type enumeration { + enum none { + value 0; + description "No reason defined"; + } + enum inbound { + value 1; + description "Allow inbound soft reconfiguration"; + } + enum inbound-always { + value 2; + description "Always perform inbound soft reconfiguration"; + } + } + } + + // BMP Server ID + typedef bgp_SrvId { + type uint8 { + range "1..2"; + } + } + + // Peer Idle State Reason + typedef bgp_StReason { + type enumeration { + enum none { + value 0; + } + enum no-mem { + value 1; + description "NoMem"; + } + } + default "none"; + } + + // Aggregate Address Summary-Only + typedef bgp_SummaryOnly { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 0; + description "Disabled"; + } + } + default "disabled"; + } + + // Table state + typedef bgp_TblSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum up { + value 1; + description "Up"; + } + enum down { + value 2; + description "Down"; + } + } + } + + // Table version + typedef bgp_TblVer { + type uint32; + } + + // SNMP BGP trap type for All 3 state changes + typedef bgp_TrapType { + type enumeration { + enum none { + value 0; + description "Default none for snmp trap for all state changes"; + } + enum disabled { + value 1; + description "Disable snmp trap for all state changes"; + } + enum enabled { + value 2; + description "Enable snmp trap for all state changes"; + } + } + default "none"; + } + + // eBGP Multihop TTL value + typedef bgp_TtlVal { + type uint16 { + range "0..255"; + } + } + + // Unknown Attribute Length + typedef bgp_UnknownAttrLen { + + type uint32 { + range "0..4294967295"; + } + } + + // VNID + typedef bgp_Vnid { + + type uint32 { + range "0..16777215"; + } + default "0"; + } + + // Dampen Igp Metric + typedef bgp_igpMetric { + type uint16 { + range "0..3600"; + } + default "600"; + } + + typedef bl_AclName { + type string { + length "0..64"; + } + } + + typedef bl_Description { + type string { + length "0..64"; + } + } + + typedef bl_Name { + type string { + length "0..64"; + } + } + + typedef bl_QueueId { + type uint16 { + range "0..7"; + } + } + + // Actual Values are from 64 + // To be controlled in the BI logic + typedef bl_SamplingMbPackets { + type uint32 { + range "0..1024"; + } + } + + // Actual Range is from 122 to 100 + // To be controlled in the BI logic + typedef bl_SamplingMbRate { + type uint32 { + range "0..100000"; + } + } + + // Actual Range is from 10 to 16777215 + // To be controlled in the BI logic + typedef bl_SamplingRate { + type uint32 { + range "0..16777215"; + } + } + + // Actual Range is from 100 to 16000000 + // To be controlled in the BI logic + typedef bl_ThresholdValue { + type uint32 { + range "0..16777215"; + } + } + + // Autocopy State + typedef boot_AutoCopy { + type enumeration { + enum enable { + value 1; + description "Enabled"; + } + enum disable { + value 0; + description "Disabled"; + } + } + default "enable"; + } + + typedef boot_BootOrderReverse { + type enumeration { + enum yes { + value 1; + description "Yes"; + } + enum no { + value 0; + description "No"; + } + } + default "no"; + } + + // Docker Cluster Mode DHCP Option + typedef boot_Dhcp { + type uint32 { + range "0..2147483647"; + } + default "250"; + } + + // Boot ExcludeCfg Types + typedef boot_ExcludeCfg { + type enumeration { + enum enable { + value 1; + description "Enable Boot ExcludeCfg"; + } + enum disable { + value 0; + description "Disable boot ExcludeCfg"; + } + } + default "disable"; + } + + // ImageVerify Cfg State + typedef boot_ImageVerify { + type enumeration { + enum enable { + value 1; + description "Enabled"; + } + enum disable { + value 0; + description "Disabled"; + } + } + default "enable"; + } + + // Boot Mode Types + typedef boot_Mode { + type enumeration { + enum none { + value 0; + description "Native Boot Mode"; + } + enum lxc { + value 1; + description "LXC Boot Mode"; + } + enum dockerCluster { + value 3; + description "Docker Cluster Boot Mode"; + } + } + default "none"; + } + + // Boot order Cfg State + typedef boot_Order { + type enumeration { + enum bootflash { + value 0; + description "bootflash"; + } + enum pxe { + value 1; + description "pxe"; + } + enum pxe2bootflash { + value 2; + description "pxe2bootflash"; + } + enum bootflash2pxe { + value 3; + description "bootflash2pxe"; + } + } + default "bootflash"; + } + + // Poap Cfg State + typedef boot_Poap { + type enumeration { + enum enable { + value 1; + description "Enabled"; + } + enum disable { + value 0; + description "Disabled"; + } + } + default "disable"; + } + + typedef callhome_AlertGroupName { + type enumeration { + enum configuration { + value 0; + description "Events Related To Configuration"; + } + enum diagnostic { + value 1; + description "Events Related To Diagnostic"; + } + enum environmental { + value 2; + description "Power,Fan,Temperature Related Events"; + } + enum inventory { + value 3; + description "Inventory Status Events"; + } + enum license { + value 4; + description "Events Related To Licensing"; + } + enum linecard { + value 5; + description "Linecard Related Events"; + } + enum supervisor { + value 6; + description "Supervisor Related Events"; + } + enum syslogport { + value 7; + description "Events Related To Syslog Messages Filed By Port Manager"; + } + enum system { + value 8; + description "Software Related Events"; + } + enum test { + value 9; + description "User Generated Test Events"; + } + } + } + + typedef callhome_Boolean { + type enumeration { + enum enabled { + value 1; + } + enum disabled { + value 0; + } + } + } + + typedef callhome_Email { + type address_Email { + pattern "|[a-zA-Z0-9\\._%\\+-]+@[a-zA-Z0-9\\.-]+"; + } + } + + typedef callhome_Format { + type enumeration { + enum xml { + value 1; + description "XML message format"; + } + enum full-txt { + value 2; + description "Plain Text Message Format"; + } + enum short-txt { + value 3; + description "Short Text Message Format"; + } + } + default "xml"; + } + + typedef callhome_PeriodicSystemInventoryIntervalDays { + type uint32 { + range "1..30"; + } + default "7"; + } + + typedef callhome_PeriodicSystemInventoryTimeOfDayHour { + type uint32 { + range "0..23"; + } + default "0"; + } + + typedef callhome_PeriodicSystemInventoryTimeOfDayMinute { + type uint32 { + range "0..59"; + } + default "0"; + } + + typedef callhome_Phone { + type address_Phone; + } + + typedef callhome_PredefProfileName { + type enumeration { + enum predef_tac_prof { + value 0; + description "Configure Destination Profile For XML Message"; + } + enum full_txt { + value 1; + description "Configure Destination Profile For Plain Txt Message"; + } + enum short_txt { + value 2; + description "Configure Destination Profile For Short Txt Message"; + } + } + } + + typedef callhome_ServerType { + type string { + length "0..255"; + pattern ".*[A-Za-z]([A-Za-z0-9-]*[A-Za-z0-9])?(\\.[A-Za-z]([A-Za-z0-9-]*[A-Za-z0-9])?)*.*|.*(.*25[0-5]|.*2[0-4][0-9]|.*1[0-9][0-9]|.*[1-9][0-9]|.*[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.(25[0-5].*|2[0-4][0-9].*|1[0-9][0-9].*|[1-9][0-9].*|[0-9].*).*"; + } + } + + typedef callhome_StringRange { + type string { + length "0..255"; + } + } + + typedef cap_Counter { + type uint32; + } + + // Logging level type + typedef cap_LoggingLevel { + type uint16 { + range "0..7"; + } + default "2"; + } + + // Logging Level + typedef cap_LoggingType { + type enumeration { + enum Emergencies { + value 0; + description "Emergencies"; + } + enum Alerts { + value 1; + description "Alerts"; + } + enum Critical { + value 2; + description "Critical"; + } + enum Errors { + value 3; + description "Errors"; + } + enum Warnings { + value 4; + description "Warnings"; + } + enum Notification { + value 5; + description "Notification"; + } + enum Information { + value 6; + description "Information"; + } + enum Debugging { + value 7; + description "Debugging"; + } + } + default "Critical"; + } + + // Quantitative + typedef cap_Quant { + + type uint16 { + range "0..65535"; + } + default "0"; + } + + typedef cap_RuleT { + type enumeration { + enum limit { + value 1; + } + } + default "limit"; + } + + typedef cap_StorageHint { + type uint8; + } + + typedef cap_Version { + type string; + } + + // Capability type + typedef cdp_CapT { + + type string; + } + + // Neighbor device id + typedef cdp_DevId { + type string; + } + + // Device identifier type + typedef cdp_DevIdT { + type enumeration { + enum none { + value 0; + description "Not configured"; + } + enum mac { + value 1; + description "MAC address"; + } + enum serialNum { + value 2; + description "Serial number"; + } + enum sysName { + value 3; + description "System name"; + } + } + default "none"; + } + + // Neighbor device index + typedef cdp_DevIndex { + type uint32; + } + + // Duplex + typedef cdp_Duplex { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum half { + value 1; + description "Half duplex"; + } + enum full { + value 2; + description "Full duplex"; + } + } + } + + // Hold interval + typedef cdp_HoldIntvl { + type uint16 { + range "10..255"; + } + default "180"; + } + + // MTU + typedef cdp_MTU { + type uint32; + } + + // Neighbor version + typedef cdp_NbrVer { + type string; + } + + // Operational state + typedef cdp_OperSt { + type enumeration { + enum up { + value 1; + description "Up"; + } + enum down { + value 2; + description "Down"; + } + } + default "down"; + } + + // Operational state qualifier + typedef cdp_OperStQual { + type enumeration { + enum up { + value 1; + description "Up"; + } + enum admin-down { + value 2; + description "Administratively down"; + } + enum if-down { + value 3; + description "Interface down"; + } + enum unsupported { + value 4; + description "Unsupported"; + } + } + default "unsupported"; + } + + // Neighbor platform id + typedef cdp_PlatId { + type string; + } + + // Neighbor port id + typedef cdp_PortId { + type string; + } + + // System Location + typedef cdp_SysLoc { + type string; + } + + // System name + typedef cdp_SysName { + type string; + } + + // Transmission frequency + typedef cdp_TxFreq { + type uint16 { + range "5..254"; + } + default "60"; + } + + // Version + typedef cdp_Ver { + type enumeration { + enum v1 { + value 1; + description "Version 1"; + } + enum v2 { + value 2; + description "Version 2"; + } + } + default "v2"; + } + + // Vlan id + typedef cdp_VlanId { + type uint16; + default "0"; + } + + // Administrative state + typedef cfs_AdminSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "enabled"; + } + + // Region ID + typedef cfs_RegId { + type uint32 { + range "1..200"; + } + } + + typedef comm_AdminState { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "enabled"; + } + + typedef comm_Port { + type uint32 { + range "1..65535"; + } + } + + typedef comm_Protocol { + type enumeration { + enum none { + value 0; + description "None"; + } + enum tcp { + value 1; + description "tcp"; + } + enum udp { + value 2; + description "udp"; + } + enum all { + value 3; + description "All"; + } + } + default "none"; + } + + typedef comm_RekeyDataType { + type string { + length "0..7"; + pattern ".*[a-zA-Z0-9].*"; + } + } + + typedef comm_SshKeyType { + type enumeration { + enum rsa { + value 1; + description "rsa"; + } + enum dsa { + value 2; + description "dsa"; + } + enum ecdsa { + value 3; + description "ecdsa"; + } + } + default "rsa"; + } + + typedef comm_SshPortfaultBitmapT { + type enumeration { + enum noerror { + value 0; + description "Unknown"; + } + enum SshPortUnavailable { + value 1; + description "Failed to configure ssh port."; + } + } + } + + typedef comp_DelimitedString { + type string; + } + + typedef comp_HostState { + type enumeration { + enum maintenance { + value 0; + description "Maintenance Mode"; + } + enum connected { + value 1; + description "Connected"; + } + enum noresponse { + value 2; + description "Not Responding"; + } + enum disconnected { + value 3; + description "Disconnected"; + } + enum poweredOn { + value 4; + description "Powered On"; + } + enum poweredOff { + value 5; + description "Powered Off"; + } + enum standBy { + value 6; + description "StandBy"; + } + enum suspended { + value 7; + description "Suspended"; + } + enum unknown { + value 8; + description "Unknown"; + } + } + default "disconnected"; + } + + typedef comp_InstType { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum phys { + value 1; + description "Baremetal Host"; + } + enum virt { + value 2; + description "Virtual Machine"; + } + enum hv { + value 3; + description "Hypervisor Host"; + } + } + default "unknown"; + } + + typedef comp_NicInstType { + type comp_InstType; + } + + typedef comp_NicState { + type enumeration { + enum down { + value 0; + description "Down"; + } + enum up { + value 1; + description "Up"; + } + } + default "down"; + } + + // Operation type + typedef conftmpl_OperationType { + type enumeration { + enum create { + value 1; + description "Create"; + } + enum delete { + value 2; + description "Delete"; + } + } + default "create"; + } + + // Template type + typedef conftmpl_TemplateType { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum vrf { + value 1; + description "Vrf"; + } + enum vlan { + value 2; + description "Vlan"; + } + enum intf { + value 3; + description "Intf"; + } + } + default "unknown"; + } + + // Affix type + typedef copp_Affix { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum prefix { + value 1; + description "Prefix"; + } + enum suffix { + value 2; + description "Suffix"; + } + } + default "unknown"; + } + + // Burst unit + typedef copp_BurstUnit { + type enumeration { + enum Unknown { + value 0; + description "Unknown"; + } + enum bytes { + value 1; + description "Bytes"; + } + enum kbytes { + value 2; + description "KiloBytes"; + } + enum mbytes { + value 3; + description "MegaBytes"; + } + enum packets { + value 4; + description "Packets"; + } + enum us { + value 5; + description "Micro sec"; + } + enum ms { + value 6; + description "Milli sec"; + } + } + default "Unknown"; + } + + // Burst value + typedef copp_BurstVal { + type uint32; + } + + // Confrom Action + typedef copp_ConformAction { + type enumeration { + enum Undefined { + value 0; + description "Undefined"; + } + enum transmit { + value 1; + description "Transmit"; + } + enum drop { + value 2; + description "Drop"; + } + } + default "Undefined"; + } + + // Cos value + typedef copp_CosVal { + type uint16; + } + + // Dscp value + typedef copp_DscpVal { + type uint16 { + range "0..63"; + } + default "0"; + } + + // Exceed action + typedef copp_ExceedAction { + type enumeration { + enum Undefined { + value 0; + description "Undefined"; + } + enum transmit { + value 1; + description "Transmit"; + } + enum drop { + value 2; + description "Drop"; + } + } + default "Undefined"; + } + + // Exception options + typedef copp_Excep { + type enumeration { + enum Undefined { + value 0; + description "Undefined"; + } + enum glean { + value 1; + description "Glean"; + } + enum mtu-failure { + value 2; + description "Mtu-failure"; + } + enum ttl-failure { + value 3; + description "TTL-failure"; + } + enum nat-flow { + value 4; + description "Nat-flow"; + } + enum sflow { + value 5; + description "Sflow"; + } + enum mvpn { + value 6; + description "MVPN"; + } + } + default "Undefined"; + } + + // MPLs exp value + typedef copp_ExpVal { + type uint32 { + range "0..7"; + } + } + + typedef copp_Fcoe { + type boolean; + } + + // Icmp options + typedef copp_Icmp { + type enumeration { + enum Undefined { + value 0; + description "Undefined"; + } + enum redirect { + value 1; + description "icmp redirect"; + } + enum unreachable { + value 2; + description "icmp unreachable"; + } + } + default "Undefined"; + } + + // Information Rate unit + typedef copp_IrUnit { + type enumeration { + enum Unknown { + value 0; + description "Unknown"; + } + enum bps { + value 1; + description "Bits/sec"; + } + enum pps { + value 2; + description "Packets/sec"; + } + enum kbps { + value 3; + description "Kilo Bits/sec"; + } + enum mbps { + value 4; + description "Mega Bits/sec"; + } + enum gbps { + value 5; + description "Giga Bits/sec"; + } + } + default "Unknown"; + } + + // Information rate value + typedef copp_IrVal { + type uint64; + } + + // Level + typedef copp_LevelRange { + type uint16 { + range "1..7"; + } + default "1"; + } + + // Match Option + typedef copp_MatchOption { + type enumeration { + enum Unknown { + value 0; + description "Unknown"; + } + enum MatchAny { + value 1; + description "Match Any"; + } + enum MatchAll { + value 2; + description "Match All"; + } + } + default "Unknown"; + } + + // Match criteria + typedef copp_MatchT { + type enumeration { + enum Undefined { + value 0; + description "Undefined"; + } + enum access-group { + value 1; + description "match access-group"; + } + enum redirect { + value 2; + description "match redirect"; + } + enum exception { + value 3; + description "match exception"; + } + enum protocol { + value 4; + description "match protocol"; + } + } + default "Undefined"; + } + + // Multicast options + typedef copp_Mcast { + type enumeration { + enum Undefined { + value 0; + description "Undefined"; + } + enum dest-miss { + value 1; + description "multicast dest-miss"; + } + enum rpf-failure { + value 2; + description "multicast rpf-failure"; + } + enum sg-rpf-failure { + value 3; + description "multicast sg-rpf-failure"; + } + enum ipv6-dest-miss { + value 4; + description "multicast ipv6-dest-miss"; + } + enum ipv6-rpf-failure { + value 5; + description "multicast ipv6-rpf-failure"; + } + enum ipv6-sg-rpf-failure { + value 6; + description "multicast ipv6-sg-rpf-failure"; + } + } + default "Undefined"; + } + + // CoPP Profile Type + typedef copp_ProfT { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum strict { + value 1; + description "Strict"; + } + enum moderate { + value 2; + description "Moderate"; + } + enum dense { + value 4; + description "Dense"; + } + enum lenient { + value 3; + description "Lenient"; + } + } + default "unknown"; + } + + // Protocol + typedef copp_Proto { + + type string; + } + + typedef copp_Ralert { + type boolean; + } + + // Redirect options + typedef copp_Rdrct { + type enumeration { + enum Undefined { + value 0; + description "Undefined"; + } + enum arp-inspect { + value 1; + description "redirect arp-inspect"; + } + enum dhcp-snoop { + value 2; + description "rediret dhcp-snoop"; + } + } + default "Undefined"; + } + + // Violate action + typedef copp_ViolateAction { + type enumeration { + enum Undefined { + value 0; + description "Undefined"; + } + enum transmit { + value 1; + description "Transmit"; + } + enum drop { + value 2; + description "Drop"; + } + } + default "Undefined"; + } + + typedef datetime_AdminState { + type enumeration { + enum enabled { + value 1; + } + enum disabled { + value 2; + } + } + default "disabled"; + } + + typedef datetime_AuthKeyId { + + type uint16 { + range "1..65535"; + } + default "1"; + } + + typedef datetime_ClockFormat { + type enumeration { + enum 24hours { + value 0; + description "24 Hours"; + } + enum 12hours { + value 1; + description "12 Hours"; + } + } + default "24hours"; + } + + typedef datetime_ClockProtocol { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum ptp { + value 1; + description "Ptp"; + } + enum ntp { + value 2; + description "Ntp"; + } + enum none { + value 3; + description "None"; + } + } + default "ntp"; + } + + typedef datetime_Date { + type uint16 { + range "1..31"; + } + } + + // IsEncrpt type + typedef datetime_Encrypt { + type boolean; + default "false"; + } + + typedef datetime_HourOffset { + type int16 { + range "-12..14"; + } + } + + typedef datetime_Key { + type string; + } + + typedef datetime_KeyId { + type uint16; + } + + // Logging Level + typedef datetime_LoggingLevel { + type enumeration { + enum emergency { + value 0; + description "Emergency"; + } + enum alert { + value 1; + description "Alert"; + } + enum critical { + value 2; + description "Critical"; + } + enum error { + value 3; + description "Error"; + } + enum warning { + value 4; + description "Warning"; + } + enum notif { + value 5; + description "Notifications"; + } + enum inform { + value 6; + description "Informational"; + } + enum debug { + value 7; + description "Debug"; + } + } + default "critical"; + } + + typedef datetime_MinuteOffsetSt { + type uint16 { + range "1..1440"; + } + } + + typedef datetime_MinuteOffsetTz { + type uint16 { + range "0..59"; + } + } + + typedef datetime_Month { + type enumeration { + enum january { + value 0; + description "January"; + } + enum february { + value 1; + description "February"; + } + enum march { + value 2; + description "March"; + } + enum april { + value 3; + description "April"; + } + enum may { + value 4; + description "May"; + } + enum june { + value 5; + description "June"; + } + enum july { + value 6; + description "July"; + } + enum august { + value 7; + description "August"; + } + enum september { + value 8; + description "September"; + } + enum october { + value 9; + description "October"; + } + enum november { + value 10; + description "November"; + } + enum december { + value 11; + description "December"; + } + } + } + + typedef datetime_NTPAssocIdentifier { + type uint32 { + range "0..2147483647"; + } + } + + typedef datetime_NTPLeapIndicator { + type uint8; + } + + // NTP Peer Mode + typedef datetime_NTPPeerMode { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum symmetricActive { + value 1; + description "Symmetric Active"; + } + enum symmetricPassive { + value 2; + description "Symmetric Passive"; + } + enum client { + value 3; + description "Client"; + } + enum server { + value 4; + description "Server"; + } + enum broadcast { + value 5; + description "Broadcast"; + } + enum reservedControl { + value 6; + description "Reserved Control"; + } + enum reservedPrivate { + value 7; + description "Reserved Private"; + } + } + } + + typedef datetime_NTPPollInterval { + type int32 { + range "-20..20"; + } + } + + typedef datetime_NTPRefId { + type address_Ipv4; + } + + typedef datetime_NTPSignedTimeValue { + type int32; + } + + typedef datetime_NTPStratum { + type uint8; + } + + typedef datetime_NTPUnsignedTimeValue { + type uint32; + } + + // NTP Server Status + typedef datetime_NtpSrvStatus { + type enumeration { + enum unknown { + value 1; + description "Unknown"; + } + enum not_running { + value 2; + description "Not Running"; + } + enum not_synchronized { + value 3; + description "Not Synchronized"; + } + enum synced_local_clock { + value 4; + description "Synced to Local Clock"; + } + enum synced_local_hw_refclk { + value 5; + description "Synced to Local RefClock"; + } + enum synced_remote_server { + value 6; + description "Synced to Remote NTP Server"; + } + } + default "unknown"; + } + + // NTP Peer Status flags + typedef datetime_PeerStatusFlags { + + type string; + } + + typedef datetime_Poll { + type uint8 { + range "4..16"; + } + } + + typedef datetime_ProvT { + type enumeration { + enum peer { + value 0; + description "NTP peer"; + } + enum server { + value 1; + description "NTP server"; + } + enum invalid { + value 2; + description "invalid"; + } + } + default "invalid"; + } + + typedef datetime_Stratum { + type uint8 { + range "1..15"; + } + default "8"; + } + + // System Status flags + typedef datetime_SysStatusFlags { + + type string; + } + + typedef datetime_VdcId { + type uint16 { + range "1"; + } + default "1"; + } + + typedef datetime_WeekNum { + type uint16 { + range "1..5"; + } + } + + typedef datetime_Year { + type uint16 { + range "2000..2030"; + } + } + + typedef datetime_allowCtrlRateLimit { + type uint32 { + range "1..65535"; + } + default "3"; + } + + // Client interface operational state + typedef dhcp_ClIfOperSt { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum init { + value 1; + description "Initializing"; + } + enum discover { + value 2; + description "Discover"; + } + enum requesting { + value 3; + description "Requesting"; + } + enum addr-rcvd { + value 4; + description "Address received"; + } + enum failed { + value 5; + description "Failed"; + } + enum request-timedout { + value 6; + description "Request timedout"; + } + enum down { + value 7; + description "Operationally down"; + } + } + } + + // DAI Logging options + typedef dhcp_DAILogType { + type enumeration { + enum deny { + value 1; + description "Logging for denied DHCP bindings"; + } + enum permit { + value 2; + description "Log for Permitted DHCP Bindings"; + } + enum all { + value 3; + description "Log for All DHCP bindings"; + } + enum inone { + value 5; + description "No Logging for any DHCP bindings"; + } + } + default "deny"; + } + + typedef dhcp_IpFwdProtoPortType { + type uint16 { + range "1..65535"; + } + default "37"; + } + + typedef dhcp_NumLogBuffers { + type uint16 { + range "1..1024"; + } + default "32"; + } + + // DHCP options + typedef dhcp_Options { + + type string; + default "none"; + } + + typedef dhcp_udpRelayObjGrpIPSyntax { + type enumeration { + enum HOSTADDR { + value 0; + description "hostaddr syntax - addr - and prefix is always 32 here"; + } + enum NETADDR { + value 1; + description "Prefix syntax - addr/prefix"; + } + enum IPPREFIX { + value 2; + description "Addr-Mask syntax - addr mask"; + } + } + default "IPPREFIX"; + } + + // Dot1x Max Auth Request + typedef dot1x_Dot1xAuthOrder { + type enumeration { + enum default { + value 0; + description "Dot1x default authentication order"; + } + enum mab { + value 1; + description "Dot1x mab authentication order"; + } + } + default "default"; + } + + // Dot1x Host Mode + typedef dot1x_HostMode { + type enumeration { + enum single-host { + value 1; + description "Dot1x single host mode"; + } + enum multi-host { + value 2; + description "Dot1x multi host mode"; + } + enum multi-auth { + value 3; + description "Dot1x multi auth mode"; + } + } + default "single-host"; + } + + // Dot1x Inactivity Period + typedef dot1x_InactivityPeriod { + type uint32 { + range "0..2147483"; + } + default "0"; + } + + // Dot1x Mac Auth Bypass + typedef dot1x_MacAuthBypass { + type enumeration { + enum none { + value 0; + description "Dot1x mac auth bypass disabled"; + } + enum eap { + value 1; + description "Dot1x mac auth bypass with EAP"; + } + enum bypass { + value 2; + description "Dot1x mac auth bypass"; + } + } + default "none"; + } + + // Dot1x Mac Move + typedef dot1x_MacMove { + type enumeration { + enum deny { + value 0; + description "Dot1x mac move disable"; + } + enum permit { + value 1; + description "Dot1x mac move enable"; + } + } + default "permit"; + } + + // Dot1x Max Reauth Request + typedef dot1x_MaxReauthReq { + type uint8 { + range "1..10"; + } + default "2"; + } + + // Dot1x Max Auth Request + typedef dot1x_MaxReq { + type uint8 { + range "1..10"; + } + default "2"; + } + + // Dot1x Pae Type + typedef dot1x_PaeType { + type enumeration { + enum authenticator { + value 1; + description "Dot1x authenticator role"; + } + } + default "authenticator"; + } + + // Dot1x Port Control + typedef dot1x_PortCtrl { + type enumeration { + enum force-unauthorized { + value 1; + description "Dot1x force unauthorized mode"; + } + enum auto { + value 2; + description "Dot1x port control auto mode"; + } + enum force-authorized { + value 3; + description "Dot1x force authorized mode"; + } + } + default "force-authorized"; + } + + // Dot1x Quiet Period + typedef dot1x_QuietPeriod { + type uint16 { + range "1..65535"; + } + default "60"; + } + + // Dot1x Rate Limit Period + typedef dot1x_RateLimitPeriod { + type uint16 { + range "0..65535"; + } + default "0"; + } + + // Dot1x Re-auth Period + typedef dot1x_ReAuthPeriod { + type uint32 { + range "1..2147483"; + } + default "3600"; + } + + // Dot1x Server Timeout + typedef dot1x_ServerTimeout { + type uint16 { + range "1..65535"; + } + default "30"; + } + + // Dot1x Supp Timeout + typedef dot1x_SuppTimeout { + type uint16 { + range "1..65535"; + } + default "30"; + } + + // Dot1x Tx Period + typedef dot1x_TxPeriod { + type uint16 { + range "1..65535"; + } + default "30"; + } + + typedef epbr_AclNameType { + type string { + length "0..50"; + } + } + + typedef epbr_FailactionType { + type enumeration { + enum nofailaction { + value 0; + description "no failaction"; + } + enum bypass { + value 1; + description "failaction bypass "; + } + enum forward { + value 2; + description "failaction forward"; + } + enum drop { + value 3; + description "failaction drop"; + } + } + default "nofailaction"; + } + + typedef epbr_IpType { + type enumeration { + enum ipv4 { + value 0; + description "IPv4"; + } + enum ipv6 { + value 1; + description "IPv6"; + } + } + default "ipv4"; + } + + typedef epbr_ReverseType { + type enumeration { + enum no-reverse { + value 0; + description "disable reverse"; + } + enum reverse { + value 1; + description "enable reverse"; + } + } + default "no-reverse"; + } + + // Database type + typedef epm_DbT { + type enumeration { + enum ep { + value 1; + description "Endpoint database"; + } + } + default "ep"; + } + + // Ep flags + typedef epm_EpFlags { + + type string; + } + + // Ep operational state + typedef epm_EpOperSt { + type enumeration { + enum down { + value 0; + description "Down"; + } + enum up { + value 1; + description "Up"; + } + } + } + + // Memory access + typedef eqpt_Acc { + type enumeration { + enum read-only { + value 0; + description "Read only"; + } + enum read-write { + value 1; + description "Write only"; + } + } + } + + // Administrative state of equipment related mo + typedef eqpt_AdSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "enabled"; + } + + // air flow direction + typedef eqpt_AirDir { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum front2back { + value 1; + description "front2back"; + } + enum back2front { + value 2; + description "back2front"; + } + } + default "unknown"; + } + + // air filter + typedef eqpt_AirFilter { + type enumeration { + enum absent { + value 0; + description "absent"; + } + enum present { + value 1; + description "front2back"; + } + enum notsupported { + value 2; + description "notsupported"; + } + } + default "notsupported"; + } + + // Amps + typedef eqpt_Amps { + type decimal64 { + fraction-digits 6; + } + } + + // Capability type + typedef eqpt_AsicCapability { + + type string; + } + + typedef eqpt_AsicNumSlices { + type uint8 { + range "0..6"; + } + default "0"; + } + + // Type of the asic + typedef eqpt_AsicT { + type enumeration { + enum northstar { + value 1; + description "Northstar"; + } + enum alpine { + value 2; + description "Alpine"; + } + enum bcm { + value 3; + description "Broadcom"; + } + enum davos { + value 4; + description "Davos"; + } + enum sugarbowl { + value 5; + description "Sugarbowl"; + } + enum homewood { + value 6; + description "Homewood"; + } + } + default "northstar"; + } + + typedef eqpt_AutoShutdown { + type enumeration { + enum disabled { + value 0; + description "Disable"; + } + enum enabled { + value 1; + description "Enable"; + } + } + default "enabled"; + } + + // baud rate type + typedef eqpt_BaudRate { + type enumeration { + enum 300 { + value 1; + description "300 Baud Rate"; + } + enum 1200 { + value 2; + description "1200 Baud Rate"; + } + enum 2400 { + value 3; + description "2400 Baud Rate"; + } + enum 4800 { + value 4; + description "4800 Baud Rate"; + } + enum 9600 { + value 5; + description "9600 Baud Rate"; + } + enum 38400 { + value 6; + description "38400 Baud Rate"; + } + enum 57600 { + value 7; + description "57600 Baud Rate"; + } + enum 115200 { + value 8; + description "115200 Baud Rate"; + } + } + default "115200"; + } + + // Operational status of the card + typedef eqpt_COpSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum inserted { + value 1; + description "Inserted"; + } + enum absent { + value 2; + description "Absent"; + } + enum mismatch { + value 3; + description "Mismatch"; + } + enum fail { + value 4; + description "Failed"; + } + enum present { + value 5; + description "Present"; + } + enum removed { + value 6; + description "Removed"; + } + enum online { + value 7; + description "Online"; + } + enum offline { + value 8; + description "Offline"; + } + enum pwr-up { + value 9; + description "Powered up"; + } + enum pwr-down { + value 10; + description "Powered down"; + } + enum err-pwr-down { + value 11; + description "Errored powered down"; + } + enum testing { + value 12; + description "Testing"; + } + enum init { + value 13; + description "Initializing"; + } + enum reg-failure { + value 14; + description "Registration failed"; + } + enum dnld { + value 15; + description "Downloading"; + } + enum upg { + value 16; + description "Upgrading"; + } + enum srg-fail { + value 17; + description "SRG failed"; + } + enum ha-seq-fail { + value 18; + description "HA Sequence number failed"; + } + } + default "unknown"; + } + + // Memory capacity + typedef eqpt_Capacity { + type uint32; + default "0"; + } + + typedef eqpt_CardId { + type uint32; + } + + typedef eqpt_CardNumPorts { + type uint16 { + range "0..256"; + } + default "0"; + } + + // Type of the card + typedef eqpt_CardT { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum supervisor { + value 1; + description "Supervisor"; + } + enum linecard { + value 2; + description "Line card"; + } + enum fabriccard { + value 3; + description "Fabric card"; + } + enum sysctrlcard { + value 4; + description "System control card"; + } + enum extchcard { + value 5; + description "Extension chassis card"; + } + enum fan-tray { + value 6; + description "fan tray"; + } + enum power-supply { + value 7; + description "power supply"; + } + enum lemcard { + value 8; + description "LEM card"; + } + } + default "unknown"; + } + + // Chassis operational state + typedef eqpt_ChOperSt { + type enumeration { + enum not-operational { + value 0; + description "Not Operational"; + } + enum failed { + value 1; + description "Failed"; + } + enum online { + value 2; + description "Online"; + } + } + default "not-operational"; + } + + // Led color + typedef eqpt_Color { + type enumeration { + enum no-color { + value 0; + description "No color"; + } + enum green { + value 1; + description "Green"; + } + enum yellow { + value 2; + description "Yellow"; + } + enum amber { + value 3; + description "Amber"; + } + enum red { + value 4; + description "Red"; + } + enum blue { + value 5; + description "Blue"; + } + } + default "no-color"; + } + + // Number of cores + typedef eqpt_Cores { + type uint16; + } + + typedef eqpt_DataBits { + type uint16 { + range "5..8"; + } + default "8"; + } + + // Ejector status for the card + typedef eqpt_EjSt { + type enumeration { + enum open { + value 0; + description "Open"; + } + enum closed { + value 1; + description "Closed"; + } + } + default "closed"; + } + + // Extended chassis Id + typedef eqpt_ExtChId { + type uint16 { + range "100..200"; + } + } + + typedef eqpt_ExtChNumMacs { + type uint16 { + range "1..128"; + } + default "64"; + } + + typedef eqpt_ExtChNumUplinkP { + type uint16 { + range "4..32"; + } + default "4"; + } + + // Extended chassis (fex) state + typedef eqpt_ExtChSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum initializing { + value 1; + description "Initializing"; + } + enum discovered { + value 2; + description "Discovered"; + } + enum connected { + value 3; + description "Connected"; + } + enum reg { + value 4; + description "Registering"; + } + enum regDone { + value 5; + description "Registered"; + } + enum ready { + value 6; + description "Ready"; + } + enum onlSeq { + value 7; + description "Online sequence"; + } + enum online { + value 8; + description "Online"; + } + enum offReq { + value 9; + description "Offline Request"; + } + enum offSeq { + value 10; + description "Offline Sequence"; + } + enum offline { + value 11; + description "Offline"; + } + enum imgDld { + value 12; + description "Image download"; + } + enum failed { + value 13; + description "Failed"; + } + enum removed { + value 14; + description "Removed"; + } + enum hlUpgSeq { + value 15; + description "Hitless upgrade sequence"; + } + enum chkUpgSeq { + value 16; + description "Check upgrade sequence"; + } + enum svStates { + value 17; + description "Save states"; + } + enum hlUpgIdle { + value 18; + description "Hitless upgrade idle"; + } + enum chkInsSeq { + value 19; + description "Check insert sequence"; + } + enum hlUpgFail { + value 20; + description "Hitless upgrade failed"; + } + enum aaUpgRdy { + value 21; + description "Active active upgrade ready"; + } + enum aaUpgIdle { + value 22; + description "Active active upgrade idle"; + } + enum aaUpgOver { + value 23; + description "Active active upgrade done"; + } + enum aaUpgFail { + value 24; + description "Active active upgrade fail"; + } + enum aaVersMismatch { + value 25; + description "Active active version mismatch"; + } + enum ExtChTypeMismatch { + value 26; + description "Extended chassis type mismatch"; + } + } + default "unknown"; + } + + // Generic item identifier + typedef eqpt_Id { + type uint32; + } + + typedef eqpt_InactiveIntvl { + type uint32 { + range "0..525600"; + } + default "0"; + } + + // Led operational state + typedef eqpt_LedOpSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum off { + value 1; + description "Off"; + } + enum on { + value 2; + description "On"; + } + enum blinking { + value 3; + description "Blinking"; + } + enum fail { + value 4; + description "Fail"; + } + } + default "unknown"; + } + + typedef eqpt_LogType { + + type string; + default "unk"; + } + + typedef eqpt_MacAddr { + type string; + } + + // Memory type + typedef eqpt_MemT { + type enumeration { + enum unk { + value 0; + description "Unknown"; + } + enum dimm { + value 1; + description "Dimm"; + } + enum flash { + value 2; + description "Flash"; + } + enum sprom { + value 3; + description "sprom"; + } + } + } + + // Module VID in Sprom common block + typedef eqpt_ModVid { + type string; + } + + // Model + typedef eqpt_Model { + type string; + } + + // Operational state of equipment related mo + typedef eqpt_OpSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum ok { + value 1; + description "OK"; + } + enum fail { + value 2; + description "Fail"; + } + enum absent { + value 3; + description "Absent"; + } + enum shut { + value 4; + description "Shut"; + } + enum mismatch { + value 5; + description "mismatch"; + } + } + default "unknown"; + } + + // Operational state qualifier + typedef eqpt_OperStQual { + type string; + } + + // parity type + typedef eqpt_Parity { + type enumeration { + enum none { + value 0; + description "No parity"; + } + enum even { + value 1; + description "Even parity"; + } + enum odd { + value 2; + description "Odd parity"; + } + } + default "none"; + } + + typedef eqpt_PartNum { + type string; + } + + // Type of the port + typedef eqpt_PortT { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum eobc { + value 1; + description "EOBC"; + } + enum mgmt { + value 2; + description "Management Port"; + } + enum fab { + value 3; + description "Fabric Port"; + } + enum leaf { + value 4; + description "Access Port"; + } + enum extchhp { + value 5; + description "Extended Chassis Host Port"; + } + enum extchfp { + value 6; + description "Extended Chassis Fabric Port"; + } + } + default "unknown"; + } + + // Status of the poweroff of the slot + typedef eqpt_PoweroffSt { + type enumeration { + enum no { + value 0; + description "No Power Off"; + } + enum yes { + value 1; + description "Power Off"; + } + } + default "no"; + } + + // Power supply redundancy mode + typedef eqpt_PsRdnM { + type enumeration { + enum unknown { + value 0; + description "unknown"; + } + enum not-supp { + value 1; + description "Not supported"; + } + enum rdn { + value 2; + description "Redundant"; + } + enum comb { + value 3; + description "Combined"; + } + enum n-rdn { + value 4; + description "Non redundant"; + } + enum ps-rdn { + value 5; + description "Power output redundancy"; + } + enum insrc-rdn { + value 6; + description "Input source redundancy"; + } + enum sinin-rdn { + value 7; + description "Single input redundancy"; + } + enum comb-force { + value 8; + description "Combined Force"; + } + } + default "ps-rdn"; + } + + // PSU fan direction + typedef eqpt_PsuFanDir { + type enumeration { + enum front2back { + value 0; + description "front2back"; + } + enum back2front { + value 1; + description "back2front"; + } + enum notused { + value 2; + description "notused"; + } + } + default "notused"; + } + + // power state of a card + typedef eqpt_PwrState { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum off { + value 1; + description "Off"; + } + enum on { + value 2; + description "On"; + } + enum deny { + value 3; + description "Deny"; + } + enum multi-boot-fail { + value 4; + description "Multiple boot failure"; + } + } + default "unknown"; + } + + // Redundancy state + typedef eqpt_RdSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum active { + value 1; + description "Active"; + } + enum standby { + value 2; + description "Standby"; + } + } + default "unknown"; + } + + // Revision + typedef eqpt_Revision { + type string; + default "0"; + } + + // Operational state of sensor mo + typedef eqpt_SensorOpSt { + type enumeration { + enum fail { + value 0; + description "Fail"; + } + enum normal { + value 1; + description "Normal"; + } + enum minor { + value 2; + description "Minor Alarm"; + } + enum major { + value 3; + description "Major Alarm"; + } + enum absent { + value 4; + description "Absent"; + } + enum bad-asic { + value 5; + description "Bad Asic"; + } + } + default "absent"; + } + + // Sensor type + typedef eqpt_SensorT { + type enumeration { + enum cpu { + value 1; + description "CPU sensor"; + } + enum inlet { + value 2; + description "Inlet sensor"; + } + enum outlet { + value 3; + description "Outlet sensor"; + } + enum hotswap { + value 4; + description "Hotswap sensor"; + } + enum dimm { + value 5; + description "Dimm sensor"; + } + enum phy { + value 6; + description "Phy sensor"; + } + enum sfp { + value 7; + description "SFP sensor"; + } + enum qsfp { + value 8; + description "QSFP sensor"; + } + enum asic { + value 9; + description "Asic sensor"; + } + enum pch { + value 10; + description "PCH"; + } + enum cpu-crm { + value 11; + description "cpu VRM"; + } + enum asic-vrm { + value 12; + description "Asic VRM"; + } + enum x86 { + value 18; + description "x86 cpu"; + } + enum arm { + value 19; + description "arm cpu"; + } + enum die { + value 20; + description "Die sensor"; + } + } + default "asic"; + } + + // Serial number + typedef eqpt_Serial { + type string; + } + + // Slot controls + typedef eqpt_SlotControl { + + type string; + } + + // Location of the slot + typedef eqpt_SlotLoc { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum front { + value 1; + description "Front"; + } + enum rear { + value 2; + description "Rear"; + } + } + default "unknown"; + } + + // Status of the slot + typedef eqpt_SlotOpSt { + type enumeration { + enum empty { + value 0; + description "empty"; + } + enum inserted { + value 1; + description "Inserted"; + } + } + default "empty"; + } + + // Type of the slot + typedef eqpt_SlotT { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum supslot { + value 1; + description "Supervisor slot"; + } + enum lcslot { + value 2; + description "Line card slot"; + } + enum fcslot { + value 3; + description "Fabric card slot"; + } + enum scslot { + value 4; + description "System control card slot"; + } + enum extchslot { + value 5; + description "Extension chassis slot"; + } + enum psuslot { + value 6; + description "Power supply slot"; + } + enum fantray { + value 7; + description "Fan tray"; + } + enum bslot { + value 8; + description "Board Slot"; + } + enum nslot { + value 9; + description "Nic Slot"; + } + } + default "unknown"; + } + + // Socket + typedef eqpt_Sock { + type enumeration { + enum unspecified { + value 0; + description "socket"; + } + } + } + + // Speed + typedef eqpt_Speed { + type decimal64 { + fraction-digits 6; + } + } + + typedef eqpt_StopBits { + type uint16 { + range "1..2"; + } + default "1"; + } + + // Temperature threshold + typedef eqpt_TempThresh { + type int16; + } + + // Temperature Value of sensor mo + typedef eqpt_TempValue { + type uint16; + default "0"; + } + + // Voltage source + typedef eqpt_VSrc { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum 110v { + value 1; + description "110v"; + } + enum 220v { + value 2; + description "220v"; + } + } + default "unknown"; + } + + // Vendor + typedef eqpt_Vendor { + type string; + } + + // Volts + typedef eqpt_Volts { + type decimal64 { + fraction-digits 6; + } + } + + // Watts + typedef eqpt_Watts { + type uint32; + } + + // FCOT DOM sensor alerts + typedef eqpt_fcotDomAlert { + type enumeration { + enum none { + value 0; + description "No alert"; + } + enum high-alarm { + value 1; + description "High alarm"; + } + enum high-warning { + value 2; + description "High warning"; + } + enum low-alarm { + value 3; + description "Low alarm"; + } + enum low-warning { + value 4; + description "Low warning"; + } + } + default "none"; + } + + // FCOT DOM LANE type + typedef eqpt_fcotDomLane { + type enumeration { + enum basic { + value 0; + } + enum extGlobal { + value 1; + } + enum extOptical { + value 2; + } + } + } + + // Active PC Members Size based off of PCM_MAX_PORTS_PER_CHANNEL + typedef ethpm_ActiveMembersList { + type mtx_array_ifindex; + } + + // EEE 10G wake times Size based off of MAX_EEE_WAKE_TIMES + typedef ethpm_EeeWakeTimesList { + type mtx_array_uint16; + } + + // Error disable event type + typedef ethpm_ErrDisEvent { + type enumeration { + enum event-link-flap { + value 0; + description "Link State Flapping"; + } + enum event-udld { + value 1; + description "UDLD"; + } + enum event-bpduguard { + value 2; + description "BPDU Guard"; + } + enum event-loopback { + value 3; + description "Loopback detected by UDLD"; + } + enum event-storm-ctrl { + value 4; + description "Storm Control"; + } + enum event-dhcp-rate-lim { + value 5; + } + enum event-arp-inspection { + value 6; + } + enum event-sec-violation { + value 7; + description "802.1x Violation"; + } + enum event-psec-violation { + value 8; + description "Psecure Violation"; + } + enum event-stp-inconsist-vpc-peerlink { + value 9; + description "STP Inconsistent VPC Peer-link state"; + } + enum event-set-port-state-failed { + value 10; + description "STP set port state failure"; + } + enum event-debug-1 { + value 11; + } + enum event-debug-2 { + value 12; + } + enum event-debug-3 { + value 13; + } + enum event-debug-4 { + value 14; + } + enum event-debug-5 { + value 15; + } + enum event-ip-addr-conflict { + value 16; + } + enum event-ipqos-mgr-error { + value 17; + } + enum event-ethpm { + value 18; + } + enum event-ipqos-dcbxp-compat-failure { + value 19; + } + enum event-syserr-based { + value 20; + } + enum unknown { + value 21; + } + enum event-mcp-loop { + value 22; + description "Loop indication by MCP"; + } + enum event-ep-move { + value 23; + description "Frequent EP move"; + } + enum event-vlan-membership { + value 24; + description "Vlan membership failed"; + } + enum event-dcbx-no-ack { + value 25; + description "DCBx not received ack"; + } + enum event-pause-rate-limit { + value 26; + description "Pause rate limit error"; + } + } + } + + typedef ethpm_ErrDisRecovIntvl { + type uint32 { + range "30..65535"; + } + default "300"; + } + + // Error Vlan Status Size based off of ETHPM_MAX_VLAN_COUNT TODO: This is too large as an array of 4k status + // We need to rethink the design of this at some point + // when this is needed + typedef ethpm_ErrorVlanStatusList { + type uint32; + } + + // Fcot flags + typedef ethpm_FcotFlags { + type enumeration { + enum unknown { + value 0; + } + enum access-failed { + value 1; + } + enum checksum-failed { + value 2; + } + enum vendor-crc-failed { + value 3; + } + enum sfp-speed-mismatch { + value 4; + } + enum eth-compalint-failed { + value 5; + } + enum unknown-xcvr-type { + value 6; + } + enum emphasis-checksum-failed { + value 7; + } + enum init-failed { + value 8; + } + enum ok-auth-success-no-md5 { + value 9; + } + enum auth-failed { + value 10; + } + enum ok-delayed-auth-success { + value 11; + } + enum delayed-auth-failed { + value 12; + } + enum ok-no-md5 { + value 13; + } + enum ok { + value 14; + } + } + default "unknown"; + } + + // Fcot state + typedef ethpm_FcotState { + type enumeration { + enum unknown { + value 0; + } + enum inserted { + value 1; + } + enum removed { + value 2; + } + enum hw-failure { + value 3; + } + enum inserted-initializing { + value 4; + } + } + default "unknown"; + } + + // Transceiver Type + typedef ethpm_FcotTransceiverType { + type enumeration { + enum copper { + value 1; + } + enum fiber { + value 2; + } + enum unknown { + value 3; + } + } + default "unknown"; + } + + // Fcot type Always add new values at bottom, plus update + // the enum in platform/infra/port_client/lib/export/isan/lc_port_fcot.h + // Also add an entry in the conversion table in ethpm_objstore_utils.c + // The enum values in lc_port_fcot.h should be mapped with these FcotType values + // using the conversion table. + typedef ethpm_FcotType { + type enumeration { + enum unknown { + value 0; + } + enum xfp { + value 1; + } + enum x2 { + value 2; + } + enum dummy { + value 3; + } + enum sfp { + value 4; + } + enum qsfp { + value 5; + } + enum cfp-40g { + value 6; + } + enum cfp-100g { + value 7; + } + enum cfp { + value 8; + } + enum qsfp28 { + value 9; + } + enum qsfpdd { + value 10; + } + enum cpak { + value 11; + } + enum qsfp56 { + value 12; + } + enum cxp { + value 13; + } + } + default "unknown"; + } + + // Bundle List Size based off of MAX_BUNDLES + typedef ethpm_IfBundleList1024 { + type mtx_array_ifindex; + } + + // Last Errors Size based off of ETHPM_MAX_LAST_ERRORS + typedef ethpm_LastErrorsList { + type mtx_array_uint32; + } + + // LB Bitmap + typedef ethpm_LbBitmap { + type mtx_array_bit; + } + + // Model List + typedef ethpm_ModelList { + type mtx_array_uint8; + } + + // Port Bitmap + typedef ethpm_PortBitmap { + type mtx_array_bit; + } + + // Port Group Bitmap + typedef ethpm_PortGroupBitmap { + type mtx_array_bit; + } + + // Port Oper Bitset Size based off of ETHPM_PORT_OPER_BITSET_SZ + typedef ethpm_PortOperBitmap { + type mtx_array_bit; + } + + // Sfp Extended Option Size based off of SFP_MSA_SID_OPT_SZ + typedef ethpm_SfpExtendedOptionBytes { + type mtx_array_uint8; + } + + // SFP Reserved4 Size based off of SFP_MSA_SID_RESERVED4_SZ + typedef ethpm_SfpReserved4Array { + type mtx_array_uint8; + } + + // Sfp Vendor Id Size based off of SFP_MSA_SID_VENDOR_OUI_SZ + typedef ethpm_SfpVendorIdBytes { + type mtx_array_uint8; + } + + // Sfp Xcvr Code Size based off of SFP_MSA_SID_TRANS_SZ + typedef ethpm_SfpXcvrCodeBytes { + type mtx_array_uint8; + } + + // Share state + typedef ethpm_ShareState { + type enumeration { + enum dedicated { + value 0; + } + enum shared { + value 1; + } + } + default "dedicated"; + } + + // Si List Size based off of ETHPM_MAX_VLAN_COUNT + typedef ethpm_SiBitmap { + type mtx_array_bit; + } + + // Syslog Info + typedef ethpm_SyslogInfo { + type enumeration { + enum default { + value 0; + } + enum info-1 { + value 1; + } + } + default "default"; + } + + // Syslog level + typedef ethpm_SyslogLevel { + type uint32 { + range "0..7"; + } + default "5"; + } + + // System Interface Shutdown + typedef ethpm_SystemIfAdminState { + type enumeration { + enum up { + value 1; + } + enum down { + value 2; + } + enum down-exclude-fabric { + value 4; + } + } + default "up"; + } + + // Trunking status + typedef ethpm_TrunkStatus { + type enumeration { + enum unknown { + value 0; + } + enum trunking { + value 1; + } + enum fabricpath { + value 2; + } + enum not-trunking { + value 3; + } + enum trunk-bundle { + value 4; + } + enum fabric-bundle { + value 5; + } + enum no-trunk-bundle { + value 6; + } + } + default "unknown"; + } + + // Type List + typedef ethpm_TypeList { + type mtx_array_uint8; + } + + // X2 Bit Rate Size based off of SFP_XMSA_BIT_RATE_SZ + typedef ethpm_X2BitRateBytes { + type mtx_array_uint8; + } + + // X2 Extended Vendor Specific Info Size based off of SFP_XMSA_EXNTD_VENDOR_SPEC_SZ + typedef ethpm_X2ExtendedVendorSpecificInfoBytes { + type mtx_array_uint8; + } + + // X2 Fibre Type Size based off of SFP_XMSA_FIBRE_TYPE_SZ + typedef ethpm_X2FibreTypeBytes { + type mtx_array_uint8; + } + + // X2 Lot Code Size based off of SFP_XMSA_LOT_CODE_SZ + typedef ethpm_X2LotCodeBytes { + type mtx_array_uint8; + } + + // X2 Package Oui Size based off of SFP_XMSA_PACKAGE_OUI_SZ + typedef ethpm_X2PackageOuiBytes { + type mtx_array_uint8; + } + + // X2 Range Size based off of SFP_XMSA_RANGE_SZ + typedef ethpm_X2RangeBytes { + type mtx_array_uint8; + } + + // X2 Sonet Sdh Code Size based off of SFP_XMSA_SONET_SDH_CODE_SZ + typedef ethpm_X2SonetSdhCodeBytes { + type mtx_array_uint8; + } + + // Vendor Data Size based off of SFP_VENDOR_SPECIFIC_DATA_SZ + typedef ethpm_X2VendorDataBytes { + type mtx_array_uint8; + } + + // X2 Wavelength Channel Size based off of SFP_XMSA_WAVE_LEN_SZ + typedef ethpm_X2WavelengthChannelBytes { + type mtx_array_uint8; + } + + // X2 Xg Fc Code Size based off of SFP_XMSA_XGFC_CODE_SZ + typedef ethpm_X2XbFcCodeBytes { + type mtx_array_uint8; + } + + // X2 Xg Eth Code Size based off of SFP_XMSA_XG_ETH_CODE_SZ + typedef ethpm_X2XgEthCodeBytes { + type mtx_array_uint8; + } + + // Port duplex capabilities + typedef ethpm_capDuplex { + + type string; + } + + // Port speed capabilities + typedef ethpm_capSpeed { + + type string; + } + + // Chassis infra EPDS Port no + typedef ethpm_epdsPortNo { + type uint16 { + range "0..65535"; + } + default "0"; + } + + // Chassis infra vlan + typedef ethpm_infraVlan { + type uint16 { + range "0..4092"; + } + default "0"; + } + + // Chassis Mgmt Instance Fabric No + typedef ethpm_mgmtInstFabricNo { + type enumeration { + enum UnknownFabric { + value 0; + } + enum LeftFabric { + value 1; + } + enum RightFabric { + value 2; + } + } + default "UnknownFabric"; + } + + // description + typedef ethpm_operDescr { + type string { + length "0..254"; + } + } + + // Action's label type + typedef evms_ActionLabelType { + type string { + pattern ".*[0-9]*(\\.?[0-9]{1}).*"; + } + } + + typedef evms_AdminSt { + type enumeration { + enum enabled { + value 0; + description "Enabled"; + } + enum disabled { + value 1; + description "Disabled"; + } + } + default "disabled"; + } + + // System policy to override + typedef evms_AppletOverrideType { + type string { + length "0..29"; + } + } + + typedef evms_CacheEntryOp { + type enumeration { + enum all { + value 1; + } + enum add { + value 2; + } + enum update { + value 3; + } + enum delete { + value 4; + } + } + default "all"; + } + + // Config Error + typedef evms_ConfigErr { + type enumeration { + enum noerror { + value 0; + description "Unknown"; + } + enum limitexceed { + value 1; + description "Actions config limit exceeded"; + } + enum validationtimeout { + value 2; + description "Event config timeout"; + } + } + } + + // Correlation operators + typedef evms_CorrelateTagType { + type enumeration { + enum and { + value 1; + } + enum andnot { + value 2; + } + enum or { + value 3; + } + enum none { + value 0; + } + } + default "none"; + } + + // Syslog priority type + typedef evms_CounterEntryExitOpType { + type enumeration { + enum gt { + value 5; + } + enum ge { + value 6; + } + enum eq { + value 7; + } + enum ne { + value 8; + } + enum lt { + value 9; + } + enum le { + value 10; + } + } + } + + typedef evms_CounterOpType { + type enumeration { + enum nop { + value 1; + } + enum set { + value 2; + } + enum inc { + value 3; + } + enum dec { + value 4; + } + } + } + + typedef evms_DeviceNumber { + type uint16 { + range "0..32"; + } + default "0"; + } + + typedef evms_DeviceType { + type enumeration { + enum fan { + value 1; + } + enum module { + value 2; + } + enum powersupply { + value 3; + } + } + default "module"; + } + + typedef evms_EntryExitOpType { + type enumeration { + enum none { + value 0; + } + enum gt { + value 1; + } + enum ge { + value 2; + } + enum eq { + value 3; + } + enum ne { + value 4; + } + enum lt { + value 5; + } + enum le { + value 6; + } + } + default "none"; + } + + typedef evms_ErrorType { + type enumeration { + enum registration-timeout { + value 23; + } + enum registration-failure { + value 22; + } + enum runtime-diag-failure { + value 25; + } + enum runtime-diag-timeout { + value 26; + } + enum image-download-failed { + value 276; + } + enum lc-ready-timeout { + value 30; + } + enum insertion-seq-failure { + value 400; + } + enum unexpected-registration { + value 21; + } + enum lc-failed { + value 38; + } + enum lc-not-responding { + value 69; + } + enum lc-sw-failure { + value 91; + } + enum upgrade-srg-not-compatible { + value 238; + } + enum sequence-timeout { + value 212; + } + enum image-upgrade-failed { + value 119; + } + enum hitless-upgrade-seq-timeout { + value 231; + } + enum srg-info-resp-timeout { + value 258; + } + enum addon-sequence-failure { + value 406; + } + enum hitless-upgrade-reg-failure { + value 226; + } + enum hitless-upgrade-diag-failure { + value 227; + } + enum hitless-upgrade-procmgr-notif { + value 228; + } + enum hitless-upgrade-failure { + value 239; + } + enum any { + value 65535; + } + } + default "any"; + } + + typedef evms_EventFibType { + type enumeration { + enum undefined { + value 0; + description "Event fib disabled"; + } + enum inconsistent { + value 1; + description "Event fib route inconsistent"; + } + enum missing { + value 2; + description "Event fib route missing"; + } + enum extra { + value 3; + description "Event fib route extra"; + } + enum adjacency { + value 4; + description "Event fib adjacency extra"; + } + enum tcam-resource { + value 5; + description "Event fib resource tcam usage"; + } + } + } + + // Event's tag data type + typedef evms_EventTagType { + type string { + length "0..29"; + } + } + + typedef evms_ExitCombType { + type enumeration { + enum none { + value 0; + } + enum or { + value 1; + } + enum and { + value 2; + } + } + default "none"; + } + + typedef evms_ExpLogComValStr { + type string { + length "1..30"; + } + } + + typedef evms_FanInterval { + type uint16 { + range "10..64000"; + } + default "10"; + } + + typedef evms_GetTypeType { + type enumeration { + enum none { + value 0; + } + enum exact { + value 1; + } + enum next { + value 2; + } + } + default "none"; + } + + typedef evms_HardError { + type enumeration { + enum soft_error { + value 0; + } + enum hard_error { + value 1; + } + enum soft_error_resettable { + value 2; + } + enum soft_error_reset_replay_all_cfg { + value 3; + } + enum soft_error_diag_failure { + value 4; + } + } + default "hard_error"; + } + + typedef evms_IntegerRange { + type string { + pattern "(\\d+(-\\d+)? *(, *\\d+(-\\d+)? *)*).*|.*(all)"; + } + default "all"; + } + + typedef evms_LinkFlapTime { + type int32 { + range "-1..10000000"; + } + default "-1"; + } + + typedef evms_MemoryType { + type enumeration { + enum minor { + value 1; + } + enum severe { + value 3; + } + enum critical { + value 5; + } + } + default "minor"; + } + + typedef evms_ModuleNumber { + type string { + pattern "(all)|([1-9]|[12]\\d|3[0-2])"; + } + default "all"; + } + + typedef evms_ModuleStatus { + type enumeration { + enum online { + value 5; + } + enum offline { + value 6; + } + enum any { + value 7; + } + } + default "any"; + } + + typedef evms_OirType { + type enumeration { + enum insert { + value 5; + } + enum remove { + value 6; + } + enum anyoir { + value 8; + } + } + default "anyoir"; + } + + // Syslog priority type + typedef evms_PriorityType { + type enumeration { + enum 1 { + value 1; + } + enum 2 { + value 2; + } + enum 3 { + value 3; + } + enum 4 { + value 4; + } + enum 5 { + value 5; + } + enum 6 { + value 6; + } + enum 7 { + value 7; + } + enum 0 { + value 0; + } + enum alerts { + value 8; + } + enum critical { + value 9; + } + enum debugging { + value 10; + } + enum emergencies { + value 11; + } + enum errors { + value 12; + } + enum informational { + value 13; + } + enum notifications { + value 14; + } + enum warnings { + value 15; + } + enum none { + value 16; + } + } + } + + // Diag Failure level + typedef evms_SeverityLevel { + type enumeration { + enum minor { + value 0; + description "Minor"; + } + enum moderate { + value 1; + description "Moderate"; + } + enum major { + value 2; + description "Major"; + } + } + default "minor"; + } + + // Diag Testing Type + typedef evms_TestType { + type enumeration { + enum scheduled { + value 0; + description "Scheduled"; + } + enum monitoring { + value 1; + description "Monitoring"; + } + } + default "monitoring"; + } + + typedef evms_ThresholdLevels { + type enumeration { + enum major { + value 16; + } + enum minor { + value 17; + } + enum any { + value 18; + } + } + default "any"; + } + + typedef evms_TrackStateOp { + type enumeration { + enum down { + value 0; + } + enum up { + value 1; + } + enum any { + value 2; + } + } + default "any"; + } + + typedef evms_timeInterval { + type int32 { + range "-1..10000000"; + } + default "-1"; + } + + typedef fabric_NodeId { + type uint16 { + range "1..16000"; + } + default "1"; + } + + // Firmware running mode + typedef firmware_RunningMode { + type enumeration { + enum normal { + value 0; + description "Normal"; + } + enum recovery { + value 1; + description "Reovery"; + } + } + default "normal"; + } + + // Running operational state + typedef firmware_RunningOperSt { + type enumeration { + enum ok { + value 0; + description "Version Match"; + } + enum ver-mismatch { + value 1; + description "Version Mismatch"; + } + } + } + + // Firmware type + typedef firmware_Type { + type enumeration { + enum controller { + value 0; + description "Controller"; + } + enum switch { + value 1; + description "Switch"; + } + enum catalog { + value 2; + description "Catalog"; + } + } + default "switch"; + } + + typedef flexlink_Delay { + type uint32 { + range "1..300"; + } + default "35"; + } + + typedef flexlink_Mode { + type enumeration { + enum off { + value 0; + description "no preemption"; + } + enum forced { + value 1; + description "active interface preempts the backup"; + } + enum bandwidth { + value 2; + description "higher bandwidth interface acts as active"; + } + } + default "off"; + } + + typedef flow_CollectParams { + + type string; + } + + typedef flow_Direction { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum in { + value 1; + description "Input"; + } + enum out { + value 2; + description "Output"; + } + enum both { + value 3; + description "Both"; + } + } + default "in"; + } + + typedef flow_ExportVersion { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum v5 { + value 1; + description "Version 5"; + } + enum v9 { + value 2; + description "Version 9"; + } + enum cisco1 { + value 3; + description "Cisco proprietary version 1"; + } + } + default "cisco1"; + } + + typedef flow_L4Port { + type uint32 { + range "1..65535"; + } + } + + typedef flow_MatchParams { + + type string; + } + + typedef flow_Mtu { + type uint16 { + range "576..9216"; + } + default "1500"; + } + + typedef flow_PayloadLen { + + type uint32 { + range "0..16383"; + } + } + + typedef flow_ReceiveWindowSize { + type uint32 { + range "0..65535"; + } + } + + typedef flow_SamplerMode { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum flow { + value 1; + description "M out of N flows"; + } + enum pkts { + value 2; + description "M out of N pkts"; + } + } + default "flow"; + } + + typedef flow_TCPOptHdrLen { + type uint32 { + range "0..15"; + } + } + + // Admin status of feature + typedef fm_AdminState { + type enumeration { + enum enabled { + value 1; + description "Feature enabled"; + } + enum disabled { + value 2; + description "Feature disabled"; + } + } + default "disabled"; + } + + // Operational status of instance + typedef fm_InstOperState { + type enumeration { + enum enabled { + value 1; + description "Feature enabled for instance"; + } + enum disabled { + value 2; + description "Feature disabled for instance"; + } + enum enabled-not-running { + value 3; + description "Feature enabled and not running for the instance"; + } + } + default "disabled"; + } + + // Number of instances + typedef fm_Instance { + type uint32; + default "1"; + } + + // Operational status of feature + typedef fm_OperState { + type enumeration { + enum enabled { + value 1; + description "Feature enabled"; + } + enum disabled { + value 2; + description "Feature disabled"; + } + } + default "disabled"; + } + + // Id + typedef fmcast_Id { + type uint8 { + range "0..12"; + } + default "0"; + } + + // Operational state + typedef fmcast_OperSt { + type enumeration { + enum active { + value 1; + description "Active"; + } + enum inactive { + value 2; + description "Inactive"; + } + } + default "inactive"; + } + + // file string type + typedef fs_fileString { + type string; + } + + // Admin status of feature + typedef fset_AdminState { + type enumeration { + enum none { + value 0; + description "featureSet none"; + } + enum enabled { + value 1; + description "featureSet enabled"; + } + enum disabled { + value 2; + description "featureSet disabled"; + } + enum installed { + value 3; + description "featureSet installed"; + } + enum uninstalled { + value 4; + description "featureSet uninstalled"; + } + } + default "none"; + } + + // Operational status of feature + typedef fset_OperState { + type enumeration { + enum none { + value 0; + description "featureSet none"; + } + enum enabled { + value 1; + description "featureSet enabled"; + } + enum disabled { + value 2; + description "featureSet disabled"; + } + enum installed { + value 3; + description "featureSet installed"; + } + enum uninstalled { + value 4; + description "featureSet uninstalled"; + } + } + default "none"; + } + + // quality transmit/receive option type for global + typedef fsyncMgr_gqloptype { + type enumeration { + enum op1 { + value 1; + description "ITU-T Quality Level option 1"; + } + enum op2g1 { + value 2; + description "ITU-T Quality Level option 2 generation 1"; + } + enum op2g2 { + value 3; + description "ITU-T Quality Level option 2 generation 2"; + } + } + default "op1"; + } + + typedef fsyncMgr_peerrcvtimeout { + type uint16 { + range "0..600"; + } + default "120"; + } + + // quality transmit/receive option type for interface + typedef fsyncMgr_qloptype { + type enumeration { + enum none { + value 0; + description "no Quality Level configured"; + } + enum op1 { + value 1; + description "ITU-T Quality Level option 1"; + } + enum op2g1 { + value 2; + description "ITU-T Quality Level option 2 generation 1"; + } + enum op2g2 { + value 3; + description "ITU-T Quality Level option 2 generation 2"; + } + } + default "none"; + } + + typedef fsyncMgr_qlvalue { + type enumeration { + enum fsync-ql-common-invalid { + value 0; + description "quality common invalid"; + } + enum fsync-ql-common-dnu { + value 1; + description + "This signal should not be used for + synchronization"; + } + enum fsync-ql-common-failed { + value 2; + description "quality common failed"; + } + enum fsync-ql-common-none { + value 3; + description "quality common none"; + } + enum fsync-ql-o1-eprtc { + value 20; + description + "ITU-T Option 1: Enhanced primary reference + timing clock"; + } + enum fsync-ql-o1-prtc { + value 21; + description "ITU-T Option 1: Primary reference timing clock"; + } + enum fsync-ql-o1-prc { + value 22; + description "ITU-T Option 1: Primary reference clock"; + } + enum fsync-ql-o1-ssu-a { + value 23; + description "ITU-T Option 1: Type I or V slave clock"; + } + enum fsync-ql-o1-ssu-b { + value 24; + description "ITU-T Option 1: Type IV slave clock"; + } + enum fsync-ql-o1-eeec { + value 25; + description + "ITU-T Option 1: Enhanced ethernet equipment + clock"; + } + enum fsync-ql-o1-eec1 { + value 26; + description "ITU-T Option 1: Ethernet equipment clock"; + } + enum fsync-ql-o1-sec { + value 27; + description + "ITU-T Option 1: + SONET equipment clock"; + } + enum fsync-ql-o2-g1-eprtc { + value 40; + description + "ITU-T Option 2, Generation 1: Enhanced primary + reference timing clock"; + } + enum fsync-ql-o2-g1-prtc { + value 41; + description + "ITU-T Option 2, Generation 1: Primary reference + timing clock"; + } + enum fsync-ql-o2-g1-prs { + value 42; + description + "ITU-T Option 2, Generation 1: Primary reference + source"; + } + enum fsync-ql-o2-g1-stu { + value 43; + description + "ITU-T Option 2, Generation 1: Synchronized - + traceability unknown"; + } + enum fsync-ql-o2-g1-st2 { + value 44; + description "ITU-T Option 2, Generation 1: Stratum 2"; + } + enum fsync-ql-o2-g1-st3 { + value 45; + description "ITU-T Option 2, Generation 1: Stratum 3"; + } + enum fsync-ql-o2-g1-eeec { + value 46; + description + "ITU-T Option 2, Generation 1: Enhanced ethernet + equipment clock"; + } + enum fsync-ql-o2-g1-eec2 { + value 47; + description + "ITU-T Option 2, Generation 1: Ethernet + equipment clock"; + } + enum fsync-ql-o2-g1-smc { + value 48; + description + "ITU-T Option 2, Generation 1: SONET clock self + timed"; + } + enum fsync-ql-o2-g1-st4 { + value 49; + description + "ITU-T Option 2, Generation 1: Stratum 4 + freerun"; + } + enum fsync-ql-o2-g1-res { + value 50; + description "ITU-T Option 2, Generation 1: RES"; + } + enum fsync-ql-o2-g2-eprtc { + value 60; + description + "ITU-T + Option 2, Generation 2: Enhanced primary reference + timing clock"; + } + enum fsync-ql-o2-g2-prtc { + value 61; + description + "ITU-T Option 2, Generation 2: Primary reference + timing clock"; + } + enum fsync-ql-o2-g2-prs { + value 62; + description + "ITU-T Option 2, Generation 2: Primary reference + source"; + } + enum fsync-ql-o2-g2-stu { + value 63; + description + "ITU-T Option 2, Generation 2: Synchronized - + traceability unknown"; + } + enum fsync-ql-o2-g2-st2 { + value 64; + description "ITU-T Option 2, Generation 2: Stratum 2"; + } + enum fsync-ql-o2-g2-tnc { + value 65; + description + "ITU-T Option 2, Generation 2: Transit node + clock"; + } + enum fsync-ql-o2-g2-st3e { + value 66; + description "ITU-T Option 2, Generation 2: Stratum 3E"; + } + enum fsync-ql-o2-g2-st3 { + value 67; + description "ITU-T Option 2, Generation 2: Stratum 3"; + } + enum fsync-ql-o2-g2-eeec { + value 68; + description + "ITU-T Option 2, Generation 2: Enhanced ethernet + equipment clock"; + } + enum fsync-ql-o2-g2-eec2 { + value 69; + description + "ITU-T Option 2, Generation 2: Ethernet equipment + clock"; + } + enum fsync-ql-o2-g2-smc { + value 70; + description + "ITU-T Option 2, Generation 2: SONET clock self + timed"; + } + enum fsync-ql-o2-g2-st4 { + value 71; + description "ITU-T Option 2, Generation 2: Stratum 4 freerun"; + } + enum fsync-ql-o2-g2-prov { + value 72; + description "ITU-T Option 2, Generation 2: PROV"; + } + } + default "fsync-ql-common-none"; + } + + // Event Export Max + typedef fte_EventExportMax { + type uint32 { + range "0..32000"; + } + default "3"; + } + + // flow count value + typedef fte_FlowCountValue { + type uint32 { + range "1..32767"; + } + default "500"; + } + + // Latency Unit + typedef fte_LatencyUnit { + type enumeration { + enum micro-sec { + value 0; + description "Micro Second"; + } + enum milli-sec { + value 1; + description "Milli Second"; + } + } + default "micro-sec"; + } + + // Latency Value + typedef fte_LatencyValue { + type uint32 { + range "0..65535"; + } + } + + // Mode + typedef fte_ModeT { + type enumeration { + enum flow-events { + value 1; + description "FTE mode"; + } + } + default "flow-events"; + } + + // Exporter Vrf + typedef fte_VrfName { + type l3_VrfName; + default "default"; + } + + // Represents the deployment immediacy preference of the EpG + typedef fv_Immediacy { + type enumeration { + enum immediate { + value 1; + description "Immediate"; + } + enum lazy { + value 2; + description "On Demand"; + } + } + default "lazy"; + } + + // Instrumentation Immediacy Specification for when policies are instrumented in HW + // immediate: instrument policy in hardware as soon as policy is resolved at the node + // lazy: instrument policy in hardware only when EP shows up + // This immediacy constraint is specified at EPG-level, and is copied into EPP, and is enforced per EPP. + typedef fv_InstrImedcy { + type fv_Immediacy; + } + + // Policy Control Enforcement Preference + typedef fv_PcEnfPref { + type enumeration { + enum enforced { + value 1; + description "Enforced"; + } + enum unenforced { + value 2; + description "Unenforced"; + } + } + default "enforced"; + } + + // EPg DN + typedef fv_PrimKey { + type string; + } + + // Administrative state + typedef gold_AdminSt { + type enumeration { + enum default { + value 0; + description "Default"; + } + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "default"; + } + + // Test identifier + typedef gold_Id { + type uint32; + } + + // Test name + typedef gold_Name { + type string; + } + + // Port list + typedef gold_PortList { + type string; + default "none"; + } + + // Test result + typedef gold_Result { + type enumeration { + enum untested { + value 1; + description "Untested"; + } + enum failure { + value 2; + description "Failure"; + } + enum not-complete { + value 3; + description "Incomplete"; + } + enum aborted { + value 4; + description "Aborted"; + } + enum success { + value 5; + description "Success"; + } + enum error-disabled { + value 6; + description "Error Disabled"; + } + enum error-ignore { + value 7; + description "Error Ignore"; + } + enum error-disabled-w-no { + value 8; + description "Error Disabled W"; + } + enum unavailable { + value 9; + description "Unavailable"; + } + } + default "untested"; + } + + // Test Fail Reason + typedef gold_TestFailReason { + type string; + default "No_failures_yet"; + } + + // Test time string + typedef gold_TestTime { + type string; + default "n/a"; + } + + // Bootup Level + typedef gold_bootLevel { + type enumeration { + enum bypass { + value 0; + description "Bypass"; + } + enum complete { + value 1; + description "Complete"; + } + enum minimal { + value 2; + description "Minimal"; + } + } + default "complete"; + } + + // Diag Status + typedef gold_moduleDiagStatus { + type enumeration { + enum fail { + value 0; + description "Fail"; + } + enum pass { + value 1; + description "Pass"; + } + enum untested { + value 2; + description "Untested"; + } + } + default "untested"; + } + + // Bootflash resource value + typedef guestshell_BootflashResource { + type uint32; + } + + // CPU resource value + typedef guestshell_CpuResource { + type uint32; + } + + // Operational state of the Guest Shell + typedef guestshell_GuestShellOperState { + type enumeration { + enum unknown { + value 0; + description "No state"; + } + enum initializing { + value 1; + description "Initializing; intermediate state"; + } + enum provisioned { + value 2; + description "Provisioned"; + } + enum configured { + value 3; + description "Configured"; + } + enum installing { + value 4; + description "Installing; intermediate state"; + } + enum installed { + value 5; + description "Installed"; + } + enum install-failed { + value 6; + description "Installation failed"; + } + enum install-verify-failed { + value 7; + description "Verification failed"; + } + enum activating { + value 8; + description "Activating; intermediate state"; + } + enum activated { + value 9; + description "Activated; normal running state"; + } + enum activate-failed { + value 10; + description "Activation failed"; + } + enum deactivated { + value 11; + description "Deactivated; normal disabled state"; + } + enum deactivating { + value 12; + description "Deactivating; intermediate state"; + } + enum restarting { + value 13; + description "Restarting; intermediate state"; + } + enum not-installed { + value 14; + description "Not installed"; + } + enum error { + value 15; + description "Place holder"; + } + enum awaiting-resources { + value 16; + description "Awaiting resources; intermediate state"; + } + } + default "unknown"; + } + + // Memory resource value + typedef guestshell_MemoryResource { + type uint32; + } + + // Type of key used for signing + typedef guestshell_SigningKeyType { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum development { + value 1; + description "Development Key"; + } + enum release { + value 2; + description "Release Key"; + } + enum unsigned { + value 3; + description "Unsigned"; + } + } + default "unknown"; + } + + typedef hmm_Boolean { + type enumeration { + enum no { + value 0; + description "No"; + } + enum yes { + value 1; + description "Yes"; + } + } + default "no"; + } + + // Fabric Forwarding mode + typedef hmm_FwdMode { + type enumeration { + enum standard { + value 0; + description "Standard"; + } + enum anycastGW { + value 1; + description "Anycast Gateway mode"; + } + enum proxyGW { + value 2; + description "Proxy Gateway mode"; + } + } + default "standard"; + } + + // Group Authentication key + typedef hsrp_AuthKey { + type string { + length "0..8"; + } + default "cisco"; + } + + // Authentication MD5 type + typedef hsrp_AuthMd5T { + type enumeration { + enum key-chain { + value 0; + description "Keychain"; + } + enum key-string { + value 1; + description "Key string"; + } + } + } + + // Group authentication type + typedef hsrp_AuthT { + type enumeration { + enum simple { + value 1; + description "plain text"; + } + enum md5 { + value 2; + description "MD5 authentication"; + } + } + default "simple"; + } + + // Use-Bia Scope + typedef hsrp_BiaScopeType { + type enumeration { + enum global { + value 1; + description "scope is interface and its sub-interfaces"; + } + enum local { + value 2; + description "scope is interface"; + } + } + default "global"; + } + + // configuration error qualifiers + typedef hsrp_ConfigErrQual { + type enumeration { + enum none { + value 0; + description "no error"; + } + enum auth-md5-version-mismatch { + value 1; + description "MD5 authentication is applied on group under HSRP version-1 interface"; + } + } + } + + // Address family type + typedef hsrp_GroupAf { + type enumeration { + enum ipv4 { + value 1; + description "IPv4 address family"; + } + enum ipv6 { + value 2; + description "IPv6 address family"; + } + } + default "ipv4"; + } + + // Group Id for HSRP version 1 and 2 + typedef hsrp_GroupId { + type uint16 { + range "0..4095"; + } + default "0"; + } + + // Control bits of HSRP Group + typedef hsrp_GrpControl { + + type string; + } + + // IP obtain mode + typedef hsrp_GrpIpObtainMode { + type enumeration { + enum admin { + value 0; + description "Address is configured"; + } + enum auto { + value 1; + description "Auto configure ipv6 address"; + } + enum learn { + value 2; + description "learn IP from HSRP peer"; + } + } + default "admin"; + } + + // Master Name + typedef hsrp_GrpName { + type string { + length "0..250"; + } + } + + // Group Priority + typedef hsrp_GrpPrio { + type uint16 { + range "0..255"; + } + default "100"; + } + + // Hello Interval in msecs + typedef hsrp_HelloIntvl { + type uint32 { + range "250..254000"; + } + default "3000"; + } + + // Hold Interval in msecs + typedef hsrp_HoldIntvl { + type uint32 { + range "750..255000"; + } + default "10000"; + } + + // Hsrp Version + typedef hsrp_HsrpVersion { + type enumeration { + enum v1 { + value 1; + description "Hsrp version 1"; + } + enum v2 { + value 2; + description "Hsrp version 2"; + } + } + default "v1"; + } + + // Control bits at the Interface + typedef hsrp_IfControl { + + type string; + } + + // Authentication MD5 Encryption type + typedef hsrp_Md5KeyStringType { + type enumeration { + enum unencrypted { + value 0; + description "no encryption"; + } + enum hidden { + value 7; + description "hidden"; + } + } + default "unencrypted"; + } + + // Delay before preempting a lower priority Active + typedef hsrp_PreemptDelay { + type uint16 { + range "0..3600"; + } + default "0"; + } + + // Generic state type enabled/disabled + typedef hsrp_State { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 0; + description "Disabled"; + } + } + } + + typedef icam_Entclass { + type enumeration { + enum noent { + value 0; + description "No Entries class"; + } + enum entacl { + value 1; + description "ACL Entries"; + } + } + default "noent"; + } + + typedef icam_Index { + type uint32; + } + + typedef icam_Interval { + type uint16 { + range "1..24"; + } + default "2"; + } + + typedef icam_NumInterval { + type uint16 { + range "168..1344"; + } + default "168"; + } + + // iCAM class Type + typedef icam_Resclass { + type enumeration { + enum nores { + value 0; + description "No Resources class"; + } + enum resacl { + value 1; + description "ACL Resources"; + } + enum resfib { + value 2; + description "FIB Resources"; + } + } + default "nores"; + } + + // Max value of process id in a 64-bit linux system is (2^22) ! + typedef icam_processId { + type uint32 { + range "1..4194304"; + } + } + + // Max length of a process name is 16 bytes ! + typedef icam_processName { + type string { + length "1..32"; + } + } + + // Max value of sample interval is (2^32-1) ! + typedef icam_sampleIntervalId { + type enumeration { + enum 1min { + value 60; + description "60 seconds sample interval"; + } + enum 5min { + value 300; + description "5 minutes sample interval"; + } + enum 1hr { + value 3600; + description "1 hour sample interval"; + } + } + default "1min"; + } + + // Adjacency Stale Timer + typedef icmpv6_AdjStaleTimer { + type uint16 { + range "30..65535"; + } + default "1380"; + } + + // Event History Size + typedef icmpv6_EventLogSize { + type enumeration { + enum disabled { + value 0; + description "Disable"; + } + enum small { + value 1; + description "Small"; + } + enum medium { + value 2; + description "Medium"; + } + enum large { + value 3; + description "Large"; + } + } + default "small"; + } + + // Event Log Type + typedef icmpv6_EventType { + type enumeration { + enum cli { + value 0; + description "ICMPV6 CLI related event"; + } + enum errors { + value 1; + description "Error log ICMPv6"; + } + enum highAvailability { + value 2; + description "ICMPv6 related High Availability event"; + } + enum icmpv6-internal { + value 3; + description "Internal debug events of ICMPV6"; + } + enum ipv6SyncEvent { + value 4; + description "ICMPV6 debugs for CFS and MCECM related events for l3"; + } + enum mldDebug { + value 5; + description "ICMPV6 MLD debug messages"; + } + enum mldEvent { + value 6; + description "ICMPV6 MLD non-periodic events"; + } + enum nd { + value 7; + description "ICMPV6 ND debug"; + } + enum sync-event { + value 8; + description "ICMPV6 debugs for CFS and MCECM related events"; + } + enum vrf { + value 9; + description "ICMPV6 VRF related events"; + } + } + } + + // Interface controls + typedef icmpv6_IfControl { + + type string; + default "redirect"; + } + + // Operational state + typedef icmpv6_OperSt { + type enumeration { + enum down { + value 0; + description "Down"; + } + enum up { + value 1; + description "Up"; + } + enum failed { + value 2; + description "Failed"; + } + } + default "up"; + } + + // Database type + typedef igmp_DbT { + type enumeration { + enum route { + value 1; + description "IGMP route database"; + } + } + default "route"; + } + + // Event History Buffer Type + typedef igmp_EhType { + type enumeration { + enum igmpInternal { + value 0; + description "Internal events for IGMP"; + } + enum cli { + value 1; + description "CLI events for IGMP"; + } + enum groupDebugs { + value 2; + description "Group-debugs event for IGMP"; + } + enum groupEvents { + value 3; + description "Group-events event for IGMP"; + } + enum ha { + value 4; + description "HA events for IGMP"; + } + enum intfDebugs { + value 5; + description "Interface-debugs event for IGMP"; + } + enum intfEvents { + value 6; + description "Interface-events event for IGMP"; + } + enum mtrace { + value 7; + description "Mtrace events for IGMP"; + } + enum mvr { + value 8; + description "Mvr events for IGMP"; + } + enum policy { + value 9; + description "Policy events for IGMP"; + } + enum vrf { + value 10; + description "VRF events for IGMP"; + } + enum nbm { + value 11; + description "NBM events for IGMP"; + } + } + } + + // Unsolicited Join Interval + typedef igmp_HostProxyUnsolicitTime { + type uint8 { + range "0 | 3..180"; + } + default "0"; + } + + // Interface identifier + typedef igmp_IfId { + type string; + } + + // State limit status + typedef igmp_LimitSt { + type enumeration { + enum below-thresh { + value 0; + description "Below threshold of 80%"; + } + enum above-thresh { + value 1; + description "Above 80% threshold"; + } + enum exhausted { + value 2; + description "No entries available"; + } + } + default "below-thresh"; + } + + typedef igmp_LogType { + type enumeration { + enum log { + value 1; + description "Configure for logging level igmp"; + } + enum logip { + value 2; + description "Configure for logging level ip igmp"; + } + } + default "log"; + } + + typedef igmp_LvlType { + type uint16 { + range "0..7"; + } + default "5"; + } + + // Event History Buffer size in Text + typedef igmp_Size { + type uint32 { + range "0..4 | 5..119999999"; + } + default "0"; + } + + typedef igmp_VlanIdT { + type uint16 { + range "1..3967"; + } + } + + // Database type + typedef igmp_ifdbT { + type enumeration { + enum stats { + value 0; + description "IGMP IF Stats database"; + } + enum prop { + value 1; + description "IGMP Property database"; + } + } + } + + // Administrative state + typedef igmp_mvrAdminSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "disabled"; + } + + // Event History Buffer Type + typedef igmpsnoop_EhType { + type enumeration { + enum igmp-snoop-internal { + value 0; + description "Represents Internal Events For IGMP-Snooping"; + } + enum mfdm { + value 1; + description "MFDM Events for IGMP-Snooping"; + } + enum mfdm-sum { + value 2; + description "MFDM-SUM Events for IGMP-Snooping"; + } + enum rib { + value 3; + description "RIB Events for IGMP-Snooping"; + } + enum vlan { + value 4; + description "VLAN/BD Events for IGMP-Snooping"; + } + enum vlan-events { + value 5; + description "VLAN/BD events for IGMP-Snooping"; + } + enum vpc { + value 6; + description "VPC Events for IGMP-Snooping"; + } + } + } + + // Route Map Name + typedef igmpsnoop_RtMapType { + type string { + length "0..63"; + } + } + + // Event History Buffer size in Text + typedef igmpsnoop_Size { + type uint32 { + range "0..4 | 5..119999999"; + } + default "0"; + } + + typedef im_BreakoutMapT { + type enumeration { + enum no-breakout { + value 0; + description "none"; + } + enum 10g-4x { + value 5; + description "10g-4x"; + } + enum 10g-2x { + value 9; + description "10g-2x"; + } + enum 25g-4x { + value 8; + description "25g-4x"; + } + enum 50g-2x { + value 7; + description "50g-2x"; + } + enum 50g-4x { + value 12; + description "50g-4x"; + } + enum 100g-4x { + value 10; + description "100g-4x"; + } + enum 100g-2x { + value 14; + description "100g-2x"; + } + enum 200g-1x { + value 13; + description "200g-1x"; + } + enum 200g-2x { + value 15; + description "200g-2x"; + } + enum 40g-1x { + value 16; + description "40g-1x"; + } + } + default "no-breakout"; + } + + typedef im_BreakoutProfile { + type enumeration { + enum disabled { + value 0; + } + enum 50g-2x-only { + value 1; + } + } + default "disabled"; + } + + typedef im_Mode100M { + type enumeration { + enum disabled { + value 0; + } + enum enabled { + value 1; + } + } + default "disabled"; + } + + typedef im_ModeHwProfile { + type enumeration { + enum undefined { + value 0; + } + enum 4C { + value 1; + } + enum 2C+4Q { + value 2; + } + enum 18C { + value 3; + } + enum 4C+28Q { + value 4; + } + enum 6C+24Q { + value 5; + } + } + default "undefined"; + } + + // Collect params Set 0 + typedef inbandTelemetry_CollectParams0 { + + type string; + default "switch-id"; + } + + typedef inbandTelemetry_DstIp { + type address_Ip; + default "127.0.0.1"; + } + + // flow age value + typedef inbandTelemetry_FlowAge { + type uint16; + default "30"; + } + + // flow dscp value + typedef inbandTelemetry_FlowDscp { + type uint16; + default "1"; + } + + // flow latency quantization value + typedef inbandTelemetry_FlowLatencyQuant { + type uint16 { + range "0..31"; + } + default "11"; + } + + // IP filter type + typedef inbandTelemetry_FltType { + type enumeration { + enum ipv4 { + value 1; + description "Ipv4 type"; + } + enum ipv6 { + value 2; + description "Ipv6 type"; + } + enum ce { + value 3; + description "CE type"; + } + } + default "ipv4"; + } + + // Forwarding instance target identifier + typedef inbandTelemetry_FwdInstTargetId { + type uint32 { + range "0..16777215"; + } + } + + // Mode + typedef inbandTelemetry_ModeT { + type enumeration { + enum inbandtelemetry { + value 0; + description "INT mode"; + } + enum postcard { + value 1; + description "Postcard mode"; + } + } + default "inbandtelemetry"; + } + + typedef inbandTelemetry_Port { + type uint16; + default "31337"; + } + + // Switch Profile + typedef inbandTelemetry_Profile { + type enumeration { + enum endpoint { + value 0; + description "Endpoint profile mode"; + } + enum transit { + value 1; + description "Transit profile mode"; + } + } + default "endpoint"; + } + + // queue breach quota + typedef inbandTelemetry_QueueBreachQuota { + type uint16; + default "200"; + } + + // queue depth + typedef inbandTelemetry_QueueDepth { + type uint32; + default "300"; + } + + // queue latency + typedef inbandTelemetry_QueueLatency { + type uint32; + default "2048"; + } + + // queue tail drop + typedef inbandTelemetry_QueueTailDrop { + type boolean; + default "true"; + } + + typedef inbandTelemetry_VrfName { + type l3_VrfName; + default "default"; + } + + // Stage + typedef installer_InstEnum { + type enumeration { + enum yes { + value 0; + description "install property yes"; + } + enum no { + value 1; + description "install property no"; + } + } + default "no"; + } + + typedef installer_InstErr { + type enumeration { + enum none { + value 0; + description "none"; + } + enum preupg-err1 { + value 1; + description "Pre-upgrade errors for supervisor"; + } + enum preupg-err2 { + value 2; + description "Pre-upgrade errors for lc"; + } + enum user-abort { + value 3; + description "user-abort"; + } + } + default "none"; + } + + // Stage + typedef installer_InstModType { + type enumeration { + enum nxos-supervisor { + value 0; + description "for NXOS Supervisor type "; + } + enum lc { + value 1; + description "for Linecard type "; + } + enum fex { + value 2; + description "for FEX card type "; + } + enum bios { + value 3; + description "for BIOS type "; + } + enum lcn9k { + value 4; + description "for Fabric Module and System Controller type "; + } + enum unknown { + value -1; + description "for Unknown mod type "; + } + } + } + + // Stage + typedef installer_Stage { + type enumeration { + enum preupg-copy-image { + value 0; + description "Copying images"; + } + enum preupg-initializing { + value 1; + description "Initializing"; + } + enum preupg-verifying_images { + value 3; + description "Verification of images"; + } + enum preupg-verifying_epld_image { + value 4; + description "Verification of EPLD image"; + } + enum preupg-runtime-check { + value 6; + description "Performing runtime checks"; + } + enum preupg-sync-image { + value 7; + description "Syncing images"; + } + enum upgrade-upg-fex { + value 9; + description "Upgrading fex"; + } + enum upgrade-upg-lc { + value 10; + description "Upgrading linecard"; + } + enum preupg-conf-sync { + value 11; + description "Syncing config "; + } + enum preupg-set-boot { + value 12; + description "Setting Bootvar"; + } + enum preupg-force-dnld { + value 13; + description "Bringing up Standby Container."; + } + enum preupg-wait-mod { + value 14; + description "Waiting for module online."; + } + enum preupg-convert-startup { + value 15; + description "Converting startup config."; + } + enum preupg-save-sup-state { + value 16; + description "Saving supervisor runtime state."; + } + enum upgrade-kexec { + value 17; + description "Loading images into memory"; + } + enum upgrade-upg-epld { + value 18; + description "Upgrading EPLP/FPGA"; + } + enum preupg-pre-upg-notif { + value 19; + description "Notifying services about system upgrade."; + } + enum preupg-mod-support-check { + value 20; + description "Module Support Check."; + } + enum preupg-Checks { + value 21; + description "Pre Upgrade Checks."; + } + enum upgrade-upg-bios { + value 22; + description "Upgrading BIOS"; + } + enum upgrade-upg-cmp { + value 23; + description "Upgrading CMP"; + } + enum upgrade-notification { + value 24; + description "Notifying services about installation"; + } + enum preupg-save-mts-state { + value 25; + description "Saving mts state."; + } + enum success { + value 26; + description "SUCCESS"; + } + enum failed { + value 27; + description "Failed"; + } + enum not-started { + value 28; + description "Not Started"; + } + enum upgrade-sup-state-verification { + value 29; + description "Performing supervisor state verification."; + } + enum upgrade-switchover-notif { + value 30; + description "Notifying services about the switchover."; + } + enum upgrade-standby-container-start { + value 31; + description "Starting Standby Container."; + } + enum user-abort { + value 32; + description "Aborted by user."; + } + } + default "not-started"; + } + + typedef installer_UpgStatusType { + type enumeration { + enum pre-upgrade { + value 0; + description "pre-upgrade"; + } + enum in-progress { + value 1; + description "In Progress"; + } + enum success { + value 2; + description "Upgrade Success"; + } + enum failed { + value 3; + description "Upgrade Failed"; + } + enum not-compatible { + value 4; + description "Not Compatible"; + } + enum none { + value 5; + description "None"; + } + } + default "none"; + } + + // Address controls + typedef ip_AddrControl { + + type string; + } + + // Address Operational state qualifier + typedef ip_AddrOperStQual { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum up { + value 1; + description "Up"; + } + enum subnet-overlap { + value 2; + description "Subnet overlap"; + } + enum no-primary { + value 3; + description "No primary address"; + } + enum if-down { + value 4; + description "Interface down"; + } + enum addr-exists { + value 5; + description "Address already exists"; + } + enum invalid-vrf { + value 6; + description "Context invalid"; + } + enum static-rt-nh { + value 7; + description "Configured as static-rt nh"; + } + enum lb-addr { + value 8; + description "Loopback address"; + } + enum invalid-ll-use { + value 9; + description "Invalid use of link local"; + } + enum no-glbl-addr { + value 10; + description "No global address"; + } + enum no-ll-addr { + value 11; + description "No link local address"; + } + enum dad-in-progress { + value 12; + description "DAD in progress"; + } + enum dad-failed { + value 13; + description "DAD failed"; + } + enum invalid-mask-len { + value 14; + description "Invalid maks length"; + } + enum l2-intf-err { + value 15; + description "IP cfg not allowed on L2 intf"; + } + enum super-intf-err { + value 16; + description "IP cfg not allowed on superintf"; + } + enum invalid-ll { + value 17; + description "Invalid link local address"; + } + enum if-init-err { + value 18; + description "IF init error"; + } + enum ifindex-err { + value 19; + description "Failed to get ifindex"; + } + enum invalid-eui64 { + value 20; + description "Invalid EUI64 format"; + } + enum lladdr-create-fail { + value 21; + description "Failed to create Link Local Addr."; + } + enum DAD-tentative { + value 22; + description "DAD failed, state=tentative."; + } + enum DAD-lcl-duplicate { + value 23; + description "DAD failed, state=local duplicate."; + } + enum DAD-duplicate { + value 24; + description "DAD failed, state=duplicate."; + } + enum DAD-preferred { + value 25; + description "DAD failed, state=preferred."; + } + enum DAD-deprecated { + value 26; + description "DAD failed, state=deprecated."; + } + enum DAD-invalid { + value 27; + description "DAD failed, state=invalid."; + } + enum multiple-lladdr { + value 28; + description "multiple lladdr cfg not allowed."; + } + enum invalid-tunnel { + value 29; + description "IPv6 Address Enablement is not supported on this tunnel type"; + } + enum lladdr-invalid-tunnel { + value 30; + description "IPv6 Link Local Address Enablement is not supported on this tunnel type"; + } + enum aggr-mapped-subnet-inconsistent { + value 31; + description "IPv6 aggregate-prefix-length mapped address is inconsistent to existing address in same subnet"; + } + } + default "unspecified"; + } + + // Address type + typedef ip_AddrT { + type enumeration { + enum primary { + value 1; + description "Primary"; + } + enum secondary { + value 2; + description "Secondary"; + } + } + default "primary"; + } + + typedef ip_HardwareEcmpHashPolynomialT { + type enumeration { + enum CRC16 { + value 0; + description "CRC16"; + } + enum CRC32HI { + value 1; + description "CRC32HI"; + } + } + default "CRC16"; + } + + // If mode + typedef ip_IfMode { + + type string; + default "unspecified"; + } + + // load share mode for 'ip load-sharing' cli, there are four modes + // - 1. {address destination port destination} + // cli: ip load-sharing address source-destination gre + // concatenation rotate 1 universal-id 2 + // - 2. {address source-destination} + // cli: ip load-sharing address source-destination gre-outer + // concatenation rotate 1 universal-id 2 + // - 3. {address source-destination gre-key} + // cli: ip load-sharing address destination port destination + // rotate 1 universal-id 2 + // - 4. {address source-destination port source-destination} + // cli: ip load-sharing address source-destination port + // source-destination concatenation + // - 5. {address source-destination gtpu-teid} + // cli: ip load-sharing address source-destination gtpu + // concatenation rotate 1 universal-id 2 + typedef ip_LoadShareFormat { + type enumeration { + enum disabled { + value 1; + description "Disabled"; + } + enum destPort { + value 2; + description "Destnation Port"; + } + enum srcDest { + value 3; + description "Source-Destination"; + } + enum srcDestGre { + value 4; + description "Source-Destination GRE"; + } + enum srcDestPort { + value 5; + description "Source-Destination Port"; + } + enum source { + value 6; + description "Source"; + } + enum srcDestGTPU { + value 7; + description "Source-Destination GTPU-TEID for GPRS"; + } + enum srcDestSymmetric { + value 8; + description "Source-Destination Symmetric"; + } + enum srcDestInnerAll { + value 9; + description "Source-Destination Inner All"; + } + enum srcDestInnerGre { + value 10; + description "Source-Destination Inner GRE"; + } + enum srcDestInnerGreSymmetric { + value 11; + description "Source-Destination Inner GRE Symmetric"; + } + enum srcDestIPv6FlowLabel { + value 12; + description "Source-Destination IPv6 Flow Label"; + } + enum srcDestTTL { + value 13; + description "Source-Destination TTL"; + } + enum srcDestUDF { + value 14; + description "Source-Destination UDF"; + } + enum srcDestInnerAllInfra { + value 15; + description "Source-Destination Inner All Infra-Mode"; + } + } + default "disabled"; + } + + // Nexthop Flags + typedef ip_NhFlags { + + type string; + default "unspecified"; + } + + // Operational state + typedef ip_OperSt { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum down { + value 1; + description "Down"; + } + enum up { + value 2; + description "Up"; + } + enum failed { + value 3; + description "Failed"; + } + } + default "up"; + } + + // Preference + typedef ip_Preference { + type uint8 { + range "0..255"; + } + default "0"; + } + + // Rt control + typedef ip_RtControl { + + type string; + } + + // Router ID + typedef ip_RtrId { + type address_Ipv4; + } + + // SwitchPacket Target form for "ipv6 switch-packets [lla]'. + // - 1. {switchPacket:- Switch ND packets received on core ports} + // cli: ipv6 switch-packets + // - 2. {lla:- Switch ND packets targeted to Link local address on core ports} + // cli: ipv6 switch-packets lla + typedef ip_SwitchPktTarget { + type enumeration { + enum disabled { + value 0; + description "Disabled"; + } + enum all { + value 1; + description "Switch Packets all"; + } + enum lla { + value 2; + description "Switch Packets with lla"; + } + } + default "disabled"; + } + + // Unnumbered Operational state qualifier + typedef ip_UnnumberedOperStQual { + type enumeration { + enum unspecified { + value 0; + description "unspecified"; + } + enum parent-unnumbered { + value 1; + description "Parent is unnumbered"; + } + enum child-numbered { + value 2; + description "child is a numbered interface"; + } + enum invalid-source { + value 3; + description "Invalid interface as source"; + } + enum invalid-interface { + value 4; + description "Unnumbered not allowed on this interface"; + } + enum intf-self-referential { + value 5; + description "Unnumbered interface must not be self referantial"; + } + } + default "unspecified"; + } + + // URPF info type, depending upon different form of command + // [no] ip/ipv6 verify unicast source reachable-via { rx [allow vni-hosts] | any [allow-default]} + // 0 -> command disabled (no form) + // 1 -> strict URPF ( rx form) + // 2 -> loose URPF ( any form without allow-default) + // 3 -> loose-allow-default URPF (any form with allow-default) + // 4 -> strict-allow-vni-hosts URPF (rx form with allow vni-hosts) + typedef ip_UrpfT { + type enumeration { + enum disabled { + value 0; + description "Disabled"; + } + enum strict { + value 1; + description "URPF strict (rx)"; + } + enum loose { + value 2; + description "URPF loose (any)"; + } + enum loose-allow-default { + value 3; + description "URPF loose allow default (any allow-default)"; + } + enum strict-allow-vni-hosts { + value 4; + description "URPF strict allow vni hosts (rx allow vni-hosts)"; + } + } + default "disabled"; + } + + typedef ipfib_AddressType { + type enumeration { + enum IPV4 { + value 0; + description "IPv4 address"; + } + enum IPV6 { + value 1; + description "IPv6 address"; + } + enum LABEL { + value 2; + description "MPLS Label"; + } + } + default "IPV4"; + } + + typedef ipfib_FecType { + type enumeration { + enum DEFAULT { + value 0; + description "None"; + } + enum IPV4 { + value 1; + description "IPv4 FEC Type"; + } + enum IPV6 { + value 2; + description "IPv6 FEC Type"; + } + enum IPV4_TE_LSP { + value 3; + description "IPv4 TE LSP FEC Type"; + } + enum IPV6_TE_LSP { + value 4; + description "IPv6 TE LSP FEC Type"; + } + enum TE_IF { + value 5; + description "TE_IF FEC Type"; + } + enum DEAGG { + value 6; + description "Deagregation Label FEC Type"; + } + enum PER_CE { + value 7; + description "PER CE FEC Type"; + } + enum FEC_NONE { + value 8; + description "Nil FEC Type"; + } + enum POLICY_V4_PFX { + value 9; + description "Policy V4 FEC Type"; + } + enum POLICY_V6_PFX { + value 10; + description "Policy v6 FEC Type"; + } + enum ADJ_SID { + value 11; + description "Adjacency SID FEC Type"; + } + enum SRTE { + value 12; + description "SRTE FEC Type"; + } + } + default "DEFAULT"; + } + + typedef ipfib_OutOperEnum { + type enumeration { + enum DEFAULT { + value 0; + description "None"; + } + enum PUSH { + value 1; + description "Push Operation with the given stack of labels"; + } + enum SWAP { + value 2; + description "SWAP Operation with the given stack of labels"; + } + enum POP { + value 3; + description "Pop Labels and do regular forwarding"; + } + } + default "DEFAULT"; + } + + typedef ipfib_SpecialAdj { + type enumeration { + enum DEFAULT { + value 0; + description "None"; + } + enum ATTACHED { + value 1; + description "Direct Route"; + } + enum RECEIVE { + value 2; + description "Local Route"; + } + enum DROP { + value 3; + description "Drop Route"; + } + } + default "DEFAULT"; + } + + typedef ipmc_Allowv3AsmType { + type boolean; + default "true"; + } + + // Bootup Delay + typedef ipmc_BootupDelay { + type uint16 { + range "0..65535"; + } + default "0"; + } + + // Group Timeout + typedef ipmc_GrpTimeout { + type uint16 { + range "3..65535"; + } + default "260"; + } + + // Interface level Controls + typedef ipmc_IfCtrl { + + type string; + } + + // If flags + typedef ipmc_IfFlags { + + type string; + } + + // Inst level Controls + typedef ipmc_InstCtrl { + + type string; + } + + // Join Type + typedef ipmc_JoinType { + type enumeration { + enum 0 { + value 0; + description "Static Group"; + } + enum 1 { + value 1; + description "Join Group"; + } + } + } + + // Syslog Threshold + typedef ipmc_SyslogThresT { + type uint16 { + range "1..100"; + } + default "90"; + } + + // Version + typedef ipmc_Ver { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum 2 { + value 2; + description "IGMP v2"; + } + enum 3 { + value 3; + description "IGMP v3"; + } + } + } + + // Database type + typedef ipmcsnoop_DbT { + type enumeration { + enum group { + value 1; + description "Multicast Local Group Database"; + } + enum fabric-mcgrp { + value 2; + description "Multicast Fabric Group Database"; + } + enum querier { + value 3; + description "Querier database"; + } + enum mrouter { + value 4; + description "Mrouter database"; + } + enum snoopstats { + value 5; + description "Igmp snooping statistics database"; + } + enum policy { + value 6; + description "report policy stats database"; + } + enum snoop { + value 7; + description "Igmp snooping params"; + } + enum exptrack { + value 8; + description "explicit tracking"; + } + enum stats { + value 9; + description "snoop statistics"; + } + enum mac { + value 10; + description "MAC address table"; + } + enum macoif { + value 11; + description "MAC OIF "; + } + } + default "group"; + } + + // Disable Nve Router port + typedef ipmcsnoop_DisableNveStRtrPort { + type boolean; + default "false"; + } + + // Domain level controls + typedef ipmcsnoop_DomControl { + + type string; + default "opt-flood"; + } + + // Domain flags + typedef ipmcsnoop_DomFlags { + + type string; + } + + // Explicit Tracking + typedef ipmcsnoop_ExpTracking { + type boolean; + default "true"; + } + + // Type defined for fast-leave enable/disable + typedef ipmcsnoop_FastLeave { + type boolean; + } + + // IPMC snooping forwarding mode + typedef ipmcsnoop_FwdMode { + type enumeration { + enum ip { + value 1; + description "IP based forwarding"; + } + enum mac { + value 2; + description "Mac based forwarding"; + } + } + default "ip"; + } + + // Igmp snooping enable/disable + typedef ipmcsnoop_IgmpSnoop { + type boolean; + default "true"; + } + + // Number of multicast groups + typedef ipmcsnoop_InstFlags { + + type string; + } + + // Life Cycle Control specifies how the router-if + // is controlled + typedef ipmcsnoop_LcC { + + type string; + } + + typedef ipmcsnoop_LkpModeT { + type string { + length "0..50"; + } + } + + typedef ipmcsnoop_LlGrpSuppr { + type boolean; + default "true"; + } + + // MAC type + typedef ipmcsnoop_MacType { + type enumeration { + enum * { + value 0; + description "Primary Entry"; + } + enum G { + value 1; + description "Gateway MAC"; + } + enum R { + value 2; + description "Routed MAC"; + } + enum O { + value 3; + description "Overlay MAC"; + } + enum IGMP { + value 4; + description "IGMP MAC"; + } + } + } + + // Max number of GQ misses allowed + typedef ipmcsnoop_MaxGqMiss { + type uint16 { + range "3..5"; + } + default "3"; + } + + // Multicast traffic source address + typedef ipmcsnoop_McastSrc { + type address_Ip; + } + + // minimum version Valid range is 2-3, adding 0 for negation + typedef ipmcsnoop_MinVer { + type uint16 { + range "0..3"; + } + description "Minimum-version with valid range of 0,2-3"; + } + + // NEW IGMPSNOOP types + typedef ipmcsnoop_MrouteType { + type enumeration { + enum static { + value 0; + description "Statically Configured"; + } + enum dynamic { + value 1; + description "Dynamically Learned"; + } + enum internal { + value 2; + description "Internally Configured"; + } + enum fabpath { + value 3; + description "Fabricpath Core "; + } + enum vpc { + value 4; + description "Vpc Peer link "; + } + enum coLearned { + value 5; + description "Co-Learned "; + } + enum peerLearned { + value 6; + description "Peer-Learned "; + } + enum userConf { + value 7; + description "User-Configured "; + } + } + } + + typedef ipmcsnoop_Mrt { + type uint16 { + range "0..25"; + } + default "5"; + } + + // Policy name + typedef ipmcsnoop_PolicyNameT { + type string { + length "0..255"; + } + } + + // Querier flags + typedef ipmcsnoop_QuerierFlags { + + type string; + } + + // Report flags + typedef ipmcsnoop_RepFlags { + + type string; + } + + // Report Suppression for v1/v2 + typedef ipmcsnoop_ReportSuppr { + type boolean; + default "true"; + } + + // Reporter address + typedef ipmcsnoop_Reporter { + type address_Ip; + } + + // Router Guard vlan interface type + typedef ipmcsnoop_RtrGrdVlanIdT { + type uint32 { + range "1..4095"; + } + default "4095"; + } + + // syslog threshold + typedef ipmcsnoop_SyslogThrshold { + type uint16 { + range "1..100"; + } + default "90"; + } + + // v3 report suppression + typedef ipmcsnoop_V3ReportSuppr { + type boolean; + default "false"; + } + + typedef ipmcsnoop_VersionT { + type string { + length "0..51"; + } + } + + // Vlan id type + typedef ipmcsnoop_Vlanid { + type uint32 { + range "1..4094"; + } + default "1"; + } + + // Type defined for vpc-peer-link enable/disable + typedef ipmcsnoop_Vpc { + type boolean; + default "true"; + } + + // Enable/Disable Vxlan + typedef ipmcsnoop_Vxlan { + type boolean; + default "false"; + } + + // vxlan-umc vlan valid range - 1-3967, + // 1-4094 if drop on all Vlans + typedef ipmcsnoop_VxlanVlanRange { + type l2_VlanBitmap; + } + + typedef ipqos_BuffSize { + type uint64 { + range "5000..12582913"; + } + default "12582913"; + } + + typedef ipqos_BurstRate { + type uint64 { + range "0..536870912"; + } + } + + typedef ipqos_BurstRateUnit { + type enumeration { + enum unspecified { + value 0; + description "invalid"; + } + enum bytes { + value 1; + description "bytes"; + } + enum kbytes { + value 2; + description "kilobytes"; + } + enum mbytes { + value 3; + description "megabytes"; + } + enum ms { + value 4; + description "milli-seconds"; + } + enum us { + value 5; + description "micro-seconds"; + } + enum packets { + value 6; + description "packets"; + } + } + default "unspecified"; + } + + typedef ipqos_BurstState { + type enumeration { + enum enabled { + value 1; + description "enabled"; + } + enum disabled { + value 0; + description "disabled"; + } + } + default "disabled"; + } + + typedef ipqos_CMapName { + type string { + length "1..40"; + } + } + + // Cos unit + typedef ipqos_Cos { + type uint8 { + range "0..7"; + } + } + + typedef ipqos_CosNewNone { + type enumeration { + enum 0 { + value 0; + description "0"; + } + enum 1 { + value 1; + description "1"; + } + enum 2 { + value 2; + description "2"; + } + enum 3 { + value 3; + description "3"; + } + enum 4 { + value 4; + description "4"; + } + enum 5 { + value 5; + description "5"; + } + enum 6 { + value 6; + description "6"; + } + enum 7 { + value 7; + description "7"; + } + enum None { + value 8; + description "None"; + } + } + default "None"; + } + + typedef ipqos_DescStr { + type string { + length "0..200"; + } + } + + typedef ipqos_DropAvailRange { + type uint8 { + range "0..100"; + } + } + + // Dscp unit + typedef ipqos_Dscp { + type uint8 { + range "0..63"; + } + } + + typedef ipqos_LoggingLevel { + type enumeration { + enum Emergencies { + value 0; + description "Emergencies"; + } + enum Alerts { + value 1; + description "Alerts"; + } + enum Critical { + value 2; + description "Critical"; + } + enum Errors { + value 3; + description "Errors"; + } + enum Warnings { + value 4; + description "Warnings"; + } + enum Notification { + value 5; + description "Notification"; + } + enum Information { + value 6; + description "Information"; + } + enum Debugging { + value 7; + description "Debugging"; + } + } + default "Warnings"; + } + + typedef ipqos_MPLSExperimental { + type uint8 { + range "0..7"; + } + } + + typedef ipqos_MTU { + type uint16 { + range "576..9216"; + } + default "1500"; + } + + typedef ipqos_MatchCMapName { + type string { + length "0..40"; + } + } + + typedef ipqos_MplsExperimentalValue { + type enumeration { + enum 0 { + value 0; + description "0"; + } + enum 1 { + value 1; + description "1"; + } + enum 2 { + value 2; + description "2"; + } + enum 3 { + value 3; + description "3"; + } + enum 4 { + value 4; + description "4"; + } + enum 5 { + value 5; + description "5"; + } + enum 6 { + value 6; + description "6"; + } + enum 7 { + value 7; + description "7"; + } + enum None { + value 8; + description "None"; + } + } + default "None"; + } + + typedef ipqos_OverrideIntfMode { + type enumeration { + enum disabled { + value 0; + } + enum off { + value 1; + } + } + default "disabled"; + } + + typedef ipqos_PMapName { + type string { + length "1..40"; + } + } + + typedef ipqos_Percent { + type uint8 { + range "0..100"; + } + } + + typedef ipqos_PoliceAction { + type enumeration { + enum unspecified { + value 0; + description "unspecified"; + } + enum transmit { + value 1; + description "transmit"; + } + enum drop { + value 2; + description "drop"; + } + enum set-cos-transmit { + value 3; + description "set-cos-transmit"; + } + enum set-dscp-transmit { + value 4; + description "set-dscp-transmit"; + } + enum set-prec-transmit { + value 5; + description "set-prec-transmit"; + } + enum set-qos-transmit { + value 6; + description "set-qos-transmit"; + } + } + } + + typedef ipqos_PoliceRate { + type uint64 { + range "0..100000000000"; + } + } + + typedef ipqos_PolicerName { + type string { + length "0..40"; + } + } + + typedef ipqos_Prec { + type enumeration { + enum routine { + value 0; + description "routine"; + } + enum priority { + value 1; + description "priority"; + } + enum immediate { + value 2; + description "immediate"; + } + enum flash { + value 3; + description "flash"; + } + enum flash-override { + value 4; + description "flash-override"; + } + enum critical { + value 5; + description "critical"; + } + enum internet { + value 6; + description "internet"; + } + enum network { + value 7; + description "network"; + } + } + } + + typedef ipqos_PriorFlowCtrlMode { + type enumeration { + enum auto { + value 0; + } + enum on { + value 1; + } + enum off { + value 2; + } + } + default "auto"; + } + + typedef ipqos_PriorFlowCtrlWdIntfMulti { + type uint8 { + range "1..10"; + } + } + + typedef ipqos_PriorFlowCtrlWdIntvl { + type enumeration { + enum on { + value 1; + } + enum off { + value 2; + } + } + default "off"; + } + + // Priority Group value + typedef ipqos_PriorityGrpVal { + type enumeration { + enum 0 { + value 0; + description "0"; + } + enum 1 { + value 1; + description "1"; + } + enum 2 { + value 2; + description "2"; + } + enum 3 { + value 3; + description "3"; + } + enum 4 { + value 4; + description "4"; + } + enum 5 { + value 5; + description "5"; + } + enum None { + value 8; + description "None"; + } + } + default "None"; + } + + typedef ipqos_PriorityLevel { + type uint8 { + range "1..8"; + } + } + + typedef ipqos_Protocol { + type enumeration { + enum unspecified { + value 0; + description "unspecified"; + } + enum arp { + value 1; + description "IP ARP"; + } + enum bridging { + value 2; + description "Bridging"; + } + enum cdp { + value 3; + description "Cisco Discovery Protocol"; + } + enum dhcp { + value 7; + description "Dynamic Host Configuration"; + } + enum isis { + value 8; + description "Intermediate System Intermediate System Protocol"; + } + enum fcoe { + value 14; + description "Fcoe"; + } + } + } + + typedef ipqos_QoSGrpId { + type uint16 { + range "0..7"; + } + } + + // match all, any or first + typedef ipqos_QoSMatchType { + type enumeration { + enum match-any { + value 0; + } + enum match-all { + value 1; + } + enum match-first { + value 2; + } + } + default "match-all"; + } + + // afd queue-desired + typedef ipqos_QueueDesired { + type uint64 { + range "1..52428800"; + } + } + + typedef ipqos_QueueDesiredUnit { + type enumeration { + enum none { + value 0; + description "none"; + } + enum bytes { + value 1; + description "bytes"; + } + enum kbytes { + value 2; + description "kbytes"; + } + enum mbytes { + value 3; + description "mbytes"; + } + } + default "none"; + } + + // queue-limit + typedef ipqos_QueueLimit { + type uint64 { + range "0..12582913"; + } + default "12582913"; + } + + typedef ipqos_QueueLimitDynamic { + type uint8 { + range "0..255"; + } + default "255"; + } + + typedef ipqos_QueueLimitUnit { + type enumeration { + enum none { + value 0; + description "none"; + } + enum packets { + value 1; + description "packets"; + } + enum bytes { + value 2; + description "bytes"; + } + enum kbytes { + value 3; + description "kbytes"; + } + enum mbytes { + value 4; + description "mbytes"; + } + enum gbytes { + value 5; + description "gbytes"; + } + enum ms { + value 6; + description "ms"; + } + enum us { + value 7; + description "us"; + } + enum perc { + value 8; + description "perc"; + } + } + default "none"; + } + + typedef ipqos_RandOptType { + type uint8; + default "0"; + } + + typedef ipqos_RateUnit { + type enumeration { + enum unspecified { + value 0; + description "unspecified"; + } + enum bps { + value 1; + description "bps"; + } + enum kbps { + value 2; + description "kbps"; + } + enum mbps { + value 3; + description "mbps"; + } + enum gbps { + value 4; + description "gbps"; + } + enum pps { + value 5; + description "pps"; + } + enum pct { + value 6; + description "percentage"; + } + } + default "unspecified"; + } + + typedef ipqos_ShapeRate { + type uint64 { + range "0..400000000000"; + } + } + + typedef ipqos_StatsType { + type enumeration { + enum none { + value 0; + description "none"; + } + enum matchCMap { + value 1; + description "Statistic for Match counters under class-map"; + } + enum setAction { + value 3; + description "Statistic for Set Action counters"; + } + enum police { + value 4; + description "Statistic for Policing counters"; + } + enum bw { + value 5; + description "Statistic for Bandwidth counters"; + } + enum prio { + value 6; + description "Statistic for Priority counters"; + } + enum shape { + value 7; + description "Statistic for Shape counters"; + } + enum qlimit { + value 8; + description "Statistic for Queue Limit counters"; + } + enum randomDetect { + value 9; + description "Statistic for Random Detect counters"; + } + enum queuing { + value 10; + description "Statistic for Queuing counters"; + } + enum microburst { + value 13; + description "Statistic for Microburst counters"; + } + } + } + + typedef ipqos_ThresUnit { + type enumeration { + enum none { + value 0; + description "none"; + } + enum bytes { + value 1; + description "bytes"; + } + } + default "none"; + } + + typedef ipqos_ThreshUnit { + type enumeration { + enum none { + value 0; + description "none"; + } + enum packets { + value 1; + description "packets"; + } + enum bytes { + value 2; + description "bytes"; + } + enum kbytes { + value 3; + description "kbytes"; + } + enum mbytes { + value 4; + description "mbytes"; + } + } + default "none"; + } + + typedef ipqos_ThreshVal { + type uint32 { + range "0..52428800"; + } + default "0"; + } + + typedef ipqos_Threshold { + type uint32 { + range "0..13319072"; + } + default "0"; + } + + typedef ipqos_Weight { + type uint8 { + range "0..15"; + } + } + + typedef ipqos_XoffBytes { + type uint64 { + range "0..12582912"; + } + } + + typedef ipqos_XonBytes { + type uint64 { + range "0..12582912"; + } + } + + typedef ipqos_ecnThresh { + type uint32 { + range "1..500000"; + } + } + + // 253/512/64 + typedef ipqos_ethernetList { + type string { + pattern ".*((,)?(((2[0-5][0-3])|(1[0-9]{2})|([1-9][0-9])|[1-9])/((5[0-1][0-2])|([1-4][0-9]{2})|([1-9][0-9]?))(/((6[0-4])|[6-9]|([1-5][0-9]?)))?)(-((5[0-1][0-2])|([1-4][0-9]{2})|([1-9][0-9]?)))?)+.*|.*0.*"; + } + default "0"; + } + + typedef ipqos_policyDirection { + type enumeration { + enum none { + value 0; + description "none"; + } + enum ingress { + value 1; + description "ingress"; + } + enum egress { + value 2; + description "egress"; + } + enum both { + value 3; + description "both"; + } + } + } + + typedef ipqos_policyType { + type enumeration { + enum none { + value 0; + description "none"; + } + enum qos { + value 1; + description "qos"; + } + enum queuing { + value 2; + description "queuing"; + } + } + } + + // <1-4096> List of port-channle ids + typedef ipqos_portChanList { + type string { + pattern ".*((,)?((409[0-6])|(40[0-8][0-9])|([1-3][0-9]{1,3})|([0-9][0-9]{0,2}))(-(409[0-6])|(40[0-8][0-9])|([1-3][0-9]{1,3})|([1-9][0-9]{0,2}))?)+.*|0"; + } + default "0"; + } + + typedef ipqos_statsState { + type enumeration { + enum enabled { + value 0; + description "enabled"; + } + enum disabled { + value 1; + description "disabled"; + } + } + default "enabled"; + } + + // <1-4094> List of vlan ids + typedef ipqos_vlanList { + type string { + pattern ".*(,?((409[0-4])|(40[0-8][0-9])|([1-3][0-9]{1,3})|([1-9][0-9]{0,2}))(-(409[0-4])|(40[0-8][0-9])|([1-3][0-9]{1,3})|([1-9][0-9]{0,2}))?)+.*|0"; + } + default "0"; + } + + // DSCP + typedef ipt_Dscp { + type uint8 { + range "0..63"; + } + } + + typedef ipt_Name { + type string { + length "0..63"; + } + } + + // Actual Range is from 10 to 16777215 + // To be controlled in the BI logic + typedef ipt_SamplingRate { + type uint32 { + range "0..16777215"; + } + } + + // TTL + typedef ipt_Ttl { + type uint8 { + range "0..255"; + } + } + + typedef ipv4_ClientFlagType { + type uint8; + } + + typedef ipv4_ClientMtsSapType { + type int16; + } + + // Types of PPS threshold supported + typedef ipv4_IpPpsTypes { + type enumeration { + enum unicastForward { + value 0; + description "packet type is unicast forwarded"; + } + } + default "unicastForward"; + } + + // ICMP Code + typedef ipv4acl_ICMPCode { + type uint16 { + range "0..256"; + } + default "256"; + } + + // ICMP Enum + typedef ipv4acl_ICMPEnum { + type uint16; + default "256"; + } + + // ICMP Type + typedef ipv4acl_ICMPType { + type uint16 { + range "0..256"; + } + default "256"; + } + + // IGMP Type + typedef ipv4acl_IGMPType { + type uint8 { + range "0..16"; + } + default "16"; + } + + // IPv4 prefix + typedef ipv4acl_IPv4Prefix { + type address_Ipv4; + } + + // IPv4 prefix length + typedef ipv4acl_IPv4PrefixLen { + type uint8 { + range "0..32"; + } + default "0"; + } + + // Prefix wildcard mask + typedef ipv4acl_IPv4PrefixMask { + type address_Ipv4; + } + + // IP precedence + typedef ipv4acl_Precedence { + type uint8 { + range "0..8"; + } + default "8"; + } + + // ACE protocol + typedef ipv4acl_Protocol { + type uint8; + default "255"; + } + + // Tos + typedef ipv4acl_Tos { + type uint8 { + range "0..15"; + } + default "0"; + } + + // Config Error + typedef ipv6_ConfigErr { + type enumeration { + enum noerror { + value 0; + description "Unknown"; + } + enum nghbrAddress { + value 1; + description "Config failed for IPv6 neighbor address"; + } + enum useLinkLocalOnly { + value 2; + description "Config failed for IPv6 use link local only"; + } + enum forward { + value 3; + description "Config failed for IPv6 forward"; + } + } + } + + // Event History Size + typedef ipv6_IPv6EventLogSize { + type enumeration { + enum disabled { + value 0; + description "Disable"; + } + enum small { + value 1; + description "Small"; + } + enum medium { + value 2; + description "Medium"; + } + enum large { + value 3; + description "Large"; + } + } + default "small"; + } + + // Event Log Type + typedef ipv6_IPv6EventType { + type enumeration { + enum ipv6Event { + value 0; + description "IPv6 Error Log"; + } + enum bfdEvent { + value 1; + description "Bfd Debug Message for IPv6"; + } + enum syslog { + value 2; + description "Syslog Message for IPv6"; + } + enum ipc { + value 3; + description "Ipc Debug Message"; + } + enum snmp { + value 4; + description "SNMP Events"; + } + enum highAvailability { + value 5; + description "High Availability Event"; + } + enum sdb { + value 6; + description "Sdb Message of IPv6"; + } + } + } + + // Ipv6 Extension header type + typedef ipv6acl_ExtnHdr { + type enumeration { + enum disabled { + value 0; + description "Disable ipv6 extension header handling"; + } + enum deny-all { + value 1; + description "Drop all ipv6 packets with extention header"; + } + enum permit-all { + value 2; + description "Allow all ipv6 packets with extention header"; + } + } + } + + // Flow Label + typedef ipv6acl_FlowLabel { + type uint32 { + range "0..1048576"; + } + } + + // ICMPv6 Code + typedef ipv6acl_ICMPCode { + type uint16 { + range "0..256"; + } + default "256"; + } + + // ICMPv6 Enum + typedef ipv6acl_ICMPEnum { + type uint16; + default "256"; + } + + // ICMPv6 Type + typedef ipv6acl_ICMPType { + type uint16 { + range "0..256"; + } + default "256"; + } + + // IPv6 prefix + typedef ipv6acl_IPv6Prefix { + type address_Ipv6; + } + + // IPv6 prefix length + typedef ipv6acl_IPv6PrefixLen { + type uint8 { + range "0..128"; + } + default "0"; + } + + // IPv6 prefix mask + typedef ipv6acl_IPv6PrefixMask { + type address_Ipv6; + } + + // ACE protocol + typedef ipv6acl_Protocol { + type uint8; + default "255"; + } + + // Adj operational state + typedef isis_AdjOperSt { + type enumeration { + enum up { + value 0; + description "Up"; + } + enum init { + value 1; + description "Initializing"; + } + enum down { + value 2; + description "Down"; + } + enum 3waystate { + value 3; + description "Down"; + } + enum lost { + value 4; + description "Lost"; + } + enum delete { + value 5; + description "Delete"; + } + enum maxState { + value 6; + description "Max State"; + } + } + } + + // Administrative state + typedef isis_AdminSt { + type enumeration { + enum enabled { + value 1; + description "Enabling table map for Selective route"; + } + enum disabled { + value 2; + description "Disabling table map for Selective route"; + } + } + default "disabled"; + } + + // Advertise interface Level type + typedef isis_AdvtLvl { + type enumeration { + enum l0 { + value 0; + description "Level-0"; + } + enum l1 { + value 1; + description "Level-1"; + } + enum l2 { + value 2; + description "Level-2"; + } + } + default "l0"; + } + + // Address family type + typedef isis_AfT { + type enumeration { + enum v4 { + value 1; + description "IPv4 address family"; + } + enum v6 { + value 2; + description "IPv6 address family"; + } + } + default "v4"; + } + + // Authentication key-chain name + typedef isis_AuthKeyN { + type string; + } + + // Authentication type + typedef isis_AuthT { + type enumeration { + enum clear { + value 1; + description "Clear"; + } + enum md5 { + value 2; + description "MD5"; + } + enum unknown { + value 3; + description "Unknown"; + } + } + default "unknown"; + } + + // BFD type + typedef isis_BfdT { + type enumeration { + enum inheritVrf { + value 1; + description "Inherit BFD from VRF"; + } + enum enabled { + value 2; + description "Enable BFD"; + } + enum disabled { + value 3; + description "Disable BFD"; + } + } + default "inheritVrf"; + } + + // Bandwidth reference + typedef isis_BwRef { + type uint32; + default "40000"; + } + + // Bandwidth reference unit + typedef isis_BwRefUnit { + type enumeration { + enum mbps { + value 0; + description "Mbps"; + } + enum gbps { + value 1; + description "Gbps"; + } + } + default "mbps"; + } + + // CktPrio + typedef isis_CktPrio { + type uint8 { + range "0..127"; + } + default "64"; + } + + // Csnp interval + typedef isis_CsnpIntvl { + type uint16 { + range "1..65535"; + } + default "10"; + } + + // Database type + typedef isis_DbT { + type enumeration { + enum ls { + value 1; + description "Link State Dtabase"; + } + enum rt { + value 2; + description "Route Database"; + } + enum nh { + value 3; + description "Nexthop Database"; + } + enum mcgrp { + value 4; + description "Multicast Group Database"; + } + enum fn { + value 5; + description "Fabric Node Database"; + } + enum dtep { + value 6; + description "Dynamic Tunnel Endpoint Database"; + } + } + default "ls"; + } + + // Default Information Originate state + typedef isis_DefInfOrigSt { + + type string; + default "off"; + } + + // Distance + typedef isis_Dist { + type uint8 { + range "1..255"; + } + default "115"; + } + + // Distribute link-state Level type + typedef isis_DistrLvl { + type enumeration { + enum l0 { + value 0; + description "Level-0"; + } + enum l1 { + value 1; + description "Level-1"; + } + enum l2 { + value 2; + description "Level-2"; + } + } + default "l0"; + } + + // Per address family controls + typedef isis_DomAfControl { + + type string; + default "adj-check,set-attached-bit"; + } + + // Dom controls + typedef isis_DomControl { + + type string; + default "unspecified"; + } + + // Per level controls + typedef isis_DomLvlControl { + + type string; + } + + // Dom name + typedef isis_DomName { + type l3_VrfName; + } + + // ECMP max paths + typedef isis_Ecmp { + type uint8 { + range "1..64"; + } + default "8"; + } + + // Event History Buffer size in Text/kb + typedef isis_EhSize { + type uint32 { + range "0..4294967295"; + } + } + + // Event History Buffer Type + typedef isis_EhType { + type enumeration { + enum spfLeaf { + value 0; + description "spf-leaf events for ISIS"; + } + enum spfTree { + value 1; + description "spf-tree events for ISIS"; + } + enum psnp { + value 2; + description "PSNP events for ISIS"; + } + enum csnp { + value 3; + description "CSNP events for ISIS"; + } + enum lspGen { + value 4; + description "lsp-gen events for ISIS"; + } + enum lspFlood { + value 5; + description "lsp-flood events for ISIS"; + } + enum iih { + value 6; + description "IIH events for ISIS"; + } + enum adj { + value 7; + description "Adjacency events for ISIS"; + } + enum dis { + value 8; + description "DIS events for ISIS"; + } + enum events { + value 9; + description "Events events for ISIS"; + } + enum cli { + value 10; + description "CLI events for ISIS"; + } + enum ha { + value 11; + description "HA events for ISIS"; + } + enum gr { + value 12; + description "Graceful Restart events for ISIS"; + } + enum urib { + value 13; + description "URIB events for ISIS"; + } + enum redist { + value 14; + description "Redist events for ISIS"; + } + enum tlv { + value 15; + description "TLV events for ISIS"; + } + enum mtr { + value 16; + description "MTR events for ISIS"; + } + enum perf { + value 17; + description "Performance events for ISIS"; + } + enum df { + value 18; + description "Dynamic Flooding events for ISIS"; + } + enum sr { + value 19; + description "Segment-routing events for ISIS"; + } + enum ulib { + value 20; + description "ULIB events for ISIS"; + } + } + } + + // Fragment number + typedef isis_FragNum { + type uint8; + } + + // Graceful restart T3 interval + typedef isis_GrT3Intvl { + type uint16 { + range "30..65535"; + } + default "60"; + } + + // Hello interval + typedef isis_HelloIntvl { + type uint16 { + range "1..65535"; + } + default "10"; + } + + // Hello multiplier + typedef isis_HelloMult { + type uint16 { + range "3..1000"; + } + default "3"; + } + + // Interface Hello-Padding type + typedef isis_HelloPadT { + type enumeration { + enum always { + value 1; + description "Enabling Hello-Padding always on interface"; + } + enum transient { + value 2; + description "Disabling Hello-Padding to Transient mode on Interface"; + } + enum never { + value 3; + description "Disabling Hello-Padding on Interface"; + } + } + default "always"; + } + + // Interface controls + typedef isis_IfControl { + + type string; + } + + // Distribute Link-state Instance-id + typedef isis_InstId { + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + // Instance name + typedef isis_InstanceName { + type string; + } + + // IS type + typedef isis_IsT { + type enumeration { + enum l1 { + value 1; + description "L1 IS type"; + } + enum l2 { + value 2; + description "L2 IS type"; + } + enum l12 { + value 3; + description "L1-2 IS type"; + } + } + default "l12"; + } + + // Lan id + typedef isis_LanId { + type uint8; + } + + // Logging Level + typedef isis_LogL { + type uint32 { + range "0..7"; + } + } + + // Lsp generation initial wait interval + typedef isis_LspGenInitIntvl { + type uint32 { + range "50..120000"; + } + default "50"; + } + + // Lsp generation maximum wait interval + typedef isis_LspGenMaxIntvl { + type uint32 { + range "50..120000"; + } + default "8000"; + } + + // Lsp generation second wait interval + typedef isis_LspGenSecIntvl { + type uint32 { + range "50..120000"; + } + default "50"; + } + + // LSP refresh interval + typedef isis_LspRefreshIntvl { + type uint32 { + range "10..65535"; + } + default "33"; + } + + // Level type + typedef isis_LvlT { + type enumeration { + enum p2p { + value 0; + description "P2P"; + } + enum l1 { + value 1; + description "Level1"; + } + enum l2 { + value 2; + description "Level2"; + } + } + default "l1"; + } + + // Max LSP Lifetime + typedef isis_MaxLSPLife { + type uint32 { + range "1..65535"; + } + default "1200"; + } + + // Mesh group type + typedef isis_MeshGroupType { + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + // Mesh group controls + typedef isis_MeshGrpControl { + + type string; + } + + // Mesh group id + typedef isis_MeshGrpId { + + type uint32 { + range "1..4294967295"; + } + } + + // Metric + typedef isis_Metric { + type uint32 { + range "0..16777216"; + } + default "16777216"; + } + + // Metric style + typedef isis_MetricStyle { + type enumeration { + enum narrow { + value 1; + description "Narrow"; + } + enum wide { + value 2; + description "Wide"; + } + enum transition { + value 3; + description "Transition"; + } + } + default "wide"; + } + + // LSP MTU + typedef isis_Mtu { + type uint32 { + range "256..4352"; + } + default "1492"; + } + + // Net + typedef isis_Net { + type string; + } + + // Network Type point-to-point state + typedef isis_NetworkTypeP2PSt { + type enumeration { + enum off { + value 0; + description "Off"; + } + enum on { + value 1; + description "On"; + } + enum useAllISMac { + value 2; + description "Use allISs MAC"; + } + } + default "off"; + } + + // Operational state + typedef isis_OperSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum initializing { + value 1; + description "Initializing"; + } + enum ok { + value 2; + description "Running smoothly"; + } + enum failed { + value 3; + description "Failed"; + } + } + } + + // Overload administrative state + typedef isis_OverloadAdminSt { + type enumeration { + enum off { + value 0; + description "Off"; + } + enum always-on { + value 1; + description "Always on"; + } + enum bootup { + value 2; + description "On at bootup"; + } + enum bgp-converge { + value 3; + description "Set till bgp convergence"; + } + enum bgp-converge-max-wait { + value 4; + description "Set till bgp convergence with max wait"; + } + } + default "bootup"; + } + + // Passive Interface Level type + typedef isis_PassiveIntfT { + type enumeration { + enum l1 { + value 1; + description "Passive Interface type Level-1"; + } + enum l2 { + value 2; + description "Passive Interface type Level-2"; + } + enum l12 { + value 3; + description "Passive Interface type Level-1-2"; + } + enum noL1 { + value 4; + description "No Passive Interface type Level-1"; + } + enum noL2 { + value 5; + description "No Passive Interface type Level-2"; + } + enum noL12 { + value 6; + description "No Passive Interface type Level-1-2"; + } + enum inheritDef { + value 7; + description "Passive Interface default type"; + } + } + default "inheritDef"; + } + + // Pasive default type + typedef isis_PassiveT { + type enumeration { + enum l1 { + value 0; + description "L1 Passive type"; + } + enum l2 { + value 1; + description "L2 Passive type"; + } + enum l12 { + value 2; + description "L1-2 Passive type"; + } + enum unknown { + value 3; + description "Unknown Passive type"; + } + } + default "unknown"; + } + + // Queue limit retransmit + typedef isis_QueueLimitType { + type uint32 { + range "200..65535"; + } + default "2000"; + } + + // LSP retransmit Interval + typedef isis_RetransInterval { + type uint16 { + range "1..65535"; + } + default "5"; + } + + // LSP retransmit throttle Interval + typedef isis_RetransThrottleInterval { + type uint16 { + range "20..65535"; + } + default "66"; + } + + // ISIS SR option support in Segment-Routing + typedef isis_SgmntRtg { + type enumeration { + enum none { + value 0; + description "Unspecified"; + } + enum srv6 { + value 1; + description "Support SRv6 option in Segment-Routing"; + } + } + default "none"; + } + + // Spf computation initial wait interval + typedef isis_SpfCompInitIntvl { + type uint32 { + range "50..120000"; + } + default "50"; + } + + // Spf computation maximum wait interval + typedef isis_SpfCompMaxIntvl { + type uint32 { + range "50..120000"; + } + default "8000"; + } + + // Spf computation second wait interval + typedef isis_SpfCompSecIntvl { + type uint32 { + range "50..120000"; + } + default "50"; + } + + typedef isis_StartupTime { + type uint32 { + range "5..86400"; + } + default "600"; + } + + // Summary Address Level type + typedef isis_SumLvl { + type enumeration { + enum l1 { + value 1; + description "Level-1"; + } + enum l2 { + value 2; + description "Level-2"; + } + enum l12 { + value 3; + description "Level-1-2"; + } + } + default "l12"; + } + + // Overload Suppress controls + typedef isis_SuppressControl { + + type string; + } + + // Distribute Link-state throttle interval + typedef isis_Throttle { + type uint16 { + range "0..50"; + } + default "0"; + } + + // TLV type + typedef isis_TlvType { + type uint8; + } + + // TLV value + typedef isis_TlvVal { + type string; + } + + // Multi-topology type + typedef isis_TopoT { + type enumeration { + enum st { + value 1; + description "Single Topology"; + } + enum mt { + value 2; + description "Multi-topology"; + } + enum mtt { + value 3; + description "Multi-topology transition"; + } + } + default "st"; + } + + // Wide Metric + typedef isis_WideMetric { + type uint32 { + range "0..16777216"; + } + default "16777216"; + } + + typedef itd_AclNameType { + type string { + length "0..50"; + } + } + + // Administrative state + typedef itd_AdminSt { + type enumeration { + enum noShut { + value 1; + description "Enabled"; + } + enum shut { + value 0; + description "Disabled"; + } + } + default "shut"; + } + + typedef itd_BucketNumType { + type uint32 { + range "0..256"; + } + default "0"; + } + + typedef itd_DevGrpNameType { + type string { + length "0..31"; + pattern ".*[a-zA-Z0-9_\\.\\\\-]+.*"; + } + } + + typedef itd_DnsHostType { + type string { + length "0..99"; + } + } + + typedef itd_HttpStringType { + type string { + length "0..99"; + } + } + + typedef itd_LBMethod { + type enumeration { + enum noLBMethod { + value 0; + description "no load-balancing"; + } + enum src { + value 1; + description "src based load-balancing"; + } + enum dst { + value 2; + description "dst based load-balancing"; + } + } + default "noLBMethod"; + } + + typedef itd_MaskPosType { + type uint32 { + range "0..127"; + } + default "0"; + } + + typedef itd_PortGrpNameType { + type string { + length "0..31"; + pattern ".*[a-zA-Z0-9_\\.\\\\-]+.*"; + } + } + + typedef itd_Prefix { + type uint32 { + range "0..128"; + } + default "0"; + } + + typedef itd_SvcNameType { + type string { + length "0..31"; + pattern ".*[a-zA-Z0-9_\\.\\\\-]+.*"; + } + } + + typedef itd_ctrlType { + type enumeration { + enum disable { + value 0; + description "disable control status"; + } + enum enable { + value 1; + description "enable control status"; + } + } + default "disable"; + } + + typedef itd_dgFaultBitmapT { + + type string; + } + + typedef itd_failactionType { + type enumeration { + enum nofailaction { + value 0; + description "no failaction"; + } + enum nodeReassign { + value 1; + description "failaction node reassign"; + } + enum nodeLeastBucket { + value 2; + description "failaction node least bucket"; + } + enum nodePerBucket { + value 3; + description "failaction node per bucket"; + } + enum bucketDistribute { + value 4; + description "failaction bucket distribute"; + } + } + default "nofailaction"; + } + + typedef itd_ingressIfFaultBitmapT { + + type string; + } + + typedef itd_nodeFaultBitmapT { + + type string; + } + + typedef itd_nodeModeType { + type enumeration { + enum primary { + value 0; + description "ITD primary node"; + } + enum hot-standby { + value 1; + description "ITD hot-standby node"; + } + } + default "primary"; + } + + typedef itd_probeFaultBitmapT { + + type string; + } + + typedef itd_protocolType { + type enumeration { + enum noProtocol { + value 0; + description "no protocol"; + } + enum DNS { + value 1; + description "ITD protocol type DNS"; + } + enum HTTP { + value 2; + description "ITD protocol type HTTP"; + } + enum ICMP { + value 3; + description "ITD protocol type ICMP"; + } + enum TCP { + value 4; + description "ITD protocol type TCP"; + } + enum UDP { + value 5; + description "ITD protocol type UDP"; + } + enum IP { + value 6; + description "ITD protocol type IP"; + } + } + default "noProtocol"; + } + + typedef itd_serviceFaultBitmapT { + + type string; + } + + typedef itd_sessActionType { + type enumeration { + enum noAction { + value 0; + description "noAction"; + } + enum commit { + value 1; + description "commit session"; + } + enum abort { + value 2; + description "abort session"; + } + } + default "noAction"; + } + + typedef itd_sessNodeActionType { + type enumeration { + enum add { + value 0; + description "add node to device group"; + } + enum delete { + value 1; + description "delete node from device group"; + } + } + } + + typedef itd_standbyNodeFaultBitmapT { + + type string; + } + + typedef itd_statsActionType { + type enumeration { + enum noAction { + value 0; + description "no action for statistics"; + } + enum on { + value 1; + description "start collecting statistics"; + } + enum off { + value 2; + description "stop collecting statistics"; + } + } + default "noAction"; + } + + typedef itd_vrfName { + type string { + length "1..32"; + } + default "default"; + } + + typedef kbs_adminStType { + type enumeration { + enum enable { + value 1; + description "enable"; + } + enum disable { + value 0; + description "disable"; + } + } + default "disable"; + } + + typedef kcmgr_ConfigErr { + type string; + } + + typedef kcmgr_adminSt { + type enumeration { + enum disabled { + value 0; + description "Disabled"; + } + enum enabled { + value 1; + description "Enabled"; + } + } + default "disabled"; + } + + // Cryptographic algo for classic keychain + typedef kcmgr_cryptoAlgoClassic { + type enumeration { + enum NONE { + value 0; + description "none"; + } + enum MD5 { + value 1; + description "md5"; + } + enum HMAC-SHA-1 { + value 2; + description "hmacsha1"; + } + enum HMAC-SHA-256 { + value 3; + description "hmacsha256"; + } + enum HMAC-SHA-384 { + value 4; + description "hmacsha384"; + } + enum HMAC-SHA-512 { + value 5; + description "hmacsha512"; + } + } + default "NONE"; + } + + // Cryptographic algo for macsec and tunnelencrypt + typedef kcmgr_cryptographicAlgoAes { + type enumeration { + enum AES_128_CMAC { + value 1; + description "aes128"; + } + enum AES_256_CMAC { + value 2; + description "aes256"; + } + } + default "AES_128_CMAC"; + } + + typedef kcmgr_day { + type uint16 { + range "0..31"; + } + } + + typedef kcmgr_duration { + type uint32 { + range "0..2147483646"; + } + } + + // Classic Encrpt type + typedef kcmgr_encryptionTypeClassic { + type enumeration { + enum unencrypted { + value 0; + description "noEncryption"; + } + enum type7 { + value 1; + description "proprietary"; + } + } + default "unencrypted"; + } + + // Macsec Encrpt type + typedef kcmgr_encryptionTypeMacsec { + type enumeration { + enum unencrypted { + value 0; + description "noEncryption"; + } + enum type7 { + value 1; + description "proprietary"; + } + enum type6 { + value 2; + description "type6"; + } + } + default "unencrypted"; + } + + // Tunnelencryption Encrpt type + typedef kcmgr_encryptionTypeTunnelEncrypt { + type enumeration { + enum unencrypted { + value 0; + description "noEncryption"; + } + enum type7 { + value 1; + description "proprietary"; + } + } + default "unencrypted"; + } + + // classic keychain keyid + typedef kcmgr_key { + type uint32 { + range "0..65535"; + } + } + + typedef kcmgr_keyHexId { + type string { + pattern ".*[a-fA-F0-9]{1,64}.*"; + } + } + + typedef kcmgr_keyString { + type string { + pattern ".*[!-~]{0,255}.*"; + } + } + + typedef kcmgr_month { + type enumeration { + enum Unspecified { + value 0; + description "Unspecified"; + } + enum Jan { + value 1; + description "January"; + } + enum Feb { + value 2; + description "February"; + } + enum Mar { + value 3; + description "March"; + } + enum Apr { + value 4; + description "April"; + } + enum May { + value 5; + description "May"; + } + enum Jun { + value 6; + description "June"; + } + enum Jul { + value 7; + description "July"; + } + enum Aug { + value 8; + description "August"; + } + enum Sep { + value 9; + description "September"; + } + enum Oct { + value 10; + description "October"; + } + enum Nov { + value 11; + description "November"; + } + enum Dec { + value 12; + description "December"; + } + } + default "Unspecified"; + } + + // KeyChain Name + typedef kcmgr_name { + type string { + pattern ".*[!-~]{1,63}.*"; + } + } + + typedef kcmgr_timeZone { + type enumeration { + enum unspecified { + value 0; + description "unspecified"; + } + enum local { + value 1; + description "local"; + } + } + default "unspecified"; + } + + typedef kcmgr_timestamp { + type string { + pattern "|.*((.*0?[0-9]|.*1[0-9]|.*2[0-3]):([0-5]?[0-9]):([0-5]?[0-9])).*"; + } + } + + typedef kcmgr_year { + type uint16 { + range "0..2035"; + } + } + + // Interface administrative state + typedef l1_AdminSt { + type enumeration { + enum down { + value 1; + } + enum up { + value 2; + } + } + default "up"; + } + + // Allow Multi Tag + typedef l1_AllowMultiTag { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 0; + } + } + default "disable"; + } + + typedef l1_AutoExcludeVlans { + type l2_VlanBitmap; + } + + // Auto negotiate + typedef l1_AutoNeg { + type enumeration { + enum on { + value 1; + } + enum off { + value 2; + } + enum 25G { + value 3; + } + } + default "on"; + } + + // Beacon Mode + typedef l1_Beacon { + type enumeration { + enum on { + value 1; + } + enum off { + value 2; + } + } + default "off"; + } + + typedef l1_BoundChannelId { + type uint32 { + range "100..65535"; + } + } + + typedef l1_BufferBoost { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "enable"; + } + + // Port bandwidth + typedef l1_Bw { + type uint32 { + range "0..3200000000"; + } + default "0"; + } + + // Dot 1Q Ethertype + typedef l1_DDot1qEtherType { + type uint32 { + range "1536..65535"; + } + default "33024"; + } + + // Dce mode + typedef l1_DceMode { + type enumeration { + enum core { + value 1; + } + enum edge { + value 2; + } + enum auto { + value 3; + } + enum off { + value 4; + } + } + default "off"; + } + + // Interface throughput delay + typedef l1_Delay { + type uint32 { + range "1..16777215"; + } + default "1"; + } + + // DFE Adaptive Tuning whether enabled or disabled + typedef l1_DfeAdaptiveTuning { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 0; + } + } + default "enable"; + } + + typedef l1_DfeTuningDelay { + type uint16 { + range "100..10000"; + } + default "100"; + } + + // diags type + typedef l1_DiagsT { + type enumeration { + enum none { + value 0; + } + enum dom { + value 1; + } + enum ddm { + value 2; + } + } + default "none"; + } + + // Duplex + typedef l1_Duplex { + type enumeration { + enum auto { + value 1; + } + enum full { + value 2; + } + enum half { + value 3; + } + } + default "auto"; + } + + // EEE latency + typedef l1_EEELatency { + type enumeration { + enum variable { + value 1; + } + enum constant { + value 2; + } + } + default "variable"; + } + + // EEE Lpi threshold + typedef l1_EEELpi { + type enumeration { + enum aggressive { + value 1; + } + enum normal { + value 2; + } + } + default "aggressive"; + } + + // Energy Efficient Ethernet (EEE) state + typedef l1_EEEState { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 2; + } + enum disagreed { + value 3; + } + enum not-applicable { + value 4; + } + } + default "not-applicable"; + } + + // FEC Knob + typedef l1_FECMode { + type enumeration { + enum auto { + value 4; + description "auto"; + } + enum rs-fec { + value 2; + description "RS-Fec"; + } + enum fc-fec { + value 1; + description "FC-Fec"; + } + enum fec-off { + value 3; + description "Fec-off"; + } + enum rs-ieee { + value 5; + description "RS-IEEE"; + } + enum rs-cons16 { + value 6; + description "RS-CONS16"; + } + enum kp-fec { + value 7; + description "FECMode: KP-Fec CL119"; + } + } + default "auto"; + } + + typedef l1_FlowControl { + + type string; + } + + // Inherit Bandwidth + typedef l1_InheritBw { + type uint32 { + range "0..4294967295"; + } + default "4294967295"; + } + + typedef l1_Intf { + type enumeration { + enum present { + value 0; + } + enum deleted { + value 1; + } + } + default "present"; + } + + // ethpm Interface type + typedef l1_IntfT { + type enumeration { + enum phy { + value 1; + } + enum phy-shared { + value 2; + } + } + default "phy"; + } + + // Port Layer + typedef l1_Layer { + type enumeration { + enum Layer2 { + value 1; + description "switched"; + } + enum Layer3 { + value 2; + description "routed"; + } + } + default "Layer2"; + } + + // Link active-jitter-management enabled or disabled + typedef l1_LinkActiveJitterMgmt { + type enumeration { + enum enable { + value 1; + description "enable-jitter-mgmt"; + } + enum disable { + value 0; + description "disable-jitter-mgmt"; + } + } + default "disable"; + } + + // Link debounce interval + typedef l1_LinkDebounce { + type uint16 { + range "0..20000"; + } + default "100"; + } + + // Link debounce interval for Linkup Timer + typedef l1_LinkDebounceLinkUp { + type uint16 { + range "0..10000"; + } + default "0"; + } + + // Link logging + typedef l1_LinkLog { + type enumeration { + enum default { + value 1; + } + enum enable { + value 2; + } + enum disable { + value 3; + } + } + default "default"; + } + + // Link loopback configuration whether enabled or disabled + typedef l1_LinkLoopback { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + // Link Mac Up Timer + typedef l1_LinkMacUpTimer { + type uint16 { + range "0..120"; + } + default "0"; + } + + // Link Transmit Reset whether enabled or disabled + typedef l1_LinkTransmitReset { + type enumeration { + enum enable { + value 1; + description "no-skip"; + } + enum disable { + value 0; + description "skip"; + } + } + default "enable"; + } + + // Load Interval + typedef l1_LoadIntvl { + type uint16 { + range "5..300"; + } + default "30"; + } + + // Load Interval + typedef l1_LoadIntvl3 { + type uint16 { + range "0..300"; + } + default "0"; + } + + typedef l1_LogEventBitmap { + + type string; + } + + // Mdix mode + typedef l1_Mdix { + type enumeration { + enum auto { + value 1; + } + enum mdi { + value 2; + } + enum mdi-x { + value 3; + } + } + default "auto"; + } + + // Phy Media Type + typedef l1_MediaType { + type enumeration { + enum none { + value 0; + description "none"; + } + enum 10g-tx { + value 1; + description "10G-TX"; + } + } + default "none"; + } + + // Medium + typedef l1_Medium { + type enumeration { + enum broadcast { + value 1; + } + enum p2p { + value 2; + } + } + default "broadcast"; + } + + // Port mode + typedef l1_Mode { + type enumeration { + enum access { + value 1; + } + enum trunk { + value 2; + } + enum fex-fabric { + value 3; + } + enum dot1q-tunnel { + value 4; + } + enum promiscuous { + value 5; + } + enum host { + value 6; + } + enum trunk_secondary { + value 7; + } + enum trunk_promiscuous { + value 8; + } + enum vntag { + value 9; + } + } + default "access"; + } + + // Module Type + typedef l1_Module { + type enumeration { + enum lc { + value 0; + } + enum sup { + value 1; + } + } + default "lc"; + } + + // MTU + typedef l1_Mtu { + type uint32 { + range "576..9216"; + } + default "1500"; + } + + // Oper error disable reason + typedef l1_OperErrDisQual { + type l1_OperStQual; + } + + // Oper Status + typedef l1_OperSt { + type enumeration { + enum unknown { + value 0; + description "unknown"; + } + enum down { + value 1; + description "down"; + } + enum up { + value 2; + description "up"; + } + enum link-up { + value 3; + description "link-up"; + } + } + default "down"; + } + + // Oper State Reason Labels here are based off status values: infra/if_manager/if_manager_cmd.h Some labels have spaces due to limitations of python restapi which assumes + // uniqueness between labels + typedef l1_OperStQual { + type enumeration { + enum unknown { + value 0; + description "down"; + } + enum up { + value 1; + } + enum admin-down { + value 2; + description "disabled"; + } + enum link-down { + value 3; + description "parentEthDown"; + } + enum fail { + value 4; + } + enum no-license { + value 5; + description "portLicNtAvl"; + } + enum link-up { + value 6; + description "link-up-connected"; + } + enum hw-fail { + value 7; + description "faulty"; + } + enum sw-fail { + value 8; + description "faulty "; + } + enum err-disabled { + value 9; + description "err-disabled"; + } + enum sfp-missing { + value 10; + description "sfpAbsent"; + } + enum loopback-diag-failure { + value 11; + description "faulty"; + } + enum udld-unidir-detected { + value 12; + description "udldUnidir"; + } + enum udld-tx-rx-loop { + value 13; + description "udldLoop"; + } + enum udld-neighbor-mismatch { + value 14; + description "udldMismatch"; + } + enum udld-empty-echo { + value 15; + description "udldEmpEcho"; + } + enum udld-aggressive-mode-link-failed { + value 16; + description "udldAggr"; + } + enum link-flap-err { + value 17; + description "linkFlapErr"; + } + enum err-disabled-ip-conflict { + value 18; + description "conflctErrDis"; + } + enum ipqos-dcbxp-compat-failure { + value 19; + description "ipQosDcbxpCompatFailure"; + } + enum link-failure { + value 20; + description "notconnect"; + } + enum offline { + value 21; + description "offline"; + } + enum initializing { + value 22; + description "init"; + } + enum inactive { + value 23; + description "inactive"; + } + enum channel-admin-down { + value 24; + description "channelDown"; + } + enum channel-err-disabled { + value 25; + description "Channel error-disabled-err-disabled"; + } + enum suspended { + value 26; + description "suspnd"; + } + enum proto-port-suspend { + value 27; + description "portSuspnd"; + } + enum channel-membership-update-in-progress { + value 28; + description "channelUpdate"; + } + enum parent-down { + value 29; + description "parentDown"; + } + enum parent-admin-down { + value 30; + description "adminDown-parentDown"; + } + enum interface-removed { + value 31; + description "ifRemoved"; + } + enum fcot-no-present { + value 32; + description "fcotAbsent"; + } + enum fcot-vendor-not-supported { + value 33; + description "SFP vendor not supported-err-disabled"; + } + enum incompatible-admin-mode { + value 34; + description "errDisabledIncompatPortMode-err-disabled"; + } + enum incompatible-admin-speed { + value 35; + description "errDisabledIncompatPortSpeed-err-disabled"; + } + enum suspended-by-mode { + value 36; + description "suspended"; + } + enum suspended-by-speed { + value 37; + description "suspended"; + } + enum domain-max-retransmission-failure { + value 38; + description "isolated"; + } + enum loopback-isolation { + value 39; + description "isolated"; + } + enum upgrade-in-progress { + value 40; + description "modUpgrade"; + } + enum port-channel-members-down { + value 41; + description "noOperMembers"; + } + enum ethernet-link-down { + value 42; + description "parentEthDown"; + } + enum ethernet-interface-down { + value 43; + description "interface-parentEthDown"; + } + enum admin-config-change { + value 44; + description "adminCfgChng"; + } + enum module-removed { + value 45; + description "modRemoved"; + } + enum vrf-unusable { + value 46; + description "vrfUnusable"; + } + enum none { + value 47; + description "connected"; + } + enum xcvr-initializing { + value 48; + description "sfpInit"; + } + enum cap-absent { + value 49; + description "capAbsent"; + } + enum sfp-eth-compliant-err { + value 50; + description "xcvrEthComplianceErr"; + } + enum sdp-timeout { + value 51; + description "SDP timeout/SFP Mismatch"; + } + enum sat-incompat-topo { + value 52; + description "FEX identity mismatch"; + } + enum sat-not-configured { + value 53; + description "FEX not configured"; + } + enum auth-fail { + value 54; + description "xcvrAuthFailed"; + } + enum auth-pending { + value 55; + description "authPending"; + } + enum suspended-due-to-minlinks { + value 56; + description "suspendedMinLinks"; + } + enum suspended-due-to-no-lacp-pdus { + value 57; + description "suspended(no LACP PDUs)"; + } + enum sat-fabric-if-down { + value 58; + description "fabrcIfDown"; + } + enum invalid-sat-fabric-if { + value 59; + description "invalidFbIf"; + } + enum fex-sfp-invalid { + value 60; + description "FEX-fabric sfp invalid"; + } + enum suspend-by-mtu { + value 61; + description "mtuFailure"; + } + enum suspend-by-vpc { + value 62; + description "suspndByVpc"; + } + enum router-mac-failure { + value 63; + description "routrmacFail"; + } + enum xcvr-auth-failed { + value 64; + description "xcvrAuthFailed"; + } + enum non-sticky-externally-disabled { + value 65; + description "ServDisab"; + } + enum sfp-speed-mismatch { + value 66; + description "xcvrSpeedMismatch"; + } + enum fcot-chksum-err { + value 67; + description "SFP checksum error"; + } + enum xcvr-invalid { + value 68; + description "Transceiver validation failed"; + } + enum vpc-peer-link-down { + value 69; + description "vpcPeerLinkDown"; + } + enum vpc-cfg-in-progress { + value 70; + description "vpcConfigInProgress"; + } + enum vpc-no-response-from-peer { + value 71; + description "noRespFrmVpc"; + } + enum bpdu-guard-err-disable { + value 72; + description "BPDUGuard errDisable"; + } + enum hot-standby-in-bundle { + value 73; + description "htStdbyInBndl"; + } + enum handshake-fail-errdisable { + value 74; + description "intFailErrDis"; + } + enum non-participating { + value 75; + description "nonParticipating"; + } + enum rcf-in-progress { + value 76; + description "rcfInProgress"; + } + enum elp-failure-isolation { + value 77; + description "elpFailureIsolation"; + } + enum esc-failure-isolation { + value 78; + description "escFailureIsolation"; + } + enum domain-overlap-isolation { + value 79; + description "domainOverlapIsolation"; + } + enum domain-addr-assign-failure-isolation { + value 80; + description "domainAddrAssignFailureIsolation"; + } + enum domain-other-side-eport-isolated { + value 81; + description "domainOtherSideEportIsolated"; + } + enum domain-invalid-rcf-received { + value 82; + description "domainInvalidRcfReceived"; + } + enum domain-manager-disabled { + value 83; + description "domainManagerDisabled"; + } + enum zone-merge-failure-isolation { + value 84; + description "zoneMergeFailureIsolation"; + } + enum vsan-mismatch-isolation { + value 85; + description "vsanMismatchIsolation"; + } + enum src-port-not-bound { + value 86; + description "srcPortNotBound"; + } + enum suspended-by-wwn { + value 87; + description "suspendedByWwn"; + } + enum epp-failure { + value 88; + description "eppFailure"; + } + enum port-vsan-mismatch-isolation { + value 89; + description "portVsanMismatchIsolation"; + } + enum incompatible-admin-rxbbcredit { + value 90; + description "incompatibleAdminRxbbcredit"; + } + enum incompatible-admin-rxbufsize { + value 91; + description "incompatibleAdminRxbufsize"; + } + enum zone-remote-no-resp-isolation { + value 92; + description "zoneRemoteNoRespIsolation"; + } + enum osm-e-port-up { + value 93; + description "osmEPortUp"; + } + enum osm-non-e-port-up { + value 94; + description "osmNonEPortUp"; + } + enum peer-fcip-closed-tcp-connection { + value 95; + description "peerFcipClosedTcpConnection"; + } + enum peer-fcip-reset-tcp-connection { + value 96; + description "peerFcipResetTcpConnection"; + } + enum tcp-max-retransmissions { + value 97; + description "tcpMaxRetransmissions"; + } + enum tcp-keep-alive-timer-expired { + value 98; + description "tcpKeepAliveTimerExpired"; + } + enum tcp-persist-timer-expired { + value 99; + description "tcpPersistTimerExpired"; + } + enum tunnel-src-port-removed { + value 100; + description "tunnelSrcPortRemoved"; + } + enum tunnel-src-module-not-online { + value 101; + description "tunnelSrcModuleNotOnline"; + } + enum invalid-config { + value 102; + description "invalidConfig"; + } + enum port-bind-failure { + value 103; + description "portBindFailure"; + } + enum fabric-bind-failure { + value 104; + description "fabricBindFailure"; + } + enum no-trunk-oper-vsans-isolation { + value 105; + description "noTrunkOperVsansIsolation"; + } + enum ficon-vsan-down { + value 106; + description "ficonVsanDown"; + } + enum invalid-attachment { + value 107; + description "invalidAttachment"; + } + enum port-blocked { + value 108; + description "portBlocked"; + } + enum incompatible-admin-rxbbcredit-performance-buf { + value 109; + description "incompatibleAdminRxbbcreditPerformanceBuf"; + } + enum too-many-invalid-flogis { + value 110; + description "tooManyInvalidFlogis"; + } + enum denied-due-to-port-binding { + value 111; + description "deniedDueToPortBinding"; + } + enum elp-failure-revision-mismatch { + value 112; + description "elpFailureRevisionMismatch"; + } + enum elp-failure-classf-param-err { + value 113; + description "elpFailureClassfParamErr"; + } + enum elp-failure-classn-param-err { + value 114; + description "elpFailureClassnParamErr"; + } + enum elp-failure-unknown-flow-ctl-code { + value 115; + description "elpFailureUnknownFlowCtlCode"; + } + enum elp-failure-invalid-flow-ctl-param { + value 116; + description "elpFailureInvalidFlowCtlParam"; + } + enum elp-failure-invalid-port-name { + value 117; + description "elpFailureInvalidPortName"; + } + enum elp-failure-invalid-switch-name { + value 118; + description "elpFailureInvalidSwitchName"; + } + enum elp-failure-ratov-edtov-mismatch { + value 119; + description "elpFailureRatovEdtovMismatch"; + } + enum elp-failure-loopback-detected { + value 120; + description "elpFailureLoopbackDetected"; + } + enum elp-failure-invalid-tx-bbcredit { + value 121; + description "elpFailureInvalidTxBbcredit"; + } + enum elp-failure-invalid-payload-size { + value 122; + description "elpFailureInvalidPayloadSize"; + } + enum bundle-miscfg { + value 123; + description "bundleMiscfg"; + } + enum bit-err-rt-thres-exceeded { + value 124; + description "bitErrRtThresExceeded"; + } + enum link-fail-link-reset { + value 125; + description "linkFailLinkReset"; + } + enum link-fail-port-init-failed { + value 126; + description "linkFailPortInitFailed"; + } + enum link-fail-port-unusable { + value 127; + description "linkFailPortUnusable"; + } + enum link-fail-loss-of-signal { + value 128; + description "linkFailLossOfSignal"; + } + enum link-fail-loss-of-sync { + value 129; + description "linkFailLossOfSync"; + } + enum link-fail-nos-rcvd { + value 130; + description "linkFailNosRcvd"; + } + enum link-fail-ols-rcvd { + value 131; + description "linkFailOlsRcvd"; + } + enum link-fail-debounce-timeout { + value 132; + description "linkFailDebounceTimeout"; + } + enum link-fail-lr-rcvd-b2b { + value 133; + description "linkFailLrRcvdB2b"; + } + enum link-fail-credit-loss { + value 134; + description "linkFailCreditLoss"; + } + enum link-fail-rx-que-overflow { + value 135; + description "linkFailRxQueOverflow"; + } + enum link-fail-too-many-intr { + value 136; + description "linkFailTooManyIntr"; + } + enum link-fail-lip-rcvd-b2b { + value 137; + description "linkFailLipRcvdB2b"; + } + enum link-fail-credit-loss-b2b { + value 138; + description "linkFailCreditLossB2b"; + } + enum link-fail-opny-tmo-b2b { + value 139; + description "linkFailOpnyTmoB2b"; + } + enum link-fail-opny-ret-b2b { + value 140; + description "linkFailOpnyRetB2b"; + } + enum link-fail-lip-f8-rcvd { + value 141; + description "linkFailLipF8Rcvd"; + } + enum link-fail-line-card-port-shutdown { + value 142; + description "linkFailLineCardPortShutdown"; + } + enum fcsp-authent-failure { + value 143; + description "fcspAuthentFailure"; + } + enum ohms-external-lb-test { + value 144; + description "ohmsExternalLbTest"; + } + enum invalid-fabric-binding-exchange { + value 145; + description "invalidFabricBindingExchange"; + } + enum tov-mismatch { + value 146; + description "tovMismatch"; + } + enum ficon-not-enabled { + value 147; + description "ficonNotEnabled"; + } + enum ficon-no-portnumber { + value 148; + description "ficonNoPortnumber"; + } + enum ficon-being-enabled { + value 149; + description "ficonBeingEnabled"; + } + enum eport-prohibited { + value 150; + description "eportProhibited"; + } + enum trunk-not-fully-active { + value 151; + description "trunkNotFullyActive"; + } + enum fabric-binding-swwn-not-found { + value 152; + description "fabricBindingSwwnNotFound"; + } + enum fabric-binding-domain-invalid { + value 153; + description "fabricBindingDomainInvalid"; + } + enum fabric-binding-database-mismatch { + value 154; + description "fabricBindingDatabaseMismatch"; + } + enum fabric-binding-peer-not-responding { + value 155; + description "fabricBindingPeerNotResponding"; + } + enum tracked-port-down { + value 156; + description "trackedPortDown"; + } + enum ec-suspended-for-loop { + value 157; + description "ecSuspendedForLoop"; + } + enum isolate-bundle-miscfg { + value 158; + description "isolateBundleMiscfg"; + } + enum peer-not-support-bundles { + value 159; + description "peerNotSupportBundles"; + } + enum port-bringup-isolation { + value 160; + description "portBringupIsolation"; + } + enum domain-not-allowed-isolation { + value 161; + description "domainNotAllowedIsolation"; + } + enum virtual-ivr-domain-overlap-isolation { + value 162; + description "virtualIvrDomainOverlapIsolation"; + } + enum out-of-service { + value 163; + description "outOfService"; + } + enum bundle-stdby { + value 164; + description "bundleStdby"; + } + enum port-cap-fc-port-connector-type-err { + value 165; + description "portCapFcPortConnectorTypeErr"; + } + enum error-disabled-reinit-limit-reached { + value 166; + description "errorDisabledReinitLimitReached"; + } + enum ficon-vsan-duplicate-portnum { + value 167; + description "ficonVsanDuplicatePortnum"; + } + enum internal-rcf-in-progress { + value 168; + description "internalRcfInProgress"; + } + enum two-switches-with-same-wwn { + value 169; + description "twoSwitchesWithSameWwn"; + } + enum invalid-other-princ-efp-req-recd { + value 170; + description "invalidOtherPrincEfpReqRecd"; + } + enum domain-isolation-unknown-reason { + value 171; + description "domainIsolationUnknownReason"; + } + enum elp-failure-all-zero-peer-wwn-rcvd { + value 172; + description "elpFailureAllZeroPeerWwnRcvd"; + } + enum prefered-path-isolation { + value 173; + description "preferedPathIsolation"; + } + enum fc-redirect-isolation { + value 174; + description "fcRedirectIsolation"; + } + enum port-act-license-not-available { + value 175; + description "portActLicenseNotAvailable"; + } + enum sdm-isolation { + value 176; + description "sdmIsolation"; + } + enum fcid-allocation-failed { + value 177; + description "fcidAllocationFailed"; + } + enum externally-disabled { + value 178; + description "externallyDisabled"; + } + enum fcot-read-error { + value 179; + description "fcotReadError"; + } + enum port-guard-down-on-link-failure { + value 180; + description "portGuardDownOnLinkFailure"; + } + enum incomplete-config { + value 181; + description "incompleteConfig"; + } + enum incomplete-tunnel-config { + value 182; + description "incompleteTunnelConfig"; + } + enum hw-programming-failed { + value 183; + description "hwProgrammingFailed"; + } + enum tunnel-dest-not-reachable { + value 184; + description "tunnelDestNotReachable"; + } + enum sfp-invalid { + value 185; + description "sfpInvalid"; + } + enum tunnel-vrf-mismatch { + value 186; + description "tunnelVrfMismatch"; + } + enum tunnel-vrf-fw-ref { + value 187; + description "tunnelVrfFwRef"; + } + enum duplicate-tunnel-cfg { + value 188; + description "duplicateTunnelCfg"; + } + enum primary-vlan-down { + value 189; + description "primaryVlanDown"; + } + enum dot1x-security-errdisable { + value 190; + description "dot1xSecurityErrdisable"; + } + enum vf-tagging-capability-err { + value 191; + description "vfTaggingCapabilityErr"; + } + enum port-disabled { + value 192; + description "portDisabled"; + } + enum tunnel-mode-not-configured { + value 193; + description "tunnelModeNotConfigured"; + } + enum tunnel-source-not-configured { + value 194; + description "tunnelSourceNotConfigured"; + } + enum tunnel-destination-not-configured { + value 195; + description "tunnelDestinationNotConfigured"; + } + enum tunnel-unable2resolve-source-ipaddress { + value 196; + description "tunnelUnable2resolveSourceIpaddress"; + } + enum tunnel-unable2resolve-destination-ipaddress { + value 197; + description "tunnelUnable2resolveDestinationIpaddress"; + } + enum tunnel-vrf-is-down { + value 198; + description "tunnelVrfIsDown"; + } + enum sif-admin-down { + value 199; + description "sifAdminDown"; + } + enum phy-intf-down { + value 200; + description "phyIntfDown"; + } + enum intf-sif-limit-exceeded { + value 201; + description "intfSifLimitExceeded"; + } + enum insufficient-power { + value 202; + description "insufficientPower"; + } + enum no-fcoe { + value 203; + description "noFcoe"; + } + enum dcx-compat-mismatch { + value 204; + description "dcxCompatMismatch"; + } + enum isolate-bundle-limit-exceeded { + value 205; + description "isolateBundleLimitExceeded"; + } + enum sif-not-bound { + value 206; + description "sifNotBound"; + } + enum err-disable-lacp-miscfg { + value 207; + description "errDisableLacpMiscfg"; + } + enum errdisabled-pkt-err { + value 208; + description "errdisabledPktErr"; + } + enum vlan-vsan-mapping-not-enabled { + value 209; + description "vlanVsanMappingNotEnabled"; + } + enum stp-not-forwarding-in-fcoe-mapped-vlan { + value 210; + description "stpNotForwardingInFcoeMappedVlan"; + } + enum module-offline { + value 211; + description "moduleOffline"; + } + enum stp-inconsist-vpc-peerlink-errdisable { + value 212; + description "stpInconsistVpcPeerlinkErrdisable"; + } + enum set-port-state-failed-errdisable { + value 213; + description "setPortStateFailedErrdisable"; + } + enum tunnel-source-down { + value 214; + description "tunnelSourceDown"; + } + enum cdp-info-not-avail { + value 215; + description "cdpInfoNotAvail"; + } + enum fcot-clk-rate-mismatch { + value 216; + description "fcotClkRateMismatch"; + } + enum port-guard-down-on-trustsec-violation { + value 217; + description "portGuardDownOnTrustsecViolation"; + } + enum wait-for-flogi { + value 218; + description "waitForFlogi"; + } + enum npiv-not-enabled-in-upstream { + value 219; + description "npivNotEnabledInUpstream"; + } + enum vsan-mismatch-with-upstream-switch-port { + value 220; + description "vsanMismatchWithUpstreamSwitchPort"; + } + enum port-guard-bit-error-rate { + value 221; + description "portGuardBitErrorRate"; + } + enum port-guard-signal-loss { + value 222; + description "portGuardSignalLoss"; + } + enum port-guard-sync-loss { + value 223; + description "portGuardSyncLoss"; + } + enum port-guard-link-reset { + value 224; + description "portGuardLinkReset"; + } + enum port-guard-credit-loss { + value 225; + description "portGuardCreditLoss"; + } + enum ipqos-mgr-policy-app-failed { + value 226; + description "ipqosMgrPolicyAppFailed"; + } + enum pause-rate-limit-errdisable { + value 227; + description "pauseRateLimitErrdisable"; + } + enum lstgrp-uplink-down { + value 228; + description "lstgrpUplinkDown"; + } + enum sticky-down-on-link-failure { + value 229; + description "stickyDownOnLinkFailure"; + } + enum dcx-multiple-msap-ids-errdisable { + value 230; + description "dcxMultipleMsapIdsErrdisable"; + } + enum dcx-100-pdus-rcvd-noack-errdisable { + value 231; + description "dcx100PdusRcvdNoackErrdisable"; + } + enum enm-sat-incompat-uplink { + value 232; + description "enmSatIncompatUplink"; + } + enum enm-loop-detected { + value 233; + description "enmLoopDetected"; + } + enum sub-group-id-not-assigned { + value 234; + description "subGroupIdNotAssigned"; + } + enum vem-unlicensed { + value 235; + description "vemUnlicensed"; + } + enum profile-not-found { + value 236; + description "profileNotFound"; + } + enum vlan-does-not-exist { + value 237; + description "vlanDoesNotExist"; + } + enum vlan-type { + value 238; + description "vlanType"; + } + enum vlan-down { + value 239; + description "vlanDown"; + } + enum vpc-peer-upgrade { + value 240; + description "vpcPeerUpgrade"; + } + enum non-cisco-hba-vftag { + value 241; + description "nonCiscoHbaVftag"; + } + enum domain-id-config-mismatch { + value 242; + description "domainIdConfigMismatch"; + } + enum xcvr-absent { + value 243; + description "xcvrAbsent"; + } + enum vfc-binding-invalid { + value 244; + description "vfcBindingInvalid"; + } + enum vlan-not-fcoe-enabled { + value 245; + description "vlanNotFcoeEnabled"; + } + enum pvlan-native-vlan-err { + value 246; + description "pvlanNativeVlanErr"; + } + enum eth-l2-vlan-down { + value 247; + description "ethL2VlanDown"; + } + enum eth-intf-invalid-binding { + value 248; + description "ethIntfInvalidBinding"; + } + enum pmon-failure { + value 249; + description "pmonFailure"; + } + enum l3-not-ready { + value 250; + description "l3NotReady"; + } + enum speed-mismatch { + value 251; + description "speedMismatch"; + } + enum flowcontrol-mismatch { + value 252; + description "flowcontrolMismatch"; + } + enum vdc-mode { + value 253; + description "vdcMode"; + } + enum enm-pin-fail-link-down { + value 254; + description "enmPinFailLinkDown"; + } + enum inactive-m1-port-fpath-access-vlan { + value 255; + description "inactiveM1PortFpathAccessVlan"; + } + } + default "admin-down"; + } + + // Oper state reason code + typedef l1_OperStQualCode { + type uint32; + } + + // Packet timestamp Source id + typedef l1_PacketTimestampSourceId { + type uint32 { + range "0..8388606"; + } + default "0"; + } + + // Packet timestamping state whether enabled or disabled + typedef l1_PacketTimestampState { + type enumeration { + enum disable { + value 0; + description "Timestamp disabled"; + } + enum enable-ingress { + value 1; + description "Timestamp enabled in ingress"; + } + enum enable-egress { + value 2; + description "Timestamp enabled in egress"; + } + enum enable-both { + value 3; + description "Timestamp enable both in ingress and egress"; + } + } + default "disable"; + } + + // Phy layer/Port type + typedef l1_PhyLayer { + type enumeration { + enum ethernet { + value 2; + } + enum sup-inband { + value 4; + } + enum eobc { + value 5; + } + enum mgmt { + value 6; + } + enum max { + value 8; + } + } + default "ethernet"; + } + + // Storm Control Policer Packet Type + typedef l1_PktT { + type enumeration { + enum bcast { + value 1; + } + enum unk-ucast { + value 2; + } + enum mcast { + value 3; + } + enum all { + value 4; + } + } + default "all"; + } + + // Port type Fabric : Type of port that the interface is facing + typedef l1_PortTypeFabric { + type enumeration { + enum no { + value 0; + description "no"; + } + enum yes { + value 1; + description "yes"; + } + } + default "no"; + } + + // Port usage + typedef l1_PortUsage { + + type string; + default "discovery"; + } + + typedef l1_RouterMacIpv6Extract { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + // Snmp trap state + typedef l1_SnmpTrapSt { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 2; + } + } + default "enable"; + } + + // Span mode + typedef l1_SpanMode { + type enumeration { + enum not-a-span-dest { + value 1; + } + enum span-dest { + value 2; + } + enum span-dest-fwd { + value 3; + } + enum span-dest-fwd-learn { + value 4; + } + } + default "not-a-span-dest"; + } + + // Speed + typedef l1_Speed { + type enumeration { + enum unknown { + value 0; + description "Unspecified"; + } + enum 100M { + value 2; + description "100 Mbps"; + } + enum 1G { + value 3; + description "1 Gbps"; + } + enum 10G { + value 4; + description "10 Gbps"; + } + enum 40G { + value 5; + description "40 Gbps"; + } + enum auto { + value 6; + description "auto"; + } + enum auto_100M { + value 7; + description "auto 100 Mbps"; + } + enum auto_100M_1G { + value 8; + description "auto 100 Mbps/1Gbps"; + } + enum 100G { + value 9; + description "100 Gbps"; + } + enum 25G { + value 10; + description "25G Gbps"; + } + enum 10M { + value 11; + description "10 Mbps"; + } + enum 50G { + value 12; + description "50 Gbps"; + } + enum 200G { + value 13; + description "200 Gbps"; + } + enum 400G { + value 14; + description "400 Gbps"; + } + enum 2.5G { + value 15; + description "2.5 Gbps"; + } + enum 5G { + value 16; + description "5 Gbps"; + } + enum auto_2.5G_5G_10G { + value 17; + description "auto 2.5 Gbps/5Gbps/10Gbps"; + } + enum auto_100M_1G_2.5G_5G { + value 18; + description "auto 100M/1Gbps/2.5Gbps/5Gbps"; + } + } + default "auto"; + } + + // Speed Group + typedef l1_SpeedGroup { + type enumeration { + enum unknown { + value 0; + description "Unspecified"; + } + enum 1000 { + value 3; + description "1 Gbps"; + } + enum 25000 { + value 10; + description "25 Gbps"; + } + enum 10000 { + value 4; + description "10 Gbps"; + } + enum 40000 { + value 5; + description "40 Gbps"; + } + enum auto { + value 6; + description "auto"; + } + } + default "auto"; + } + + typedef l1_StormCtrlAct { + + type string; + default "none"; + } + + typedef l1_StormCtrlPPS { + + type uint32 { + range "0..4294967295"; + } + default "4294967295"; + } + + // Storm Control Policer Packet Rate PPS Max range is arrived at by using pkt size of 256 bytes + // for 1 G link = ((1/8)/256))*(10^9) = 488281 + // for 10 G link = ((10/8)/256)*(10^9) = 4882812 + // for 40 G link = ((40/8)/256)*(10^9) = 19531250 + // for 100 G link = ((100/8)/256)*(10^9) = 48828125 + typedef l1_StormCtrlPps { + type uint32 { + range "0..4294967295"; + } + default "4294967295"; + } + + // Storm Control Policer Packet Rate + typedef l1_StormCtrlRate { + type decimal64 { + fraction-digits 6; + range "0..100"; + } + default "100"; + } + + // switching state + typedef l1_SwitchingSt { + type enumeration { + enum disabled { + value 0; + } + enum enabled { + value 1; + } + } + default "disabled"; + } + + typedef l1_SwitchportBlock { + + type string; + } + + typedef l1_SwitchportIsolated { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef l1_SwitchportVirtualEthernetBridge { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + // Trunk logging + typedef l1_TrunkLog { + type enumeration { + enum default { + value 1; + } + enum enable { + value 2; + } + enum disable { + value 3; + } + } + default "default"; + } + + // Port Tx Type + typedef l1_TxT { + type enumeration { + enum unknown { + value 1; + } + enum LL { + value 2; + } + enum SN { + value 3; + } + enum LC { + value 4; + } + enum EL { + value 5; + } + enum 10GBASE-SR { + value 6; + } + enum 10GBASE-LR { + value 7; + } + enum 10GBASE-ER { + value 8; + } + enum 10GBASE-LX4 { + value 9; + } + enum 10GBASE-SW { + value 10; + } + enum 10GBASE-LW { + value 11; + } + enum 10GBASE-EW { + value 12; + } + } + default "unknown"; + } + + // Uni-Directional Ethernet whether enabled or disabled + typedef l1_UniDirectionalEthernet { + type enumeration { + enum disable { + value 0; + description "Disable UDE"; + } + enum send-only { + value 1; + description "UDE TX only"; + } + } + default "disable"; + } + + // VDC state + typedef l1_VdcSt { + type enumeration { + enum not-created { + value 0; + } + enum created { + value 1; + } + enum cleanup { + value 2; + } + } + default "not-created"; + } + + typedef l1_VethCapFlags { + + type string; + } + + typedef l1_VethCfgCtrl { + + type string; + } + + // The mgmt id is another identifier used by the mgmt application like UCSM, + // to identify the interface. This can be different from the id assigned to the interface. + typedef l1_VethMgmtId { + type uint32; + } + + // Virtual Ethernet Interface related type definitions + typedef l1_VethState { + type enumeration { + enum none { + value 0; + description "None State"; + } + enum created { + value 1; + description "Veth Created"; + } + enum attached { + value 2; + description "Veth Attached"; + } + enum detached { + value 3; + description "Veth Detached"; + } + enum removed { + value 4; + description "Veth Removed"; + } + } + } + + typedef l1_VifCount { + type uint16 { + range "0..4096"; + } + default "0"; + } + + // Types for NIV + typedef l1_VntagMode { + type enumeration { + enum off { + value 0; + description "Vntag Mode Off"; + } + enum on { + value 1; + description "Vntag Mode On"; + } + enum force { + value 2; + description "Vntag Mode Force"; + } + enum max { + value 3; + description "Vntag Max Mode. Error."; + } + } + default "off"; + } + + // Voice VLAN COS + typedef l1_VoicePortCos { + type int8 { + range "-1..7"; + } + default "-1"; + } + + // Voice VLAN Trust + typedef l1_VoicePortTrust { + type int8; + default "-1"; + } + + // Voice VLAN ID values + typedef l1_VoiceVlanId { + type uint16 { + range "0..4092"; + } + default "0"; + } + + // Voice VLAN Type options + typedef l1_VoiceVlanType { + type enumeration { + enum none { + value 0; + description "none"; + } + enum tagged { + value 1; + description "tagged"; + } + enum dot1p { + value 2; + description "dot1p"; + } + enum untagged { + value 3; + description "untagged"; + } + } + default "none"; + } + + // Chassis Adaptor Mode + typedef l1_adaptorMode { + type enumeration { + enum No { + value 0; + } + enum Yes { + value 1; + } + enum Unknown { + value 2; + } + } + default "Unknown"; + } + + // Chassis Number + typedef l1_chassisNo { + type uint32 { + range "0..255"; + } + default "0"; + } + + // Server Port device type + typedef l1_deviceType { + type enumeration { + enum Unknown { + value 0; + } + enum Server { + value 1; + } + } + default "Unknown"; + } + + typedef l1_l1IfAccessVlan { + type string; + default "vlan-1"; + } + + typedef l1_l1IfNativeVlan { + type string; + default "vlan-1"; + } + + typedef l1_l1IfTrunkVlans { + type l2_VlanBitmap; + default "1-4094"; + } + + // Module Side + typedef l1_moduleSide { + type enumeration { + enum UnknownSlot { + value 0; + } + enum LeftIoModuleSlot { + value 1; + } + enum RightIoModuleSlot { + value 2; + } + } + default "UnknownSlot"; + } + + // Chassis Port Status + typedef l1_portStatus { + type enumeration { + enum Unknown { + value 0; + } + enum Present { + value 1; + } + enum Active { + value 2; + } + enum Mismatch { + value 3; + } + } + default "Unknown"; + } + + // Chassis Remote Port No + typedef l1_remotePortNo { + type uint16 { + range "0..60000"; + } + default "0"; + } + + // Server Port Status + typedef l1_serverPortStatus { + type enumeration { + enum Unknown { + value 0; + } + enum Present { + value 1; + } + } + default "Unknown"; + } + + // mac-learn Cfg State + typedef l1_switchportMacLearn { + type enumeration { + enum disable { + value 0; + description "Disabled"; + } + enum enable { + value 1; + description "Enabled"; + } + } + default "enable"; + } + + typedef l1_translatevlanid { + type string; + default "vlan-1"; + } + + // User Configured Flags + typedef l1_userCfgdFlags { + + type string; + default "none"; + } + + // Vsan assoc state + typedef l2_AssocOperSt { + type enumeration { + enum oper { + value 0; + } + enum non-oper { + value 1; + } + } + default "oper"; + } + + // BD bridging mode + typedef l2_BridgeMode { + type enumeration { + enum ip { + value 1; + description "Bridge with IP"; + } + enum mac { + value 2; + description "Bridge with MAC"; + } + } + default "mac"; + } + + // CreateState + typedef l2_CreateState { + type enumeration { + enum created { + value 1; + } + enum removed { + value 2; + } + enum deleted-and-stale { + value 3; + } + } + default "removed"; + } + + // admin state of domain + typedef l2_DomAdminSt { + type enumeration { + enum suspend { + value 1; + } + enum active { + value 2; + } + } + default "active"; + } + + // Domain controls + typedef l2_DomCtrl { + + type string; + default "none"; + } + + // domain id + typedef l2_DomId { + type uint32 { + range "1..4096"; + } + } + + // domain mode + typedef l2_DomMode { + type enumeration { + enum CE { + value 1; + } + enum FabricPath { + value 2; + } + } + default "CE"; + } + + typedef l2_DomOperId { + type uint32 { + range "0..16384"; + } + } + + // oper state of domain + typedef l2_DomOperSt { + type enumeration { + enum up { + value 1; + } + enum down { + value 2; + } + enum unknown { + value 3; + } + } + default "down"; + } + + // domain type + typedef l2_DomType { + type enumeration { + enum bd-regular { + value 1; + description "BD regular"; + } + enum bd-reserved { + value 2; + description "BD reserved"; + } + enum bd-control { + value 3; + description "BD control"; + } + enum bd-external { + value 4; + description "BD external"; + } + enum ckt-vlan { + value 5; + description "Vlan circuit"; + } + enum ckt-vxlan { + value 6; + description "Vxlan circuit"; + } + } + default "bd-regular"; + } + + // Enforcement preference + typedef l2_EnfPref { + type enumeration { + enum sw { + value 1; + description "Software"; + } + enum hw { + value 2; + description "Hardware"; + } + } + default "hw"; + } + + // Fex chassis Id + typedef l2_ExtChasId { + type uint16 { + range "0..199"; + } + default "0"; + } + + // BD forwarding controls + typedef l2_FwdCtrl { + + type string; + default "mdst-flood"; + } + + // BD forwarding mode + typedef l2_FwdMode { + + type string; + default "route,bridge"; + } + + // Port type + typedef l2_MacInfo { + type enumeration { + enum standard { + value 0; + description "Standard"; + } + enum drop { + value 1; + description "Drop"; + } + enum svi-down-flood { + value 2; + description "SVI DOWN FLOOD"; + } + enum sup-inband-cfsoe { + value 3; + description "SUP INBAND CFSOE"; + } + enum vpc-peer-link { + value 4; + description "VPC peer-link"; + } + enum nve { + value 5; + description "NVE"; + } + enum sup-eth { + value 6; + description "SUP-ETH"; + } + } + default "standard"; + } + + // Mac type + typedef l2_MacType { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum primary { + value 1; + description "Primary"; + } + enum gateway { + value 2; + description "Gateway"; + } + enum overlay { + value 4; + description "Overlay"; + } + enum primary-vpc-peer { + value 5; + description "Primary MAC using VPC peer-link"; + } + enum control-plane { + value 6; + description "Control Plane"; + } + enum vsan { + value 7; + description "VSAN"; + } + } + default "primary"; + } + + // Native type + typedef l2_NativeT { + type enumeration { + enum regular { + value 0; + } + enum native { + value 1; + } + enum untagged { + value 2; + } + } + default "regular"; + } + + // Mac Packet Classify + typedef l2_PktClassify { + type enumeration { + enum enable { + value 1; + description "Enabled"; + } + enum disable { + value 0; + description "Disabled"; + } + } + default "disable"; + } + + // Private-vlan types + typedef l2_PvlanTypes { + type enumeration { + enum isolated { + value 1; + description "isolated"; + } + enum community { + value 2; + description "community"; + } + enum primary { + value 3; + description "primary"; + } + enum nonOperational { + value 4; + description "non operational"; + } + } + default "nonOperational"; + } + + typedef l2_UserDefinedLimit { + type uint32 { + range "16..256"; + } + default "16"; + } + + // vdc id + typedef l2_VdcId { + type uint16 { + range "1..4096"; + } + } + + typedef l2_VlanBitmap { + type mtx_array_bit; + } + + // xconnect state + typedef l2_XConnect { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 0; + } + } + default "disable"; + } + + // Subject represents the entitiy to which the capability constraint gets applied + typedef l2cap_Subj { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum vxlan-namespace { + value 1; + description "VXLAN"; + } + enum nvgre-namespace { + value 2; + description "NVGRE"; + } + enum domain-namespace { + value 3; + description "L2 Domain (Bridge Domain, Circuit, VLAN)"; + } + enum tunnel-namespace { + value 4; + description "Tunnel Interface"; + } + } + default "unknown"; + } + + typedef l2fm_GuardVpcPeergwMac { + type enumeration { + enum enable { + value 1; + description "Enabled"; + } + enum disable { + value 0; + description "Disabled"; + } + } + default "disable"; + } + + // mac-learn Cfg State + typedef l2fm_Learning { + type enumeration { + enum enable { + value 1; + description "Enabled"; + } + enum disable { + value 0; + description "Disabled"; + } + } + default "enable"; + } + + typedef l2fm_LoopDetect { + type enumeration { + enum enable { + value 1; + description "Enabled"; + } + enum disable { + value 0; + description "Disabled"; + } + } + default "disable"; + } + + typedef l2fm_MacMoveNotification { + type enumeration { + enum enable { + value 1; + description "Enabled"; + } + enum disable { + value 0; + description "Disabled"; + } + } + default "enable"; + } + + typedef l2pt_Cos { + type uint16 { + range "0..7"; + } + default "5"; + } + + typedef l2pt_Threshold { + type uint32 { + range "0..4096"; + } + default "0"; + } + + typedef l2rib_EncapTypeT { + type enumeration { + enum none { + value 0; + } + enum vxlan { + value 1; + } + enum segment-routing { + value 2; + } + } + } + + typedef l2rib_GenericFlagsT { + + type string; + } + + typedef l2rib_MacIpRtFlagsT { + + type string; + } + + typedef l2rib_MacRtFlagsT { + + type string; + } + + typedef l2rib_MacRtResolutionT { + type enumeration { + enum mac-res-unknown { + value 0; + description + "MAC resolution unknown; do not use paths + from MAC route"; + } + enum mac-res-regular { + value 1; + description "Do not resolve; use paths from MAC route"; + } + enum mac-res-esi { + value 2; + description "ESI resolution via EAD routes for EVPN"; + } + enum mac-res-bmac { + value 3; + description "Populate path-lists indexed by BMAC address."; + } + enum mac-res-peer-sync { + value 4; + description + "Routes from the ESI-peer. + No need for Peerid/ESI resolution"; + } + } + } + + typedef l2rib_ProducerStT { + type enumeration { + enum initial { + value 0; + description "Producer was created on BIND event"; + } + enum staled { + value 1; + description "Producer is disconnected"; + } + enum reconnected { + value 2; + description + "Producer reconnected before expiration of + purge timer"; + } + enum converged { + value 3; + description "Producer got EOC"; + } + enum delete-pending { + value 4; + description "Producer waiting for deletion"; + } + } + } + + typedef l2rib_TopoFlagsT { + + type string; + } + + typedef l2rib_TopoSubFlagsT { + + type string; + } + + // Topology + typedef l2rib_TopoTypeT { + type enumeration { + enum none { + value 0; + } + enum vni { + value 1; + } + enum evi { + value 2; + } + } + } + + // BGP RD Size based off of BGP_RD_LEN + typedef l3_BgpRdBytes { + type mtx_array_uint8; + } + + // Context type + typedef l3_CtxT { + type enumeration { + enum oob-mgmt { + value 1; + description "Out of band management"; + } + enum inb-mgmt { + value 2; + description "Inband management"; + } + enum tenant { + value 3; + description "Tenant"; + } + } + default "tenant"; + } + + // Ip prefix length + typedef l3_IpPfxLen { + type uint16 { + range "0..128"; + } + default "0"; + } + + // Maximum Prefix + typedef l3_MaxLmt { + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + typedef l3_MaxRtAct { + type enumeration { + enum log { + value 1; + description "Log"; + } + enum shut { + value 2; + description "Shutdown"; + } + enum reinstall { + value 3; + description "Reinstall"; + } + } + default "shut"; + } + + typedef l3_MaxRtThresh { + type uint8 { + range "1..100"; + } + default "100"; + } + + // ttl + typedef l3_Ttl { + type uint8 { + range "0..255"; + } + default "0"; + } + + // admin state of vrf + typedef l3_VrfAdminState { + type enumeration { + enum shutdown { + value 1; + } + enum admin-up { + value 2; + } + } + default "admin-up"; + } + + // vrf gsdb context type + typedef l3_VrfGsdbCtxType { + type enumeration { + enum vrf { + value 1; + } + enum if { + value 2; + } + enum table { + value 3; + } + enum if-table { + value 4; + } + enum if-list { + value 5; + } + enum purge { + value 6; + } + enum vpnid { + value 7; + } + enum source-of-origin { + value 8; + } + enum route-limits { + value 9; + } + } + default "if"; + } + + // VRF id + typedef l3_VrfId { + type uint16 { + range "0..65535"; + } + default "0"; + } + + // VRF name + typedef l3_VrfName { + type string { + pattern "[A-Za-z0-9!@#$\\^\\*=\\+\\{\\}\\.;:_-]{1,32}"; + } + } + + // oper state of vrf + typedef l3_VrfOperState { + type enumeration { + enum up { + value 1; + } + enum down { + value 2; + } + } + default "down"; + } + + // oper state reason of vrf + typedef l3_VrfOperStateQual { + type enumeration { + enum admin-down { + value 1; + } + enum admin-down-pending { + value 2; + } + enum delete-holddown { + value 3; + } + enum delete-pending { + value 4; + } + enum invalid { + value 5; + } + enum create-pending { + value 6; + } + } + default "admin-down"; + } + + // l3vm sdb as-format + typedef l3vm_AsFormatType { + type enumeration { + enum asplain { + value 0; + } + enum asdot { + value 1; + } + } + default "asplain"; + } + + // Port + typedef l4_Port { + + type uint16 { + range "0..65535"; + } + default "0"; + } + + // Activity flags + typedef lacp_ActivityFlags { + + type string; + } + + // Operational key + typedef lacp_Key { + type uint16 { + range "0..65535"; + } + } + + typedef lacp_LACPInstCtrl { + + type string; + } + + // Port num + typedef lacp_PortNum { + type uint16 { + range "0..65535"; + } + } + + // Port priority + typedef lacp_PortPrio { + type uint16 { + range "1..65535"; + } + default "32768"; + } + + // System mac + typedef lacp_SysMac { + type address_Mac; + } + + // System priority + typedef lacp_SysPrio { + type uint16 { + range "1..65535"; + } + default "32768"; + } + + // Pseudo VPC role + typedef lacp_SysRole { + type enumeration { + enum primary { + value 1; + description "Primary"; + } + enum secondary { + value 2; + description "Secondary"; + } + } + default "primary"; + } + + // Transmit rate + typedef lacp_TxRate { + type enumeration { + enum normal { + value 1; + description "Normal"; + } + enum fast { + value 2; + description "Fast"; + } + } + default "normal"; + } + + typedef lcm_EcmpTemplateL3vpn { + type enumeration { + enum no { + value 0; + description "Ecmp template l3vpn - no"; + } + enum yes { + value 1; + description "Ecmp template l3vnp - yes"; + } + } + default "no"; + } + + // Logging level type + typedef lcm_LoggingLevel { + type uint16 { + range "0..7"; + } + default "5"; + } + + // Logging Level + typedef lcm_LoggingType { + type enumeration { + enum Emergencies { + value 0; + description "Emergencies"; + } + enum Alerts { + value 1; + description "Alerts"; + } + enum Critical { + value 2; + description "Critical"; + } + enum Errors { + value 3; + description "Errors"; + } + enum Warnings { + value 4; + description "Warnings"; + } + enum Notification { + value 5; + description "Notification"; + } + enum Information { + value 6; + description "Information"; + } + enum Debugging { + value 7; + description "Debugging"; + } + } + default "Notification"; + } + + typedef lcm_ModuleEmonEnhanced { + type enumeration { + enum disable { + value 0; + description "disable emon enhanced mode"; + } + enum enable { + value 1; + description "enable emon enhanced mode"; + } + } + default "enable"; + } + + typedef lcm_ModuleEmonEnhancedSlowTimeout { + type enumeration { + enum disable { + value 0; + description "disable emon enhanced slow timeout mode"; + } + enum enable { + value 1; + description "enable emon enhanced slow timeout mode"; + } + } + default "enable"; + } + + typedef lcm_ModuleFailureAction { + type enumeration { + enum no { + value 0; + description "action on failure - no"; + } + enum shutdown { + value 1; + description "action on failure - shutdown"; + } + } + default "no"; + } + + typedef lcm_MulticastOptimization { + type enumeration { + enum enable { + value 0; + description "enable multicast optimization"; + } + enum disable { + value 1; + description "disable multicast optimization"; + } + } + default "enable"; + } + + // port range + typedef lcm_PortRange { + type string { + pattern "(\\d+(-\\d+)? *(, *\\d+(-\\d+)? *)*)"; + } + default "1-54"; + } + + typedef lcm_PortType { + type enumeration { + enum fc { + value 1; + description "Port type FC"; + } + enum ethernet { + value 2; + description "Port type Ethernet"; + } + } + default "ethernet"; + } + + typedef lcm_ProfAclEgExt { + type enumeration { + enum no { + value 0; + description "hardware profile acl-eg-ext - no"; + } + enum yes { + value 1; + description "hardware profile acl-eg-ext - yes"; + } + } + default "no"; + } + + typedef lcm_ProfAclStats { + type enumeration { + enum no { + value 0; + description "hardware profile acl-stats - no"; + } + enum yes { + value 1; + description "hardware profile acl-stats - yes"; + } + } + default "no"; + } + + typedef lcm_ProfModAllId { + type uint16 { + range "0..32"; + } + default "0"; + } + + typedef lcm_ProfMvpnStats { + type enumeration { + enum no { + value 0; + description "hardware profile mvpn-stats - no"; + } + enum yes { + value 1; + description "hardware profile mvpn-stats - yes"; + } + } + default "no"; + } + + typedef lcm_ProfVxlanMpls { + type enumeration { + enum no { + value 0; + description "hardware profile vxlan/mpls - no"; + } + enum vxlan { + value 1; + description "hardware profile vxlan/mpls - vxlan"; + } + enum mpls { + value 2; + description "hardware profile vxlan/mpls - mpls"; + } + } + default "no"; + } + + typedef lcm_moduleNumber { + type uint16 { + range "1..32"; + } + default "1"; + } + + // Adjacency Id + typedef lldp_AdjId { + type uint16 { + range "1..10"; + } + } + + // Administrative state + typedef lldp_AdminSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "enabled"; + } + + // Capability + typedef lldp_Capability { + + type string; + } + + // Chassis ID type + typedef lldp_ChassisIdT { + type uint8; + } + + // Chassis id value; FIXME IFC to give ByteArray type + typedef lldp_ChassisIdV { + type string; + } + + typedef lldp_DCBXPVerType { + type enumeration { + enum auto { + value 0; + description "Auto-Detect"; + } + enum CEE { + value 2; + description "CEE"; + } + enum IEEE { + value 3; + description "IEEE 802.1"; + } + } + default "auto"; + } + + // Hold time + typedef lldp_HoldTime { + type uint16 { + range "1..255"; + } + default "120"; + } + + // Init delay time + typedef lldp_InitDelayTime { + type uint16 { + range "1..10"; + } + default "2"; + } + + // Management ip + typedef lldp_MgmtIp { + type address_Ip; + default "0.0.0.0"; + } + + // Management port mac + typedef lldp_MgmtPortMac { + type address_Mac; + default "00:00:00:00:00:00"; + } + + typedef lldp_MgmtVlanId { + type uint16 { + range "0..4094"; + } + default "0"; + } + + // Neighbor System Description + typedef lldp_NbrSysDesc { + type string; + } + + // Optional TLV Selectors + typedef lldp_OptTlvSel { + + type string; + default "port-desc,sys-name,sys-desc,sys-cap,mgmt-addr-v4,mgmt-addr-v6,port-vlan,dcbxp,power-mgmt,four-wire-pwr-mgmt"; + } + + typedef lldp_PortIdSubType { + type enumeration { + enum long { + value 0; + description "Long interface name"; + } + enum short { + value 1; + description "Short interface name"; + } + } + default "long"; + } + + // Port id type + typedef lldp_PortIdT { + type uint8; + } + + // Port id value; FIXME IFC to give ByteArray type + typedef lldp_PortIdV { + type string; + } + + // Port vlan + typedef lldp_PortVlan { + type uint16; + default "0"; + } + + // System name + typedef lldp_SysName { + type string; + } + + // Transmission frequency + typedef lldp_TxFreq { + type uint16 { + range "1..254"; + } + default "30"; + } + + typedef logging_LoggingEnableAll { + type enumeration { + enum unspecified { + value 0; + description "Unspecified logging level"; + } + enum enableall { + value 1; + description "Logging enable for all"; + } + enum disableall { + value 2; + description "No logging enable for all"; + } + } + } + + // meter config burst size + typedef m6rib_BurstSize { + type uint32; + default "100"; + } + + // Database type + typedef m6rib_DbT { + type enumeration { + enum client { + value 0; + description "Client database"; + } + enum memest { + value 1; + description "Memory Estimate database"; + } + enum vrf { + value 2; + description "Vrf details"; + } + } + } + + // Event History Buffer Type + typedef m6rib_EhType { + type enumeration { + enum cli { + value 0; + description "cli events for m6rib"; + } + enum mdt { + value 1; + description "MDT events for m6rib"; + } + enum mfdmDebugs { + value 2; + description "MFDM debugs events for m6rib"; + } + enum mfdmEvents { + value 3; + description "MFDM-events events for m6rib"; + } + enum mfdmStats { + value 4; + description "MFDM stats events for m6rib"; + } + enum notyClients { + value 5; + description "notify-clients events for m6rib"; + } + enum rib { + value 6; + description "RIB events for m6rib"; + } + enum ribSum { + value 7; + description "rib-summary events for m6rib"; + } + enum urib { + value 8; + description "urib-debugs events for m6rib"; + } + enum vrf { + value 9; + description "VRF events for m6rib"; + } + enum objstoreError { + value 10; + description "Objstore error events for m6rib"; + } + enum objstoreEvents { + value 11; + description "Objstore events for m6rib"; + } + } + } + + // Administrative state + typedef m6rib_HoldAdminSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "enabled"; + } + + // Multicast Holddown type + typedef m6rib_HoldDownType { + type uint16 { + range "0..270"; + } + default "270"; + } + + // Notify Interval type + typedef m6rib_Interval { + type uint16 { + range "1..1000"; + } + default "1000"; + } + + // meter config Kbps + typedef m6rib_Kbps { + type uint32; + default "100"; + } + + // Log level type + typedef m6rib_LogLevel { + type uint16 { + range "0..7"; + } + } + + typedef m6rib_MfdmSize { + type uint32 { + range "50..500"; + } + default "50"; + } + + // Multipath Mode + typedef m6rib_MultipathMode { + type enumeration { + enum none { + value 1; + description "multiple path none"; + } + enum s-g-hash { + value 2; + description "Hash based on Source and Group address"; + } + } + default "s-g-hash"; + } + + // Multicast Resilient type + typedef m6rib_ResilientType { + type boolean; + default "false"; + } + + // Event History Buffer size in Text/kb + typedef m6rib_Size { + type uint32 { + range "0..4 | 5..4294967295"; + } + default "5242880"; + } + + typedef m6rib_TraceCountType { + type uint32 { + range "0..4294967295"; + } + } + + // Cipher Suite + typedef macsec_CipherSuite { + type enumeration { + enum GCM-AES-128 { + value 1; + description "128 bit GCM-AES Suite"; + } + enum GCM-AES-256 { + value 2; + description "256 bit GCM-AES Suite"; + } + enum GCM-AES-XPN-128 { + value 3; + description "128 bit GCM-AES Suite with Extended Packet Numbering"; + } + enum GCM-AES-XPN-256 { + value 4; + description "256 bit GCM-AES Suite with Extended Packet Numbering"; + } + } + default "GCM-AES-XPN-256"; + } + + // Confidentiality Offset + typedef macsec_ConfOffset { + type enumeration { + enum CONF-OFFSET-0 { + value 1; + description "Skip 0 bytes"; + } + enum CONF-OFFSET-30 { + value 2; + description "Skip 30 bytes"; + } + enum CONF-OFFSET-50 { + value 3; + description "Skip 50 bytes"; + } + } + default "CONF-OFFSET-0"; + } + + // Ether Type + typedef macsec_EtherType { + type uint32; + default "34958"; + } + + // Include icv indicator + typedef macsec_IncludeIcvParam { + type boolean; + default "false"; + } + + // KeyChain Name + typedef macsec_KeyChainName { + type string { + pattern ".*[!-~]{0,63}.*"; + } + } + + // Key Server Priority + typedef macsec_KeySvrPrio { + type uint8 { + range "0..255"; + } + default "16"; + } + + // Macsec Shutdown + typedef macsec_MacsecShutdown { + type boolean; + default "false"; + } + + // Policy Name + typedef macsec_PolicyName { + type string { + pattern ".*[a-zA-Z0-9-$_]{1,32}.*"; + } + default "system-default-macsec-policy"; + } + + // Replay Protection Window Size + typedef macsec_ReplayWindow { + type uint32 { + range "0..596000000"; + } + default "148809600"; + } + + // SAK Rekey Frequency in seconds + typedef macsec_SakExpiryTime { + type uint32 { + range "0..2592000"; + } + default "0"; + } + + // Security Policy + typedef macsec_SecPolicy { + type enumeration { + enum must-secure { + value 0; + description "Must secure mode"; + } + enum should-secure { + value 1; + description "Should secure mode"; + } + } + default "should-secure"; + } + + typedef mca_mcaEnable { + type enumeration { + enum DISABLED { + value 0; + description "Feature Disabled"; + } + enum ENABLED { + value 1; + description "Feature Enabled"; + } + } + default "DISABLED"; + } + + // L4 Port + typedef mca_mcaEnatMaxReplications { + type uint16 { + range "0..40"; + } + } + + typedef mca_mcaIf { + type uint32; + } + + typedef mca_mcaIpAddr { + type address_Ip; + } + + typedef mca_mcaMcastIpAddr { + type address_Ip; + } + + typedef mca_mcaNY { + type enumeration { + enum NO { + value 0; + description "This said condition is FALSE"; + } + enum YES { + value 1; + description "This said condition is TRUE"; + } + } + default "NO"; + } + + typedef mca_mcaNoYes { + type enumeration { + enum NA { + value 0; + description "Field Not Available/Applicable"; + } + enum NO { + value 1; + description "This said condition is FALSE"; + } + enum YES { + value 2; + description "This said condition is TRUE"; + } + } + default "NO"; + } + + typedef mca_mcaOiflistType { + type enumeration { + enum NA { + value 0; + description "Field Not Available/Applicable"; + } + enum L2 { + value 1; + description "This oiflist type is L2"; + } + enum L3 { + value 2; + description "This oiflist type is L3"; + } + } + default "L3"; + } + + // Filter mode, valid only with v3 + typedef mcast_FiltMode { + type enumeration { + enum include { + value 1; + description "Include"; + } + enum exclude { + value 2; + description "Exclude"; + } + } + default "include"; + } + + // Multicast group ip address + typedef mcast_GrpIp { + type address_Ip; + } + + // Holddown-timer + typedef mcast_HolddownTimer { + type uint16 { + range "1..300"; + } + default "210"; + } + + // Last member query count + typedef mcast_LastMbrQueryCnt { + type uint16 { + range "1..5"; + } + default "2"; + } + + // Last member query interval + typedef mcast_LastMbrQueryIntvl { + type uint16 { + range "1..25"; + } + default "1"; + } + + // Last member response time + typedef mcast_LastMbrRespTime { + type uint16 { + range "1..25"; + } + default "1"; + } + + // syslog level + typedef mcast_LogLevelRange { + type uint16 { + range "0..7"; + } + default "0"; + } + + // Number of (*,G) or (S,G) entries + typedef mcast_NumEntries { + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + // Querier Ip address + typedef mcast_QuerierIp { + type address_Ip; + } + + // Querier timeout + typedef mcast_QuerierTimeout { + + type uint16 { + range "1..65535"; + } + default "255"; + } + + // Query count + typedef mcast_QueryCnt { + type uint8 { + range "0..10"; + } + } + + // Query interval + typedef mcast_QueryIntvl { + type uint16 { + range "1..18000"; + } + default "125"; + } + + // Query response interval + typedef mcast_QueryRspIntvl { + type uint16 { + range "1..8387"; + } + default "10"; + } + + // Robust factor + typedef mcast_RobustFactor { + type uint8 { + range "1..7"; + } + default "2"; + } + + // Multicast root node, identified by the ip address + typedef mcast_Root { + type address_Ip; + } + + // Startup Query interval + typedef mcast_StartQueryIntvl { + type uint16 { + range "0..18000"; + } + } + + // Version + typedef mcast_Ver { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + } + } + + // Event History Buffer Type + typedef mcastfwd_EhType { + type enumeration { + enum internal { + value 0; + description "Represents Internal Events For Mcast Forwarding"; + } + enum cli { + value 1; + description "CLI Events for Mcast forwarding"; + } + enum packet { + value 2; + description "Packet Events for Mcast forwarding"; + } + enum vrf { + value 3; + description "VRF Events for Mcast forwarding"; + } + enum l2 { + value 4; + description "L2 Events for Mcast Forwarding"; + } + enum nbm { + value 5; + description "NBM Events for Mcast Forwarding"; + } + } + } + + typedef mcastfwd_Level { + type uint32 { + range "0..7"; + } + } + + typedef mcastfwd_LvlType { + type enumeration { + enum none { + value 0; + description "None"; + } + enum mfwd { + value 1; + description "Log level for multi forwarding"; + } + enum mcastfwd { + value 2; + description "Log level for multicast forwarding"; + } + } + default "none"; + } + + // Event History Buffer size in Text + typedef mcastfwd_Size { + type uint32 { + range "0..4 | 5..4294967295"; + } + default "3"; + } + + typedef mcastfwd_SwRep { + type enumeration { + enum none { + value 0; + description "None"; + } + enum swasm { + value 1; + description "Software replication of PIM ASM leak packets"; + } + enum swiif { + value 2; + description "Software replication on incoming interface"; + } + } + default "none"; + } + + // Event History Buffer Type + typedef mcastfwdv6_EhType { + type enumeration { + enum internal { + value 0; + description "Represents Internal Events For Mcast Forwarding"; + } + enum cli { + value 1; + description "CLI Events for Mcastv6 forwarding"; + } + enum packet { + value 2; + description "Packet Events for Mcastv6 forwarding"; + } + enum vrf { + value 3; + description "VRF Events for Mcastv6 forwarding"; + } + enum l2 { + value 4; + description "L2 Events for Mcastv6 Forwarding"; + } + enum nbm { + value 5; + description "NBM Events for Mcastv6 Forwarding"; + } + } + } + + typedef mcastfwdv6_Level { + type uint32 { + range "0..7"; + } + } + + typedef mcastfwdv6_LvlType { + type enumeration { + enum none { + value 0; + description "None"; + } + enum mfwdv6 { + value 1; + description "Log level for multi forwarding"; + } + enum mcastfwdv6 { + value 2; + description "Log level for multicast forwarding"; + } + } + default "none"; + } + + // Event History Buffer size in Text + typedef mcastfwdv6_Size { + type uint32 { + range "0..4 | 5..119999999"; + } + default "0"; + } + + typedef mcastfwdv6_SwRep { + type enumeration { + enum none { + value 0; + description "Undefined"; + } + enum swasm { + value 1; + description "Software replication of PIM ASM leak packets"; + } + } + } + + // Event History Buffer Type + typedef mld_EhType { + type enumeration { + enum cli { + value 0; + description "CLI events for MLD"; + } + enum ha { + value 2; + description "HA events for MLD"; + } + enum vrf { + value 4; + description "VRF events for MLD"; + } + enum group-debugs { + value 5; + description "group-debug events for MLD"; + } + enum group-events { + value 6; + description "group-events events for MLD"; + } + enum interface-debugs { + value 7; + description "interface-debug events for MLD"; + } + enum interface-events { + value 8; + description "interface-events events for MLD"; + } + enum policy { + value 9; + description "policy events for MLD"; + } + enum mld-internal { + value 10; + description "mld-internal events for MLD"; + } + } + } + + // Event History Buffer size in Text + typedef mld_Size { + type uint32 { + range "0..4 | 5..119999999"; + } + default "2"; + } + + // Version + typedef mld_Ver { + type enumeration { + enum v1 { + value 1; + description "Version 1"; + } + enum v2 { + value 2; + description "Version 2"; + } + } + default "v2"; + } + + // Event History Buffer Type + typedef mldsnoop_EhType { + type enumeration { + enum mld-snoop-internal { + value 0; + description "Represents Internal Events For MLD-Snooping"; + } + enum mfdm { + value 1; + description "MFDM Events for MLD-Snooping"; + } + enum mfdm-sum { + value 2; + description "MFDM-SUM Events for MLD-Snooping"; + } + enum rib { + value 3; + description "RIB Events for MLD-Snooping"; + } + enum vlan { + value 4; + description "VLAN/BD Events for MLD-Snooping"; + } + enum vlan-events { + value 5; + description "VLAN/BD events for MLD-Snooping"; + } + enum vpc { + value 6; + description "VPC Events for MLD-Snooping"; + } + } + } + + // Mld snooping global config enable/disable + typedef mldsnoop_MldSnoopGl { + type boolean; + default "false"; + } + + // Mld snooping per vlan enable/disable + typedef mldsnoop_MldSnoopVlan { + type boolean; + default "true"; + } + + // Route Map Name + typedef mldsnoop_RtMapType { + type string { + length "0..63"; + } + } + + // Event History Buffer size in Text + typedef mldsnoop_Size { + type uint32 { + range "0..4 | 5..119999999"; + } + default "0"; + } + + // v2 report suppression + typedef mldsnoop_V2ReportSuppr { + type boolean; + default "false"; + } + + // Version + typedef mldsnoop_Ver { + type enumeration { + enum v1 { + value 1; + description "Version 1"; + } + enum v2 { + value 2; + description "Version 2"; + } + } + default "v2"; + } + + // Maintenance Mode Action Status Type + typedef mmode_MaintModeActionStatusType { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum success { + value 1; + description "SUCCESS"; + } + enum failed { + value 2; + description "Failed"; + } + enum gen-profile { + value 3; + description "Generate Profile"; + } + enum confirm-profile { + value 4; + description "Confirm Profile"; + } + enum taking-snapshot { + value 5; + description "Taking Snapshot"; + } + enum applying-config { + value 6; + description "Applying Profile Config"; + } + enum waiting-delay { + value 7; + description "Waiting Delay"; + } + } + default "unknown"; + } + + // Maintenance Mode Action Type + typedef mmode_MaintModeActionType { + type enumeration { + enum normal { + value 0; + description "Nonmal"; + } + enum maintenance { + value 1; + description "Maintenance"; + } + enum maintenance-shutdown { + value 2; + description "Maintenance Shutdown"; + } + enum maintenance-dont-generate-profile { + value 3; + description "Maintenance Dont generate profile"; + } + enum normal-dont-generate-profile { + value 4; + description "Normal Dont generate profile"; + } + } + default "normal"; + } + + // Maintenance Mode Type + typedef mmode_MaintModeType { + type enumeration { + enum normal { + value 0; + description "Normal"; + } + enum maintenance { + value 1; + description "Maintenance"; + } + enum unplanned-maintenance { + value 2; + description "Unplanned Maintenance"; + } + } + default "normal"; + } + + // Maintenance Profile Type + typedef mmode_MaintProfileType { + type enumeration { + enum normal-mode { + value 0; + description "Normal-mode"; + } + enum maintenance-mode { + value 1; + description "Maintenance-mode"; + } + } + default "normal-mode"; + } + + // Timeout Interval + typedef mmode_TimeoutInterval { + type uint16 { + range "5..65535"; + } + } + + typedef mo_TStamp { + type union { + type string; + type uint64; + } + default "0"; + } + + typedef mon_AdminState { + type enumeration { + enum enabled { + value 1; + } + enum disabled { + value 2; + } + } + default "enabled"; + } + + typedef mon_Transport { + type enumeration { + enum none { + value 0; + } + enum tcp { + value 1; + } + enum udp { + value 2; + } + enum all { + value 3; + } + enum tls { + value 4; + } + } + default "none"; + } + + // Database type + typedef monitor_DbT { + type enumeration { + enum ipep-resolve { + value 1; + description "IP endpoint resolution database"; + } + } + default "ipep-resolve"; + } + + // Destination encapsulation + typedef monitor_DestEncapT { + type enumeration { + enum gre { + value 1; + description "Gre encapsulated"; + } + } + default "gre"; + } + + // Direction, to figure out the direction in which the traffic + // is monitored on the span source + typedef monitor_Direction { + type enumeration { + enum in { + value 1; + description "Incoming"; + } + enum out { + value 2; + description "Outgoing"; + } + enum both { + value 3; + description "Both"; + } + enum none { + value 4; + description "None"; + } + } + default "none"; + } + + // ErSpan Version + typedef monitor_ErSpanVer { + type enumeration { + enum ver2 { + value 2; + description "Version 2"; + } + enum ver3 { + value 3; + description "Version 3"; + } + } + default "ver3"; + } + + // Flow id + typedef monitor_FlowId { + type uint16 { + range "1..1023"; + } + default "1"; + } + + // Mode + typedef monitor_Mode { + type enumeration { + enum access { + value 1; + description "Access"; + } + enum fabric { + value 2; + description "Fabric"; + } + } + default "access"; + } + + // Mtu + typedef monitor_Mtu { + type uint16 { + range "64..1518"; + } + default "1518"; + } + + // Operational state + typedef monitor_OperSt { + type enumeration { + enum up { + value 1; + description "Up"; + } + enum down { + value 2; + description "Down"; + } + enum failed { + value 3; + description "Failed"; + } + } + default "down"; + } + + // Session id + typedef monitor_SessionId { + type uint8 { + range "1..48"; + } + } + + // Source id + typedef monitor_SrcId { + + type uint16 { + range "1..65535"; + } + } + + // Source type + typedef monitor_SrcT { + type enumeration { + enum port { + value 1; + description "Port"; + } + enum encap { + value 2; + description "Encap"; + } + enum port-encap { + value 3; + description "Port and encap"; + } + } + default "port"; + } + + typedef mpls_OperSt { + type enumeration { + enum down { + value 0; + description "Down - Administrative State of Interface"; + } + enum up { + value 1; + description "Up - Administrative State of Interface"; + } + } + default "up"; + } + + // LDP advertisement prefix/peer ACL type + typedef mplsldp_AclType { + type string { + length "1..128"; + } + description "Prefix list to be used"; + } + + // Remote binding label + typedef mplsldp_BindingSummaryPeerType { + type string; + default "all"; + description "Binding summary peer value"; + } + + // Capability description + typedef mplsldp_CapabilityDescription { + type string { + length "4..40"; + } + description "LDP Capabilities Description"; + } + + // LDP to IGP sync delay time + typedef mplsldp_DelayTime { + type uint16 { + range "0..60"; + } + default "0"; + description "LDP to IGP sync achieved notification delay time"; + } + + // down neighbor status + typedef mplsldp_DownNeighborStatus { + type enumeration { + enum deletion_pending { + value 0; + description "Down Neighbor Status - Deletion Pending"; + } + enum waiting_for_reconnection { + value 1; + description "Down Neighbor Status - Waiting for Reconnection"; + } + enum recovering { + value 2; + description "Down Neighbor Status - Recovering"; + } + } + default "deletion_pending"; + description "LDP Down Neighbor Status"; + } + + // configuration parameters feature type + typedef mplsldp_FeatureType { + type string { + length "0..128"; + } + description "Supported feature types"; + } + + // configuration parameters feature set manager state type + typedef mplsldp_FeaturesetManagerStateType { + type string { + length "0..128"; + } + description "Feature set manager state"; + } + + // graceful restart forwarding hold time + typedef mplsldp_FwdHoldTime { + type uint16 { + range "30..600"; + } + default "120"; + description "LDP forwarding state holding time. Specifies the amount of time the MPLS forwarding state should be preserved after the control plane restarts."; + } + + // graceful restart state type + typedef mplsldp_GrStateType { + type enumeration { + enum enabled { + value 1; + description "Graceful restart is enabled"; + } + enum disabled { + value 2; + description "Graceful restart is disabled"; + } + } + default "disabled"; + description "Graceful Restart State"; + } + + // hello holdtime + typedef mplsldp_HelloHoldTime { + type uint16 { + range "1..65535"; + } + default "15"; + description "LDP discovery Hello holdtime"; + } + + // LDP IGP sync igp enable type + typedef mplsldp_IgpEnabledType { + type string { + length "0..255"; + } + description "IGP that Enabled Sync"; + } + + // initial backoff time + typedef mplsldp_InitBackoff { + type uint32 { + range "5..2147483"; + } + default "15"; + description "Initial session backoff time (seconds)"; + } + + // discovery interface enable status + typedef mplsldp_InterfaceEnableStatus { + type enumeration { + enum unknown { + value 0; + description "Interface Enable Status is unknown"; + } + enum Interface_Config { + value 1; + description "Interface Enable Status is Interface Config"; + } + enum IGP_Config { + value 2; + description "Interface Enable Status is IGP Config"; + } + enum Interface,_IGP_Config { + value 3; + description "Interface Enable Status is Interface, IGP Config"; + } + } + default "unknown"; + description "Discovery Interface Enable Status"; + } + + // discovery interface status + typedef mplsldp_InterfaceStatus { + type enumeration { + enum xmit/recv { + value 1; + description "Interface Status is xmit/recv"; + } + enum xmit { + value 2; + description "Interface Status is xmit"; + } + } + default "xmit"; + description "Discovery/Targeted Interface Status"; + } + + // discovery detail interface string type + typedef mplsldp_InterfaceString { + type string { + length "1..40"; + } + description "LDP basic discovery interface name"; + } + + // discovery detail source interface clients type + typedef mplsldp_IntfClients { + type enumeration { + enum Unknown { + value 0; + description "Discovery Interface Clients - Unknown"; + } + enum IPv4,_mLDP { + value 1; + description "Discovery Interface Clients - IPv4, mLDP"; + } + enum IPv4 { + value 2; + description "Discovery Interface Clients - IPv4"; + } + enum mLDP { + value 3; + description "Discovery Interface Clients - mLDP"; + } + } + default "Unknown"; + description "Discovery Interface Clients"; + } + + // hello interval time + typedef mplsldp_IntvlTime { + type uint16 { + range "1..65535"; + } + default "5"; + description "LDP discovery Hello interval"; + } + + typedef mplsldp_LabelAdvertisementModeType { + type string { + length "1..32"; + } + description "Label advertisement mode"; + } + + // Label allocate type + typedef mplsldp_LblAllocT { + type enumeration { + enum all-routes { + value 1; + description "Allocate local labels for all routes"; + } + enum host-routes { + value 2; + description "Allocate local labels for host routes only (default)"; + } + enum prefix-list { + value 3; + description "Specify a prefix-list for local label filtering"; + } + } + default "host-routes"; + } + + // LDP IGP sync peer reachable type + typedef mplsldp_LdpIgpPeerStatusType { + type enumeration { + enum peer_reachable { + value 1; + description "LDP IGP Synchronization Peer Reachable Status - Peer reachable"; + } + enum peer_not_reachable { + value 2; + description "LDP IGP Synchronization Peer Reachable Status - Peer not reachable"; + } + } + default "peer_not_reachable"; + description "LDP IGP Synchronization Peer Reachable Status"; + } + + // LDP IGP sync LDP status type + typedef mplsldp_LdpIgpStatusType { + type enumeration { + enum LDP_configured { + value 1; + description "LDP is configured"; + } + enum LDP_not_configured { + value 2; + description "LDP is not configured"; + } + } + default "LDP_not_configured"; + description "LDP IGP Synchronization Status"; + } + + // LDP IGP sync enable status type + typedef mplsldp_LdpIgpSyncEnableType { + type enumeration { + enum LDP_IGP_Synchronization_enabled { + value 1; + description "LDP-IGP Synchronization enabled"; + } + enum LDP_IGP_Synchronization_not_enabled { + value 2; + description "LDP-IGP Synchronization not enabled"; + } + } + default "LDP_IGP_Synchronization_not_enabled"; + description "LDP IGP Synchronization Enable Status"; + } + + // LDP IGP sync status type + typedef mplsldp_LdpIgpSyncStatusType { + type enumeration { + enum sync_achieved { + value 1; + description "LDP IGP Synchronization Sync Status - Sync achieved"; + } + enum sync_not_achieved { + value 2; + description "LDP IGP Synchronization Sync Status - Sync not achieved"; + } + } + default "sync_not_achieved"; + description "LDP IGP Synchronization Sync Status"; + } + + // discovery detail source interface LDP password status + typedef mplsldp_LdpPasswordStatus { + type string { + length "5..255"; + } + description "LDP password status information"; + } + + // LDP prefix list type + typedef mplsldp_LdpPrefixListName { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "LDP prefix list information"; + } + + // Local binding tag + typedef mplsldp_LocalBindingTag { + type string { + length "0..128"; + } + description "Local binding tag value"; + } + + // LDP local label filtering specifications type + typedef mplsldp_LocalLabelFilteringSpecifications { + type string { + length "5..32"; + } + description "LDP Local Label Filtering Specifications"; + } + + // configuration parameters loop detection type + typedef mplsldp_LoopDetectionType { + type enumeration { + enum Off { + value 1; + description "LDP Loop Detection is Off"; + } + enum On { + value 2; + description "LDP Loop Detection is On"; + } + } + default "Off"; + description "LDP Loop Detection Enabled Status"; + } + + // maximum backoff time + typedef mplsldp_MaxBackoff { + type uint32 { + range "5..2147483"; + } + default "120"; + description "Maximum session backoff time (seconds)"; + } + + // graceful restart neighbor liveness time + typedef mplsldp_NbrLiveTime { + type uint16 { + range "5..300"; + } + default "120"; + description "LDP Neighbor-Liveness time. Specifies the amount of time a router should wait for an LDP session to be reestablished."; + } + + // neighbor clients type + typedef mplsldp_NeighborPeerClientType { + type string { + length "5..255"; + } + description "LDP Neighbor Clients"; + } + + // neighbor peer protection state + typedef mplsldp_NeighborPeerProtectionState { + type enumeration { + enum None { + value 0; + description "Peer Protection State - None"; + } + enum Incomplete { + value 1; + description "Peer Protection State - Incomplete"; + } + enum Ready { + value 2; + description "Peer Protection State - Ready"; + } + enum Protecting { + value 3; + description "Peer Protection State - Protecting"; + } + } + default "None"; + description "LDP Neighbor Peer Protection State"; + } + + // configuration parameters protocol type + typedef mplsldp_ParametersProtocolType { + type enumeration { + enum LDP_for_targeted_sessions { + value 1; + description "LDP for targeted sessions"; + } + enum TDP_for_directed_sessions { + value 2; + description "TDP for directed sessions"; + } + } + default "LDP_for_targeted_sessions"; + description "LDP Configuration Parameters - Protocol Type"; + } + + // neighbor peer state type + typedef mplsldp_PeerStateType { + type enumeration { + enum non-ex { + value 0; + description "Property Type - non-ex"; + } + enum unsol_op_pdg { + value 1; + description "Property Type - unsol op pdg"; + } + enum deferred { + value 2; + description "Property Type - deferred"; + } + enum estab { + value 3; + description "Property Type - estab"; + } + enum lib_exp_wait { + value 4; + description "Property Type - lib exp wait"; + } + enum destroyed { + value 5; + description "Property Type - destroyed"; + } + } + default "non-ex"; + description "LDP Neighbor Peer State"; + } + + // Session protection duration + typedef mplsldp_ProtectDuration { + type uint32 { + range "0..2147483"; + } + description "LDP session protection holdup time in seconds"; + } + + // neighbor protocol state type + typedef mplsldp_ProtocolStateType { + type enumeration { + enum Non-existent { + value 0; + description "Property Type - Non-existent"; + } + enum Opening_Xport { + value 1; + description "Property Type - Opening Xport"; + } + enum Init_sent { + value 2; + description "Property Type - Init sent"; + } + enum Init_rcvd_actv { + value 3; + description "Property Type - Init rcvd actv"; + } + enum Role_pasv { + value 4; + description "Property Type - Role pasv"; + } + enum Init_rcvd_pasv { + value 5; + description "Property Type - Init rcvd pasv"; + } + enum Oper { + value 6; + description "Property Type - Oper"; + } + enum Final_xmitwait { + value 7; + description "Property Type - Final xmitwait"; + } + } + default "Non-existent"; + description "LDP Protocol State Type"; + } + + // LDP logging rate limit + typedef mplsldp_RateLimit { + type uint16 { + range "0..60"; + } + default "0"; + description "LDP logging rate limit"; + } + + // graceful restart recovery time + typedef mplsldp_RecoveryTime { + type uint16 { + range "15..600"; + } + default "120"; + description "LDP maximum recovery time. Specifies the amount of time a router should hold stale label-FEC bindings after an LDP session has been reestablished."; + } + + // Remote binding tag + typedef mplsldp_RemoteBindingTag { + type string { + length "0..128"; + } + description "Remote binding tag value"; + } + + // LDP password option sequence number + typedef mplsldp_SeqNum { + type uint16 { + range "1..32767"; + } + description "Sequence number of the LDP password option"; + } + + // LDP session hold time + typedef mplsldp_SessionHoldTime { + type uint16 { + range "15..65535"; + } + default "180"; + description "LDP session holdtime"; + } + + // discovery detail targeted hello identifier + typedef mplsldp_TargetedHelloIdentifier { + type string { + length "5..128"; + } + description "Targeted hello identifier name"; + } + + // discovery targeted interface state + typedef mplsldp_TargetedInterfaceState { + type enumeration { + enum active { + value 1; + description "Targeted Hello State - active"; + } + enum passive { + value 2; + description "Targeted Hello State - passive"; + } + enum active/passive { + value 3; + description "Targeted Hello State - active/passive"; + } + } + default "active"; + description "Targeted Hello Interface State"; + } + + // targeted hello holdtime + typedef mplsldp_TgtHoldTime { + type uint16 { + range "1..65535"; + } + default "90"; + description "LDP discovery Targeted Hello holdtime"; + } + + // targeted hello interval time + typedef mplsldp_TgtIntvlTime { + type uint16 { + range "1..65535"; + } + default "10"; + description "LDP discovery Targeted Hello interval"; + } + + // configuration parameters - boolean type + typedef mplsldp_enableDisableFlagType { + type enumeration { + enum enabled { + value 1; + description "Property Type - enabled"; + } + enum disabled { + value 2; + description "Property Type - disabled"; + } + } + default "disabled"; + description "Enable/Disable Flag Type"; + } + + // Address family type + typedef mplsstatic_AfT { + type enumeration { + enum ipv4-ucast { + value 1; + description "IPv4 Unicast Address Family"; + } + enum ipv6-ucast { + value 2; + description "IPv6 Unicast Address Family"; + } + } + default "ipv4-ucast"; + } + + typedef mplsstatic_InLabelVal { + type uint32 { + range "16..471804"; + } + default "16"; + } + + typedef mplsstatic_LspName { + type string; + } + + typedef mplsstatic_OutLabelVal { + type uint32 { + range "0..1048575"; + } + } + + typedef mplsstatic_OutLblStack { + type string; + } + + // MPLS strip mode + typedef mplsstripcl_StripclModeType { + type enumeration { + enum none { + value 1; + description "MPLS strip none"; + } + enum dot1q { + value 2; + description "MPLS strip mode dot1q"; + } + } + default "none"; + } + + // Event History Buffer Type + typedef mrib_EhType { + type enumeration { + enum cli { + value 0; + description "cli events for mrib"; + } + enum mdt { + value 1; + description "MDT events for mrib"; + } + enum mfdmDebugs { + value 2; + description "MFDM debugs events for mrib"; + } + enum mfdmEvents { + value 3; + description "MFDM-events events for mrib"; + } + enum mfdmStats { + value 4; + description "MFDM stats events for mrib"; + } + enum notyClients { + value 5; + description "notify-clients events for mrib"; + } + enum rib { + value 6; + description "RIB events for mrib"; + } + enum ribSum { + value 7; + description "rib-summary events for mrib"; + } + enum urib { + value 8; + description "urib-debugs events for mrib"; + } + enum vrf { + value 9; + description "VRF events for mrib"; + } + enum nbm { + value 10; + description "NBM events for mrib"; + } + enum objstoreError { + value 11; + description "Objstore error events for mrib"; + } + enum objstoreEvents { + value 12; + description "Objstore events for mrib"; + } + } + } + + // Administrative state + typedef mrib_HoldAdminSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "enabled"; + } + + // Multicast Holddown type + typedef mrib_HoldDownType { + type uint16 { + range "0..3600"; + } + default "270"; + } + + typedef mrib_LogType { + type enumeration { + enum none { + value 0; + description "None"; + } + enum rout { + value 1; + description "Configure for logging level routing"; + } + enum routip { + value 2; + description "Configure for logging level routing ip"; + } + enum routipv4 { + value 3; + description "Configure for logging level routing ipv4"; + } + enum mrib { + value 4; + description "Configure for logging level mrib"; + } + } + default "none"; + } + + typedef mrib_LvlType { + type uint16 { + range "0..7"; + } + default "5"; + } + + // Mask-len + typedef mrib_MaskLen { + type uint32 { + range "0..32"; + } + } + + typedef mrib_MfdmSize { + type uint32 { + range "50..500"; + } + default "50"; + } + + typedef mrib_MfdmType { + type enumeration { + enum none { + value 0; + description "None"; + } + enum mfdmip { + value 1; + description "Configure for mfdm-buffer-route ip"; + } + enum mfdmipv4 { + value 2; + description "Configure for mfdm-buffer-route ipv4"; + } + } + default "none"; + } + + // Administrative state + typedef mrib_ModeAdminSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "disabled"; + } + + // Multipath Mode + typedef mrib_MultipathMode { + type enumeration { + enum none { + value 1; + description "multiple path none"; + } + enum nbm { + value 2; + description "multiple path nbm"; + } + enum null { + value 3; + description "multiple path resilient"; + } + enum s-g-hash { + value 4; + description "SG hash"; + } + enum legacy { + value 5; + description "legacy mode"; + } + enum s-g-hash-next-hop { + value 6; + description "SG hash next-hop based"; + } + } + default "null"; + } + + // UDP PORT + typedef mrib_PortId { + type uint32 { + range "0..65535"; + } + } + + // Multicast Resilient type + typedef mrib_ResilientType { + type boolean; + default "false"; + } + + // Event History Buffer size in Text/kb + typedef mrib_Size { + type uint32 { + range "0..4 | 5..4294967295"; + } + default "3"; + } + + // Sr ModeType + typedef mrib_SrModeType { + type string { + pattern "regular|fast-pass"; + } + } + + typedef mrib_TraceCountType { + type uint32 { + range "0..4294967295"; + } + } + + // Asn number + typedef msdp_Asn { + type string { + pattern "((none)|([1-9]{1}[0-9]{0,8}|[1-3]{1}[0-9]{1,9}|4{1}[0-1]{1}[0-9]{8}|4{1}2{1}[0-8]{1}[0-9]{7}|4{1}2{1}9{1}[0-3]{1}[0-9]{6}|4{1}2{1}9{1}4{1}[0-8]{1}[0-9]{5}|4{1}2{1}9{1}4{1}9{1}[0-5]{1}[0-9]{4}|4{1}2{1}9{1}4{1}9{1}6{1}[0-6]{1}[0-9]{3}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}[0-1]{1}[0-9]{2}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}2{1}[0-8]{1}[0-9]{1}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}2{1}9{1}[0-5]{1})|(([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\\.([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])))"; + } + default "none"; + } + + // Authentication key + typedef msdp_AuthKey { + type string; + } + + // Authentication type + typedef msdp_AuthT { + type enumeration { + enum none { + value 0; + description "No authentication"; + } + enum md5 { + value 1; + description "MD5 authentication"; + } + } + default "none"; + } + + // Database type + typedef msdp_DbT { + type enumeration { + enum route { + value 0; + description "Route database"; + } + enum source { + value 1; + description "Source database"; + } + } + } + + // Domain Control + typedef msdp_DomCtrl { + + type string; + } + + // Event History Buffer Type + typedef msdp_EhType { + type enumeration { + enum cli { + value 0; + description "cli events for msdp"; + } + enum events { + value 1; + description "Events events for msdp"; + } + enum msdpInternal { + value 2; + description "MSDP internal events for msdp"; + } + enum routes { + value 3; + description "Routes events for msdp"; + } + enum tcp { + value 4; + description "TCP events for msdp"; + } + } + } + + // Mesh Group Name + typedef msdp_GrpNameT { + type string { + length "1..255"; + } + } + + // Keepalive Interval + typedef msdp_KaIntvl { + type uint16 { + range "1..60"; + } + default "60"; + } + + // Keepalive Timeout + typedef msdp_KaTimeout { + type uint16 { + range "1..90"; + } + default "90"; + } + + // Reason for last reset + typedef msdp_LastResetT { + type string { + length "0..255"; + } + } + + typedef msdp_LogType { + type enumeration { + enum log { + value 1; + description "Configure for logging level msdp"; + } + enum logip { + value 2; + description "Configure for logging level ip msdp"; + } + } + default "log"; + } + + typedef msdp_LvlType { + type uint16 { + range "0..7"; + } + default "5"; + } + + // Max Group Limit + typedef msdp_MaxGrpLimit { + type uint32 { + range "0..4294967295"; + } + default "4294967295"; + } + + // Operational state + typedef msdp_OperSt { + type enumeration { + enum inactive { + value 0; + description "Inactive"; + } + enum down { + value 1; + description "Down"; + } + enum admin-down { + value 2; + description "Admin-Down"; + } + enum connecting { + value 3; + description "Connecting"; + } + enum listening { + value 4; + description "Listening"; + } + enum established { + value 5; + description "Established"; + } + } + default "inactive"; + } + + typedef msdp_PrefixT { + type string { + pattern ".*[!-~]{0,63}.*"; + } + } + + // Reconnect Interval + typedef msdp_ReConnIntvl { + type uint16 { + range "1..60"; + } + default "10"; + } + + // Event History Buffer size in Text/kb + typedef msdp_Size { + type uint32 { + range "0..4 | 5..4294967295"; + } + default "3"; + } + + typedef msdp_Source { + type enumeration { + enum none { + value 0; + description "Default redistribution"; + } + enum pflist { + value 1; + description "Prefix-list based redistribution"; + } + enum rtmap { + value 2; + description "Route-Map based redistribution"; + } + } + default "none"; + } + + // Source Announcement interval + typedef msdp_SrcActiveMsgIntvl { + type uint16 { + range "60..65535"; + } + default "60"; + } + + // Source Announcement Limit + typedef msdp_SrcActiveMsgLimit { + type uint32 { + range "0..4294967295"; + } + default "4294967295"; + } + + typedef mvpn_DataMtuVal { + type uint16 { + range "576..9192"; + } + default "1376"; + } + + // Hello Interval in msecs + typedef mvpn_PimHelloIntvl { + type uint32 { + range "1..18724286"; + } + default "30000"; + } + + // Join Prune Interval in secs + typedef mvpn_PimJPIntvl { + type uint32 { + range "60..65520"; + } + default "60"; + } + + // Route Map Name + typedef mvpn_RtMapType { + type string { + length "0..63"; + } + } + + typedef naming_Descr { + type string { + length "0..128"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + } + + typedef naming_Descr1024 { + type string { + length "0..1024"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + } + + typedef naming_Id { + type uint64; + } + + typedef naming_Name { + type string { + length "0..16"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + } + + typedef naming_Name256 { + type string { + length "0..256"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + } + + // CREATION DELAY BATCHOUT + typedef nat_BatchTimeout { + type enumeration { + enum 0 { + value 0; + description "0 milliseconds delay"; + } + enum 250 { + value 250; + description "250 milliseconds delay"; + } + enum 500 { + value 500; + description "500 milliseconds delay"; + } + enum 750 { + value 750; + description "750 milliseconds delay"; + } + enum 1000 { + value 1000; + description "1000 milliseconds delay"; + } + } + default "1000"; + } + + // Config Error Inst MO + typedef nat_ConfigErrNat { + type enumeration { + enum noerror { + value 0; + description "No Erron Seen In Configuration"; + } + enum PoolInUse { + value 1; + description "Pool In Use Delete Failed"; + } + enum TcpTcamNotCarved { + value 2; + description "Tcp Tcam Not Carved Config Failed"; + } + enum ConfigConflict { + value 3; + description "Conflicting with existing config"; + } + enum IfConfigError { + value 4; + description "Nat interface config error"; + } + enum HwProgFailureError { + value 5; + description "Hardware programming failed for nat config"; + } + } + } + + typedef nat_FinSynTimeout { + type int32 { + range "-1..172800"; + } + default "60"; + } + + // IP NAT MO INSIDE/OUTSIDE + typedef nat_InterfaceType { + type enumeration { + enum inside-source-static { + value 0; + description "inside source static"; + } + enum outside-source-static { + value 1; + description "outside source static"; + } + enum inside-source-dynamic { + value 2; + description "inside source dynamic"; + } + enum outside-source-dynamic { + value 3; + description "outside source dynamic"; + } + } + } + + typedef nat_NatMaxTranslation { + type uint32 { + range "1..1023"; + } + default "80"; + } + + typedef nat_NatMaxTranslationAllHost { + type uint32 { + range "0..1023"; + } + default "0"; + } + + typedef nat_NatPoolname { + type string { + length "1..64"; + } + } + + typedef nat_NatPrefixType { + type uint32 { + range "0..32"; + } + default "0"; + } + + typedef nat_NatTimeLeft { + type uint32 { + range "0..172800"; + } + default "0"; + } + + typedef nat_NatTimeout { + type uint32 { + range "60..172800"; + } + default "3600"; + } + + typedef nat_NatTrafficDir { + type enumeration { + enum ip-nat-invalid { + value 0; + description "ip nat invalid interface"; + } + enum ip-nat-inside { + value 1; + description "ip nat inside interface"; + } + enum ip-nat-outside { + value 2; + description "ip nat outside interface"; + } + } + } + + // protcol type + typedef nat_ProtocolType { + type enumeration { + enum any { + value 0; + description "none"; + } + enum tcp { + value 1; + description "tcp"; + } + enum udp { + value 2; + description "udp"; + } + } + } + + typedef nat_SamplingTimeout { + type uint32 { + range "120..172800"; + } + default "43200"; + } + + typedef nat_booltype { + type boolean; + default "false"; + } + + // port + typedef nat_port { + type uint32 { + range "0..65535"; + } + } + + typedef nat_stringtype { + type string; + } + + typedef nat_twicenatgroup { + type uint32 { + range "0..1024"; + } + default "0"; + } + + typedef nbm_nbmBwRecoveryEn { + type enumeration { + enum DISABLED { + value 0; + description "Disabled"; + } + enum ENABLED { + value 1; + description "Enabled"; + } + } + default "ENABLED"; + } + + typedef nbm_nbmBwUnitEn { + type enumeration { + enum UNSPECIFIED { + value 0; + description "Invalid Value"; + } + enum KBPS { + value 1; + description "KiloBits Per Second"; + } + enum MBPS { + value 2; + description "MegaBits Per Second"; + } + enum GBPS { + value 3; + description "GigaBits Per Second"; + } + } + default "GBPS"; + } + + typedef nbm_nbmDisEn { + type enumeration { + enum DISABLED { + value 0; + description "Disabled"; + } + enum ENABLED { + value 1; + description "Enabled"; + } + } + default "ENABLED"; + } + + typedef nbm_nbmEndpointRole { + type enumeration { + enum UNKNOWN { + value 0; + description "Unspecified Role"; + } + enum ARP { + value 1; + description "Learned via ARP"; + } + enum RECEIVER { + value 2; + description "Learned as a Receiver"; + } + enum RECEIVER_ARP { + value 3; + description "Learned as a Receiver, as well as from ARP"; + } + enum SENDER { + value 4; + description "Learned as a Sender"; + } + enum SENDER_ARP { + value 5; + description "Learned as a Sender, as well as from ARP"; + } + enum SENDER_RECEIVER { + value 6; + description "Learned as a Sender, as well as a RECEIVER"; + } + enum SENDER_RECEIVER_ARP { + value 7; + description "Learned as a Sender, as well as a RECEIVER, and also from ARP"; + } + } + default "UNKNOWN"; + } + + typedef nbm_nbmFaultType { + type enumeration { + enum NONE { + value 0; + description "No fault"; + } + enum POLICYDENIED { + value 1; + description "Denied because of policy"; + } + enum POLICYDENIEDSENDER { + value 2; + description "Denied because of Sender policy"; + } + enum POLICYDENIEDRECEIVER { + value 3; + description "Denied because of Receiver policy"; + } + enum RESOURCEUNAVAIL { + value 4; + description "Resource unavailable"; + } + enum POLICERUNAVAIL { + value 5; + description "Policer unavailable`"; + } + enum BWUNAVAIL { + value 6; + description "Bandwidth unavailable"; + } + enum EXTBWUNAVAIL { + value 7; + description "Ext Bandwidth unavailable"; + } + enum FLOWPOLUNAVAIL { + value 8; + description "Flow policy unavailable"; + } + enum NOUCASTROUTE { + value 9; + description "No Unicast route"; + } + enum FLOWLIMITREACHED { + value 10; + description "Flow limit reached"; + } + enum EXTFLOWLIMITREACHED { + value 11; + description "Flow limit reached for external link"; + } + enum EXTPOLICYDENIED { + value 12; + description "Denied because of policy for external link"; + } + enum EXTPOLICERUNAVAIL { + value 13; + description "Policer unavailable for external link"; + } + enum BADIFSTATE { + value 14; + description "Interface is Down or in wrong VRF"; + } + enum FLOWPENDINGDEL { + value 15; + description "Flow is pending to delete"; + } + enum EXTTCAMNOTCARVED { + value 16; + description "Ext Tcam not carved"; + } + enum TCAMNOTCARVED { + value 17; + description "Tcam not carved"; + } + enum RES_BW_NO_RECEIVER { + value 18; + description "Reserve bandwidth when no receiver"; + } + } + default "NONE"; + } + + typedef nbm_nbmFlowOperEn { + type enumeration { + enum NOOP { + value 0; + description "No Operation"; + } + enum ROUTE_ADD { + value 1; + description "Add a new Route"; + } + enum ROUTE_DEL { + value 2; + description "Delete Existing Route"; + } + enum UPD_ADD_OIF { + value 3; + description "Add a new OIF to existing Route"; + } + enum UPD_DEL_OIF { + value 4; + description "Remove an OIF from an existing Route"; + } + enum LOC_ADD_OIF { + value 5; + description "Update Local OIF ADD"; + } + enum LOC_DEL_OIF { + value 6; + description "Update Local OIF DEL"; + } + enum UPD_IIF { + value 7; + description "Update IIF"; + } + enum DENY_POLICY_SRC { + value 8; + description "Applied Sender Deny Policy"; + } + enum SRC_DISCOVERY { + value 9; + description "External Src Discovery"; + } + enum SRC_DISC_STOP { + value 10; + description "Stop Ext Src Discovery"; + } + enum 11 { + value 11; + description "Reserved for Future"; + } + enum 12 { + value 12; + description "Reserved for Future"; + } + enum 13-UNUSED { + value 13; + description "FRIDAY!!!"; + } + enum 14 { + value 14; + description "Reserved for Future"; + } + enum ALLOW_POLICY_SRC { + value 15; + description "Applied Sender Allow Policy"; + } + enum DENY_POLICY_RCV { + value 16; + description "Applied Rcv Deny Policy"; + } + enum ALLOW_POLICY_RCV { + value 17; + description "Applied Rcv Allow Policy"; + } + enum 18 { + value 18; + description "Reserved for Future"; + } + enum 19 { + value 19; + description "Reserved for Future"; + } + enum 20 { + value 20; + description "Reserved for Future"; + } + } + default "NOOP"; + } + + // Flow Policer Enable / Disable + typedef nbm_nbmFlowPolicerEn { + type enumeration { + enum DISABLED { + value 0; + description "Disabled"; + } + enum ENABLED { + value 1; + description "Enabled"; + } + } + default "ENABLED"; + } + + typedef nbm_nbmGroupPriority { + type enumeration { + enum CRITICAL { + value 4; + description "Critical Priority Group Range"; + } + enum LOW { + value 0; + description "Low Priority Group Range"; + } + } + default "LOW"; + } + + typedef nbm_nbmGroupRangeType { + type enumeration { + enum ASM { + value 0; + description "ASM Range"; + } + enum SSM { + value 1; + description "SSM Range"; + } + } + default "ASM"; + } + + typedef nbm_nbmHostPolicySeq { + type uint32 { + range "1..19999999"; + } + } + + typedef nbm_nbmIf { + type uint32; + } + + typedef nbm_nbmIpAddr { + type address_Ip; + } + + typedef nbm_nbmIpMask { + type uint16 { + range "0..32"; + } + } + + typedef nbm_nbmLinkRole { + type enumeration { + enum NONE { + value 255; + description "No link configuration"; + } + enum EXTERNAL_LINK { + value 0; + description "WAN Link"; + } + enum FABRIC_LINK { + value 1; + description "Fabric Facing Link"; + } + } + default "NONE"; + } + + typedef nbm_nbmMacAddr { + type address_Mac; + } + + typedef nbm_nbmMcastIpAddr { + type address_Ip; + } + + typedef nbm_nbmNoYes { + type enumeration { + enum NO { + value 0; + description "Not TRUE"; + } + enum YES { + value 1; + description "This said condition is TRUE"; + } + enum NA { + value 2; + description "The field is not applicable"; + } + } + default "NO"; + } + + typedef nbm_nbmOifOrigin { + type enumeration { + enum UNDEFINED { + value 0; + description "Undefined"; + } + enum PROTOCOL { + value 1; + description "Dynamic"; + } + enum API { + value 2; + description "Static"; + } + enum API_PROTOCOL { + value 3; + description "Both API and PROTOCOL"; + } + } + } + + typedef nbm_nbmOperationalMode { + type enumeration { + enum UNDEFINED { + value 0; + description "Pim Active Mode"; + } + enum PIM_ACTIVE { + value 1; + description "Pim Active Mode"; + } + enum PIM_PASSIVE { + value 2; + description "Pim Passive Mode"; + } + } + default "PIM_ACTIVE"; + } + + typedef nbm_nbmPermit { + type enumeration { + enum UNDEFINED { + value 0; + description "Undefined"; + } + enum DENIED { + value 1; + description "Denied"; + } + enum ALLOWED { + value 2; + description "Allowed"; + } + } + default "DENIED"; + } + + typedef nbm_nbmPolicyType { + type enumeration { + enum SENDER { + value 0; + description "Sender Policy"; + } + enum RECEIVER { + value 1; + description "Receiver Policy"; + } + enum PIM { + value 2; + description "Pim Policy"; + } + } + default "SENDER"; + } + + typedef nbm_nbmRcvOwner { + type enumeration { + enum IGMP { + value 0; + description "Known via IGMP Join"; + } + enum STATIC { + value 1; + description "Known via static config"; + } + enum PIM { + value 2; + description "Known via PIM Join"; + } + enum NBM-STATIC { + value 4; + description "Known via NBM Static API"; + } + enum MRIB-STATIC { + value 8; + description "Known via MRIB Static config"; + } + } + } + + // Address Type + typedef nd_AddrType { + + type string; + default "none"; + } + + // Adjacency MAC + typedef nd_AdjMac { + type address_Mac; + default "00:00:00:00:00:00"; + } + + // Adjacency operational state + typedef nd_AdjOperSt { + type enumeration { + enum unspecified { + value 0; + description "Unknown"; + } + enum incomplete { + value 1; + description "Incomplete"; + } + enum normal { + value 2; + description "Resolved"; + } + } + } + + // Aging interval for cached entries + typedef nd_AgingInterval { + type uint16 { + range "300..65535"; + } + default "1380"; + } + + // Config Error + typedef nd_ConfigErr { + type enumeration { + enum noerror { + value 0; + description "Unknown"; + } + enum managedConfigFlag { + value 1; + description "Config of ipv6 nd managed-config-flag failed"; + } + enum otherConfigFlag { + value 2; + description "Config of ipv6 nd other-config-flag failed"; + } + enum raIntvl { + value 3; + description "Config of ipv6 nd ra-interval failed"; + } + enum raLifetime { + value 4; + description "Config of ipv6 nd ra-lifetime failed"; + } + enum suppressRa { + value 5; + description "Config of ipv6 nd suppress-ra failed"; + } + enum macExtract { + value 6; + description "Config of ipv6 nd mac-extract failed"; + } + } + } + + // Config Error Inst MO + typedef nd_ConfigErrInst { + + type string; + } + + // DNSSeqNum + typedef nd_DNSSeqNum { + + type uint32 { + range "0..4294967295"; + } + } + + // DadAttempts + typedef nd_DadAttempts { + type uint16 { + range "0..15"; + } + default "1"; + } + + // Dadns-Interval + typedef nd_DadnsInverval { + type uint16 { + range "1000..6000"; + } + default "5000"; + } + + // Database type + typedef nd_DbT { + type enumeration { + enum adj { + value 1; + description "Adjacency Database"; + } + } + default "adj"; + } + + // Hop limit + typedef nd_HopLimit { + type uint8 { + range "0..255"; + } + default "64"; + } + + // Interface Controls + typedef nd_IfControl { + + type string; + default "redirects"; + } + + // Lifetime @@@ 0xffffffff == infinite + typedef nd_Lifetime { + + type uint32 { + range "0..4294967295"; + } + default "2592000"; + } + + // Solicit Accept Value + typedef nd_MacExtract { + type enumeration { + enum none { + value 0; + description "Default"; + } + enum nud-phase { + value 1; + description "Nud-phase"; + } + enum exclude-nud-phase { + value 2; + description "Exclude-nud-phase"; + } + } + default "none"; + } + + // Max pack cnt + typedef nd_MaxPacket { + type uint32 { + range "0..32767"; + } + default "1000"; + } + + // Neighbor solitication transmission Retry Count + // + // + // + // + // MTU + typedef nd_Mtu { + type uint16 { + range "1280..65535"; + } + default "1500"; + } + + // ND Cache Limit + typedef nd_NdCacheLimit { + type uint32 { + range "1..614400"; + } + default "196608"; + } + + // ND Cache Syslog Rate + typedef nd_NdCacheSyslogRate { + type uint32 { + range "1..1000"; + } + default "1"; + } + + // NDRouteLifeTime @@@ 0xffffffff == infinite + typedef nd_NdRtLifeTime { + + type uint32 { + range "0..4294967295"; + } + } + + // Neighbor solitication transmission interval + typedef nd_NsIntvl { + type uint32 { + range "1000..3600000"; + } + default "1000"; + } + + // OffListTimeout + typedef nd_OffListTimeout { + type uint16 { + range "180..1800"; + } + default "180"; + } + + // OperNDRouteLifeTime @@@ 0xffffffff == infinite + typedef nd_OperNdRtLifeTime { + + type uint32 { + range "0..4294967295"; + } + } + + // Prefix Controls + typedef nd_PfxControl { + + type string; + default "auto-cfg,on-link,advertise,router-address"; + } + + // Lifetime @@@ 0xffffffff == infinite + typedef nd_PrefLifetime { + + type uint32 { + range "0..4294967295"; + } + default "604800"; + } + + // Interval between RA transmissions + typedef nd_RaIntvl { + type uint32 { + range "4..1800"; + } + default "600"; + } + + // Interval between RA transmissions minimum + typedef nd_RaIntvlMin { + type uint16 { + range "3..1350"; + } + default "200"; + } + + // RA lifetime + typedef nd_RaLifetime { + type uint32 { + range "0..9000"; + } + default "1800"; + } + + // Reachable time + typedef nd_ReachableTime { + type uint32 { + range "0..3600000"; + } + default "0"; + } + + // Retransmit timer + typedef nd_RetransTimer { + + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + // Router Preference + typedef nd_RouterPreference { + type enumeration { + enum Medium { + value 0; + description "ICMPv6 nd router preference medium"; + } + enum High { + value 1; + description "ICMPv6 nd router preference high"; + } + enum Reserved { + value 2; + description "ICMPv6 nd router preference reserved"; + } + enum Low { + value 3; + description "ICMPv6 nd router preference low"; + } + } + } + + // Router Preference for command + typedef nd_RtPrefForCmd { + type enumeration { + enum unspecified { + value 0; + description "ICMPv6 nd router preference (if not specified)"; + } + enum low { + value 1; + description "ICMPv6 nd router preference low"; + } + enum medium { + value 2; + description "ICMPv6 nd router preference medium"; + } + enum high { + value 3; + description "ICMPv6 nd router preference high"; + } + } + } + + // Route Preference for ND Route specific + typedef nd_RtPrefForNdRt { + type enumeration { + enum low { + value 0; + description "ICMPv6 nd router preference low"; + } + enum medium { + value 1; + description "ICMPv6 nd router preference medium"; + } + enum high { + value 2; + description "ICMPv6 nd router preference high"; + } + enum unspecified { + value 3; + description "ICMPv6 nd router preference unspecified"; + } + } + default "unspecified"; + } + + // Solicit Accept Value + typedef nd_SolicitAcceptValue { + type enumeration { + enum none { + value 0; + description "Default"; + } + enum accept { + value 1; + description "Accept"; + } + enum no-accept { + value 2; + description "No-accept"; + } + } + default "none"; + } + + // SolicitProbeValue Range for probe interval is from 1 to 20. + // Special value zero (0) indicates no-probe. + typedef nd_SolicitProbeValue { + type uint16 { + range "0..20"; + } + default "5"; + } + + // Static Adjacency operational state + typedef nd_StAdjOperSt { + type enumeration { + enum down { + value 0; + description "Down"; + } + enum up { + value 1; + description "Incomplete"; + } + } + default "down"; + } + + // Static Adjacency operational state qualifier + typedef nd_StAdjOperStQual { + type enumeration { + enum subnet-mismatch { + value 1; + description "Subnet mismatch"; + } + enum invalid-mac { + value 2; + description "Invalid MAC"; + } + enum invalid-ip { + value 3; + description "Invalid IP"; + } + enum invalid-vrf { + value 4; + description "Invalid VRF"; + } + enum own-mac { + value 5; + description "Own MAC"; + } + enum if-down { + value 6; + description "Interface down"; + } + enum up { + value 7; + description "Up"; + } + } + default "up"; + } + + // Syslog threshold + typedef nd_SyslogCnt { + type uint32 { + range "0..65535"; + } + default "10000"; + } + + // throttle timeout + typedef nd_ThrTimeout { + type uint16 { + range "300..1800"; + } + default "300"; + } + + // VADDR Client state + typedef nd_VaddrClientState { + type enumeration { + enum ICMPV6_CLIENT_STATE_INACTIVE { + value 0; + description "ICMPv6 client state inactive"; + } + enum ICMPV6_CLIENT_STATE_ACTIVE { + value 1; + description "ICMPv6 client state active"; + } + enum ICMPV6_CLIENT_STATE_ANYCAST_INACTIVE { + value 2; + description "ICMPv6 client state anycast inactive"; + } + } + } + + typedef nd_adjRouteDist { + type uint32 { + range "2..250"; + } + default "250"; + } + + // RTP ACL + typedef netflow_ACLName { + type string { + length "0..64"; + } + } + + // Burst interval shift + typedef netflow_BurstIntvlShift { + type uint8 { + range "0..255"; + } + default "0"; + } + + // Collector buket identifier + typedef netflow_CollBucketId { + type uint8 { + range "0..255"; + } + } + + // Collect Interval + typedef netflow_CollIntvl { + type uint32 { + range "100..64000"; + } + default "100"; + } + + typedef netflow_CollTemplateTimeout { + type uint32 { + range "1..86400"; + } + default "15"; + } + + // Collector timeout + typedef netflow_CollTimeout { + type uint32 { + range "0..86400"; + } + default "0"; + } + + // Collector version + typedef netflow_CollVersion { + type enumeration { + enum v5 { + value 1; + description "Version 5"; + } + enum v9 { + value 2; + description "Version 9"; + } + enum cisco-v1 { + value 3; + description "Cisco proprietary version 1"; + } + } + default "v9"; + } + + // Collect params + typedef netflow_CollectParams { + + type string; + } + + // Collector identifier + typedef netflow_CollectorId { + type uint32 { + range "0..65535"; + } + } + + // Direction type + typedef netflow_DirectionT { + type enumeration { + enum in { + value 1; + description "Ingress"; + } + enum out { + value 2; + description "Egress"; + } + enum both { + value 3; + description "Both"; + } + } + default "in"; + } + + // Flow timeout + typedef netflow_FlowTimeout { + type uint32 { + range "5..60"; + } + default "10"; + } + + // IP filter type + typedef netflow_FltType { + type enumeration { + enum ipv4 { + value 1; + description "Ipv4 type"; + } + enum ipv6 { + value 2; + description "Ipv6 type"; + } + enum ce { + value 3; + description "CE type"; + } + } + default "ipv4"; + } + + // Forwarding instance target identifier + typedef netflow_FwdInstTargetId { + type uint32 { + range "0..4294967295"; + } + } + + // Hash value + typedef netflow_HashT { + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + // IP packet identifier shift + typedef netflow_IpPktIdShift { + type uint8 { + range "0..255"; + } + default "0"; + } + + // Layer4 port + typedef netflow_L4Port { + type uint32 { + range "1..65535"; + } + } + + // Match params + typedef netflow_MatchParams { + + type string; + } + + // Mode + typedef netflow_ModeT { + type enumeration { + enum netflow { + value 0; + description "Netflow mode"; + } + } + default "netflow"; + } + + // MTU + typedef netflow_Mtu { + type uint16 { + range "576..9216"; + } + default "1500"; + } + + // Payload length identifier + typedef netflow_PayloadLenIdT { + type uint8 { + range "0..10"; + } + } + + // Payload length + typedef netflow_PayloadLenT { + + type uint32 { + range "0..16383"; + } + default "0"; + } + + // Receive window size identifier + typedef netflow_RcvWindowSzIdT { + type uint8 { + range "0..4"; + } + } + + // Receive window size + typedef netflow_RcvWindowSzT { + type uint32 { + range "0..65535"; + } + default "0"; + } + + typedef netflow_RtpHistory { + type uint32 { + range "0..5000"; + } + default "1000"; + } + + // RTP Timeout + typedef netflow_RtpTimeout { + type uint32 { + range "0..1440"; + } + default "1"; + } + + // TCP options header length identifier + typedef netflow_TCPOptHdrLenIdT { + type uint8 { + range "0..6"; + } + } + + // TCP options header length + typedef netflow_TCPOptHdrLenT { + type uint32 { + range "0..15"; + } + default "0"; + } + + // Sequence number guess threshold + typedef netflow_ThresholdT { + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + typedef netflow_VrfName { + type l3_VrfName; + default "default"; + } + + // Address Ip + typedef netflow_addressIp { + type address_Ip; + } + + // Dscp code point values + typedef netflow_flowDscp { + type uint8; + default "0"; + } + + // Port + typedef netflow_flowPort { + + type uint16 { + range "0..65535"; + } + default "9995"; + } + + // Address family type + typedef ngmvpn_AfT { + type enumeration { + enum ipv4 { + value 0; + description "IPv4 Routes"; + } + enum ipv6 { + value 1; + description "IPv6 Routes"; + } + } + } + + // Database type + typedef ngmvpn_DbT { + type enumeration { + enum mroute { + value 0; + description "NGMVPN mroute database"; + } + enum saroute { + value 1; + description "NGMVPN SA route database"; + } + enum l2route { + value 2; + description "NGMVPN L2 route database"; + } + } + } + + // Event History Buffer Type + typedef ngmvpn_EhType { + type enumeration { + enum bgp { + value 0; + description "BGP events for fabric multicast"; + } + enum mrib { + value 1; + description "MRIB events for fabric multicast"; + } + enum m2rib { + value 2; + description "M2RIB events for fabric multicast"; + } + enum m6rib { + value 3; + description "M6RIB events for fabric multicast"; + } + enum pim { + value 4; + description "PIM events for fabric multicast"; + } + enum pim6 { + value 5; + description "PIM6 events for fabric multicast"; + } + enum hmm { + value 6; + description "HMM events for fabric multicast"; + } + enum isis { + value 7; + description "ISIS events for fabric multicast"; + } + enum ha { + value 8; + description "HA events for fabric multicast"; + } + } + } + + // Event History Buffer size in Text + typedef ngmvpn_Size { + type uint32 { + range "0..4 | 5..4294967295"; + } + default "2"; + } + + // Authentication Key + typedef ngoam_AuthKey { + type string { + length "0..63"; + } + } + + // Counter + typedef ngoam_Counter { + type uint32; + } + + // Description + typedef ngoam_Desc { + type string { + length "0..64"; + } + } + + // Num packets to send for a given ping task + typedef ngoam_DestPort { + + type uint16 { + range "0..65535"; + } + default "0"; + } + + // dot1q id + typedef ngoam_Dot1q { + type uint16 { + range "0..4096"; + } + } + + // dot1q id under flow forward + typedef ngoam_Dot1qFlow { + type uint16 { + range "0..3967"; + } + } + + // Xconnect hb interval + typedef ngoam_HbInterval { + type uint32 { + range "150..5000"; + } + } + + // Hop count + typedef ngoam_Hop { + type uint8 { + range "1..255"; + } + default "5"; + } + + // Hop count + typedef ngoam_Hops { + type uint8 { + range "1..255"; + } + default "32"; + } + + // Interface range + typedef ngoam_Interface { + type string { + pattern "(([Ee][Tt][Hh][Ee][Rr][Nn][Ee][Tt]\\d+/\\d+[\\[/]?\\d?\\]?(-\\d+)?,? *)+|([Pp]ort-channel\\d+(-\\d+)?,? *)+|unspecified)"; + } + default "unspecified"; + } + + // Num packets to send for a given ping task + typedef ngoam_NumPkt { + + type uint16 { + range "1..65535"; + } + default "5"; + } + + // Type of the path + typedef ngoam_OamChannel { + type enumeration { + enum invalid { + value 0; + description "INVALID"; + } + enum tissa { + value 2; + description "TISSA"; + } + } + default "invalid"; + } + + // Order + typedef ngoam_Order { + type uint8; + } + + // Path id + typedef ngoam_PathId { + type uint8; + } + + // Payload pad value + typedef ngoam_PayloadPad { + + type uint16 { + range "0..65535"; + } + default "0"; + } + + // The packet size to be used for sending the ping packet + typedef ngoam_PktSz { + type uint16 { + range "1..9500"; + } + default "56"; + } + + // Profile id + typedef ngoam_ProfId { + type uint16 { + range "1..1023"; + } + } + + // Profile id + typedef ngoam_ProfIdCC { + type uint16 { + range "0..1023"; + } + } + + // Flow protocol number + typedef ngoam_Protocol { + type uint16 { + range "0..255"; + } + } + + // Round trip time + typedef ngoam_Rtt { + type uint32; + } + + // Loop Detection Probe Interval + typedef ngoam_SLDperiodicprobeinterval { + type uint32 { + range "60..3600"; + } + default "300"; + } + + // Loop Detection Port-Recovery Interval + typedef ngoam_SLDportrecoveryinterval { + type uint32 { + range "300..3600"; + } + default "600"; + } + + // The interval between every ping packet that is sent out + typedef ngoam_SendIntvlCC { + type uint8 { + range "1..60"; + } + default "5"; + } + + // SessionId + typedef ngoam_SessionId { + + type uint16 { + range "0..65535"; + } + } + + // Source port range + typedef ngoam_Sport { + type string { + pattern "(\\d+(-\\d+)? *(, *\\d+(-\\d+)? *)*)"; + } + default "0"; + } + + // Source port to be used in the packet + typedef ngoam_SrcPort { + + type uint16 { + range "0..65535"; + } + default "0"; + } + + // The timeout before the ping task gives up with the reply + typedef ngoam_Timeout { + type uint8 { + range "0..25"; + } + default "2"; + } + + // Vlan Range to disable loop detection + typedef ngoam_VlanRange { + type string { + pattern "(\\d+(-\\d+)? *(, *\\d+(-\\d+)? *)*)"; + } + default "0"; + } + + // Vni id + typedef ngoam_VnidCC { + type uint32 { + range "0..16777215"; + } + } + + // The vrf the oam task is running + typedef ngoam_Vrf { + type l3_VrfName; + } + + // state of the ports + typedef ngoam_portState { + type enumeration { + enum forwarding { + value 0; + description "port in forwarding state"; + } + enum blocked { + value 1; + description "port in blocked state"; + } + enum recovering { + value 2; + description "port in recovery state"; + } + enum stp-blocked { + value 3; + description "port blocked by stp"; + } + enum stp-forwarding { + value 4; + description "port forwarding by stp"; + } + } + default "forwarding"; + } + + // vlanId on which loop detected + typedef ngoam_vlanId { + type uint16 { + range "1..4095"; + } + } + + // Xconnec port state + typedef ngoam_xcPortState { + type enumeration { + enum down { + value 0; + description "down"; + } + enum up { + value 1; + description "Up"; + } + enum errDisabled { + value 2; + description "Err"; + } + } + default "down"; + } + + // Xconnec state + typedef ngoam_xcState { + type enumeration { + enum Active { + value 0; + description "Active"; + } + enum DB { + value 1; + description "Database down"; + } + enum HB { + value 2; + description "HB failure"; + } + enum RD { + value 4; + description "Remote down"; + } + enum LD { + value 8; + description "Local Intf down"; + } + enum DB/HB { + value 3; + description "DB down, HB Loss"; + } + enum RD/HB { + value 6; + description "Remote down, HB Loss"; + } + enum DB/HB/RD { + value 7; + description "DB down, HB loss, Remote down"; + } + enum DB/LD { + value 9; + description "DB down, Local down"; + } + enum HB/LD { + value 10; + description "HB down, Local down"; + } + enum DB/HB/LD { + value 11; + description "DB down, HB loss, Local down"; + } + enum RD/LD { + value 12; + description "Remote down, Local down"; + } + enum DB/RD/LD { + value 13; + description "DB down, Remote down, Local down"; + } + enum HB/RD/LD { + value 14; + description "HB Loss, Remote down, Local down"; + } + enum DB/HB/RD/LD { + value 15; + description "DB Loss, HB down, Remote down, Local down"; + } + } + default "DB"; + } + + typedef nvo_CfgSrcT { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum cli { + value 1; + description "Config source is CLI"; + } + enum controller { + value 2; + description "Config source is controller"; + } + } + default "unknown"; + } + + typedef nvo_DciAdvertisePipStateT { + type enumeration { + enum disable { + value 0; + description "Disables advertise PIP towards DCI in BGP for multisite."; + } + enum enable { + value 1; + description "Enables PIP towards DCI in BGP for multisite."; + } + } + default "disable"; + } + + typedef nvo_ETimeStamp { + type union { + type string; + type uint64; + } + default "0"; + } + + typedef nvo_EncapT { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum vxlan { + value 1; + description "Overlay encap vxlan"; + } + enum vxlan-tun-ctrl-frame { + value 2; + description "Overlay encap vxlan tunnel control frames"; + } + enum vxlan-tun-ctrl-frame-lacp { + value 3; + description "Overlay encap vxlan tunnel control frames lacp"; + } + enum vxlan-tun-ctrl-frame-stp { + value 4; + description "Overlay encap vxlan tunnel control frames stp"; + } + enum dot1q { + value 5; + description "Overlay encap vxlan-with-tags"; + } + enum dot1q-tun-ctrl-frame { + value 6; + description "Overlay encap vxlan-with-tags tunnel control frames"; + } + enum dot1q-tun-ctrl-frame-lacp { + value 7; + description "Overlay encap vxlan-with-tags tunnel control frames lacp"; + } + enum dot1q-tun-ctrl-frame-stp { + value 8; + description "Overlay encap vxlan-with-tags tunnel control frames stp"; + } + } + default "unknown"; + } + + typedef nvo_EpIdT { + type uint32; + } + + typedef nvo_EvpnMcastStT { + type enumeration { + enum enabled { + value 1; + description "Enable 'advertise evpn multicast'"; + } + } + default "enabled"; + } + + typedef nvo_EvpnSiteName { + type enumeration { + enum unknown { + value 0; + description "Evpn sitename 'Unknown'"; + } + enum ucast { + value 1; + description "Evpn sitename 'Unicast'"; + } + enum bcast { + value 2; + description "Evpn sitename 'Broadcast'"; + } + enum mcast { + value 3; + description "Evpn sitename 'Multicast'"; + } + } + default "unknown"; + } + + typedef nvo_HostLearnModeT { + type enumeration { + enum DP { + value 1; + description "Data Plane"; + } + enum CP { + value 2; + description "Control Plane"; + } + enum Ctrlr { + value 3; + description "Controller"; + } + } + default "DP"; + } + + typedef nvo_HostReachT { + type enumeration { + enum Flood-and-learn { + value 0; + description "Flood-and-learn VxLAN"; + } + enum bgp { + value 1; + description "Host Reachability is learnt through BGP-EVPN"; + } + enum controller { + value 2; + description "Host Reachability is provided by controller"; + } + enum openflow { + value 3; + description "Host Reachability is provided by openflow"; + } + enum openflowIR { + value 4; + description "Host Reachability is provided by openflow-ir"; + } + } + default "Flood-and-learn"; + } + + typedef nvo_IngReplProtoT { + type enumeration { + enum unknown { + value 0; + description "Unknown mode for peers"; + } + enum bgp { + value 1; + description "Ingress Replication peers are learnt via BGP-EVPN"; + } + enum static { + value 2; + description "Ingress Replication peers are configured statically"; + } + } + default "unknown"; + } + + typedef nvo_MplsEncapT { + type enumeration { + enum unknown { + value 0; + description "Unknown type of encapsulation operation"; + } + enum mpls { + value 1; + description "MPLS segment-routing based encapsulation"; + } + enum none { + value 2; + description "No encapsulation"; + } + } + } + + typedef nvo_MultisiteIngReplStateT { + type enumeration { + enum disable { + value 1; + description "Disable 'multisite ingress-replication'"; + } + enum enable { + value 2; + description "Enable 'multisite ingress-replication'"; + } + enum enableOptimized { + value 3; + description "Enable 'Optimized multisite ingress-replication'"; + } + } + default "disable"; + } + + typedef nvo_MultisiteStateT { + type enumeration { + enum enabled { + value 1; + description "Enable 'evpn multisite border-gateway'"; + } + } + default "enabled"; + } + + typedef nvo_MultisiteTrackingT { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum dci { + value 1; + description "Enable 'evpn multisite dci-tracking'"; + } + enum fabric { + value 2; + description "Enable 'evpn multisite fabric-tracking'"; + } + } + default "unknown"; + } + + typedef nvo_OwnershipT { + + type string; + } + + typedef nvo_PeerStateT { + type enumeration { + enum Up { + value 1; + description "Peer State UP"; + } + enum Down { + value 2; + description "Peer State DOWN"; + } + } + default "Down"; + } + + typedef nvo_RedundancyGrpStT { + type enumeration { + enum disabled { + value 0; + description "Disable 'redundancy-group'"; + } + enum enabled { + value 1; + description "Enable 'redundancy-group'"; + } + } + default "disabled"; + } + + // This type is used for the hidden property replMode in the IngRepl Mo. + // The values in this enum are a subset of the values in the aggregate model + // type ReplicationModeType (defined in file switch/aggregate/types.xml). + // Const values defined in this enum should be the same as the corresponding + // values in the aggregate model enum + typedef nvo_ReplModeT { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum replicationServer { + value 1; + description "ReplicationServer"; + } + enum ingressReplication { + value 2; + description "IngressReplication"; + } + } + default "ingressReplication"; + } + + typedef nvo_SplitHorizonPerSiteStateT { + type enumeration { + enum disable { + value 0; + description "Disables the per-site split-horizon feature."; + } + enum enable { + value 1; + description "Enables the per-site split-horizon feature."; + } + } + default "disable"; + } + + typedef nvo_SrStateT { + type enumeration { + enum unknown { + value 4; + description "Unknown State"; + } + enum init { + value 0; + description "Entity is in initial state"; + } + enum add_complete { + value 1; + description "Entity is in functional state"; + } + enum EviDelPending { + value 2; + description "Cleanup is pending after deletion of an evi node"; + } + enum PeerDelPending { + value 3; + description "Cleanup is pending after deletion of a peer node"; + } + } + default "unknown"; + } + + typedef nvo_SuppressARPT { + type enumeration { + enum off { + value 0; + description "Arp suppression not configured"; + } + enum enabled { + value 1; + description "Arp suppression enabled"; + } + enum disabled { + value 2; + description "Arp suppression disabled"; + } + } + default "off"; + } + + typedef nvo_VniStateT { + type enumeration { + enum Up { + value 1; + description "VNI State UP"; + } + enum Down { + value 2; + description "VNI State DOWN"; + } + } + default "Down"; + } + + typedef nvo_VniT { + type uint32 { + range "1..16777214"; + } + } + + typedef nvo_VniTypeT { + type enumeration { + enum L2 { + value 1; + description "Not vrf associated"; + } + enum L3 { + value 2; + description "Vrf associated"; + } + } + default "L2"; + } + + // Address family + typedef nw_AddrF { + type enumeration { + enum ipv4 { + value 1; + description "IPv4"; + } + enum ipv6 { + value 2; + description "IPv6"; + } + enum mac { + value 3; + description "Mac"; + } + } + default "ipv4"; + } + + // Administrative state + typedef nw_AdminSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "enabled"; + } + + // 32 bit Counter + typedef nw_Counter32 { + type uint32; + } + + // 64 bit Counter + typedef nw_Counter64 { + type uint64; + } + + // Operational state of entity + typedef nw_EntOperSt { + type enumeration { + enum unknown { + value 0; + } + enum enabled { + value 1; + } + enum disabled { + value 2; + } + enum initializing { + value 3; + } + enum failed { + value 4; + } + } + default "enabled"; + } + + // Administrative state of interface + typedef nw_IfAdminSt { + type nw_AdminSt; + } + + // Interface identifier + typedef nw_IfId { + type string; + } + + // Instance controls + typedef nw_InstCtrl { + + type string; + } + + // Interface ordinal + typedef nw_Iod { + + type uint32 { + range "1..4294967295"; + } + default "1"; + } + + // Memory alert level + typedef nw_MemAlertLevel { + type enumeration { + enum normal { + value 0; + description "Normal"; + } + enum minor { + value 1; + description "Minor"; + } + enum major { + value 2; + description "Major"; + } + enum critical { + value 3; + description "Critical"; + } + } + default "normal"; + } + + // Operational state summary + typedef nw_OSSum { + type enumeration { + enum failed { + value 0; + description "Failed"; + } + enum initializing { + value 1; + description "Initializing"; + } + enum resetting { + value 2; + description "Resetting"; + } + enum degraded { + value 3; + description "Degraded"; + } + enum ok { + value 4; + description "Ok"; + } + } + default "ok"; + } + + // Operational state summary qualifier + typedef nw_OSSumQual { + type string; + } + + // Operational error qualifier + typedef nw_OperErrQual { + + type string; + } + + typedef nxapi_ClientCertAuthType { + type enumeration { + enum off { + value 0; + description "Basic Authentication ONLY"; + } + enum optional { + value 1; + description "Mutual certificate authentication between client and server, OR Basic Authentication"; + } + enum strict { + value 2; + description "Mutual certificate authentication between client and server ONLY"; + } + enum two-step { + value 3; + description "Mutual certificate authentication between client and server, AND Basic Authentication (two-step verification)"; + } + } + default "off"; + } + + typedef nxapi_HttpPort { + type int32 { + range "-1..65535"; + } + default "-1"; + } + + typedef nxapi_HttpsPort { + type int32 { + range "-1..65535"; + } + default "443"; + } + + typedef nxapi_SslProtocols { + type string; + default "TLSv1.2"; + } + + typedef nxapi_keyPassphrase { + type string { + length "4..1024"; + } + } + + // security level + typedef nxsdk_SecLevel { + type enumeration { + enum deny { + value 0; + } + enum permit { + value 2; + } + enum throttle { + value 3; + } + } + default "deny"; + } + + typedef nxsdk_ServiceSt { + type string { + length "0..20"; + } + } + + // Ip identifier + typedef oam_IpId { + type address_Ip; + } + + // Payload size + typedef oam_PayloadSz { + type uint16 { + range "20..8904"; + } + default "56"; + } + + // Profile name + typedef oam_ProfName { + type string; + } + + // Tenant name + typedef oam_TenantName { + type string; + } + + // The vrf the oam task is running + typedef oam_Vrf { + type l3_VrfName; + } + + typedef ofm_TePolicyName { + type string { + length "0..64"; + } + } + + typedef ofm_encapType { + type enumeration { + enum none { + value 0; + description "none"; + } + enum vxlan { + value 1; + description "Vxlan encap"; + } + enum srv6 { + value 2; + description "Srv6 encap"; + } + } + default "none"; + } + + // Tunnel mode types + typedef ofm_profileName { + type string { + length "0..50"; + } + } + + typedef opflex_DevOperState { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum online { + value 1; + description "Online"; + } + enum offline { + value 2; + description "Offline"; + } + enum identified { + value 3; + description "Identified"; + } + enum compatible { + value 4; + description "Compatible"; + } + enum incompatible { + value 5; + description "Incompatible"; + } + } + default "identified"; + } + + // Type of opflex device + typedef opflex_DeviceType { + type enumeration { + enum unknown { + value 0; + } + enum n1kv { + value 1; + } + enum hyperv { + value 2; + } + enum ovs { + value 3; + } + } + default "n1kv"; + } + + typedef opflex_Direction { + type enumeration { + enum in { + value 0; + } + enum out { + value 1; + } + } + default "in"; + } + + // Ep Transition Status + typedef opflex_EpTransitionStatus { + type enumeration { + enum unknown { + value 0; + } + enum attached { + value 1; + } + enum detached { + value 2; + } + } + default "attached"; + } + + // epp download hint + typedef opflex_EppDownloadHint { + type enumeration { + enum unknown { + value 0; + } + enum always { + value 1; + } + enum optimal { + value 2; + } + } + default "always"; + } + + // hb status + typedef opflex_HbStatus { + type enumeration { + enum unknown { + value 0; + } + enum invalid-dvs { + value 1; + } + enum valid-dvs { + value 2; + } + } + default "valid-dvs"; + } + + typedef os_OsString { + type string { + length "0..256"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + } + + // ASBR Router Status + typedef ospf_ASBdrRtr { + type uint8 { + range "0..1"; + } + default "0"; + } + + // Explicit-NULL type- Active + typedef ospf_Active { + type enumeration { + enum no { + value 0; + description "Explicit-NULL state is not active"; + } + enum yes { + value 1; + description "Explicit-NULL state is active"; + } + } + default "no"; + } + + // Adjacency change logging levels + typedef ospf_AdjChangeLogLevel { + type enumeration { + enum none { + value 0; + description "Adjacency change logging levels - None"; + } + enum brief { + value 1; + description "Adjacency change logging levels - Brief logging"; + } + enum detail { + value 2; + description "Adjacency change logging levels - Detailed logging"; + } + } + default "none"; + } + + // Adjacency flags + typedef ospf_AdjFlags { + + type string; + default "unspecified"; + } + + // Adjacency router id + typedef ospf_AdjId { + type ip_RtrId; + } + + // Adjacency interface id + typedef ospf_AdjIfId { + type uint32; + } + + // Adjancency operational state + typedef ospf_AdjOperSt { + type enumeration { + enum unknown { + value 0; + description "Adjancency operational state - Unknown"; + } + enum down { + value 1; + description "Adjancency operational state is Down"; + } + enum attempt { + value 2; + description "Adjancency operational state - Attempt"; + } + enum initializing { + value 3; + description "Adjancency operational state is Initializing"; + } + enum two-way { + value 4; + description "Adjancency operational state is Two-way"; + } + enum exstart { + value 5; + description "Adjancency operational state - Exstart"; + } + enum exchange { + value 6; + description "Adjancency operational state - Exchange"; + } + enum loading { + value 7; + description "Adjancency operational state - Loading"; + } + enum full { + value 8; + description "Adjancency operational state is Full"; + } + enum self { + value 9; + description "Adjancency operational state is Self"; + } + } + default "down"; + } + + // SR Adjacency SID flags + typedef ospf_AdjSidFlags { + + type string; + default "unspecified"; + } + + // SR Adjacency SID Label + typedef ospf_AdjSidLabel { + type uint32; + default "4294967295"; + } + + // Extended Prefix Flags + typedef ospf_AdjSidTlvType { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum Adj-SID_Sub-TLV { + value 2; + description "Adj-SID Sub-TLV"; + } + enum LAN_Adj-SID_Sub-TLV { + value 3; + description "LAN Adj-SID Sub-TLV"; + } + } + } + + // Always option for DefLeak + typedef ospf_Always { + type enumeration { + enum no { + value 0; + description "Default-leak state is not always"; + } + enum yes { + value 1; + description "Default-leak state is always"; + } + } + default "no"; + } + + // Area Border Router Status + typedef ospf_AreaBdrRtr { + type uint8 { + range "0..1"; + } + default "0"; + } + + // Area controls + typedef ospf_AreaControl { + + type string; + default "unspecified"; + } + + // Area default cost + typedef ospf_AreaCost { + type uint32 { + range "0..16777215"; + } + default "1"; + } + + // Area id + typedef ospf_AreaId { + type address_Ipv4; + } + + // Area type + typedef ospf_AreaT { + type enumeration { + enum regular { + value 1; + description "Area type is regular area"; + } + enum stub { + value 2; + description "Area type is Stub area"; + } + enum nssa { + value 3; + description "Area type is NSSA area"; + } + } + default "regular"; + } + + // AS Border Router count + typedef ospf_AsbrCnt { + type uint32; + } + + // Authentication key + typedef ospf_AuthKey { + type string; + } + + // Authentication key id + typedef ospf_AuthKeyId { + type uint8 { + range "0..255"; + } + default "0"; + } + + // Authentication type + typedef ospf_AuthT { + type enumeration { + enum none { + value 0; + description "Authentication type is none "; + } + enum simple { + value 1; + description "Simple authentication type"; + } + enum md5 { + value 2; + description "MD5 authentication type"; + } + enum unspecified { + value 3; + description "Authentication type is unspecified but valid"; + } + } + default "unspecified"; + } + + // Bidirectional Forwarding Detection Control + typedef ospf_BfdControl { + type enumeration { + enum unspecified { + value 0; + description "Unconfigure interface BFD configuration"; + } + enum enabled { + value 1; + description "Configure interface to use BFD"; + } + enum disabled { + value 2; + description "Configure interface not to use BFD"; + } + } + default "unspecified"; + } + + // BFD state + typedef ospf_BfdOperSt { + type enumeration { + enum down { + value 0; + description "Bi-directional Forwarding Detection (BFD) is Down"; + } + enum up { + value 1; + description "Bi-directional Forwarding Detection (BFD) is Up"; + } + } + } + + // Border Router count + typedef ospf_BrCnt { + type uint32; + } + + // Bandwidth reference value + typedef ospf_BwRef { + type uint32; + default "40000"; + } + + // Bandwidth reference unit + typedef ospf_BwRefUnit { + type enumeration { + enum mbps { + value 0; + description "Bandwidth reference unit is Mbps"; + } + enum gbps { + value 1; + description "Bandwidth reference unit is Gbps"; + } + } + default "mbps"; + } + + // OSPFv2 Capability Flag + typedef ospf_CapFlag { + type enumeration { + enum no { + value 0; + description "Capability not supported"; + } + enum yes { + value 1; + description "Capability supported"; + } + } + } + + // Counter + typedef ospf_Counter32 { + type uint32; + } + + typedef ospf_CurrSleepCnt { + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + // Database type + typedef ospf_DbT { + type enumeration { + enum ls { + value 1; + description "Link state database type with value 1"; + } + enum rt { + value 2; + description "Route database type with value 2"; + } + enum nh { + value 3; + description "Nexthop database type with value 3"; + } + } + default "ls"; + } + + // Dead interval + typedef ospf_DeadIntvl { + type uint16 { + range "0..65535"; + } + default "0"; + } + + // Designated address + typedef ospf_DesigAddr { + type address_Ip; + } + + // Designated priority + typedef ospf_DesigPrio { + type uint8 { + range "0..255"; + } + default "1"; + } + + // Discard Route + typedef ospf_DiscardRoute { + + type string; + default "int,ext"; + } + + // Distance + typedef ospf_Dist { + type uint8 { + range "1..255"; + } + default "110"; + } + + // Dom controls + typedef ospf_DomControl { + + type string; + default "unspecified"; + } + + // L3VPN Domain Identifier + typedef ospf_DomainId { + type string; + } + + // L3VPN Domain Tag (AS number) + typedef ospf_DomainTag { + type uint32 { + range "0..2147483648"; + } + default "2147483648"; + } + + // L3VPN OSPF Domain Type + typedef ospf_DomainType { + type enumeration { + enum 0000 { + value 0; + description "Domain Type is unspecified"; + } + enum 0005 { + value 5; + description "Domain Type is 0x0005"; + } + enum 0105 { + value 261; + description "Domain Type is 0x0105"; + } + enum 0205 { + value 517; + description "Domain Type is 0x0205"; + } + enum 8005 { + value 32773; + description "Domain Type is 0x8005"; + } + } + default "0000"; + } + + // ECMP max paths + typedef ospf_Ecmp { + type uint8 { + range "1..64"; + } + default "8"; + } + + // Event history Buffer size + typedef ospf_EventLogSize { + type enumeration { + enum disabled { + value 0; + description "Event history logging disabled"; + } + enum small { + value 1; + description "Event history Buffer size is Small"; + } + enum medium { + value 2; + description "Event history Buffer size is Medium"; + } + enum large { + value 3; + description "Event history Buffer size is Large"; + } + } + default "small"; + } + + // Event history Bufer size in Kbytes + typedef ospf_EventLogSizeKBytes { + type uint16 { + range "0..65535"; + } + } + + // Event Log Type + typedef ospf_EventType { + type enumeration { + enum adj { + value 0; + description "Event Log Type - Adjacency Events"; + } + enum internal { + value 1; + description "Event Log Type - Internal Events"; + } + enum ha { + value 2; + description "Event Log Type - HA Events"; + } + enum lsa-flood { + value 3; + description "Event Log Type - LSA flooding Events"; + } + enum lsa { + value 4; + description "Event Log Type - LSA Events"; + } + enum spf { + value 5; + description "Event Log Type - SPF Events"; + } + enum redist { + value 6; + description "Event Log Type - Redistribution Events"; + } + enum ldp { + value 7; + description "Event Log Type - LDP Events"; + } + enum mpls-te { + value 8; + description "Event Log Type - MPLS TE Events"; + } + enum hello { + value 9; + description "Event Log Type - Hellog packet logs"; + } + enum rib { + value 10; + description "Event Log Type - RIB Events"; + } + enum spf-trigger { + value 11; + description "SPF Trigger Events logs"; + } + enum cli { + value 12; + description "Event Log Type - CLI Events"; + } + enum segrt { + value 13; + description "Segment Routing Events"; + } + } + } + + // Failed state qualifier + typedef ospf_FailStQual { + + type string; + default "unspecified"; + } + + // prefix attribute flag status + typedef ospf_FlagStatus { + type enumeration { + enum unspecified { + value 0; + description "Segment routing n-flag is Unspecified"; + } + enum clear { + value 1; + description "Prefix attribute flag status is Clear"; + } + } + default "unspecified"; + } + + // Graceful restart controls + typedef ospf_GrCtrl { + type enumeration { + enum planned-only { + value 1; + description "Planned graceful restarts only"; + } + enum complete { + value 2; + description "Complete graceful restart enabled"; + } + enum disabled { + value 3; + description "Do not participate in graceful restart procedures"; + } + } + default "complete"; + } + + // Graceful restart time period in seconds + typedef ospf_GrPeriod { + type uint32 { + range "5..1800"; + } + default "60"; + } + + // Hello interval + typedef ospf_HelloIntvl { + type uint16 { + range "1..65535"; + } + default "10"; + } + + // Peer Helper Age + typedef ospf_HelperAge { + type uint32; + } + + // Neighbor restart helper reason + typedef ospf_HelperExitQual { + type enumeration { + enum none { + value 1; + description "Neighbor restart helper reason -Not Attempted"; + } + enum in-progress { + value 2; + description "Neighbor restart helper reason - Restart In Progress"; + } + enum completed { + value 3; + description "Neighbor restart helper reason - Successfully Completed"; + } + enum timed-out { + value 4; + description "Neighbor restart helper reason - Timed Out"; + } + enum topology-changed { + value 5; + description "Neighbor restart helper reason - Topology Changed"; + } + } + default "none"; + } + + // Neighbor restart helper status + typedef ospf_HelperSt { + type enumeration { + enum not-helping { + value 1; + description "Neighbor restart helper status - not-helping"; + } + enum helping { + value 2; + description "Neighbor restart helper status - Helping"; + } + } + default "not-helping"; + } + + // Interface controls + typedef ospf_IfControl { + + type string; + default "unspecified"; + } + + // Interface cost + typedef ospf_IfCost { + type uint16 { + range "0..65535"; + } + default "0"; + } + + // Interface flags + typedef ospf_IfFlags { + + type string; + default "unspecified"; + } + + // Interface operational state + typedef ospf_IfOperSt { + type enumeration { + enum unknown { + value 0; + description "Interface operational state is unknown"; + } + enum down { + value 1; + description "Interface operational state is down"; + } + enum loopback { + value 2; + description "Interface operational state is Loopback"; + } + enum waiting { + value 3; + description "Interface operational state is Waiting"; + } + enum p2p { + value 4; + description "Interface operational state is p2p"; + } + enum dr { + value 5; + description "Interface operational state is DR"; + } + enum bdr { + value 6; + description "Interface operational state is BDR"; + } + enum dr-other { + value 7; + description "Interface operational state is DR-other"; + } + } + default "down"; + } + + // Interface type + typedef ospf_IfType { + type enumeration { + enum unspecified { + value 0; + description "Interface type is unspecified"; + } + enum loopback { + value 1; + description "Interface type is Loopback"; + } + enum p2p { + value 2; + description "Interface type is P2P"; + } + enum p2mp { + value 3; + description "Interface type is P2MP"; + } + enum nbma { + value 4; + description "Interface type is NBMA"; + } + enum bcast { + value 5; + description "Interface type is Broadcast"; + } + } + default "unspecified"; + } + + // Lsa router id + typedef ospf_LsaAdvRtr { + type ip_RtrId; + } + + // LSA Advertisement + typedef ospf_LsaAdvert { + type mtx_array_uint8; + } + + // Lsa age + typedef ospf_LsaAge { + type uint32; + } + + // Lsa arrival interval + typedef ospf_LsaArrivalIntvl { + type uint32 { + range "10..600000"; + } + default "1000"; + } + + // Lsa checksum + typedef ospf_LsaCksum { + type uint32; + } + + // LSA checksum sum + typedef ospf_LsaCksumSum { + type uint32; + } + + // Lsa group pacing interval + typedef ospf_LsaGpPacingIntvl { + type uint16 { + range "1..1800"; + } + default "10"; + } + + // Lsa id + typedef ospf_LsaId { + type address_Ipv4; + } + + typedef ospf_LsaLeakOperSt { + type enumeration { + enum Inactive { + value 0; + description "LSA leak operational state is InActive"; + } + enum active { + value 1; + description "LSA leak operational state is Active"; + } + } + default "Inactive"; + } + + // Lsa sequence number + typedef ospf_LsaSeq { + type uint32; + } + + // Lsa type + typedef ospf_LsaT { + type enumeration { + enum router { + value 1; + description "Router Link-State Advertisements(LSA)"; + } + enum nw { + value 2; + description "Network Link-State Advertisements(LSA)"; + } + enum summary { + value 3; + description "Summary Link-State Advertisements(LSA)"; + } + enum asbr { + value 4; + description "ASBR Link-State Advertisements(LSA)"; + } + enum ext { + value 5; + description "External Link-State Advertisements(LSA)"; + } + enum nssa { + value 7; + description "NSSA Link-State Advertisements(LSA)"; + } + enum link-opq { + value 9; + description "Link opaque Link-State Advertisements(LSA)"; + } + enum area-opq { + value 10; + description "Area opaque Link-State Advertisements(LSA)"; + } + enum as-opq { + value 11; + description "AS opaque Link-State Advertisements(LSA)"; + } + } + default "router"; + } + + // Lsa throttle hold interval + typedef ospf_LsaThHoldIntvl { + type uint32 { + range "50..30000"; + } + default "5000"; + } + + // Lsa throttle maximum interval + typedef ospf_LsaThMaxIntvl { + type uint32 { + range "50..30000"; + } + default "5000"; + } + + // Lsa throttle start wait interval + typedef ospf_LsaThStartIntvl { + type uint32 { + range "0..5000"; + } + default "0"; + } + + // Maximum number of non self-generated LSAs + typedef ospf_MaxLsa { + type uint32 { + range "1..4294967295"; + } + } + + typedef ospf_MaxLsaAct { + type enumeration { + enum reject { + value 0; + description "Reject LSAs beyond the limit"; + } + enum restart { + value 1; + description "Restart the max-lsa neighbor"; + } + enum log { + value 2; + description "Max-LSA action - log a warning"; + } + } + default "reject"; + } + + typedef ospf_MaxLsaOperSt { + type enumeration { + enum ok { + value 0; + description "Max LSA operational state is OK"; + } + enum threshold-exceeded { + value 1; + description "Max LSA operational state - Threshold Exceeded"; + } + } + default "ok"; + } + + typedef ospf_MaxLsaOperStQual { + type enumeration { + enum ok { + value 0; + description "Max LSA operational state qualifier is ok"; + } + enum warning { + value 1; + description "Max LSA operational state qualifier - warning"; + } + enum overload { + value 2; + description "Max LSA operational state qualifier - Overload"; + } + enum sleep { + value 3; + description "Max LSA operational state qualifier - Sleep state"; + } + enum reset { + value 4; + description "Max LSA operational state qualifier - Reset state"; + } + enum perm-sleep { + value 5; + description "Max LSA operational state qualifier - Permanent Sleep"; + } + } + default "ok"; + } + + typedef ospf_MaxLsaThresh { + type uint16 { + range "1..100"; + } + default "75"; + } + + // Max metric value to be used for advertising LSAs + typedef ospf_MaxMetric { + type uint32 { + range "0..16777215"; + } + } + + // Max metric controls - specifies when to send max + // metric LSAs and for which LSAs/links + typedef ospf_MaxMetricControl { + + type string; + } + + // Metric + typedef ospf_Metric { + type uint32 { + range "0..16777214"; + } + default "0"; + } + + // Nexthop flags + typedef ospf_NhFlags { + + type string; + default "unspecified"; + } + + typedef ospf_NonSelfLsaCnt { + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + // NSSA translator role + typedef ospf_NssaTransRole { + type enumeration { + enum always { + value 1; + description "NSSA translator role is Always"; + } + enum candidate { + value 2; + description "NSSA translator role is Candidate"; + } + enum never { + value 3; + description "NSSA translator role is Never"; + } + } + default "candidate"; + } + + // NSSA translator state + typedef ospf_NssaTransSt { + type enumeration { + enum enabled { + value 1; + description "NSSA translator state is Enabled"; + } + enum elected { + value 2; + description "NSSA translator state is Elected"; + } + enum disabled { + value 3; + description "NSSA translator state is Disabled"; + } + } + default "elected"; + } + + // NSSA translator interval + typedef ospf_NssaTransStabIntvl { + type uint32 { + range "0..4294967295"; + } + default "40"; + } + + // Network type + typedef ospf_NwT { + type enumeration { + enum unspecified { + value 0; + description "Network type is Unspecified"; + } + enum p2p { + value 1; + description "Network type is set to Point-to-point"; + } + enum bcast { + value 2; + description "Network type is set to Broadcast"; + } + } + default "unspecified"; + } + + // Operational Dead interval + typedef ospf_OperDeadIntvl { + type uint32; + default "0"; + } + + // L3vm Operational state + typedef ospf_OperSt { + type enumeration { + enum invalid { + value 0; + description "L3vm Operational state is invalid"; + } + enum down { + value 1; + description "L3vm Operational state is down"; + } + enum up { + value 2; + description "L3vm Operational state is up"; + } + } + default "down"; + } + + // Neighbor options + typedef ospf_Options { + type uint32; + } + + // Passive Control + typedef ospf_PassiveControl { + type enumeration { + enum unspecified { + value 0; + description "Unconfigure interface passive configuration"; + } + enum enabled { + value 1; + description "Configure interface as passive"; + } + enum disabled { + value 2; + description "Configure interface as non-passive"; + } + } + default "unspecified"; + } + + // Path type + typedef ospf_PathT { + type enumeration { + enum intra { + value 1; + description "Path type is Intra route path"; + } + enum discard-int { + value 2; + description "Path type - Discard internal route"; + } + enum inter { + value 3; + description "OSPF route path type - Inter"; + } + enum discard-ext { + value 4; + description "OSPF route path type - Discard external"; + } + enum ext1 { + value 5; + description "OSPF route path type - External1"; + } + enum nssa1 { + value 6; + description "OSPF route path type - NSSA1"; + } + enum ext2 { + value 7; + description "OSPF route path type - External2"; + } + enum nssa2 { + value 8; + description "OSPF route path type - NSSA2"; + } + } + default "intra"; + } + + // Extended Prefix Flags + typedef ospf_PfxFlags { + + type string; + } + + // SR Prefix SID flags + typedef ospf_PfxSidFlags { + + type string; + } + + typedef ospf_ResetIntvl { + type uint32 { + range "1..1440"; + } + default "10"; + } + + // Retransmit interval + typedef ospf_RexmitIntvl { + type uint16 { + range "1..65535"; + } + default "5"; + } + + // Route cost + typedef ospf_RtCost { + type uint16 { + range "1..65535"; + } + default "1"; + } + + // Route flags + typedef ospf_RtFlags { + + type string; + default "unspecified"; + } + + // Route tag + typedef ospf_RtTag { + type uint32; + } + + // Segment Routing Enable/Disable Control + typedef ospf_SegRtControl { + type enumeration { + enum unspecified { + value 0; + description "Unconfigure area Segment Routing configuration"; + } + enum mpls { + value 1; + description "Configure area to enable Segment Routing MPLS"; + } + enum disable { + value 2; + description "Configure area to disable Segment Routing MPLS/IPv6"; + } + } + default "unspecified"; + } + + // Segment routing mpls label + typedef ospf_SgmntRtgMplsLabel { + type uint32; + default "4294967295"; + } + + // Segment Routing MPLS Operational State (Enable/Disable) + typedef ospf_SgmntRtgMplsOperSt { + type enumeration { + enum Disabled { + value 0; + description "Segment Routing MPLS is Disabled at this level"; + } + enum Enabled { + value 1; + description "Segment Routing MPLS is Enabled at this level"; + } + } + default "Disabled"; + } + + // Oper SID Index + typedef ospf_SidIndex { + type int32; + default "-1"; + } + + typedef ospf_SleepCnt { + type uint32 { + range "1..4294967295"; + } + default "5"; + } + + typedef ospf_SleepIntvl { + type uint16 { + range "1..1440"; + } + default "5"; + } + + // Spf computation hold interval + typedef ospf_SpfCompHoldIntvl { + type uint32 { + range "1..600000"; + } + default "1000"; + } + + // Spf computation initial wait interval + typedef ospf_SpfCompInitIntvl { + type uint32 { + range "1..600000"; + } + default "200"; + } + + // Spf computation maximum wait interval + typedef ospf_SpfCompMaxIntvl { + type uint32 { + range "1..600000"; + } + default "5000"; + } + + typedef ospf_StartupIntvl { + type uint32 { + range "5..86400"; + } + default "600"; + } + + // Summary Control + typedef ospf_SumControl { + + type string; + default "unspecified"; + } + + // Area range cost + typedef ospf_SumCost { + type uint32 { + range "0..16777216"; + } + default "16777216"; + } + + // Vrf-Lite Control + typedef ospf_VrfLiteControl { + type enumeration { + enum unspecified { + value 0; + description "Unconfigure Vrf-Lite configuration"; + } + enum l3vpn { + value 1; + description "Configure Vrf-Lite for L3VPN"; + } + enum evpn { + value 2; + description "Configure Vrf-Lite for Ethernet VPN"; + } + } + default "unspecified"; + } + + // Tramist delay + typedef ospf_XmitDelay { + type uint16 { + range "1..450"; + } + default "1"; + } + + // Adjacency change logging levels + typedef ospfv3_AdjChangeLogLevel { + type enumeration { + enum none { + value 0; + description "Adjacency change logging levels - None"; + } + enum brief { + value 1; + description "Adjacency change logging levels - Brief logging"; + } + enum detail { + value 2; + description "Adjacency change logging levels - Detailed logging"; + } + } + default "none"; + } + + // Administrative Distance + typedef ospfv3_AdminDist { + type uint8 { + range "1..255"; + } + default "110"; + } + + // Address family type + typedef ospfv3_AfT { + type enumeration { + enum ipv6-ucast { + value 1; + description "IPv6 unicast address family"; + } + } + default "ipv6-ucast"; + } + + // Area default cost + typedef ospfv3_AreaCost { + type uint32 { + range "0..16777215"; + } + default "0"; + } + + // Area id + typedef ospfv3_AreaId { + type string; + } + + // Area type + typedef ospfv3_AreaT { + type enumeration { + enum regular { + value 1; + description "Area type is Regular area"; + } + enum stub { + value 2; + description "Area type is Stub area"; + } + enum nssa { + value 3; + description "Area type is NSSA area"; + } + } + default "regular"; + } + + // Authentication key + typedef ospfv3_AuthKey { + type string; + } + + typedef ospfv3_AuthKeyEncrType { + type enumeration { + enum cleartext { + value 0; + description "Key is Unencrypted; in Cleartext"; + } + enum 3des { + value 3; + description "Key is 3DES Encrypted"; + } + enum cisco-type-7 { + value 7; + description "Key is CiscoType7 Encrypted"; + } + } + } + + // Security Parameter Index + typedef ospfv3_AuthSpi { + type uint32 { + range "256..4294967295"; + } + } + + // Authentication types which can be md5/sha1/disable + typedef ospfv3_AuthType { + type enumeration { + enum none { + value 0; + description "None authentication type"; + } + enum md5 { + value 1; + description "MD5 authentication type"; + } + enum sha1 { + value 2; + description "SHA1 authentication type"; + } + enum disable { + value 3; + description "Disable authentication"; + } + } + } + + // Bidirectional Forwarding Detection Control + typedef ospfv3_BfdControl { + type enumeration { + enum unspecified { + value 0; + description "Unconfigure interface BFD configuration"; + } + enum enabled { + value 1; + description "Configure interface to use BFD"; + } + enum disabled { + value 2; + description "Configure interface not to use BFD"; + } + } + default "unspecified"; + } + + // Bandwidth reference value + typedef ospfv3_BwRef { + type uint32; + default "40000"; + } + + // Bandwidth reference unit + typedef ospfv3_BwRefUnit { + type enumeration { + enum mbps { + value 0; + description "Bandwidth reference unit is Mbps"; + } + enum gbps { + value 1; + description "Bandwidth reference unit is Gbps"; + } + } + default "mbps"; + } + + // Dead interval + typedef ospfv3_DeadIntvl { + type uint32 { + range "0..65535"; + } + default "0"; + } + + // default Metric + typedef ospfv3_DefMetric { + type uint32 { + range "0..16777214"; + } + default "0"; + } + + // Designated priority + typedef ospfv3_DesigPrio { + type uint8 { + range "0..255"; + } + default "1"; + } + + // Authentication types which can be md5/sha1/disable + typedef ospfv3_DomAuthType { + type enumeration { + enum none { + value 0; + description "None authentication type"; + } + enum md5 { + value 1; + description "MD5 authentication type"; + } + enum sha1 { + value 2; + description "SHA1 authentication type"; + } + } + } + + // Dom name + typedef ospfv3_DomName { + type l3_VrfName; + } + + // ECMP max paths + typedef ospfv3_Ecmp { + type uint8 { + range "1..64"; + } + default "8"; + } + + // Graceful restart controls + typedef ospfv3_GrCtrl { + type enumeration { + enum planned-only { + value 1; + description "Planned graceful restarts only"; + } + enum complete { + value 2; + description "Complete graceful restart enabled"; + } + enum disabled { + value 3; + description "Graceful restart disabled"; + } + } + default "complete"; + } + + // Graceful restart time period in seconds + typedef ospfv3_GrPeriod { + type uint32 { + range "5..1800"; + } + default "60"; + } + + // Hello interval + typedef ospfv3_HelloIntvl { + type uint16 { + range "1..65535"; + } + default "10"; + } + + // Interface cost + typedef ospfv3_IfCost { + type uint16 { + range "0..65535"; + } + default "0"; + } + + // Instance id + typedef ospfv3_InstanceID { + type uint8 { + range "0..255"; + } + default "0"; + } + + // Instance name + typedef ospfv3_InstanceName { + type string { + length "0..20"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + } + + // Lsa arrival interval + typedef ospfv3_LsaArrivalIntvl { + type uint32 { + range "10..600000"; + } + default "1000"; + } + + // Lsa group pacing interval + typedef ospfv3_LsaGpPacingIntvl { + type uint16 { + range "1..1800"; + } + default "10"; + } + + // Lsa throttle hold interval + typedef ospfv3_LsaThHoldIntvl { + type uint32 { + range "50..30000"; + } + default "5000"; + } + + // Lsa throttle maximum interval + typedef ospfv3_LsaThMaxIntvl { + type uint32 { + range "50..30000"; + } + default "5000"; + } + + // Lsa throttle start wait interval + typedef ospfv3_LsaThStartIntvl { + type uint32 { + range "0..5000"; + } + default "0"; + } + + typedef ospfv3_MaxLsaAct { + type enumeration { + enum reject { + value 0; + description "Logs error message and reject LSAs beyond the limit"; + } + enum log { + value 1; + description "Log a warning message when limit is exceeded"; + } + } + default "reject"; + } + + // Network type + typedef ospfv3_NwT { + type enumeration { + enum none { + value 0; + description "Network type is not configured"; + } + enum p2p { + value 1; + description "OSPF point-to-point network"; + } + enum bcast { + value 2; + description "OSPF broadcast multi-access network"; + } + } + default "none"; + } + + // VRF Operational state + typedef ospfv3_OperSt { + type enumeration { + enum invalid { + value 0; + description "VRF Operational state is invalid"; + } + enum down { + value 1; + description "VRF Operational state is down"; + } + enum up { + value 2; + description "VRF Operational state is up"; + } + } + default "down"; + } + + // Passive Control + typedef ospfv3_PassiveControl { + type enumeration { + enum none { + value 0; + description "Unconfigure interface passive configuration"; + } + enum enabled { + value 1; + description "Configure interface as passive"; + } + enum disabled { + value 2; + description "Configure interface as non-passive"; + } + } + default "none"; + } + + // Retransmit interval + typedef ospfv3_ReTxIntvl { + type uint16 { + range "1..65535"; + } + default "5"; + } + + // Spf computation hold interval + typedef ospfv3_SpfCompHoldIntvl { + type uint32 { + range "1..600000"; + } + default "1000"; + } + + // Spf computation initial wait interval + typedef ospfv3_SpfCompInitIntvl { + type uint32 { + range "1..600000"; + } + default "200"; + } + + // Spf computation maximum wait interval + typedef ospfv3_SpfCompMaxIntvl { + type uint32 { + range "1..600000"; + } + default "5000"; + } + + // Tramist delay + typedef ospfv3_TxDelay { + type uint16 { + range "1..450"; + } + default "1"; + } + + // Bundle port number + typedef pc_BdlPortNum { + type uint32; + } + + // Channeling Status + typedef pc_ChannelingSt { + type enumeration { + enum unknown { + value 0; + } + enum channeling { + value 1; + } + enum individual { + value 2; + } + enum failed { + value 3; + } + enum suspended { + value 4; + } + enum hot-standby { + value 5; + } + } + } + + // force channel-group + typedef pc_ChnlGrpForce { + type boolean; + } + + // Member port flags + typedef pc_Flags { + + type string; + } + + // Hash distribution type + typedef pc_HashDist { + type enumeration { + enum none { + value 0; + description "None"; + } + enum adaptive { + value 1; + description "Adaptive"; + } + enum fixed { + value 2; + description "Fixed"; + } + } + default "none"; + } + + // Interface ordinal + typedef pc_Iod { + type uint32; + } + + // Last Status + typedef pc_LastSt { + type enumeration { + enum successful { + value 0; + } + enum failed { + value 1; + } + } + } + + // LIF + typedef pc_Lif { + type uint32; + } + + // Load defer timeout + typedef pc_LoadDeferTime { + type uint32 { + range "1..1800"; + } + default "120"; + } + + // LTL + typedef pc_Ltl { + type uint32; + } + + // LTL programmed + typedef pc_LtlProgrammed { + type boolean; + } + + // Max possible active members + typedef pc_MaxActive { + type uint32; + } + + // Maximum links + typedef pc_MaxLinks { + type uint32 { + range "1..32"; + } + default "32"; + } + + // Minimum links + typedef pc_MinLinks { + type uint32 { + range "1..32"; + } + default "1"; + } + + // Port channel mode + typedef pc_Mode { + type enumeration { + enum on { + value 0; + description "on"; + } + enum static { + value 1; + description "Static"; + } + enum active { + value 2; + description "lacp-active"; + } + enum passive { + value 3; + description "lacp-passive"; + } + enum mac-pin { + value 4; + description "Mac Pinning"; + } + } + default "on"; + } + + // Number of port-channels + typedef pc_NumChannels { + type uint32; + } + + // Operational State + typedef pc_OperSt { + type enumeration { + enum up { + value 0; + description "Up"; + } + enum down { + value 1; + description "Down"; + } + enum bringup-in-progress { + value 2; + description "Bringup in Progress"; + } + enum module-removed { + value 3; + description "Module Removed"; + } + } + } + + // Hash distribution type + typedef pc_PCHashDist { + type enumeration { + enum adaptive { + value 1; + description "Adaptive"; + } + enum fixed { + value 2; + description "Fixed"; + } + } + default "adaptive"; + } + + // Port channel id + typedef pc_PcId { + type uint16 { + range "0..65535"; + } + } + + // Percentage of used port-channels + typedef pc_PcntChannels { + type uint8 { + range "0..100"; + } + } + + // Port-channel type + typedef pc_PoType { + type enumeration { + enum none { + value 0; + description "none"; + } + enum hif-pc { + value 1; + description "hif-pc"; + } + enum non-hif-pc { + value 2; + description "non-hif-pc"; + } + } + default "none"; + } + + typedef pc_PortChannelProtocol { + type enumeration { + enum unknown { + value 0; + } + enum none { + value 1; + } + enum lacp { + value 2; + } + } + default "unknown"; + } + + // Port-channel type + typedef pc_PortChannelType { + type enumeration { + enum ethernet { + value 0; + } + } + default "ethernet"; + } + + // Summarized Operational State + typedef pc_SummOperSt { + type enumeration { + enum up { + value 0; + description "Up"; + } + enum down { + value 1; + description "Down"; + } + enum module-removed { + value 2; + description "Module-removed"; + } + enum individual { + value 3; + description "Individual"; + } + enum suspended { + value 4; + description "Suspended"; + } + enum hot-standby { + value 5; + description "Hot-standby"; + } + } + default "down"; + } + + // suspended due to min-links + typedef pc_SuspMinlinks { + type boolean; + } + + // Time + typedef pc_Time { + type union { + type string; + type uint64; + } + } + + // Event History Buffer Type + typedef pim6_EhType { + type enumeration { + enum assertRcv { + value 0; + description "Assert-receive events for pim6"; + } + enum bidir { + value 1; + description "Bidir events for pim6"; + } + enum hello { + value 2; + description "Hello events for pim6"; + } + enum joinPrune { + value 3; + description "Join-prune events for pim6"; + } + enum nullReg { + value 4; + description "null-register events for pim6"; + } + enum packet { + value 5; + description "Packet events for pim6"; + } + enum pim6Internal { + value 6; + description "pim-internal events for pim6"; + } + enum rp { + value 7; + description "RP events for pim6"; + } + enum vrf { + value 8; + description "vrf events for pim6"; + } + enum jpSum { + value 9; + description "join-prune-summary events for pim6"; + } + enum jpTw { + value 10; + description "join-prune-tw events for pim6"; + } + enum cli { + value 11; + description "cli events for pim6"; + } + enum vpc { + value 12; + description "vpc events for pim6"; + } + enum pimLib { + value 13; + description "pim-library events for pim6"; + } + enum nbm { + value 14; + description "nbm events for pim6"; + } + enum mrib { + value 15; + description "mrib events for pim6"; + } + enum dataRegRecv { + value 16; + description "data-register-receive events for pim6"; + } + enum txlist { + value 17; + description "txlist events for pim6"; + } + enum objstore { + value 18; + description "Objstore events for pim6"; + } + } + } + + // Event History Buffer size in Text/kb + typedef pim6_Size { + type uint32 { + range "0..4 | 5..119999999"; + } + default "0"; + } + + // BFD state + typedef pim_BfdInstSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + enum none { + value 0; + description "None"; + } + } + default "none"; + } + + // Designated Router Delay TODO: Not present on N3548 or N9K + // verify naming based on purpose, range and default + typedef pim_DRDelay { + type uint16 { + range "1..65535"; + } + default "3"; + } + + // Designated Router Priority + typedef pim_DRPrio { + type uint32 { + range "1..4294967295"; + } + default "1"; + } + + // Event History Buffer Type + typedef pim_EhType { + type enumeration { + enum assert { + value 0; + description "Assert events for pim"; + } + enum bidir { + value 1; + description "Bidir events for pim"; + } + enum cli { + value 2; + description "Cli events for pim"; + } + enum dataRegRecv { + value 3; + description "Data-register-receive events for pim"; + } + enum hello { + value 4; + description "Hello events for pim"; + } + enum joinPrune { + value 5; + description "Join-prune events for pim"; + } + enum mrib { + value 6; + description "Mrib events for pim"; + } + enum nullReg { + value 7; + description "null-register events for pim"; + } + enum packet { + value 8; + description "Packet events for pim"; + } + enum nbm { + value 9; + description "NBM events for pim"; + } + enum pimInternal { + value 10; + description "pim-internal events for pim"; + } + enum pimLib { + value 11; + description "pim-library events for pim"; + } + enum rp { + value 12; + description "RP events for pim"; + } + enum txlist { + value 13; + description "txlist events for pim"; + } + enum vpc { + value 14; + description "vpc events for pim"; + } + enum vrf { + value 15; + description "vrf events for pim"; + } + enum jpSum { + value 16; + description "join-prune-summary events for pim"; + } + enum jpTw { + value 17; + description "join-prune-tw events for pim"; + } + enum objstore { + value 18; + description "Objstore events for pim"; + } + } + } + + // Interface Ctrl + typedef pim_IfCtrl { + + type string; + default "1"; + } + + // Interface identifier + typedef pim_IfId { + type string; + } + + typedef pim_LoggingLvl { + type uint16 { + range "0..7"; + } + default "5"; + } + + // route oif list types + typedef pim_OifFlagsNew { + + type string; + } + + // Generation Id + typedef pim_PropGenId { + type uint32 { + range "0..4294967295"; + } + } + + // Event History Buffer size in Text/kb + typedef pim_Size { + type uint32 { + range "0..4 | 5..119999999"; + } + default "3"; + } + + // Database type + typedef pim_ifdbT { + type enumeration { + enum stats { + value 0; + description "PIM Stats database"; + } + enum adj { + value 1; + description "PIM Adj database"; + } + enum prop { + value 2; + description "PIM Property database"; + } + } + } + + typedef pki_AES128IV { + type string; + } + + typedef pki_AES128Key { + type string; + } + + typedef pki_Cert { + type string; + } + + typedef pki_CertEnrollType { + type enumeration { + enum none { + value 0; + description "Trustpoint Enrollment None"; + } + enum terminal { + value 1; + description "Configure Trustpoint Enrollment via Console"; + } + } + default "none"; + } + + typedef pki_CertLookupType { + type enumeration { + enum remote { + value 2; + description "Use Remote Certstore for Lookup"; + } + enum local { + value 3; + description "Use Local Certstore for Lookup"; + } + enum both { + value 4; + description "Use Both Local and Remote Certstore for Lookup"; + } + } + default "local"; + } + + typedef pki_CertRevokeCheck { + type enumeration { + enum crl { + value 0; + description "Configure Revocation Check Using crl"; + } + enum ocsp { + value 1; + description "Configure Revocation Check Using ocsp"; + } + enum none { + value 2; + description "Configure Revocation Check Using none"; + } + enum crl-none { + value 3; + description "Configure Revocation Check Methods crl and none"; + } + enum oscp-none { + value 4; + description "Configure Revocation Check Methods oscp and none"; + } + enum crl-ocsp { + value 5; + description "Configure Revocation Check Methods crl and ocsp"; + } + enum ocsp-crl { + value 6; + description "Configure Revocation Check Methods oscp and crl"; + } + enum ocsp-crl-none { + value 7; + description "Configure Revocation Check Methods oscp crl and none"; + } + enum crl-ocsp-none { + value 8; + description "Configure Revocation Check Methods crl ocsp and none"; + } + } + default "crl"; + } + + typedef pki_CertValidity { + type string; + } + + typedef pki_CrlRefreshTime { + type uint16 { + range "0..744"; + } + } + + typedef pki_Csync2KeyType { + type string; + } + + typedef pki_CsyncActivationStateType { + type enumeration { + enum disabled { + value 0; + description "Disabled"; + } + enum enabled { + value 1; + description "Enabled"; + } + } + default "enabled"; + } + + typedef pki_CsyncElementType { + type enumeration { + enum exclude { + value 0; + description "exclude"; + } + enum include { + value 1; + description "include"; + } + } + default "include"; + } + + typedef pki_CsyncRefreshIntervalType { + type uint16 { + range "30..600"; + } + default "30"; + } + + typedef pki_FP { + type string; + } + + typedef pki_FilterName { + type string { + length "0..63"; + } + } + + typedef pki_GuiIdleTimeoutType { + type uint16 { + range "60..65525"; + } + default "1200"; + } + + typedef pki_KeyLabel { + type string { + length "0..64"; + } + } + + typedef pki_KeyringState { + type enumeration { + enum started { + value 1; + description "Started"; + } + enum created { + value 2; + description "Created"; + } + enum reqCreated { + value 3; + description "Request Created"; + } + enum tpSet { + value 4; + description "Trust Provider Set"; + } + enum completed { + value 5; + description "Completed"; + } + } + default "started"; + } + + typedef pki_Modulus { + type enumeration { + enum mod512 { + value 512; + description "MOD 512"; + } + enum mod768 { + value 768; + description "MOD 768"; + } + enum mod1024 { + value 1024; + description "MOD 1024"; + } + enum mod1536 { + value 1536; + description "MOD 1536"; + } + enum mod2048 { + value 2048; + description "MOD 2048"; + } + } + default "mod512"; + } + + typedef pki_Port { + type uint32 { + range "0..65535"; + } + } + + typedef pki_PrivateKey { + type string { + length "0..4096"; + } + } + + typedef pki_ProviderGroupName { + type string { + length "0..64"; + } + } + + typedef pki_SHA256_SharedSecret16 { + type string; + } + + typedef pki_SessionRecordFlags { + + type string; + default "7"; + } + + typedef pki_WebTokenTimeoutType { + type uint16 { + range "300..9600"; + } + default "600"; + } + + // Units are in hours - minimum 4 hours, maximum 24 hours + typedef pki_WebTokenValidityPeriodType { + type uint16 { + range "4..24"; + } + default "24"; + } + + // Pktmgr Rate-limit Direction + typedef pktmgr_RateLimitDirection { + type enumeration { + enum input { + value 1; + description "Set Max Input Packet Rate"; + } + enum output { + value 2; + description "Set Max Output Packet Rate"; + } + enum both { + value 3; + description "Set Max Input and Output Packet Rate"; + } + enum unspecified { + value 4; + description "Unspecified Direction"; + } + } + default "unspecified"; + } + + // acl tap-aggregation + typedef platform_AclTapAggregation { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_AdminState { + type nw_AdminSt; + default "disabled"; + } + + typedef platform_AtomicUpdate { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "enable"; + } + + typedef platform_AtomicUpdateStrict { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_Bitmap { + type mtx_array_bit; + } + + typedef platform_BufferProfileOptions { + type enumeration { + enum mesh { + value 0; + description "Mesh optimized"; + } + enum burst { + value 1; + description "Burst optimized"; + } + enum ultra-burst { + value 2; + description "Ultra burst optimized"; + } + } + default "burst"; + } + + typedef platform_Concatenation { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 0; + } + enum rotateEnable { + value 2; + } + } + default "disable"; + } + + // PFC WD Types + typedef platform_ConfigOnOff { + type enumeration { + enum off { + value 0; + } + enum on { + value 1; + } + } + default "off"; + } + + typedef platform_ConfigState { + type enumeration { + enum Disabled { + value 0; + } + enum Enabled { + value 1; + } + } + default "Disabled"; + } + + typedef platform_ConfigureSt { + type enumeration { + enum unconfigure { + value 0; + } + enum configure { + value 1; + } + } + default "configure"; + } + + typedef platform_DisParseErr { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_DynamicLimit { + type uint8 { + range "0..255"; + } + default "255"; + } + + typedef platform_EgrSupSize { + type uint32 { + range "0..2147483647"; + } + default "256"; + } + + typedef platform_Encapsulation { + type enumeration { + enum gre { + value 1; + } + enum disable { + value 0; + } + } + default "disable"; + } + + typedef platform_EntityCfgFaultBmp { + + type string; + default "0x0"; + } + + typedef platform_FabricMode { + type enumeration { + enum default { + value 2; + } + enum full-rate { + value 1; + } + } + default "default"; + } + + typedef platform_FabricSpeed { + type enumeration { + enum default { + value 0; + } + enum fabric-speed-40g { + value 1; + } + } + default "default"; + } + + typedef platform_FrontPortmode { + type enumeration { + enum sfp-plus { + value 0; + } + enum qsfp { + value 1; + } + } + default "qsfp"; + } + + typedef platform_GlobalTxSpan { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_HwProfile { + type enumeration { + enum Default { + value 0; + } + enum QS_PORT_MODE_64X10G { + value 1; + } + enum QS_PORT_MODE_48X10G_4X40G { + value 2; + } + enum QS_PORT_MODE_52X10G_3X40g { + value 3; + } + enum QS_PORT_MODE_56X10G_2X40G { + value 4; + } + enum QS_PORT_MODE_60X10G_1X40G { + value 5; + } + enum QS_PORT_MODE { + value 6; + } + enum QG_PORT_MODE_32X10G_8X40G { + value 9; + } + enum QG_PORT_MODE_16X40G { + value 10; + } + enum QG_PORT_MODE_16X10G_12X40G { + value 11; + } + enum QG_PORT_MODE_8X10G_14X40G { + value 12; + } + enum NEP_PORT_MODE_32X40G { + value 13; + } + enum NEP_PORT_MODE_24X40G { + value 14; + } + enum NEP_PORT_MODE_26X40G { + value 15; + } + enum NEP_PORT_MODE_32X40G_FIXED { + value 16; + } + enum QI2_PORT_MODE_72X10G { + value 17; + } + enum QI2_PORT_MODE_48X10G_6x40G { + value 18; + } + enum QI2_PORT_MODE_BKOUT { + value 19; + } + enum DV_PORT_MODE_48X25G_4X100G { + value 20; + } + enum DV_PORT_MODE_48X25G_2X100G_4X40G { + value 21; + } + enum PB_PORT_MODE_48X10G_6X100G { + value 22; + } + enum PB_PORT_MODE_48X10G_4X100G_2X40G { + value 23; + } + enum FOST_PORT_MODE_28X40G_4X100G { + value 26; + } + enum FOST_PORT_MODE_18X100G { + value 27; + } + enum FOST_PORT_MODE_24X40G_6X100G { + value 28; + } + enum TET_PORT_MODE_64X100G { + value 29; + } + enum TET_PORT_MODE_96X25G_32X100G { + value 30; + } + enum TET_PORT_MODE_128X25G { + value 31; + } + enum CMR_PORT_MODE_128X100G_32X400G { + value 32; + } + enum CMR_PORT_MODE_160X25G_8X100G { + value 33; + } + enum CMR_PORT_MODE_128X100G_30X400G_2X200G { + value 34; + } + } + default "Default"; + } + + typedef platform_IPV6alpmCarveValues { + type uint16 { + range "0..4096"; + } + default "0"; + } + + typedef platform_IPv6LpmRange { + type uint32 { + range "0..6144"; + } + } + + typedef platform_Interval { + type uint32 { + range "500..60000"; + } + } + + // Internal Interface Global Qos Params + typedef platform_IntlIntfPauseSz { + type uint32 { + range "0..12582912"; + } + } + + typedef platform_IpStatistics { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_LoadBalanceAlgo { + type enumeration { + enum dstMac { + value 1; + } + enum srcMac { + value 2; + } + enum srcDstMac { + value 3; + } + enum dstIpVlan { + value 4; + } + enum srcIpVlan { + value 5; + } + enum srcDstIpVlan { + value 6; + } + enum dstL4Port { + value 7; + } + enum srcL4Port { + value 8; + } + enum srcDstL4Port { + value 9; + } + enum dstIpL4Port { + value 10; + } + enum srcIpL4Port { + value 11; + } + enum srcDstIpL4Port { + value 12; + } + enum dstIpL4PortVlan { + value 13; + } + enum srcIpL4PortVlan { + value 14; + } + enum srcDstIpL4PortVlan { + value 15; + } + enum dstIp { + value 16; + } + enum srcIp { + value 17; + } + enum srcDstIp { + value 18; + } + enum srcIpGre { + value 21; + } + enum dstIpGre { + value 22; + } + enum srcDstIpGre { + value 23; + } + enum srcDstIpOnly { + value 24; + } + enum srcDstL4PortOnly { + value 25; + } + enum ethDstIpGre { + value 26; + } + enum ethSrcIpGre { + value 27; + } + enum ethSrcDstIpGre { + value 28; + } + enum srcInnerheader { + value 30; + } + enum dstInnerheader { + value 31; + } + enum srcDstInnerheader { + value 32; + } + enum srcGtpu { + value 33; + } + enum dstGtpu { + value 34; + } + enum srcDstGtpu { + value 35; + } + } + default "srcDstIpL4Port"; + } + + // Log level type + typedef platform_LoggingLevel { + type uint16 { + range "0..7"; + } + default "5"; + } + + // Logging Level + typedef platform_LoggingType { + type enumeration { + enum Emergencies { + value 0; + description "Emergencies"; + } + enum Alerts { + value 1; + description "Alerts"; + } + enum Critical { + value 2; + description "Critical"; + } + enum Errors { + value 3; + description "Errors"; + } + enum Warnings { + value 4; + description "Warnings"; + } + enum Notification { + value 5; + description "Notification"; + } + enum Information { + value 6; + description "Information"; + } + enum Debugging { + value 7; + description "Debugging"; + } + } + default "Notification"; + } + + typedef platform_LpmMaxLimits { + type uint16 { + range "0..4096"; + } + } + + typedef platform_McastFlexStats { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_McastLpmMaxEntriesType { + type uint32 { + range "0..4096"; + } + default "2048"; + } + + typedef platform_McastNlb { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_McastNlbStickPc { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_MldSnooping { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_MplsEcmpMode { + type enumeration { + enum invalid { + value 0; + description "Extended-ECMP invalid"; + } + enum disable { + value 1; + description "Extended-ECMP off"; + } + enum enable { + value 2; + description "Extended-ECMP on"; + } + } + default "disable"; + } + + typedef platform_MplsStatsType { + type enumeration { + enum PACKETS { + value 0; + description "Packets only mode"; + } + enum BYTES { + value 1; + description "Bytes only mode"; + } + } + default "PACKETS"; + } + + typedef platform_MroutingDisableL2Upd { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_MroutingDisableSecRouteUpd { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + // mrouting + typedef platform_MroutingPerfMode { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_MulticastMaxLimit { + type uint16 { + range "0..8000"; + } + default "4096"; + } + + typedef platform_OqDropsType { + type enumeration { + enum occupancy { + value 1; + description "Occupancy drops"; + } + enum aqm { + value 2; + description "WRED or AFD drops"; + } + enum both { + value 3; + description "Both aqm and occupancy"; + } + } + default "both"; + } + + typedef platform_OqStatsType { + type enumeration { + enum occupancy { + value 1; + description "Occupancy drops"; + } + enum aqm { + value 2; + description "WRED or AFD drops"; + } + enum both { + value 3; + description "Both aqm and occupancy"; + } + enum ecn-stats { + value 4; + description "ECN marking statistics"; + } + enum ecn_and_aqm { + value 5; + description "Both ecn and aqm"; + } + enum ecn_and_occupancy { + value 6; + description "Both ecn and occupancy"; + } + enum all { + value 7; + description "Aggregated OCC-drops, WRED-drops, ECN-stats"; + } + } + default "both"; + } + + typedef platform_PcFastConv { + type enumeration { + enum enable { + value 1; + description "port-channel fast convergence"; + } + enum disable { + value 2; + description "no port-channel fast convergence"; + } + } + default "disable"; + } + + typedef platform_PcLbAlgo { + type enumeration { + enum PC_LB_ALGO_DLB { + value 1; + } + enum PC_LB_ALGO_RTAG7 { + value 2; + } + enum PC_LB_ALGO_RTAG7_MURMUR { + value 3; + } + enum PC_LB_ALGO_RTAG7_LOCAL_CRC { + value 4; + } + enum PC_LB_ALGO_DYNAMIC_PIN { + value 5; + } + } + default "PC_LB_ALGO_DLB"; + } + + typedef platform_PcLbRes { + type enumeration { + enum yes { + value 1; + description "port-channel load-balance resilient"; + } + enum no { + value 2; + description "no port-channel load-balance resilient"; + } + } + default "no"; + } + + typedef platform_PcMplsLbLabelIp { + type enumeration { + enum DEFAULT { + value 0; + } + enum LABEL_IP { + value 1; + } + } + default "DEFAULT"; + } + + typedef platform_PcMplsLbLabelOnly { + type enumeration { + enum DEFAULT { + value 0; + } + enum LABEL_ONLY { + value 1; + } + } + default "DEFAULT"; + } + + typedef platform_PcScaleFanout { + type enumeration { + enum enable { + value 1; + description "port-channel scale fanout"; + } + enum disable { + value 2; + description "no port-channel scale fanout"; + } + } + default "disable"; + } + + // Input Buffer Peak Type + typedef platform_PeakCountType { + type enumeration { + enum port { + value 0; + description "Buffer input peak type port"; + } + enum class1 { + value 1; + description "Buffer input peak type class1"; + } + enum class2 { + value 2; + description "Buffer input peak type class2"; + } + enum class3 { + value 3; + description "Buffer input peak type class3"; + } + enum class4 { + value 4; + description "Buffer input peak type class4"; + } + enum class5 { + value 5; + description "Buffer input peak type class5"; + } + enum class6 { + value 6; + description "Buffer input peak type class6"; + } + enum class7 { + value 7; + description "Buffer input peak type class7"; + } + } + default "port"; + } + + typedef platform_Percent { + type uint16 { + range "0..100"; + } + default "0"; + } + + typedef platform_Percentage { + type uint16 { + range "1..100"; + } + default "90"; + } + + typedef platform_PstatCfg { + type enumeration { + enum PSTAT_DISABLE { + value 0; + } + enum PSTAT_ENABLE { + value 1; + } + enum PSTAT_ENABLE_PEAK { + value 2; + } + } + default "PSTAT_DISABLE"; + } + + typedef platform_QosAfdBufferProfileOptions { + type enumeration { + enum mesh { + value 0; + description "Mesh optimized"; + } + enum burst { + value 1; + description "Burst optimized"; + } + enum ultra-burst { + value 2; + description "Ultra burst optimized"; + } + } + } + + typedef platform_QosGroup { + type enumeration { + enum 0 { + value 0; + description "Qos Group 0"; + } + enum 1 { + value 1; + description "Qos Group 1"; + } + enum 2 { + value 2; + description "Qos Group 2"; + } + enum 3 { + value 3; + description "Qos Group 3"; + } + enum all { + value 4; + description "Qos Group all"; + } + } + default "0"; + } + + typedef platform_QosGroupForQueuingStatistics { + type enumeration { + enum q0 { + value 0; + description "QOS_GROUP_0"; + } + enum q1 { + value 1; + description "QOS_GROUP_1"; + } + enum q2 { + value 2; + description "QOS_GROUP_2"; + } + enum q3 { + value 3; + description "QOS_GROUP_3"; + } + enum q4 { + value 4; + description "QOS_GROUP_4"; + } + enum q5 { + value 5; + description "QOS_GROUP_5"; + } + enum q6 { + value 6; + description "QOS_GROUP_6"; + } + enum q7 { + value 7; + description "QOS_GROUP_7"; + } + enum q8 { + value 8; + description "QOS_GROUP_8"; + } + enum q9 { + value 9; + description "QOS_GROUP_9"; + } + } + } + + typedef platform_QosGroupVal { + type enumeration { + enum 0 { + value 0; + description "Qos Group 0"; + } + enum 1 { + value 1; + description "Qos Group 1"; + } + enum 2 { + value 2; + description "Qos Group 2"; + } + enum 3 { + value 3; + description "Qos Group 3"; + } + } + default "3"; + } + + typedef platform_QosLabelOpt { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_QosMinBuffer { + type enumeration { + enum all { + value 0; + } + enum none { + value 1; + } + enum default { + value 2; + } + } + default "all"; + } + + typedef platform_QosModePipe { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_RefTemplate { + type enumeration { + enum unspecified { + value 0; + description "unspecified"; + } + enum l3 { + value 1; + description "l3"; + } + enum l2-l3 { + value 2; + description "l2-l3"; + } + enum nfe { + value 3; + description "nfe"; + } + enum nfe2 { + value 4; + description "nfe2"; + } + } + } + + typedef platform_Rotate { + type uint16 { + range "0..63"; + } + default "0"; + } + + typedef platform_RoutingMode { + type enumeration { + enum DEFAULT { + value 0; + } + enum NON_HIER_DEFAULT { + value 1; + } + enum NON_HIER_MAX_L3 { + value 2; + } + enum MAX_HOST { + value 3; + } + enum TOR_MAX_L3 { + value 4; + } + enum DEFAULT_64B { + value 5; + } + enum NON_HIER_MAX_L3_64B { + value 6; + } + enum TOR_MAX_L3_64B { + value 7; + } + enum TOR_MAX_L2 { + value 8; + } + enum TOR_MAX_L2L3 { + value 9; + } + enum TOR_TEMPLATE_OVL_HOST_SCALE { + value 21; + } + enum TEMPLATE_LPM_HEAVY { + value 22; + } + enum TOR_TEMPLATE_LPM_SCALE_V6_64 { + value 23; + } + enum TOR_TEMPLATE_DUAL_STACK_HOST_SCALE { + value 24; + } + enum TEMPLATE_SERVICE_PROVIDER { + value 25; + } + enum TEMPLATE_MULTICAST_HEAVY { + value 26; + } + enum TEMPLATE_VXLAN_SCALE { + value 27; + } + enum TEMPLATE_MPLS_SCALE { + value 28; + } + enum TEMPLATE_INTERNET_PEERING { + value 29; + } + enum TEMPLATE_MULTICAST_EXT_HEAVY { + value 31; + } + enum TEMPLATE_MULTICAST_DUAL_STACK { + value 35; + } + enum TEMPLATE_L2_HEAVY { + value 36; + } + enum TEMPLATE_L3_HEAVY { + value 32; + } + enum TEMPLATE_L2_SCALE { + value 38; + } + } + default "DEFAULT"; + } + + typedef platform_SiFlexStats { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_SourceScope { + type enumeration { + enum unicast-queue { + value 0; + } + enum ingress-port { + value 1; + } + enum egress-port { + value 2; + } + } + default "unicast-queue"; + } + + typedef platform_SviAndSiFlexStats { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_SviFlexStats { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_SwitchMode { + type enumeration { + enum default { + value 0; + } + enum n3k { + value 1; + } + enum n9k { + value 2; + } + } + default "default"; + } + + typedef platform_SwitchingMode { + type enumeration { + enum DEFAULT { + value 0; + } + enum STORE_FORWARD { + value 1; + } + } + default "DEFAULT"; + } + + typedef platform_Symmetry { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 0; + } + } + default "disable"; + } + + // System Memory Threshold + typedef platform_SysMemThVal { + type uint32 { + range "50..100"; + } + default "50"; + } + + typedef platform_TcamDefaultResult { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_TcamRegionCfgFault { + type enumeration { + enum none { + value 0; + } + enum TCAM_template_validation { + value 1; + } + } + default "none"; + } + + typedef platform_TcamRegionCfgFaultBmp { + + type string; + default "0x0"; + } + + typedef platform_TcamRegionExtdCfgFaultBmp { + + type string; + default "0x0"; + } + + typedef platform_TcamTemplateName { + type string { + length "0..40"; + } + } + + typedef platform_TcpNatTcamRegionSize { + type uint16 { + range "0..100"; + } + default "0"; + } + + typedef platform_ThresPercentage { + type uint8 { + range "0..100"; + } + } + + typedef platform_ThresUnit { + type enumeration { + enum packets { + value 1; + description "Packets"; + } + enum bytes { + value 2; + description "Bytes"; + } + enum kbytes { + value 3; + description "kBytes"; + } + enum mbytes { + value 4; + description "mBytes"; + } + } + default "bytes"; + } + + typedef platform_ThreshUnit { + type enumeration { + enum bytes { + value 1; + description "bytes"; + } + } + default "bytes"; + } + + typedef platform_Threshold { + type uint32 { + range "0..13319072"; + } + default "0"; + } + + // PacketDrop Types + typedef platform_TriggerType { + type enumeration { + enum wred { + value 0; + } + enum ingress-admission { + value 1; + } + enum egress-admission { + value 2; + } + } + default "wred"; + } + + typedef platform_Tuple { + type enumeration { + enum Disable { + value 0; + } + enum Enable { + value 1; + } + } + default "Disable"; + } + + typedef platform_UdfCfgFault { + type enumeration { + enum none { + value 0; + } + enum definition { + value 1; + } + enum qualifySpan { + value 2; + } + enum qualifySpanV6 { + value 3; + } + enum qualifySpanV6L2 { + value 4; + } + enum qualifyRacl { + value 5; + } + enum qualifyVacl { + value 6; + } + enum qualifyIfacl { + value 7; + } + enum qualifyIpv6Racl { + value 8; + } + enum qualifyRaclAll { + value 9; + } + enum qualifySpanAll { + value 10; + } + } + default "none"; + } + + typedef platform_UdfName { + type string { + length "0..16"; + } + } + + // UDF Types + typedef platform_UdfOffsetBase { + type enumeration { + enum packet-start { + value 0; + } + enum outer-header-l3 { + value 1; + } + enum outer-header-l4 { + value 2; + } + enum inner-header-l3 { + value 3; + } + enum inner-header-l4 { + value 4; + } + } + default "packet-start"; + } + + typedef platform_UdfTcamType { + type string; + } + + typedef platform_UnicastMaxLimit { + type uint16 { + range "0..8000"; + } + } + + typedef platform_UnicastTrace { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + } + + typedef platform_bufferMonitorMd { + type enumeration { + enum None { + value 0; + } + enum Unicast { + value 2; + } + enum Multicast { + value 3; + } + } + default "None"; + } + + typedef platform_bufferMonitorSampling { + type uint32 { + range "0..20000000"; + } + default "4000000"; + } + + typedef platform_bufferMonitorSt { + type enumeration { + enum Enable { + value 1; + } + enum Disable { + value 0; + } + } + default "Enable"; + } + + typedef platform_bufferMonitorThreshhold { + type uint32 { + range "0..6144"; + } + default "0"; + } + + typedef platform_egrL2QosIfaclTcamLabelSize { + type enumeration { + enum disable { + value 5; + } + enum enable { + value 6; + } + } + default "disable"; + } + + typedef platform_entityCfgFault { + type enumeration { + enum none { + value 0; + } + enum Entity_Config { + value 1; + } + } + default "none"; + } + + typedef platform_flowTcamRegionSize { + type uint32 { + range "0..2147483647"; + } + default "512"; + } + + typedef platform_forwardingModeConfigFailed { + type uint32 { + range "0..1"; + } + default "0"; + } + + typedef platform_forwardingModeHostEntryWarp { + type uint32 { + range "0..16384"; + } + default "0"; + } + + typedef platform_forwardingModeL2EntryWarp { + type uint32 { + range "0..16384"; + } + default "0"; + } + + typedef platform_forwardingModeLpmEntryNormal { + type uint32 { + range "0..28672"; + } + default "0"; + } + + typedef platform_forwardingModeLpmEntryWarp { + type uint32 { + range "0..8192"; + } + default "0"; + } + + typedef platform_forwardingModeMcstEntryNormal { + type uint32 { + range "0..28672"; + } + default "0"; + } + + typedef platform_forwardingModeMcstEntryWarp { + type uint32 { + range "0..16384"; + } + default "0"; + } + + typedef platform_forwardingModeSelector { + type enumeration { + enum normal { + value 1; + } + enum warp { + value 2; + } + enum openflow-hybrid { + value 3; + } + enum openflow-only { + value 4; + } + } + default "normal"; + } + + typedef platform_iPaclIfaclTcamLabelSize { + type enumeration { + enum disable { + value 5; + } + enum enable { + value 6; + } + } + default "disable"; + } + + typedef platform_infraVlanForce { + type enumeration { + enum Disable { + value 0; + } + enum Enable { + value 1; + } + } + default "Disable"; + } + + typedef platform_infraVlanId { + type uint16 { + range "0..4096"; + } + } + + typedef platform_ingIfaclTcamRegionSize { + type uint32 { + range "0..2147483647"; + } + default "0"; + } + + typedef platform_ingL2QosTahTcamRegionSize { + type uint32 { + range "0..2147483647"; + } + default "256"; + } + + typedef platform_ingL2SpanFilterTcamRegionSize { + type uint32 { + range "0..2147483647"; + } + default "256"; + } + + typedef platform_ingL3SpanFilterTcamRegionSize { + type uint32 { + range "0..2147483647"; + } + default "256"; + } + + typedef platform_ingRaclTcamRegionSize { + type uint32 { + range "0..2147483647"; + } + default "5120"; + } + + typedef platform_ingVlanTcamRegionSize { + type uint32 { + range "0..2147483647"; + } + default "512"; + } + + typedef platform_latencyMonitorSampling { + type uint32 { + range "1..30"; + } + default "3"; + } + + typedef platform_latencyMonitorSt { + type enumeration { + enum Enable { + value 1; + } + enum Disable { + value 0; + } + } + default "Disable"; + } + + typedef platform_latencyMonitorThreshholdAv { + type uint32 { + range "300..20000000"; + } + default "1000000"; + } + + typedef platform_latencyMonitorThreshholdMx { + type uint32 { + range "300..20000000"; + } + default "2000000"; + } + + typedef platform_mcastDcsCheck { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "enable"; + } + + typedef platform_mcastSlowRcvState { + type nw_AdminSt; + default "disabled"; + } + + typedef platform_moduleNumberSt { + type uint16 { + range "1..32"; + } + } + + typedef platform_multicastServiceReflectPort { + type uint32 { + range "0..48"; + } + default "0"; + } + + typedef platform_mvpnTcamRegionSize { + type uint16 { + range "0..10"; + } + default "0"; + } + + typedef platform_pfcMmuBufferRes { + type uint16 { + range "0..100"; + } + } + + typedef platform_pfcMmuBufferSt { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "enable"; + } + + typedef platform_pfcMmuCfgFault { + type enumeration { + enum none { + value 0; + } + enum Pfc_Buffer_Resource_Limitation { + value 1; + } + } + default "none"; + } + + typedef platform_portThresPercentage { + type uint8 { + range "1..95"; + } + } + + typedef platform_poweroffSt { + type enumeration { + enum no { + value 0; + description "No Power Off"; + } + enum yes { + value 1; + description "Power Off"; + } + } + default "no"; + } + + typedef platform_redirectV4TcamRegionSize { + type uint32 { + range "0..2147483647"; + } + default "2048"; + } + + typedef platform_slotNumber { + type uint16 { + range "0..32"; + } + } + + typedef platform_spanTahTcamRegionSize { + type uint32 { + range "0..2147483647"; + } + default "512"; + } + + typedef platform_tcamLabelSize { + type enumeration { + enum disable { + value 6; + } + enum enable { + value 9; + } + } + default "disable"; + } + + typedef platform_tcamRegionSize { + type uint32 { + range "0..2147483647"; + } + default "0"; + } + + // Logging level type + typedef poe_LoggingLevel { + type uint16 { + range "0..7"; + } + default "5"; + } + + // Logging Level + typedef poe_LoggingType { + type enumeration { + enum Emergencies { + value 0; + description "Emergencies"; + } + enum Alerts { + value 1; + description "Alerts"; + } + enum Critical { + value 2; + description "Critical"; + } + enum Errors { + value 3; + description "Errors"; + } + enum Warnings { + value 4; + description "Warnings"; + } + enum Notification { + value 5; + description "Notification"; + } + enum Information { + value 6; + description "Information"; + } + enum Debugging { + value 7; + description "Debugging"; + } + } + default "Notification"; + } + + typedef poe_poeDefaultConsumption { + type uint64 { + range "4000..30000"; + } + default "15400"; + } + + typedef poe_poeMaxConsumption { + type uint64 { + range "4000..60000"; + } + default "30000"; + } + + typedef poe_poePolice { + type enumeration { + enum Default { + value 0; + } + enum errdisable { + value 1; + } + enum log { + value 2; + } + } + default "Default"; + } + + typedef poe_poePortmode { + type enumeration { + enum Default { + value 0; + } + enum never { + value 1; + } + enum auto { + value 2; + } + enum static { + value 3; + } + } + default "auto"; + } + + typedef poe_poePriority { + type enumeration { + enum low { + value 0; + } + enum high { + value 1; + } + } + default "low"; + } + + typedef pol_ObjName { + type string; + } + + // Burst size + typedef policer_Burst { + type uint32; + } + + // Committed rate + typedef policer_Rate { + type uint32; + } + + // Aging types for port security + typedef portsecurity_AgingType { + type enumeration { + enum absolute { + value 1; + description "Absolute"; + } + enum inactivity { + value 2; + description "Inactivity"; + } + } + default "absolute"; + } + + // Violation Action types for port security + typedef portsecurity_ViolationMode { + type enumeration { + enum protect { + value 1; + description "Security violation protect mode"; + } + enum restrict { + value 2; + description "Security violation restrict mode"; + } + enum shutdown { + value 3; + description "Security violation shutdown mode"; + } + } + default "shutdown"; + } + + // Cpu History duration name + typedef proc_CpuHistoryDurationName { + type enumeration { + enum last60seconds { + value 1; + description "last60seconds"; + } + } + default "last60seconds"; + } + + // Cpu History type + typedef proc_CpuHistoryList { + type mtx_array_uint32; + } + + // Operational Status + typedef proc_OperSt { + type enumeration { + enum intr-sleep { + value 0; + description "Interruptible sleep"; + } + enum stopped { + value 1; + description "Stopped"; + } + enum unintr-sleep { + value 2; + description "Uninterruptible sleep"; + } + enum running { + value 3; + description "Running"; + } + enum dead { + value 4; + description "Dead"; + } + enum defunct { + value 5; + description "Defunct"; + } + } + default "intr-sleep"; + } + + // Process operational state + typedef proc_OperState { + type enumeration { + enum up { + value 0; + description "Up"; + } + enum down { + value 1; + description "down"; + } + } + default "up"; + } + + // Percentage Usage + typedef proc_PerUsage { + type uint32 { + range "0..100"; + } + default "0"; + } + + // Process id + typedef proc_ProcId { + type uint32; + } + + // Process memory units + typedef proc_ProcMem { + type uint64; + } + + // Type for process priority + // range 0-20 + typedef proc_ProcPriority { + type uint32 { + range "0..20"; + } + } + + // Process name + typedef proc_ProcessName { + type string; + } + + // Process Type + typedef proc_ProcessType { + type enumeration { + enum unknown { + value 0; + description "Unknown Type"; + } + enum non-sysmgr { + value 1; + description "Non Sysmgr"; + } + enum vdc-local { + value 2; + description " Vdc Local"; + } + enum vdc-global { + value 3; + description "Vdc Global"; + } + enum vdc-unaware { + value 4; + description "Vdc unaware"; + } + enum not-running { + value 5; + description "Not Running"; + } + enum terminated-etc { + value 6; + description "Terminated Etc"; + } + } + default "unknown"; + } + + // Program counter + typedef proc_ProgCntr { + type uint64; + } + + // Stack + typedef proc_Stack { + type uint64; + } + + // Process start count + typedef proc_StartCnt { + type uint32; + } + + typedef ptp_AdminSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "disabled"; + } + + typedef ptp_DeviceType { + type enumeration { + enum boundaryClock { + value 0; + description "Boundary Clock"; + } + enum generalizedPtp { + value 3; + description "Generalized PTP"; + } + } + default "boundaryClock"; + } + + typedef ptp_GmCapable { + type enumeration { + enum enabled { + value 1; + description "grandmaster-capable Enabled"; + } + enum disabled { + value 0; + description "grandmaster-capable Disabled"; + } + } + default "enabled"; + } + + typedef ptp_Mgmt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "enabled"; + } + + // PTP mode for profile + typedef ptp_Mode { + type enumeration { + enum hybrid { + value 1; + description "Hybrid mode for profiles"; + } + enum non-hybrid { + value 2; + description "Non hybrid mode for profiles"; + } + enum none { + value 3; + description "Default mode when nothing is selected"; + } + } + default "none"; + } + + typedef ptp_NotifyHighCorrInterval { + type uint32 { + range "0..300"; + } + default "5"; + } + + typedef ptp_NotifyPortStateChgCategory { + type enumeration { + enum master-slave-only { + value 0; + description "Master-slave-only"; + } + enum all { + value 1; + description "All"; + } + } + default "master-slave-only"; + } + + typedef ptp_NotifyPortStateChgInterval { + type uint32 { + range "0..300"; + } + default "0"; + } + + // PTP priority + typedef ptp_Priority { + type uint32 { + range "0..255"; + } + default "255"; + } + + // PTP profile + typedef ptp_Profile { + type enumeration { + enum 8275-1 { + value 1; + description "PTP telecom profile matching 8275.1"; + } + enum default { + value 2; + description "Default profile for PTP"; + } + } + default "default"; + } + + typedef ptp_PtpDestinationMac { + type enumeration { + enum non-forwardable { + value 0; + description "Non-forwardable"; + } + enum forwardable { + value 1; + description "Forwardable"; + } + } + default "non-forwardable"; + } + + typedef ptp_PtpRxNoMatch { + type enumeration { + enum accept { + value 0; + description "Accept"; + } + enum drop { + value 1; + description "Drop"; + } + enum follow-rx { + value 2; + description "Follow-rx"; + } + } + default "accept"; + } + + typedef ptp_TimeCode { + type enumeration { + enum none { + value 1; + description "None"; + } + enum aes67 { + value 2; + description "AES67-2015"; + } + enum smpte-2059-2 { + value 3; + description "SMPTE-2059-2"; + } + } + default "none"; + } + + typedef ptp_ToleranceThreshold { + type decimal64 { + fraction-digits 6; + range "1..100"; + } + default "1.0"; + } + + typedef ptp_TransmissionRole { + type enumeration { + enum master { + value 1; + description "Master Role"; + } + enum slave { + value 2; + description "Slave Role"; + } + enum dynamic { + value 3; + description "Dynamic role instantiation"; + } + } + default "dynamic"; + } + + typedef ptp_TransportMode { + type enumeration { + enum multicast { + value 1; + description "Multicast mode"; + } + enum unicast { + value 2; + description "Unicast mode"; + } + } + default "multicast"; + } + + typedef ptp_TransportType { + type enumeration { + enum ipv4 { + value 1; + description "IPv4"; + } + enum eth { + value 3; + description "Ethernet"; + } + } + default "ipv4"; + } + + typedef qos_Prio { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum level3 { + value 1; + description "Level3"; + } + enum level2 { + value 2; + description "Level2"; + } + enum level1 { + value 3; + description "Level1"; + } + enum policy-plane { + value 4; + } + enum control-plane { + value 5; + } + enum span { + value 6; + } + } + } + + // User configurable classes + typedef qos_TenantPrio { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum level3 { + value 1; + description "Level3"; + } + enum level2 { + value 2; + description "Level2"; + } + enum level1 { + value 3; + description "Level1"; + } + } + default "unspecified"; + } + + // Bandwidth percentage + typedef qosp_BwPercent { + type uint8 { + range "0..100"; + } + default "20"; + } + + // Congestion algorithm + typedef qosp_CongAlgo { + type enumeration { + enum wred { + value 0; + description "Weighted random early detection"; + } + enum tail-drop { + value 1; + description "Tail drop"; + } + } + default "tail-drop"; + } + + // Control method + typedef qosp_CtrlMeth { + type enumeration { + enum static { + value 0; + description "Static"; + } + enum dynamic { + value 1; + description "Dynamic"; + } + } + default "dynamic"; + } + + // Dot1p + typedef qosp_Dot1P { + type uint8 { + range "0..7"; + } + default "7"; + } + + // Dscp code point values + typedef qosp_Dscp { + type qosp_DscpCP { + range "0..63"; + } + default "63"; + } + + // DSCP + typedef qosp_DscpCP { + type uint8 { + range "0..63"; + } + default "0"; + } + + // ECN + typedef qosp_ECN { + type enumeration { + enum disabled { + value 0; + description "Disabled"; + } + enum enabled { + value 1; + description "Enabled"; + } + } + default "disabled"; + } + + // MTU + typedef qosp_MTU { + type uint16 { + range "1500..9216"; + } + default "9216"; + } + + // Min buffers + typedef qosp_MinBuf { + type uint8 { + range "0..3"; + } + default "0"; + } + + // Operational state of Qos Class + typedef qosp_OperSt { + type enumeration { + enum enabled { + value 1; + description "enabled"; + } + enum disabled { + value 2; + description "disabled"; + } + } + default "disabled"; + } + + // Reasons for rule being disabled. + typedef qosp_OperStQual { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum hwprog-fail { + description "Hardware Programming Failed"; + } + enum Invalid { + description "Invalid Parameters"; + } + } + default "unspecified"; + } + + // Queue limit + typedef qosp_QueueLimit { + type uint16 { + range "1500..9216"; + } + default "1522"; + } + + // Scheduling Algorithm + typedef qosp_SchedAlgo { + type enumeration { + enum wrr { + value 0; + description "Weighted round robin"; + } + enum sp { + value 1; + description "Strict priority"; + } + } + default "wrr"; + } + + typedef reln_Dn { + type string; + } + + // Database type + typedef rib_DbT { + type enumeration { + enum rt { + value 1; + description "Route Database"; + } + enum nh { + value 2; + description "Nexthop Database"; + } + enum adj { + value 3; + description "Adjacency Database"; + } + } + default "rt"; + } + + // Domain operational state + typedef rib_DomOperSt { + type enumeration { + enum up { + value 1; + description "Up"; + } + enum down-pending { + value 2; + description "Down pending"; + } + enum purged { + value 3; + description "Purging"; + } + enum down { + value 4; + description "Down"; + } + enum del-pending { + value 5; + description "Down pending"; + } + enum deleted { + value 6; + description "Deleted"; + } + } + default "down"; + } + + // Next-hop type + typedef rib_NhT { + + type string; + default "attached"; + } + + // Owner type + typedef rib_OwnerT { + type string; + } + + // Config Error + typedef rpm_ConfigErr { + type string; + } + + // Preference + typedef rt_Preference { + type uint8 { + range "1..255"; + } + default "1"; + } + + // Tag + typedef rt_Tag { + + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + // Autonomous system + typedef rtcom_AS { + + type uint32 { + range "1..4294967295"; + } + } + + // Community type + typedef rtcom_ComT { + type enumeration { + enum regular { + value 1; + description "Regular community"; + } + enum extended { + value 2; + description "Extended community"; + } + } + default "regular"; + } + + // Mode + typedef rtcom_Mode { + type enumeration { + enum standard { + value 1; + description "Standard"; + } + enum regex { + value 2; + description "Regular expression"; + } + } + default "standard"; + } + + // Route control direction + typedef rtctrl_RtCtrlDir { + type enumeration { + enum in { + value 1; + description "Incoming"; + } + enum out { + value 2; + description "Outgoing"; + } + } + default "in"; + } + + // Route target policy type + typedef rtctrl_RttPType { + type enumeration { + enum import { + value 1; + description "Import"; + } + enum export { + value 2; + description "Export"; + } + } + default "import"; + } + + // ASM Control + typedef rtdmc_ASMCtrl { + + type string; + } + + // Adjacency flags + typedef rtdmc_AdjFlags { + + type string; + } + + // Adjancency operational state + typedef rtdmc_AdjOperSt { + type enumeration { + enum up { + value 0; + description "Up"; + } + enum inactive { + value 1; + description "Inactive"; + } + } + } + + typedef rtdmc_AssertRateLmt { + type uint32 { + range "0..65535"; + } + } + + // Authentication key + typedef rtdmc_AuthKey { + type string; + } + + // Authentication type + typedef rtdmc_AuthT { + type enumeration { + enum none { + value 0; + description "No authentication"; + } + enum ah-md5 { + value 1; + description "MD5 HMAC authentication"; + } + } + default "none"; + } + + typedef rtdmc_AutoEnable { + type boolean; + default "true"; + } + + // Auto-RP Control + typedef rtdmc_AutoRPCtrl { + + type string; + } + + // Auto-RP Scope + typedef rtdmc_AutoRPScope { + type uint16 { + range "1..255"; + } + default "32"; + } + + // Bootstrap Router (BSR) Control + typedef rtdmc_BSRCtrl { + + type string; + } + + // BSR Hash Mask Len + typedef rtdmc_BSRHashLen { + type uint16; + } + + // Max Rate TODO: Is there a default? + typedef rtdmc_BSRInterval { + type uint16 { + range "1..65535"; + } + default "60"; + } + + // BSR Priority + typedef rtdmc_BSRPrio { + type uint16 { + range "1..255"; + } + default "64"; + } + + // BFD state + typedef rtdmc_BfdInstSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + enum none { + value 0; + description "None"; + } + } + default "none"; + } + + // BFD state + typedef rtdmc_BfdOperSt { + type enumeration { + enum down { + value 0; + description "Down"; + } + enum rem-pend { + value 1; + description "Remove Pending"; + } + enum up { + value 2; + description "Up"; + } + } + } + + // BiDir RP Limit + typedef rtdmc_BidirRPLimit { + type uint16 { + range "0..8"; + } + default "6"; + } + + // Byte Count type + typedef rtdmc_ByteCntType { + + type uint32 { + range "0..4294967295"; + } + } + + // Counter + typedef rtdmc_Counter32 { + type uint32; + } + + // Designated Forwarder Offer Burst Interval + typedef rtdmc_DFOBItvl { + type uint16 { + range "1..10000"; + } + default "20"; + } + + // Designated Router Priority + typedef rtdmc_DRPrio { + type uint32 { + range "1..4294967295"; + } + default "1"; + } + + // Database type + typedef rtdmc_DbT { + type enumeration { + enum rp { + value 0; + description "RP database"; + } + enum grange { + value 1; + description "Grange database"; + } + enum route { + value 2; + description "Route database"; + } + enum dynrpsrc { + value 3; + description "Dynamic RP Source database"; + } + enum gstats { + value 4; + description "Global Statistics"; + } + enum vrf { + value 5; + description "VRF database"; + } + enum ifrec { + value 6; + description "Interface database"; + } + enum grpoif { + value 7; + description "Group Oif list"; + } + enum group { + value 8; + description "Group database"; + } + enum ifstats { + value 9; + description "Interface statistics"; + } + enum peer { + value 10; + description "Peer statistics"; + } + enum rphash { + value 11; + description "RP-Hash for a group"; + } + enum df { + value 12; + description "Designated forwarder for RP"; + } + enum bf { + value 13; + description "Bitfield database"; + } + enum embedrp { + value 14; + description "Embed-RP database"; + } + enum syslog { + value 15; + description "Syslog database"; + } + enum vrfdetail { + value 16; + description "Vrf details"; + } + } + } + + // DF state + typedef rtdmc_DfStates { + type enumeration { + enum unknown { + value 0; + description "DF Unknown State"; + } + enum offer { + value 1; + description "DF Offer State"; + } + enum lose { + value 2; + description "DF Lose State"; + } + enum winner { + value 3; + description "DF Winner State"; + } + enum backoff { + value 4; + description "DF Backoff State"; + } + } + default "unknown"; + } + + // Domain Control + typedef rtdmc_DomCtrl { + + type string; + } + + // PIM Route types + typedef rtdmc_GRangeFlags { + + type string; + } + + // Generation Id + typedef rtdmc_GenId { + type uint32; + } + + // Hello Message Interval + typedef rtdmc_HelloItvl { + type uint32 { + range "1..18724286"; + } + default "30000"; + } + + // Hold Time + typedef rtdmc_HoldTime { + type uint16; + } + + // Interface Ctrl + typedef rtdmc_IfCtrl { + + type string; + } + + // Join Prune Inter packet delay TODO: Get the max delay + typedef rtdmc_JPDelay { + type uint32 { + range "1..1000"; + } + default "100"; + } + + // Join Prune Interval Used between Peers TODO: Validate this is correct + typedef rtdmc_JPItvl { + type uint16 { + range "1..65520"; + } + default "60"; + } + + // Jp-delay in microseconds + typedef rtdmc_JpDelayRange { + type uint32 { + range "1..4294967295"; + } + default "100"; + } + + // Protocol Packet MTU + typedef rtdmc_Mtu { + type uint32 { + range "1500..65536"; + } + default "1500"; + } + + // Null Register Inter batch delay TODO: Is there a default? + typedef rtdmc_NRDelay { + type uint16 { + range "1..50000"; + } + } + + // Number of Routes in a Null Register TODO: Is there a default? + typedef rtdmc_NRNumRt { + type uint16 { + range "1..32000"; + } + } + + // route oif list types + typedef rtdmc_OifFlags { + + type string; + } + + // Pkt Count type + typedef rtdmc_PktCntType { + + type uint32 { + range "0..4294967295"; + } + } + + typedef rtdmc_PolicyDirType { + type enumeration { + enum none { + value 0; + description "none"; + } + enum in { + value 1; + description "in"; + } + enum out { + value 2; + description "out"; + } + } + default "none"; + } + + // PIM RP types + typedef rtdmc_RPSourceType { + + type string; + } + + // Max Rate TODO: Is there a default? + typedef rtdmc_RegRate { + type uint16 { + range "0..65535"; + } + default "0"; + } + + // Register-rate limit + typedef rtdmc_RegRateRange { + type uint32 { + range "0..65535"; + } + default "0"; + } + + // PIM Route types PIM Route types + typedef rtdmc_RouteBits { + + type string; + } + + // PIM Route types + typedef rtdmc_RtFlags { + + type string; + } + + // (S,G) Entry Inactivity Expiry Timer + typedef rtdmc_SGExpItvl { + type uint32 { + range "180..604801"; + } + default "180"; + } + + // Scope of the community + typedef rtextcom_Scope { + type enumeration { + enum transitive { + value 0; + description "Transitive"; + } + enum non-transitive { + value 1; + description "Non Transitive"; + } + } + default "transitive"; + } + + typedef rtextcom_Type { + type enumeration { + enum rttarget { + value 1; + description "Route target community type"; + } + enum generic { + value 2; + description "Generic extended community type"; + } + enum soo { + value 3; + description "Site of origin extended community type"; + } + enum rmac { + value 4; + description "Router mac extended community type"; + } + } + default "generic"; + } + + // Action + typedef rtflt_Action { + type enumeration { + enum deny { + value 0; + description "Deny"; + } + enum permit { + value 1; + description "Permit"; + } + } + default "permit"; + } + + // Order + typedef rtflt_Order { + + type uint32 { + range "0..4294967295"; + } + } + + // filter option for RibLeak + typedef rtleak_Always { + type boolean; + default "true"; + } + + // Asn number + typedef rtleak_Asn { + type string { + pattern "((none)|([1-9]{1}[0-9]{0,8}|[1-3]{1}[0-9]{1,9}|4{1}[0-1]{1}[0-9]{8}|4{1}2{1}[0-8]{1}[0-9]{7}|4{1}2{1}9{1}[0-3]{1}[0-9]{6}|4{1}2{1}9{1}4{1}[0-8]{1}[0-9]{5}|4{1}2{1}9{1}4{1}9{1}[0-5]{1}[0-9]{4}|4{1}2{1}9{1}4{1}9{1}6{1}[0-6]{1}[0-9]{3}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}[0-1]{1}[0-9]{2}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}2{1}[0-8]{1}[0-9]{1}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}2{1}9{1}[0-5]{1})|(([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\\.([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])))"; + } + default "none"; + } + + // Controls on what to do when the number of routes cross + // the maximum prefix limit + typedef rtleak_Ctrl { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum warning { + value 1; + description "Warning"; + } + enum withdraw { + value 2; + description "Withdraw"; + } + } + default "unspecified"; + } + + // Duration between the retries + typedef rtleak_Duration { + type uint16 { + range "60..600"; + } + default "300"; + } + + // Routing protocol instance + typedef rtleak_Inst { + type string { + length "1..20"; + } + } + + // Maximum prefix leaked + typedef rtleak_MaxPfx { + + type uint16 { + range "1..65535"; + } + } + + // Source protocol type of the leak policy + typedef rtleak_Proto { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum static { + value 1; + description "Static"; + } + enum direct { + value 2; + description "Direct"; + } + enum bgp { + value 3; + description "BGP"; + } + enum isis { + value 4; + description "ISIS"; + } + enum ospf { + value 5; + description "OSPF"; + } + enum ospfv3 { + value 6; + description "OSPFv3"; + } + enum eigrp { + value 7; + description "EIGRP"; + } + enum host { + value 8; + description "HOST"; + } + enum rip { + value 9; + description "RIP"; + } + enum amt { + value 10; + description "AMT"; + } + enum lisp { + value 11; + description "LISP"; + } + enum hmm { + value 12; + description "HMM"; + } + enum am { + value 13; + description "AM"; + } + enum srv6 { + value 14; + description "SRV6"; + } + } + default "unspecified"; + } + + // Maximum number of retries to retrieve the leaked routes + typedef rtleak_Retries { + type uint16 { + range "1..12"; + } + default "1"; + } + + // Policy Direction + typedef rtleak_RtCtrlDir { + type enumeration { + enum in { + value 0; + description "in"; + } + enum out { + value 1; + description "out"; + } + } + default "in"; + } + + // Scope of the leak policy + typedef rtleak_Scope { + type enumeration { + enum intra { + value 1; + description "Intra protocol leak"; + } + enum inter { + value 2; + description "Inter protocol leak"; + } + enum defrt { + value 3; + description "Default route leak"; + } + } + default "intra"; + } + + // SRv6 Prefix Type + typedef rtleak_Srv6PrefixType { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum locator { + value 1; + description "SRv6 Locator"; + } + } + default "unspecified"; + } + + // Threshold at which warning is issued when number of prefixes + // crosses the threshold, units in percentage + typedef rtleak_Thresh { + type uint8 { + range "1..100"; + } + default "75"; + } + + // Action + typedef rtmap_Action { + type enumeration { + enum deny { + value 0; + description "Deny"; + } + enum permit { + value 1; + description "Permit"; + } + } + default "permit"; + } + + // Administrative state + typedef rtmap_AdminSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "disabled"; + } + + // Community Id + typedef rtmap_CommunityId { + type uint8 { + range "0..255"; + } + } + + // Community Value + typedef rtmap_CommunityVal { + type uint32 { + range "0..4294967295"; + } + } + + // Config Error + typedef rtmap_ConfigErr { + type string; + } + + // Criteria + typedef rtmap_Criteria { + type enumeration { + enum exact { + value 1; + description "Exact"; + } + enum sub-group { + value 2; + description "Sub group"; + } + } + default "sub-group"; + } + + // Dampening Half-life + // Time in minutes. Once the route has been assigned a penalty, + // the penalty is decreased by half after half life period + typedef rtmap_DampHalfLife { + type uint8 { + range "0..45"; + } + default "0"; + } + + // Dampening Max Suppress Time + // Time in minutes. Maximum time that a route can be suppressed. + typedef rtmap_DampMaxSuppressTime { + type uint8 { + range "0..255"; + } + default "0"; + } + + // Dampening Reuse Limit + // Route that is unsuppressed if the penalty for a flapping route + // decreases enough to fall below this value. + typedef rtmap_DampReuse { + type uint16 { + range "0..20000"; + } + default "0"; + } + + // Dampening Suppress Limit + // Route that is suppressed when its penalty exceeds this limit. + typedef rtmap_DampSuppress { + type uint16 { + range "0..20000"; + } + default "0"; + } + + // Duration + typedef rtmap_Duration { + type uint8 { + range "1..255"; + } + } + + // Gateway-ip Type + typedef rtmap_GatewayT { + type enumeration { + enum ip-address { + value 0; + description "Use IP address gateway IP"; + } + enum nexthop { + value 1; + description "Use nexthop gateway IP"; + } + } + default "ip-address"; + } + + // HalfLife + typedef rtmap_HalfLife { + type uint8 { + range "1..45"; + } + } + + // Label Index + typedef rtmap_Index { + type uint32 { + range "0..471788"; + } + } + + // Local preference + typedef rtmap_LocalPref { + type uint32; + } + + // Match type + typedef rtmap_MatchT { + type enumeration { + enum reg-community { + value 1; + description "Regular community"; + } + enum ext-community { + value 2; + description "Extended community"; + } + enum rt-dst { + value 3; + description "Route destinations"; + } + enum rt-nh { + value 4; + description "Route nexthops"; + } + enum rt-src { + value 5; + description "Route sources"; + } + enum rt-type { + value 6; + description "Route type"; + } + enum rt-tag { + value 7; + description "Route tag"; + } + enum rt-pervasive { + value 8; + description "Route pervasive"; + } + enum as-path { + value 9; + description "AS Path Access List"; + } + enum rt-dst-v6 { + value 10; + description "V6 Route destinations"; + } + enum rt-asn { + value 11; + description "Route ASN"; + } + enum rt-if { + value 12; + description "Route IF"; + } + enum rt-metric { + value 13; + description "Route Metric"; + } + enum src-proto { + value 14; + description "Source Protocol"; + } + enum rt-ospf { + value 15; + description "OSPFArea"; + } + enum rt-nh-v6 { + value 16; + description "Route nexthops ipv6"; + } + enum rt-src-v6 { + value 17; + description "Route route source ipv6"; + } + enum rt-ipv4-mcast { + value 18; + description "Match IPv4 multicast"; + } + enum rt-ipv6-mcast { + value 19; + description "Match IPv6 multicast"; + } + enum rt-mac-list { + value 20; + description "Match mac list"; + } + } + default "reg-community"; + } + + // Metric + typedef rtmap_Metric { + type uint32; + } + + // Metric Delay + typedef rtmap_MetricD { + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + // Metric Load + typedef rtmap_MetricL { + type uint8 { + range "0..255"; + } + default "0"; + } + + // Metric MTU + typedef rtmap_MetricM { + type uint32 { + range "0..16777215"; + } + default "0"; + } + + // Metric Reliability + typedef rtmap_MetricR { + type uint8 { + range "0..255"; + } + default "0"; + } + + // MetricS + typedef rtmap_MetricS { + type string { + pattern "[0-9\\+-][0-9]*"; + } + } + + // Metric type + typedef rtmap_MetricT { + type enumeration { + enum type-1 { + value 1; + description "OSPF type1 metric"; + } + enum type-2 { + value 2; + description "OSPF type2 metric"; + } + enum internal { + value 3; + description "BGP internal metric"; + } + enum external { + value 4; + description "ISIS external metric"; + } + } + default "type-1"; + } + + // OSPFArea + typedef rtmap_OSPFArea { + type uint32 { + range "0..4294967295"; + } + } + + // Route-map Continue + typedef rtmap_Order { + type uint16 { + range "0..65535"; + } + } + + // Origin type + typedef rtmap_OriginT { + type enumeration { + enum egp { + value 1; + description "Remote EGP Origin"; + } + enum igp { + value 2; + description "Local IGP Origin"; + } + enum incomplete { + value 3; + description "Unknown Heritage"; + } + } + default "egp"; + } + + // Precedence Properties + typedef rtmap_PrecName { + type enumeration { + enum routine { + value 0; + description "Routine"; + } + enum priority { + value 1; + description "Priority"; + } + enum immediate { + value 2; + description "Immediate"; + } + enum flash { + value 3; + description "Flash"; + } + enum flash-override { + value 4; + description "Flash-Override"; + } + enum critical { + value 5; + description "Critical"; + } + enum internet { + value 6; + description "Internet"; + } + enum network { + value 7; + description "Network"; + } + } + } + + // is BGP config + typedef rtmap_Proto { + type boolean; + } + + // Set path selection type + typedef rtmap_PsType { + type enumeration { + enum unspecified { + value 0; + description "unspecified"; + } + enum ps-all { + value 1; + description "Specifies all BGP paths"; + } + enum ps-bestplus { + value 2; + description "Specifies best + backup BGP paths"; + } + enum ps-best2 { + value 3; + description "Specifies best 2 BGP paths"; + } + enum ps-mpath { + value 4; + description "Specifies multipaths BGP paths"; + } + } + default "unspecified"; + } + + // Reuse + typedef rtmap_Reuse { + type uint16 { + range "1..20000"; + } + } + + // Route Distance + typedef rtmap_RouteDist { + type uint8 { + range "0..255"; + } + } + + // Route Last As + typedef rtmap_RouteLastAs { + type uint16 { + range "1..10"; + } + } + + // Pervasive route + typedef rtmap_RoutePervasive { + type enumeration { + enum non-pervasive { + value 0; + description "Match all non-pervasive routes"; + } + enum pervasive { + value 1; + description "Match all pervasive routes"; + } + enum pervasive-non-ext-bd { + value 2; + description "Match all pervasive except external BD routes"; + } + } + default "pervasive-non-ext-bd"; + } + + // Route type + typedef rtmap_RouteT { + type enumeration { + enum external { + value 1; + description "External"; + } + enum internal { + value 2; + description "Internal"; + } + enum ospf-inter-area { + value 3; + description "OSPF inter area"; + } + enum ospf-intra-area { + value 4; + description "OSPF intra area"; + } + enum isis-l1 { + value 5; + description "ISIS level 1"; + } + enum isis-l2 { + value 6; + description "ISIS level 2"; + } + enum local { + value 7; + description "Local"; + } + enum ospf-nssa-external { + value 8; + description "OSPF nssa external"; + } + enum ospf-type1 { + value 9; + description "OSPF type1 external"; + } + enum ospf-type2 { + value 10; + description "OSPF type2 external"; + } + enum R1 { + value 11; + description "BGP EVPN route (type 1)"; + } + enum mac-only { + value 12; + description "BGP EVPN route(type 2 mac-only)"; + } + enum mac-ip { + value 13; + description "BGP EVPN route(type 2 mac-ip)"; + } + enum R2_ALL { + value 14; + description "BGP EVPN route(type 2 all)"; + } + enum R3 { + value 15; + description "BGP EVPN route (type 3)"; + } + enum R4 { + value 16; + description "BGP EVPN route (type 4)"; + } + enum R5 { + value 17; + description "BGP EVPN route (type 5)"; + } + enum R6 { + value 18; + description "BGP EVPN route (type 6)"; + } + } + default "external"; + } + + // Route tag + typedef rtmap_RouteTag { + type uint32; + } + + // Set criteria + typedef rtmap_SetCriteria { + type enumeration { + enum none { + value 1; + description "No community"; + } + enum append { + value 2; + description "Append community"; + } + enum replace { + value 3; + description "Replace community"; + } + enum igp { + value 4; + description "IGP Cost"; + } + enum pre-bestpath { + value 5; + description "Pre-bestpath Cost"; + } + } + default "none"; + } + + // Set type + typedef rtmap_SetT { + type enumeration { + enum reg-community { + value 1; + description "Regular community"; + } + enum ext-gen-community { + value 2; + description "Extended generic community"; + } + enum rtt-community { + value 3; + description "Route target community"; + } + enum rt-tag { + value 4; + description "Route tag"; + } + enum rt-weight { + value 5; + description "Route weight"; + } + enum local-pref { + value 6; + description "Local preference"; + } + enum metric { + value 7; + description "Metric"; + } + enum ospf-nssa { + value 8; + description "OSPF NSSA area"; + } + enum ospf-fwd-addr { + value 9; + description "OSPF fowarding address"; + } + enum ip-nh { + value 10; + description "IP nexthop"; + } + enum metric-type { + value 11; + description "Metric Type"; + } + enum rt-dist { + value 12; + description "Route distance"; + } + enum nh-pa { + value 13; + description "Next Hop Peer Address"; + } + enum origin { + value 14; + description "Origin"; + } + enum list-community { + value 15; + description "Community List (for deletion)"; + } + enum dampening { + value 16; + description "Dampening value"; + } + enum extcommunity-cost { + value 17; + description "Extcommunity Cost"; + } + enum ip-prec { + value 18; + description "IP Precedence value"; + } + enum continue { + value 19; + description "Continue Value"; + } + enum rt-index { + value 20; + description "Label Index"; + } + enum list-extcommunity { + value 21; + description "Extended Community List (for deletion)"; + } + enum ipv6-prec { + value 22; + description "IPv6 Precedence value"; + } + enum prepend { + value 23; + description "Prepend Value"; + } + enum lastas { + value 24; + description "Prepend Last-as Value"; + } + enum as-pathtag { + value 25; + description "As-Path tag Value"; + } + enum ps-adv { + value 26; + description "PS Advertise Value"; + } + enum intf { + value 27; + description "Set interface Value"; + } + } + default "reg-community"; + } + + // Supress + typedef rtmap_Supress { + type uint16 { + range "1..20000"; + } + } + + // Weight + typedef rtmap_Weight { + type uint16; + } + + // rp-type + typedef rtmap_rpTypeT { + type enumeration { + enum unspecified { + value 0; + description "unspecified"; + } + enum ASM { + value 1; + description "ASM"; + } + enum Bidir { + value 2; + description "Bidir"; + } + } + default "unspecified"; + } + + // Criteria + typedef rtpfx_Criteria { + type enumeration { + enum exact { + value 0; + description "Exact match"; + } + enum inexact { + value 1; + description "Inexact match"; + } + } + default "exact"; + } + + // IPv4 Mode + typedef rtpfx_IPv4Mode { + type string; + default "IPV4"; + } + + // IPv6 Mode + typedef rtpfx_IPv6Mode { + type string; + default "IPV6"; + } + + // Extended chassis state + typedef satm_ExtChOperSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum initializing { + value 1; + description "Initializing"; + } + enum discovered { + value 2; + description "Discovered"; + } + enum connected { + value 3; + description "Connected"; + } + enum registering { + value 4; + description "Registering"; + } + enum registered { + value 5; + description "Registered"; + } + enum ready { + value 6; + description "Ready"; + } + enum online-seq { + value 7; + description "Online Sequence"; + } + enum online { + value 8; + description "Online"; + } + enum offline-req { + value 9; + description "Offline Request"; + } + enum offline-seq { + value 10; + description "Offline Sequence"; + } + enum offline { + value 11; + description "Offline"; + } + enum img-download { + value 12; + description "Image Download"; + } + enum failed { + value 13; + description "Failed"; + } + enum removed { + value 14; + description "Removed"; + } + enum hl-upg-seq { + value 15; + description "Hitless Upgrade Sequence"; + } + enum chk-upg-seq { + value 16; + description "Check Upgrade Sequence"; + } + enum upg-start { + value 17; + description "Ready for Upgrade"; + } + enum hl-upg-idle { + value 18; + description "Hitless Upgrade Idle"; + } + enum chk-ins-seq { + value 19; + description "Check Insert Sequence"; + } + enum hl-upg-fail { + value 20; + description "Hitless Upgrade Failed"; + } + enum aa-upg-rdy { + value 21; + description "Active Active Upgrade Ready"; + } + enum aa-upg-idle { + value 22; + description "Active Active Upgrade Idle"; + } + enum aa-upg-done { + value 23; + description "Active Active Upgrade Done"; + } + enum aa-upg-fail { + value 24; + description "Active Active Upgrade Fail"; + } + enum aa-ver-mismatch { + value 25; + description "Active Active Version Mismatch"; + } + enum ch-type-mismatch { + value 26; + description "Extended Chassis Type Mismatch"; + } + } + default "unknown"; + } + + // Fabric port FSM status + typedef satm_FpFsmSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum created { + value 1; + description "Created"; + } + enum discovered { + value 2; + description "Discovered"; + } + enum configured { + value 3; + description "Configured"; + } + enum up { + value 4; + description "Up"; + } + enum connecting { + value 5; + description "Connecting"; + } + enum active { + value 6; + description "Active"; + } + enum incompatible { + value 7; + description "Incompatible topology"; + } + enum disconnected { + value 8; + description "Disconnected"; + } + enum id-mismatch { + value 9; + description "Identity mismatch"; + } + } + default "unknown"; + } + + // Fabri port flags + typedef satm_FportFlags { + + type string; + } + + // Host Port operational status + typedef satm_HpOperSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum up { + value 1; + description "Up"; + } + enum down { + value 2; + description "Down"; + } + enum fail { + value 3; + description "Failed"; + } + } + default "unknown"; + } + + // Port operational status + typedef satm_OperSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum up { + value 1; + description "Up"; + } + enum down { + value 2; + description "Down"; + } + enum failed { + value 3; + description "Failed"; + } + } + default "unknown"; + } + + typedef satm_SwGen { + type uint16; + } + + // Action + typedef scrtchpd_Action { + type enumeration { + enum create { + value 1; + description "Create"; + } + enum delete { + value 2; + description "Delete"; + } + } + default "create"; + } + + // Address family type + typedef segrt_AfType { + type enumeration { + enum ipv4 { + value 1; + description "IPv4 address family"; + } + enum ipv6 { + value 2; + description "IPv6 address family"; + } + } + default "ipv4"; + } + + // Segment Routing Operational state + typedef segrt_OperSt { + type enumeration { + enum disabled { + value 0; + description "Disabled"; + } + enum enabled { + value 1; + description "Enabled"; + } + enum ha-in-progress { + value 2; + description "HA in progress"; + } + } + default "disabled"; + } + + // Operational State Qualifier + typedef segrt_OperStQual { + type enumeration { + enum none { + value 0; + description "None"; + } + enum shut { + value 1; + description "Segment Routing is shut"; + } + enum srgb-cleanup-in-progress { + value 2; + description "Old SRGB cleanup in progress"; + } + enum srgb-cleanup-failed { + value 3; + description "Old SRGB cleanup failed"; + } + enum srgb-alloc-in-progress { + value 4; + description "SRGB allocation in progress"; + } + enum srgb-alloc-failed { + value 5; + description "SRGB allocation failed"; + } + } + default "none"; + } + + // SRGB Operational state + typedef segrt_SRGBOperSt { + type enumeration { + enum none { + value 0; + description "None"; + } + enum in-use { + value 1; + description "In-use"; + } + enum alloc-in-progress { + value 2; + description "SRGB allocation in progress"; + } + enum alloc-failed { + value 3; + description "SRGB allocation failed"; + } + enum cleanup-in-progress { + value 4; + description "Old SRGB cleanup in progress"; + } + enum cleanup-failed { + value 5; + description "Old SRGB cleanup failed"; + } + } + default "none"; + } + + // SID Value type + typedef segrt_SidValueType { + type enumeration { + enum index { + value 1; + description "SID Index value"; + } + enum absolute { + value 2; + description "SID Absolute value"; + } + } + default "index"; + } + + // Segment-routing data plane type + typedef segrt_SrDpType { + type enumeration { + enum mpls { + value 1; + description "MPLS"; + } + enum ipv6 { + value 2; + description "IPv6"; + } + } + default "mpls"; + } + + // SRGB allocation retry interval + typedef segrt_SrgbAllocRetryIntvl { + type uint16 { + range "1..65535"; + } + default "180"; + } + + // SRGB cleanup interval + typedef segrt_SrgbCleanupIntvl { + type uint16 { + range "1..65535"; + } + default "60"; + } + + // Layer4 port + typedef sflow_L4Port { + type uint32 { + range "1..65535"; + } + default "6343"; + } + + typedef sflow_VrfName { + type string { + pattern "[A-Za-z0-9!@#$\\^\\*=\\+\\{\\}\\.;:_-]{0,32}"; + } + } + + // Address Ip + typedef sflow_addressIp { + type address_Ip; + } + + // counter-poll-interval + typedef sflow_counterPollInterval { + type uint32 { + range "0..2147483647"; + } + default "20"; + } + + // Datagram size + typedef sflow_maxDatagramSize { + type uint32 { + range "200..9000"; + } + default "1400"; + } + + // Max sampling size + typedef sflow_maxSampledSize { + type uint32 { + range "64..256"; + } + default "128"; + } + + // Sampling rate + typedef sflow_samplingRate { + type uint32; + } + + typedef sisf_NonGlobalTracking { + type enumeration { + enum default { + value 0; + description "Default"; + } + enum disable { + value 1; + description "Disable"; + } + enum enable { + value 2; + description "Enable"; + } + } + default "default"; + } + + // Maximum time in REACHABLE with no activity + typedef sisf_ReachableLifetimerBinding { + type int32 { + range "-1..86400"; + } + default "0"; + } + + typedef sisf_RetryIntervalBinding { + type int16 { + range "0..3600"; + } + default "0"; + } + + typedef sisf_VlanID { + type uint16 { + range "1..4096"; + } + } + + typedef sisf_deviceRole { + type enumeration { + enum node { + value 0; + description "Node"; + } + enum switch { + value 3; + description "Switch"; + } + } + default "node"; + } + + typedef sisf_dhcpGuardDeviceRole { + type enumeration { + enum client { + value 0; + description "Client"; + } + enum server { + value 1; + description "Server"; + } + enum monitor { + value 2; + description "Monitor"; + } + } + default "client"; + } + + typedef sisf_dhcpflag { + type enumeration { + enum on { + value 0; + description "enable"; + } + enum off { + value 1; + description "disable"; + } + } + } + + // Define Down Lifetimer + // Special value zero (0) indicates infinite. + typedef sisf_downLifetimer { + type uint64 { + range "0..86400"; + } + default "86400"; + } + + // Verify that the RA Guard advertised limit is lower than the limit value + typedef sisf_hopLimitMax { + type uint16 { + range "0..255"; + } + default "0"; + } + + // Verify that the RA Guard advertised limit is greater than the limit value + typedef sisf_hopLimitMin { + type uint16 { + range "0..255"; + } + default "0"; + } + + // Specifies a limit + typedef sisf_limitAddressCount { + type uint16 { + range "0..32000"; + } + } + + typedef sisf_macLimit { + type uint32 { + range "0..100000"; + } + default "0"; + } + + // Define maximum number of entries in the Binding table + typedef sisf_maxEntries { + type uint32 { + range "0..1000000"; + } + default "0"; + } + + typedef sisf_ndpflag { + type enumeration { + enum on { + value 0; + description "enable"; + } + enum off { + value 1; + description "disable"; + } + } + } + + typedef sisf_portLimit { + type uint32 { + range "0..100000"; + } + default "0"; + } + + // Define Maximum allowed advertised server preference + typedef sisf_preferenceMax { + type uint16 { + range "0..255"; + } + default "255"; + } + + // Define Minimum allowed advertised server preference + typedef sisf_preferenceMin { + type uint16 { + range "0..255"; + } + default "0"; + } + + typedef sisf_raGuardDeviceRole { + type enumeration { + enum host { + value 1; + description "Host"; + } + enum router { + value 2; + description "Router"; + } + enum switch { + value 3; + description "Switch"; + } + enum monitor { + value 4; + description "Monitor"; + } + } + default "host"; + } + + // Enable verification of the advertised M flag + typedef sisf_raGuardManagedConfig { + type enumeration { + enum off { + value 0; + description "disable"; + } + enum on { + value 1; + description "enable"; + } + enum nocheck { + value 2; + description "check"; + } + } + default "nocheck"; + } + + // Enable verification of the advertised O flag + typedef sisf_raGuardOtherConfig { + type enumeration { + enum off { + value 0; + description "disable"; + } + enum on { + value 1; + description "able"; + } + enum nocheck { + value 2; + description "check"; + } + } + default "nocheck"; + } + + typedef sisf_raGuardRouterPreferenceMaximum { + type enumeration { + enum low { + value 1; + description "low"; + } + enum medium { + value 2; + description "medium"; + } + enum high { + value 3; + description "high"; + } + enum nocheck { + value 4; + description "check"; + } + } + default "nocheck"; + } + + // Define Reachable Lifetimer + // Special value zero (0) indicates infinite. + typedef sisf_reachableLifetimer { + type uint64 { + range "0..86400"; + } + default "300"; + } + + // Define Reachable Lifetimer for snooping policy + // Special value zero (0) indicates infinite. + typedef sisf_reachableLifetimerSnoopingPolicy { + type uint64 { + range "0..86400"; + } + default "300"; + } + + typedef sisf_retryInterval { + type uint16 { + range "1..3600"; + } + default "1"; + } + + typedef sisf_securityLevel { + type enumeration { + enum glean { + value 0; + description "Glean"; + } + enum inspect { + value 1; + description "Guard"; + } + enum guard { + value 2; + description "Inspect"; + } + } + default "guard"; + } + + // Define Stale Lifetimer + // Special value zero (0) indicates infinite. + typedef sisf_staleLifetimer { + type uint64 { + range "0..86400"; + } + default "86400"; + } + + // Define Reachable Lifetimer for snooping policy + // Special value zero (0) indicates infinite. + typedef sisf_staleLifetimerSnoopingPolicy { + type uint64 { + range "0..86400"; + } + default "86400"; + } + + typedef sisf_vlanLimit { + type uint32 { + range "0..200000"; + } + default "0"; + } + + // ReactionVariable: + typedef sla_ActionType { + type enumeration { + enum none { + value 1; + description "NONE"; + } + enum trapOnly { + value 2; + description "TRAPONLY"; + } + enum triggerOnly { + value 3; + description "TRIGGERONLY"; + } + enum trapAndTrigger { + value 4; + description "TRAPANDTRIGGER"; + } + } + default "none"; + } + + // AdvFactor + typedef sla_AdvFactor { + type uint8 { + range "0..20"; + } + default "0"; + } + + // ClockTolerance Absolute number + typedef sla_ClockToleranceAbsolute { + type uint32 { + range "0..100000"; + } + default "0"; + } + + // ClockTolerance Percentile value + typedef sla_ClockTolerancePercent { + type uint32 { + range "0..100"; + } + default "0"; + } + + // CodecNumPkts + typedef sla_CodecNumPkts { + type uint32 { + range "1..60000"; + } + default "1000"; + } + + // CodecSize + typedef sla_CodecSize { + type uint32 { + range "16..16384"; + } + default "32"; + } + + // CodecType + typedef sla_CodecType { + type enumeration { + enum none { + value 0; + description "No codec configured"; + } + enum g711alaw { + value 2; + description "G711aLAW"; + } + enum g711ulaw { + value 1; + description "G711uLAW"; + } + enum g729a { + value 3; + description "G729A"; + } + } + default "none"; + } + + // Operation frequency + typedef sla_Frequency { + type uint32 { + range "1..604800"; + } + default "60"; + } + + // HttpMethodVal : Http methods : get or raw + typedef sla_HttpMethodVal { + type enumeration { + enum get { + value 1; + description "GET"; + } + } + default "get"; + } + + // CodecInterval + typedef sla_Interval { + type uint32 { + range "4..60000"; + } + default "20"; + } + + // NumPkts + typedef sla_NumPkts { + type uint32 { + range "1..60000"; + } + default "10"; + } + + // OpPktPriority + typedef sla_OpPktPriority { + type enumeration { + enum none { + value 0; + description "no priority"; + } + enum high { + value 2; + description "HIGH"; + } + enum normal { + value 1; + description "NORMAL"; + } + } + default "normal"; + } + + // Port num + typedef sla_PortNum { + type uint16 { + range "1..65535"; + } + } + + // Precision + typedef sla_Precision { + type enumeration { + enum microseconds { + value 1; + description "MICROSECONDS"; + } + enum milliseconds { + value 2; + description "MILLISECONDS"; + } + } + default "milliseconds"; + } + + // ReactionVariable: + typedef sla_ReactionVariable { + type enumeration { + enum none { + value 0; + description "NONE"; + } + enum rtt { + value 1; + description "RTT"; + } + enum jitterSDAvg { + value 2; + description "JITTERSDAVG"; + } + enum jitterDSAvg { + value 3; + description "JITTERDSAVG"; + } + enum packetLossSD { + value 4; + description "PACKETLOSSSD"; + } + enum packetLossDS { + value 5; + description "PACKETLOSSDS"; + } + enum mos { + value 6; + description "MOS"; + } + enum timeout { + value 7; + description "TIMEOUT"; + } + enum connectionLoss { + value 8; + description "CONNECTION LOSS"; + } + enum verifyError { + value 9; + description "VERIFY ERROR"; + } + enum jitterAvg { + value 10; + description "JITTERAVG"; + } + enum icpif { + value 11; + description "ICPIF"; + } + enum packetLateArrival { + value 13; + description "PACKETLATEARRIVAL"; + } + enum packetOutOfSequence { + value 14; + description "PACKETOUTOFSEQUENCE"; + } + enum maxOfPositiveSD { + value 15; + description "MAXOFPOSITIVESD"; + } + enum maxOfNegativeSD { + value 16; + description "MAXOFNEGATIVESD"; + } + enum maxOfPositiveDS { + value 17; + description "MAXOFPOSITIVEDS"; + } + enum maxOfNegativeDS { + value 18; + description "MAXOFNEGATIVEDS"; + } + } + default "none"; + } + + // Request Data Size + typedef sla_ReqDataSize { + type uint32 { + range "16..17512"; + } + default "16"; + } + + typedef sla_RespProto { + type enumeration { + enum udp { + value 1; + description "UDP"; + } + enum tcp { + value 2; + description "TCP"; + } + } + default "tcp"; + } + + // Operation threshold + typedef sla_Threshold { + type uint32 { + range "1..60000"; + } + default "5000"; + } + + // ReactionVariable: + typedef sla_ThresholdType { + type enumeration { + enum never { + value 1; + description "NEVER"; + } + enum immediate { + value 2; + description "IMMEDIATE"; + } + enum consecutive { + value 3; + description "CONSECUTIVE"; + } + enum xOfy { + value 4; + description "xOfy"; + } + enum average { + value 5; + description "AVERAGE"; + } + } + default "never"; + } + + // Operation timeout + typedef sla_Timeout { + type uint32 { + range "1..604800000"; + } + default "5000"; + } + + typedef smartcard_AdminState { + type enumeration { + enum enabled { + value 1; + } + enum disabled { + value 2; + } + } + default "disabled"; + } + + typedef smartcard_SksdmasterkeyfaultBitmapT { + type enumeration { + enum noerror { + value 0; + description "Unknown"; + } + enum MasterkeyUnavail { + value 1; + description "Master-key is not configured."; + } + } + } + + // AAA Cache User Timeout + typedef snmp_AaaUserCacheTimeout { + type uint32 { + range "1..86400"; + } + default "3600"; + } + + // ACL Name + typedef snmp_AclNameT { + type string { + pattern "[^\\s]{0,32}"; + } + } + + // All Trap enable type + // This will be used to configure/unconfigure all traps globally + typedef snmp_AllTrapsType { + type enumeration { + enum no { + value 0; + description "Disable all Traps"; + } + enum yes { + value 1; + description "Enable All Traps"; + } + enum unspecified { + value 2; + description "Unspecified"; + } + } + default "unspecified"; + } + + // Authentication key + typedef snmp_AuthKey { + type string; + } + + typedef snmp_AuthPasswd { + type string { + length "0..130"; + pattern ".*"; + } + } + + // Authentication Type + typedef snmp_AuthType { + type enumeration { + enum hmac-md5-96 { + value 1; + description "HMAC-MD5-96"; + } + enum hmac-sha1-96 { + value 2; + description "HMAC-SHA1-96"; + } + } + default "hmac-md5-96"; + } + + // Auth Type + typedef snmp_AuthTypeT { + type enumeration { + enum no { + value 0; + description "No auth"; + } + enum md5 { + value 1; + description "MD5 algorithm"; + } + enum sha { + value 2; + description "SHA algorithm"; + } + enum sha-256 { + value 3; + description "SHA-256 algorithm"; + } + } + default "no"; + } + + typedef snmp_Boolean { + type enumeration { + enum no { + value 0; + description "No"; + } + enum yes { + value 1; + description "Yes"; + } + } + default "yes"; + } + + // Type of access to the type of community + typedef snmp_CommAcessT { + type enumeration { + enum ro { + value 0; + description "Read-only Access"; + } + enum rw { + value 1; + description "Read-Write Access"; + } + enum unspecified { + value 2; + description "Unspecified value"; + } + } + default "unspecified"; + } + + // Port Counter Cache Timeout + typedef snmp_CounterCacheTimeout { + type uint16 { + range "1..3600"; + } + default "50"; + } + + // RMON EVENT Description + typedef snmp_DescType { + type string; + } + + // Auth/Priv key mode + typedef snmp_EncrypModeT { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum hash { + value 1; + description "hash mode key"; + } + enum salt { + value 2; + description "salt mode key"; + } + } + default "unspecified"; + } + + // Engine ID + typedef snmp_EngId { + type string; + } + + // Engine ID Length + typedef snmp_EngIdLen { + type uint8 { + range "0..162"; + } + default "0"; + } + + // Event Number + typedef snmp_EventIndx { + type uint16 { + range "1..65535"; + } + default "1"; + } + + // Event Number + typedef snmp_EventNum { + type uint16 { + range "1..65535"; + } + } + + // Group Name to which community belongs + typedef snmp_GrpNameT { + type string; + } + + // RMON HCALARM Threshold Type + typedef snmp_HcThrshld { + type uint64; + } + + // Logging enable + typedef snmp_LogEnableType { + type enumeration { + enum no { + value 0; + description "Generate RMON log when the event fires"; + } + enum yes { + value 1; + description "Do not Generate RMON log when the event fires"; + } + } + default "no"; + } + + // Notification type + typedef snmp_NotificationType { + type enumeration { + enum traps { + value 1; + } + enum informs { + value 2; + } + } + default "traps"; + } + + // RMON EVENT OWNER + typedef snmp_OwnerType { + type string; + } + + // SNMP Packet Size + typedef snmp_PktSizeT { + type uint16 { + range "484..17382"; + } + default "1500"; + } + + // UDP PORT + typedef snmp_PortIdT { + type uint32 { + range "0..65535"; + } + default "162"; + } + + // Privacy (encryption) key + typedef snmp_PrivKey { + type string; + } + + typedef snmp_PrivPasswd { + type string { + length "0..130"; + pattern ".*"; + } + } + + // Privacy (encryption) Type + typedef snmp_PrivType { + type enumeration { + enum none { + value 0; + description "None"; + } + enum des { + value 1; + description "DES"; + } + enum aes-128 { + value 2; + description "AES-128"; + } + } + default "none"; + } + + // Priv Type + typedef snmp_PrivTypeT { + type enumeration { + enum no { + value 0; + description "No auth"; + } + enum des { + value 1; + description "DES algorithm"; + } + enum aes128 { + value 2; + description "AES-128 algorithm"; + } + } + default "no"; + } + + typedef snmp_SnmpLogLevel { + type enumeration { + enum emergencies { + value 0; + description "emergencies"; + } + enum alerts { + value 1; + description "alerts"; + } + enum critical { + value 2; + description "critical"; + } + enum errors { + value 3; + description "errors"; + } + enum warnings { + value 4; + description "warnings"; + } + enum notifications { + value 5; + description "notifications"; + } + enum information { + value 6; + description "information"; + } + enum debugging { + value 7; + description "debugging"; + } + } + default "critical"; + } + + // System Contact + typedef snmp_SnmpSysContact { + type string; + } + + // System Description + typedef snmp_SnmpSysDescr { + type string; + } + + // System Location + typedef snmp_SnmpSysLoc { + type string; + } + + // Snmp trap administrative state + typedef snmp_SnmpTrapSt { + type enumeration { + enum enable { + value 1; + description "Enable"; + } + enum disable { + value 2; + description "Disable"; + } + } + default "disable"; + } + + // Trap Community type + typedef snmp_TrapCommType { + type string; + } + + // SNMP Trap Rate + typedef snmp_TrapRateT { + type uint16 { + range "0..1000"; + } + default "0"; + } + + // SNMPv3 security level + typedef snmp_V3SecLvl { + type enumeration { + enum unspecified { + value 0; + } + enum noauth { + value 1; + } + enum auth { + value 2; + } + enum priv { + value 3; + } + } + default "noauth"; + } + + // SNMP version + typedef snmp_Version { + type enumeration { + enum v1 { + value 1; + } + enum v2c { + value 2; + } + enum v3 { + value 3; + } + } + default "v1"; + } + + // Community name + typedef snmp_commNameT { + type string; + } + + // host name + typedef snmp_hostNameT { + type string { + length "1..255"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + } + + // RMON ALARM Sample interval + typedef snmp_smplIntvl { + type uint32 { + range "1..700000"; + } + default "1"; + } + + // Rmon alarm sample type + typedef snmp_smplType { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum absolute { + value 1; + description "Test each sample directly"; + } + enum delta { + value 2; + description "Test delta between samples"; + } + } + default "unspecified"; + } + + // RMON HCALARM startupalarm + typedef snmp_startupAlarmType { + type enumeration { + enum unspecified { + value 0; + description "Unspecified"; + } + enum rising { + value 1; + description "rising"; + } + enum falling { + value 2; + description "falling"; + } + enum risingorfalling { + value 3; + description "rising or falling"; + } + } + default "unspecified"; + } + + // Type for snmp-server tcp-session auth config + typedef snmp_tcpSessionAuthT { + type enumeration { + enum no { + value 0; + description "Unspecified"; + } + enum tcpSess { + value 1; + description "tcp-session config"; + } + enum tcpSessAuth { + value 2; + description "tcp-session auth config"; + } + } + default "tcpSessAuth"; + } + + // RMON ALARM Threshold Type + typedef snmp_thrshld { + type int32 { + range "-2147483648..2147483647"; + } + default "0"; + } + + // User name + typedef snmp_userNameT { + type string; + } + + typedef span_AclName { + type string { + length "0..64"; + } + } + + typedef span_Description { + type string { + length "0..32"; + } + } + + // Monitor Description Type + // Used to set the default string to Empty and length + // to 32 characters + typedef span_ErrorInt { + type uint16 { + range "0..32"; + } + default "0"; + } + + // erspan-id + typedef span_ErspanId { + type uint16 { + range "0..1023"; + } + default "0"; + } + + // HeaderType + typedef span_HeaderVer { + type enumeration { + enum v2 { + value 0; + description "Type 2"; + } + enum v3 { + value 1; + description "Type 3"; + } + enum v3-rfc-compliant { + value 2; + description "Type3 rfc-compliant"; + } + } + } + + // ip dscp + typedef span_IpDscp { + type uint16 { + range "0..63"; + } + default "0"; + } + + // ip ttl + typedef span_IpTtl { + type uint16 { + range "1..255"; + } + default "255"; + } + + // marker packet interval + typedef span_MarkerPktInt { + type uint16 { + range "1..1000"; + } + default "100"; + } + + // MtuValue + typedef span_MtuValue { + type uint16 { + range "64..10240"; + } + default "10240"; + } + + // Operational state qualifier + typedef span_OperStQual { + type enumeration { + enum active { + value 1; + description "The session is up"; + } + enum no-hw-res { + value 2; + description "No hardware resource"; + } + enum no-oper-src-dst { + value 3; + description "No operational src/dst"; + } + enum error { + value 4; + description "Generic error"; + } + enum no-src { + value 5; + description "No sources configured"; + } + enum no-dst { + value 6; + description "No dest configured"; + } + enum no-src-dst { + value 7; + description "No src/dst configured"; + } + enum shut { + value 8; + description "Session admin shut"; + } + enum invalid-dst-mode { + value 9; + description "Dst in wrong mode"; + } + enum invalid-src-mode { + value 10; + description "Src in wrong mode"; + } + enum no-flow-id { + value 11; + description "No erspan-id specified"; + } + enum multi-dest-not_allowed { + value 12; + description "Multi-dst not allowed"; + } + enum invalid-vrf { + value 13; + description "No valid VRF"; + } + enum invalid-ip { + value 14; + description "No valid IP address"; + } + enum acl-disabled { + value 16; + description "ACL capture feature disabled"; + } + enum acl-no-res-string { + value 17; + description "No ACL capture resourc"; + } + enum acl-vdc-mismatch { + value 18; + description "ACL capture VDC mismatched"; + } + enum no-ssn-f1-f2 { + value 19; + description "SPAN session not supported in F1/F2 only VDC"; + } + enum no-erspan-switch-id { + value 20; + description "No erspan-switch-id specified"; + } + enum no-route { + value 21; + description "No route to destination IP address"; + } + enum arp-not-resolved { + value 22; + description "ARP not resolved"; + } + enum no-eg-intf { + value 23; + description "Egress interface not resolved"; + } + enum no-svi-member { + value 24; + description "SVI member not retrieved"; + } + enum no-dce-route { + value 25; + description "FP route not found"; + } + enum no-src-mac { + value 26; + description "Source MAC not retrieved"; + } + enum no-dce-switch-id { + value 27; + description "Source switch-id not retrieved"; + } + enum no-dce-src-lid { + value 28; + description "Source LID not retrieved"; + } + enum no-dce-egress-intf { + value 29; + description "FP egress interface not retrieved"; + } + enum no-si-1qtag { + value 30; + description "Failed to retrieve .1q tag for egress SI"; + } + enum no-fpc { + value 31; + description "Failed to retrieve FPC for egress fex intf"; + } + enum unsupported-route { + value 32; + description "Unsupported route (e.g. tunnel, lo, ranger)"; + } + enum erspan-dest-failed { + value 33; + description "SPAN destination resource allocation failure"; + } + enum erspan-action-not-supported { + value 34; + description "ERSPAN specific ACE actions not supported"; + } + enum udf-not-present { + value 35; + description "UDF not qualified for TCAM region"; + } + enum pfc-ns-port { + value 36; + description "Pfc Span on NS Port"; + } + enum udf-unsupported-on-vlan { + value 37; + description "UDF based ACL filter not supported on VLAN"; + } + enum hw-err { + value 38; + description "Hardware error"; + } + } + default "shut"; + } + + typedef span_SrcDirection { + type enumeration { + enum rx { + value 1; + description "Rx Direction - Ingress"; + } + enum tx { + value 2; + description "Tx Direction - Egress"; + } + enum both { + value 3; + description "Both Tx(Egress) AND Rx(Ingress) Direction"; + } + } + default "both"; + } + + // Monitor Session id + typedef span_SsnId { + type uint16 { + range "1..32"; + } + } + + // Monitor State Enum + typedef span_State { + type enumeration { + enum up { + value 1; + description "Up"; + } + enum down { + value 2; + description "Down"; + } + } + default "down"; + } + + // Monitor Type Enum + typedef span_Type { + type enumeration { + enum local { + value 0; + description "Local"; + } + enum erspan-source { + value 1; + description "ERSPAN Source"; + } + enum erspanDst { + value 2; + description "ERSPAN Destination"; + } + } + default "local"; + } + + // - Affinity bit position + typedef srte_BitPos { + type uint32 { + range "0..31"; + } + } + + typedef srte_ColorVal { + type uint64 { + range "0..4294967295"; + } + default "0"; + } + + // DataPlane type + typedef srte_DataPlane { + type enumeration { + enum mpls { + value 0; + description "SRTE Dataplane Type - mpls"; + } + } + default "mpls"; + } + + // Disjoint type + typedef srte_DisjointType { + type enumeration { + enum none { + value 0; + description "SRTE Disjoint Type - none"; + } + enum node { + value 1; + description "SRTE Disjoint Type - node"; + } + enum link { + value 2; + description "SRTE Disjoint Type - link"; + } + } + default "none"; + } + + // Encapsulation type + typedef srte_EncapsulationType { + type enumeration { + enum mpls { + value 0; + description "SRTE Encapsulation Type - mpls"; + } + } + default "mpls"; + } + + // Oper State for Interface + typedef srte_IfOperSt { + type enumeration { + enum down { + value 0; + description "Interface Oper State - down"; + } + enum up { + value 1; + description "Interface Oper State - up"; + } + } + } + + typedef srte_LabelVal { + type uint32 { + range "16..471804"; + } + default "16"; + } + + // Metric type + typedef srte_Metric { + type enumeration { + enum none { + value 0; + description "SRTE Metric Type - none"; + } + enum te { + value 1; + description "SRTE Metric Type - te"; + } + enum igp { + value 2; + description "SRTE Metric Type - igp"; + } + } + default "none"; + } + + // Metric Value + typedef srte_MetricVal { + type uint32; + } + + // Name + typedef srte_Name { + type string; + } + + // - option number for index and preferences + typedef srte_OptNum { + type uint32 { + range "1..65535"; + } + } + + typedef srte_PcePrecedence { + type uint32 { + range "0..255"; + } + default "255"; + } + + // Protection type + typedef srte_ProtectionType { + type enumeration { + enum protected { + value 0; + description "SRTE Protection Type - protected"; + } + enum unprotected { + value 1; + description "SRTE Protection Type - unprotected"; + } + } + default "protected"; + } + + typedef srv6_LocName { + type string; + } + + typedef srv6_LocState { + type enumeration { + enum down { + value 0; + description "Lacator is down"; + } + enum downPending { + value 1; + description "Locator is down pending"; + } + enum up { + value 2; + description "Locator is up"; + } + } + } + + // Forwarding instance target identifier + typedef ssx_FwdInstTargetId { + type uint32 { + range "0..16777215"; + } + } + + // Interval + typedef ssx_Interval { + type uint32 { + range "100..1000"; + } + default "1000"; + } + + // MTU + typedef ssx_Mtu { + type uint16 { + range "1500..9000"; + } + default "1500"; + } + + // SsxMonitorName + typedef ssx_SsxMonitorName { + type string { + length "0..128"; + } + } + + // SsxPort + typedef ssx_SsxPort { + type uint16; + default "49153"; + } + + // SsxRecordName + typedef ssx_SsxRecordName { + type string { + length "0..128"; + } + } + + // SsxRemoteNodeName + typedef ssx_SsxRemoteNodeName { + type string { + length "0..128"; + } + } + + // Global System id + typedef ssx_SystemId { + type uint32 { + range "0..65535"; + } + default "0"; + } + + // Vrfname + typedef ssx_VrfName { + type l3_VrfName; + default "default"; + } + + // Administrative state + typedef stp_AdminSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "enabled"; + } + + // BPDUGuard + typedef stp_BPDUGuard { + type enumeration { + enum default { + value 0; + description "Default"; + } + enum enable { + value 1; + description "Enable"; + } + enum disable { + value 2; + description "Disable"; + } + } + default "default"; + } + + // bpdufilter type + typedef stp_Bpdufilter { + type enumeration { + enum default { + value 0; + description "Default"; + } + enum enable { + value 1; + description "Enable"; + } + enum disable { + value 2; + description "Disable"; + } + } + default "default"; + } + + // bridge priority, incremental of 4096 + typedef stp_BridgePriority { + type uint16 { + range "0..61440"; + } + default "32768"; + } + + // Path Cost 0 means auto + typedef stp_Cost { + type uint32 { + range "0..200000000"; + } + default "0"; + } + + typedef stp_Diameter { + type uint8 { + range "2..7"; + } + default "2"; + } + + // Forward Delay Time in Second + typedef stp_FwdTime { + type uint8 { + range "4..30"; + } + default "15"; + } + + // port guard + typedef stp_Guard { + type enumeration { + enum default { + value 0; + description "Default"; + } + enum root { + value 1; + description "Root"; + } + enum loop { + value 2; + description "Loop"; + } + enum none { + value 3; + description "None"; + } + } + default "default"; + } + + // Hello Interval in Second + typedef stp_HelloTime { + type uint8 { + range "1..10"; + } + default "2"; + } + + // Interface controls + typedef stp_IfControl { + + type string; + default "unspecified"; + } + + // Mode + typedef stp_IfMode { + type enumeration { + enum default { + value 0; + description "Default"; + } + enum edge { + value 1; + description "Edge (host) port"; + } + enum network { + value 2; + description "Network port"; + } + enum normal { + value 3; + description "Normal port"; + } + enum trunk { + value 4; + description "Edge port in trunk mode"; + } + } + default "default"; + } + + typedef stp_L2GStpDomId { + type uint32 { + range "0..200000000"; + } + default "1024"; + } + + // LC Issu Option + typedef stp_LcIssu { + type enumeration { + enum default { + value 0; + description "Default"; + } + enum disruptive { + value 1; + description "Disruptive"; + } + enum non-disruptive { + value 2; + description "Non-disruptive"; + } + enum auto { + value 3; + description "Auto"; + } + } + default "default"; + } + + // Link Type + typedef stp_LinkType { + type enumeration { + enum auto { + value 1; + description "Auto"; + } + enum p2p { + value 2; + description "point-to-point"; + } + enum shared { + value 3; + description "Shared"; + } + } + default "auto"; + } + + // Hello Interval in Second + typedef stp_MaxAge { + type uint8 { + range "6..40"; + } + default "20"; + } + + // Max Hops + typedef stp_MaxHops { + type uint8 { + range "1..255"; + } + default "20"; + } + + typedef stp_Mode { + type enumeration { + enum mst { + value 1; + description "MST"; + } + enum pvrst { + value 2; + description "PVRST"; + } + } + default "pvrst"; + } + + // Mode + typedef stp_ModeType { + type enumeration { + enum edge { + value 1; + description "Edge (host) port"; + } + enum network { + value 2; + description "Network port"; + } + enum normal { + value 3; + description "Normal port"; + } + } + default "normal"; + } + + // Mst Id + typedef stp_MstId { + type uint16 { + range "0..4094"; + } + default "0"; + } + + // Path cost option + typedef stp_PathcostOp { + type enumeration { + enum auto { + value 0; + description "Auto"; + } + enum short { + value 1; + description "Short"; + } + enum long { + value 2; + description "Long"; + } + } + default "short"; + } + + // port priority, incremental of 32 + typedef stp_PortPriority { + type uint8 { + range "0..224"; + } + default "128"; + } + + // STP port roles. + typedef stp_PortRole { + type enumeration { + enum unknown { + value 0; + description "Unknown role"; + } + enum root { + value 1; + description "Root port"; + } + enum alternate { + value 2; + description "Alternate port"; + } + enum designated { + value 3; + description "Designated port"; + } + enum backup { + value 4; + description "Backup port"; + } + enum master { + value 5; + description "Master port"; + } + } + } + + // STP port states. + typedef stp_PortState { + type enumeration { + enum unknown { + value 0; + description "Unknown state"; + } + enum discarding { + value 1; + description "Discarding state"; + } + enum learning { + value 2; + description "Learning state"; + } + enum forwarding { + value 3; + description "Forwarding state"; + } + enum disabled { + value 4; + description "Disabled state"; + } + enum listening { + value 5; + description "listening port state"; + } + enum blocking { + value 6; + description "Blocking port state"; + } + } + } + + // bridge priority, incremental of 4096 + typedef stp_Priority { + type enumeration { + enum 0 { + value 0; + description "Priority_0"; + } + enum 4096 { + value 1; + description "Priority_4096"; + } + enum 8192 { + value 2; + description "Priority_8192"; + } + enum 12288 { + value 3; + description "Priority_12288"; + } + enum 16384 { + value 4; + description "Priority_16384"; + } + enum 20480 { + value 5; + description "Priority_20480"; + } + enum 24576 { + value 6; + description "Priority_24576"; + } + enum 28672 { + value 7; + description "Priority_28672"; + } + enum 32768 { + value 8; + description "Priority_32768"; + } + enum 36864 { + value 9; + description "Priority_36864"; + } + enum 40960 { + value 10; + description "Priority_40960"; + } + enum 45056 { + value 11; + description "Priority_45056"; + } + enum 49152 { + value 12; + description "Priority_49152"; + } + enum 53248 { + value 13; + description "Priority_53248"; + } + enum 57344 { + value 14; + description "Priority_57344"; + } + enum 61440 { + value 15; + description "Priority_61440"; + } + } + default "32768"; + } + + // Spanning tree protocols. + typedef stp_Protocol { + type enumeration { + enum unknown { + value 0; + description "Unknown protocol"; + } + enum mstp { + value 1; + description "MSTP"; + } + enum rstp { + value 2; + description "RSTP"; + } + } + } + + // MST region name + typedef stp_RegName { + type string { + length "0..32"; + } + } + + // MST region revision number + typedef stp_RegRev { + + type uint16 { + range "0..65535"; + } + default "0"; + } + + // Root Options + typedef stp_Root { + type enumeration { + enum primary { + value 1; + description "Primary"; + } + enum secondary { + value 2; + description "Secondary"; + } + } + default "primary"; + } + + // Root Mode config + typedef stp_RootMode { + type enumeration { + enum enabled { + value 1; + description "Configs will be updated in root mode"; + } + enum disabled { + value 0; + description "Configs in normal mode and not root"; + } + } + default "disabled"; + } + + // Root Type for Bridge + typedef stp_RootType { + type enumeration { + enum none { + value 0; + description "STP normal root"; + } + enum primary { + value 1; + description "STP primary root"; + } + enum secondary { + value 2; + description "STP secondary root"; + } + } + default "none"; + } + + // Mst simulate pvst + typedef stp_Simulate { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "enabled"; + } + + typedef stp_SimulateIf { + type enumeration { + enum default { + value 0; + description "Default"; + } + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "default"; + } + + typedef stp_VlanBitmap { + type l2_VlanBitmap; + } + + // vlan id + typedef stp_VlanId { + type uint16 { + range "1..4096"; + } + default "1"; + } + + // vpc state per port + typedef stp_VpcState { + type enumeration { + enum none { + value 0; + description "None"; + } + enum vPCPeerlink { + value 1; + description "VPCPeerLink"; + } + enum vPC { + value 2; + description "VPC"; + } + } + default "none"; + } + + // Bandwidth metric of the SVI in kilobits per second. + typedef svi_Bw { + type uint32 { + range "1..400000000"; + } + default "1000000"; + } + + // Carrier Transition Delay (like L2 interface going down in + // milliseconds + typedef svi_CarrDelay { + type uint32 { + range "0..60000"; + } + default "100"; + } + + // Delay metric of the SVI in tens of microseconds + typedef svi_Delay { + type uint32 { + range "1..16777215"; + } + default "1"; + } + + // Load averaging delay interval 1 in seconds + typedef svi_LoadIntvl1 { + type uint32 { + range "60..600"; + } + default "60"; + } + + // Load averaging delay interval 2 in seconds + typedef svi_LoadIntvl2 { + type uint32 { + range "60..600"; + } + default "300"; + } + + // Load averaging delay interval 3 in seconds + typedef svi_LoadIntvl3 { + type uint32 { + range "60..600"; + } + default "60"; + } + + // Medium mode of the SVI + typedef svi_Medium { + type enumeration { + enum bcast { + value 0; + description "broadcast"; + } + enum p2p { + value 1; + description "p2p"; + } + } + default "bcast"; + } + + // MTU of the SVI + typedef svi_Mtu { + type uint32 { + range "64..9216"; + } + default "1500"; + } + + // Line operational state + typedef svi_OperSt { + type enumeration { + enum unknown { + value 0; + description "unknown"; + } + enum up { + value 1; + description "up"; + } + enum down { + value 2; + description "down"; + } + enum shutdown { + value 3; + description "shutdown"; + } + enum out-of-srvc { + value 4; + description "out of service"; + } + } + default "down"; + } + + // Reason for operational state being down + typedef svi_OperStQual { + type enumeration { + enum unknown { + value 0; + description "None"; + } + enum admin-shut { + value 1; + description "administratively shut down"; + } + enum no-vlan { + value 2; + description "vlan does not exist."; + } + enum bad-vlan_t { + value 3; + description "invalid vlan type"; + } + enum vlan-down { + value 4; + description "vlan is down"; + } + enum hwprog-flfm { + value 5; + description "hardware programming failed (l2fm)"; + } + enum hwprog-fles { + value 6; + description "hardware programming failed (event Sequence)"; + } + enum oos { + value 7; + description "out of service"; + } + enum reinit { + value 8; + description "service is down or being brought down"; + } + enum mtuprog-fail { + value 9; + description "mtu programming failed"; + } + enum vrf-unusable { + value 10; + description "VRF not usable"; + } + enum l2st-change { + value 11; + description "underlying l2 interface state us down"; + } + enum suspended { + value 12; + description "Operationally shut down"; + } + enum macalloc-fail { + value 13; + description "mac address allocation failed"; + } + enum nonrouted-vdc { + value 14; + description "non-routable VDC mode"; + } + enum int-vlan-create-fail { + value 15; + description "interface vlan-create process failed"; + } + enum inbMgmt-cfg-fail { + value 16; + description "inbMgmt Config failed"; + } + } + default "unknown"; + } + + typedef svi_VlanId { + type uint16 { + range "0..4095"; + } + default "0"; + } + + // Operational state of the package + typedef swpkgs_OperState { + type enumeration { + enum none { + value 0; + description "No RPM packages"; + } + enum inactive { + value 1; + description "inactive RPM package"; + } + enum activated { + value 2; + description "activated RPM package"; + } + enum deactivated { + value 3; + description "This is Inactive commit pending package.Commit on this package needs to be done to make it permanently inactive."; + } + enum committed { + value 4; + description "Committed RPM package"; + } + enum inactive_base { + value 5; + description "inactive base RPM package"; + } + enum activated_base { + value 6; + description "activated base RPM package"; + } + enum activated_thirdparty { + value 7; + description "activated thirdparty rootfs package"; + } + enum activate_pending_reload { + value 8; + description "Pending reload after activate no-reload option is used"; + } + enum deactivate_pending_reload { + value 9; + description "Pending reload after deactivate no-reload option is used"; + } + } + default "none"; + } + + // Package action to be selected by the user + typedef swpkgs_PackageAction { + type enumeration { + enum init { + value 0; + description "This state is the initial state of the package.When the system boots up it will have this state."; + } + enum add { + value 1; + description "Add a RPM package to the repo"; + } + enum activate { + value 2; + description "Activate the RPM package"; + } + enum add-activate { + value 3; + description "Add and Activate the RPM package"; + } + enum deactivate { + value 4; + description "Deactivate the RPM package"; + } + enum commit { + value 5; + description "Commit the RPM package"; + } + enum remove { + value 6; + description "Remove the RPM package"; + } + enum add-gpg { + value 7; + description "Add the gpg-key"; + } + enum verify-package { + value 8; + description "Verify active/inactive package for signature"; + } + enum verify-rpm { + value 9; + description "Verify RPM for signature"; + } + } + default "init"; + } + + // Package action result + typedef swpkgs_PackageActionResult { + type enumeration { + enum success { + value 0; + description "Patch action the package was succesfull."; + } + enum failed { + value 1; + description "Patch action the package failed."; + } + enum not-available { + value 2; + description "Not Available"; + } + } + default "not-available"; + } + + // Reset reason + typedef syshist_RstRsn { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum reboot { + value 1; + description "Kernel Reboot"; + } + enum watchdog { + value 2; + description "Watchdog Timeout"; + } + enum sysmgr { + value 3; + description "Reset Requested due to Fatal System Error"; + } + enum mod-err { + value 4; + description "Reset Requested due to Fatal Module Error"; + } + enum pwr-cfg { + value 5; + description "Configured Power down"; + } + enum temp-alaram { + value 6; + description "Power down due to temperature sensor policy trigger"; + } + enum user-switchover { + value 7; + description "Reset triggered due to Switchover Request by User"; + } + enum upg-err { + value 8; + description "Reset Requested due to Fatal Upgrade Error"; + } + enum reload { + value 9; + description "Reset Requested by CLI command reload"; + } + enum sprom-upd { + value 10; + description "Reset Requested due to SPROM update"; + } + enum sys-cfg-dwn { + value 11; + description "System Reset due to Element Manager"; + } + enum clock { + value 12; + description "System Reset due to Clock failure"; + } + enum halt { + value 13; + description "Kernel Halt"; + } + enum redundancy { + value 14; + description "Reset Requested by Redundancy"; + } + enum ha-switchover { + value 15; + description "Reset triggered due to HA policy of Switchover"; + } + enum ha-reset { + value 16; + description "Reset triggered due to HA policy of Reset"; + } + enum pfm-rtime { + value 17; + description "Power down triggered due to Platform manager runtime error"; + } + enum pfm-power-dwn { + value 18; + description "Power down triggered due to Platform manager event"; + } + enum panic { + value 19; + description "Kernel Panic"; + } + enum mgmt-app { + value 20; + description "Reset Requested by management application"; + } + enum hw { + value 21; + description "Reset triggered due to Hardware Error"; + } + enum asic { + value 22; + description "Reset performed due to component Error"; + } + enum redun-channel { + value 23; + description "Reset triggered due to bad redundancy channel"; + } + enum sys-health { + value 24; + description "Reset due to bad HW detected by System Health"; + } + enum eobc { + value 25; + description "Reset triggered due to bad backplane communication channel"; + } + enum boot-err { + value 27; + description "Reset (powered-down) because module does not boot"; + } + enum no-bootflash { + value 28; + description "Reset (powered-down) because there is no bootflash"; + } + enum netboot-err { + value 29; + description "Reset (powered-down) because netboot failed"; + } + enum bootflash-corrupt { + value 30; + description "Reset (powered-down) because bootflash access failed"; + } + enum installer { + value 31; + description "Reset by installer"; + } + enum epld { + value 33; + description "Power Down/UP epld upgrade process"; + } + enum sigkill-fail { + value 34; + description "Reset triggered due to failure to respond to SIGKILL"; + } + enum sys-gen-fail { + value 35; + description "Reset triggered by System Manager for generic failure"; + } + enum clock-switchover { + value 37; + description "VegasLC Reset due to Clock SwitchOver"; + } + enum insufficient-resource { + value 38; + description "Reset (powered-down) because of insufficient resources (DI)"; + } + enum incompat-config { + value 43; + description "Reset (powered-down) because of incompatible configuration"; + } + enum lcm-unknown { + value 44; + description "Unknown reason"; + } + enum lcm-ha-restart { + value 45; + description "HA System restart"; + } + enum lcm-haswitchover-done { + value 46; + description "HA-Switchover done"; + } + enum lcm-boot-srg-timeout { + value 47; + description "SRG info response timeout"; + } + enum lcm-coredump { + value 48; + description "Core dump initiation"; + } + enum lcm-disruptive-upg { + value 49; + description "Disruptive upgrade"; + } + enum lcm-lc-fail { + value 50; + description "Line card failure"; + } + enum lcm-hitless-mod-rem { + value 51; + description "Hitless module removal"; + } + enum lcm-hitless-pwr-dwn { + value 52; + description "Hitless power down"; + } + enum lcm-hitless-proc-notice { + value 53; + description "Catastrophic error from LC"; + } + enum lcm-hitless-reg-fail { + value 54; + description "Hitless registration failed"; + } + enum lcm-hitless-timeout { + value 55; + description "Hitless upgrade timeout"; + } + enum lcm-img-upg-timeout { + value 56; + description "Line card image upgrade (failure)"; + } + enum lcm-img-upgsuccess { + value 57; + description "Line card image upgrade (success)"; + } + enum lcm-lc-ins-seq-fail { + value 58; + description "LC insertion sequence failure"; + } + enum lcm-hitless-upg-fail { + value 59; + description "Hitless upgrade failed"; + } + enum lcm-lc-no-resp { + value 60; + description "Line card not responding"; + } + enum lcm-lc-reg-more3 { + value 61; + description "Line card 3+ registration"; + } + enum lcm-lc-reg-timeout { + value 62; + description "Line card registration timeout"; + } + enum lcm-runtime-diag-fail { + value 63; + description "Runtime diagnostic failure"; + } + enum lcm-runtime-diag-timeout { + value 64; + description "Runtime diagnostic timeout"; + } + enum lcm-seeprom-timeout { + value 65; + description "Line card SEEPROM contents response timeout"; + } + enum lcm-proc-notice { + value 66; + description "Line card catastrophic error"; + } + enum lcm-save-state-fail { + value 67; + description "Save state response (failure)"; + } + enum lcm-hitfull-img-check { + value 68; + description "Hitful image compatibility check"; + } + enum lcm-img-check-pwr-cycle { + value 69; + description "Image compatibility check (action:powercycle)"; + } + enum lcm-img-check-pwr-dwn { + value 70; + description "Image compatibility check (action:powerdown)"; + } + enum lcm-img-check-switch-over { + value 71; + description "Switchover : Image compatibility check"; + } + enum lcm-power-down { + value 72; + description "Module is powered down or power cycled"; + } + enum lcm-sup-rem { + value 73; + description "Supervisor card is removed or power cycled"; + } + enum lcm-lc-rem { + value 74; + description "Module is removed"; + } + enum lcm-unknown-mod { + value 75; + description "Unknown line card insertion"; + } + enum lcm-srg-timeout { + value 76; + description "SRG infor response timeout"; + } + enum lcm-async-notice-fail { + value 77; + description "Stop async notice failed"; + } + enum lcm-switchover-fail { + value 78; + description "Switchover failed"; + } + enum lcm-timeout { + value 79; + description "Addon image response timeout"; + } + enum lcm-srg-incompat { + value 80; + description "Upgraded SRG incompatible"; + } + enum outofservice { + value 86; + description "Out of service"; + } + enum sup-dev-err { + value 87; + description "Supervisor Device Error"; + } + enum issu-restart { + value 88; + description "Reset due to upgrade"; + } + enum ins-seq-fail-pwr-dwn { + value 89; + description "Reset (powered-down) due to insertion sequence failed"; + } + enum no-sup { + value 92; + description "Reset due to no sup"; + } + enum bad-volt { + value 93; + description "Reset due to Bad Voltage"; + } + enum bad-bus-volt { + value 94; + description "Reset due to bad system bus voltage"; + } + enum bad-intermediate-bus-volt { + value 95; + description "Reset due to bad intermediate bus voltage"; + } + enum psp { + value 96; + description "Reset due to CMP"; + } + enum eem-pwr-dwn { + value 97; + description "Powered-down due to EEM event policy trigger"; + } + enum usd-fail { + value 98; + description "Reset due to USD Failure"; + } + enum ejector { + value 99; + description "All the ejectors are OPEN"; + } + enum sys-rst { + value 100; + description "System reset by active sup (by writing to PMFPGA regs)"; + } + enum push-button { + value 101; + description "linecard reset by push button"; + } + enum policy-reset { + value 103; + description "Policy trigger initiated reset: "; + } + enum policy-fan { + value 104; + description "Powered-down due to fan policy trigger"; + } + enum chassis-rst { + value 105; + description "Chassis reset by Sup"; + } + enum max-switchover { + value 107; + description "Reset (powered-down) since maximum number of swovers were exceeded"; + } + enum switchover-timeout { + value 108; + description "Reset since switchover timeout"; + } + enum sysmgr-timeout { + value 109; + description "Reset of standby by active sup due to sysmgr timeout"; + } + enum unknown-mod { + value 110; + description "Unsupported/Unknown Module"; + } + enum mod-fail { + value 111; + description "Module Failed"; + } + enum mod-pwr-cycle { + value 112; + description "Module PowerCycled"; + } + enum card-incompat { + value 113; + description "Module not supported in this chassis"; + } + enum idprom-err { + value 114; + description "Bootup error accessing module IDPROM"; + } + enum unspecified { + value 115; + description "Non-specific deadend error, check platform int error"; + } + enum no-plugin { + value 117; + description "plugin absent/ not loaded"; + } + enum sw-card-id-unknown { + value 118; + description "Unknown card (Could not get software-card-id)"; + } + enum mod-fail-pwr-up { + value 119; + description "Unable to power up card (Power-OK not set)"; + } + enum max-bring-up-exceed { + value 120; + description "failure(powered-down) since maximum number of bringups were exceeded"; + } + enum enm-enabled { + value 121; + description "Ethernet end-host mode enabled"; + } + enum enm-disabled { + value 122; + description "Ethernet end-host mode disabled"; + } + enum vpd-read-failure { + value 123; + description "IBM VPD read Failed"; + } + enum inc-cos-mod { + value 124; + description "powered-down since linecard does not support the cos mode"; + } + enum epld-upg-nw-crd-mode { + value 125; + description "Power Down/UP epld upgrade process"; + } + enum deep-sleep { + value 126; + description "Preparing to enter deep sleep mode"; + } + enum fcoe-featureset-absent { + value 127; + description "(powered-down) FCOE feature-set absent(disabled or uninstalled)"; + } + enum power-cycle-button { + value 128; + description "Power cycle button pressed"; + } + enum config-reset-button { + value 129; + description "Configuration reset button pressed"; + } + enum agni-app-init-reload { + value 130; + description "Reload Initiated by application"; + } + enum cpu-caterr-signal { + value 131; + description "CPU CATERR Signal Asserted"; + } + enum patch-install { + value 132; + description "Reset due to patch install"; + } + enum fastboot { + value 133; + description "Reset due to fast-reload"; + } + enum no-sc { + value 134; + description "Powered down due to absence of system-controller module"; + } + enum no-fm { + value 135; + description "Powered down due to absence of fabric module"; + } + enum lc-breakout { + value 136; + description "Reloaded since breakout was configured/deconfigured on the LC"; + } + enum hg-link-down { + value 137; + description "Reloaded since a HG link went down on this LC"; + } + enum slot-id-parity-err { + value 138; + description "Reset due to FPGA Slot ID parity error"; + } + enum power-error { + value 139; + description "Reset due to Power error"; + } + enum firmware-upgrade { + value 140; + description "Reload due to Firmware upgrade"; + } + enum unsipp-dist-arbit-mode { + value 141; + description "Powered-down since linecard/spine/supervisor doesn't support distributed arbitration mode"; + } + enum enhanced-virtualization-enabled { + value 142; + description "switch mode enhanced-virtualization enabled"; + } + enum enhanced-virtualization-disabled { + value 143; + description "switch mode enhanced-virtualization disabled"; + } + enum no-fm-connectivity { + value 144; + description "Powered down due to no connectivity to fabric mode"; + } + enum fabric-mode { + value 145; + description "Powered down due to fabric configured in FRM mode"; + } + enum epc-failure { + value 146; + description "Reset triggered due to bad (EPC) packet communication channel"; + } + enum all-vdcs-not-online { + value 147; + description "Reset (powered-down) because all VDCs for module need to be online"; + } + enum pfm-auth-fail { + value 148; + description "Reset (powered down) due to module authentication failure"; + } + enum pfm-startauth-fail { + value 149; + description "Reset (powered down) due to module authentication start failure"; + } + enum sys-dme-clean-config-reset { + value 150; + description "Dme clean config reset"; + } + enum pf-eem-policy-trigger-fan-air-flow { + value 151; + description "Powered-down due to fan air flow policy trigger"; + } + enum standby-reload-symc-failure { + value 152; + description "standby reset due to failure on large MOs sync"; + } + enum issu-non-disruptive-restart { + value 153; + description "Reset due to non-disruptive upgrade"; + } + enum afm-tcam-remplate-apply { + value 154; + description "Reload due to change in TCAM service-template"; + } + enum interop-change-request { + value 155; + description "Reload due to interop-mode change"; + } + enum soft-reload-via-crash { + value 156; + description "Reset due to soft reload via Crash"; + } + enum soft-reload-via-cli { + value 157; + description "Reset due to soft reload via CLI"; + } + enum soft-reload-fail-reload { + value 158; + description "Reset due to soft reload attempt failure"; + } + enum act2-auth-failure { + value 159; + description "Reset due to ACT2 authentication failure"; + } + enum un-asic-mem-error { + value 160; + description "Multiple uncorrectable ASIC memory errors detected"; + } + enum not-defined { + value 161; + description "Not defined"; + } + } + } + + // Reset reason qualifier + typedef syshist_RstRsnQual { + type string; + } + + typedef syshist_RstService { + type string; + } + + typedef syslog_Facility { + type enumeration { + enum kern { + value 0; + } + enum user { + value 1; + } + enum mail { + value 2; + } + enum daemon { + value 3; + } + enum auth { + value 4; + } + enum syslog { + value 5; + } + enum lpr { + value 6; + } + enum news { + value 7; + } + enum uucp { + value 8; + } + enum cron { + value 9; + } + enum authpriv { + value 10; + } + enum ftp { + value 11; + } + enum local0 { + value 16; + } + enum local1 { + value 17; + } + enum local2 { + value 18; + } + enum local3 { + value 19; + } + enum local4 { + value 20; + } + enum local5 { + value 21; + } + enum local6 { + value 22; + } + enum local7 { + value 23; + } + } + default "local7"; + } + + typedef syslog_FileSize { + type uint32 { + range "4096..4194304"; + } + default "4194304"; + } + + typedef syslog_OperState { + type enumeration { + enum unknown { + value 0; + } + enum available { + value 1; + } + enum errored { + value 2; + } + } + default "unknown"; + } + + typedef syslog_OriginIdType { + type enumeration { + enum unknown { + value 0; + } + enum hostname { + value 1; + } + enum ip { + value 2; + } + enum string { + value 3; + } + } + default "unknown"; + } + + typedef syslog_OriginIdValue { + type string { + length "0..199"; + pattern ".*(\\.[A-Za-z]([A-Za-z0-9-]*[A-Za-z0-9])?)*.*|.*(.*25[0-5]|.*2[0-4][0-9]|.*1[0-9][0-9]|.*[1-9][0-9]|.*[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.(25[0-5].*|2[0-4][0-9].*|1[0-9][0-9].*|[1-9][0-9].*|[0-9].*).*"; + } + } + + // Type definition for RfcStrcic + typedef syslog_RfcStrictFormat { + type enumeration { + enum legacy { + value 0; + } + enum 5424 { + value 1; + } + } + default "legacy"; + } + + typedef syslog_Severity { + type enumeration { + enum emergencies { + value 0; + description "emergencies"; + } + enum alerts { + value 1; + description "alerts"; + } + enum critical { + value 2; + description "critical"; + } + enum errors { + value 3; + description "errors"; + } + enum warnings { + value 4; + description "warnings"; + } + enum notifications { + value 5; + description "notifications"; + } + enum information { + value 6; + description "information"; + } + enum debugging { + value 7; + description "debugging"; + } + } + default "notifications"; + } + + // SyslogPort + typedef syslog_SyslogPort { + type uint32 { + range "1..65535"; + } + default "514"; + } + + typedef syslog_ThresholdPercent { + type uint32 { + range "0..99"; + } + default "0"; + } + + typedef syslog_TimeStampFormat { + type enumeration { + enum microseconds { + value 0; + } + enum milliseconds { + value 1; + } + enum seconds { + value 2; + } + } + default "seconds"; + } + + // Admin status of sysmgr config properties + typedef sysmgr_CfgAdminSt { + type enumeration { + enum unknown { + value 0; + description "unknown"; + } + enum enable { + value 1; + description "enable"; + } + enum disable-all { + value 2; + description "disable-all"; + } + enum disable-trc-mask { + value 3; + description "disable-trc-mask"; + } + enum disable-fast-timer { + value 4; + description "disable-fast-timer"; + } + } + default "unknown"; + } + + // Config mode + typedef sysmgr_CfgMode { + type enumeration { + enum init { + value 1; + description "Init"; + } + enum replay { + value 2; + description "Replay"; + } + enum done { + value 4; + description "Done"; + } + } + default "init"; + } + + // Admin status of system core properties + typedef sysmgr_CoreAdminSt { + type enumeration { + enum enable { + value 0; + description "enable"; + } + enum disable { + value 1; + description "disable"; + } + } + default "disable"; + } + + // Admin status of system core properties + typedef sysmgr_CoreUriType { + type enumeration { + enum tftp { + value 2; + description "tftp"; + } + enum bootflash { + value 8; + description "bootflash"; + } + enum usb1 { + value 32768; + description "usb1"; + } + } + default "bootflash"; + } + + // Firmware mode + typedef sysmgr_FwMode { + type enumeration { + enum recovery { + value 1; + description "Recovery mode"; + } + enum regular { + value 2; + description "Regular"; + } + } + default "regular"; + } + + // Firmware type + typedef sysmgr_FwT { + type enumeration { + enum bios { + value 1; + description "BIOS"; + } + enum kickstart { + value 2; + description "Kickstart"; + } + enum system { + value 3; + description "System"; + } + } + default "system"; + } + + // Operational data publish mode + typedef sysmgr_OperDataMode { + type enumeration { + enum init { + value 1; + description "Init"; + } + enum publish { + value 2; + description "Publish"; + } + enum done { + value 4; + description "Done"; + } + } + default "init"; + } + + // Operational status of sysmgr config properties + typedef sysmgr_OperState { + type enumeration { + enum unknown { + value 0; + description "unknown"; + } + enum enabled { + value 1; + description "enabled"; + } + enum disabled { + value 2; + description "disabled"; + } + } + default "unknown"; + } + + // Type for fast-relaod stablization timer + // range 10-10000 (in secs) + typedef sysmgr_ReloadTimer { + type uint32 { + range "10..10000"; + } + } + + // Supervisor state + typedef sysmgr_SupSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum active { + value 1; + description "Local"; + } + enum hot-stdby { + value 2; + description "Hot standby"; + } + enum cold-stdby { + value 3; + description "Cold standby"; + } + enum offline { + value 4; + description "Offline"; + } + enum normal { + value 5; + description "Normal"; + } + enum non-dis-upg { + value 6; + description "Non disruptive upgrade"; + } + } + default "unknown"; + } + + // Supervisor type + typedef sysmgr_SupT { + type enumeration { + enum local { + value 0; + description "Local"; + } + enum remote { + value 1; + description "Remote"; + } + } + default "local"; + } + + // Trace Mask + typedef sysmgr_TraceMask { + + type uint32 { + range "0..4294967295"; + } + } + + // DSCP LOP + typedef tcpudp_DscpLop { + type uint16 { + range "0..85"; + } + default "85"; + } + + // TCPUDP Synwait Time + typedef tcpudp_SynwaitTime { + type uint16 { + range "5..300"; + } + default "30"; + } + + // TCPUDP tcp mss + typedef tcpudp_TCPMss { + type uint16 { + range "88..10000"; + } + default "536"; + } + + // TCPUDP end port + typedef tcpudp_TcpEndPort { + type uint16 { + range "22001..65535"; + } + default "58000"; + } + + // TCPUDP start port + typedef tcpudp_TcpStartPort { + type uint16 { + range "15001..58000"; + } + default "15001"; + } + + // Admin State + typedef telemetry_AdminState { + type enumeration { + enum enabled { + value 1; + description "enabled"; + } + } + default "enabled"; + } + + // transport compression types + typedef telemetry_Compression { + type enumeration { + enum disabled { + value 0; + description "compression disabled"; + } + enum gzip { + value 1; + description "gzip compression enabled"; + } + } + default "disabled"; + } + + // Data Source Type + typedef telemetry_DataSource { + type enumeration { + enum DME { + value 1; + description "DME"; + } + enum NX-API { + value 3; + description "NX-API"; + } + enum YANG { + value 4; + description "YANG"; + } + enum NATIVE { + value 5; + description "NATIVE"; + } + enum DEFAULT { + value 16; + description "DEFAULT"; + } + } + default "DEFAULT"; + } + + // No equivalent type in YANG + typedef telemetry_Encoding { + type enumeration { + enum GPB { + value 1; + description "GPB"; + } + enum JSON { + value 2; + description "JSON"; + } + enum XML { + value 3; + description "XML"; + } + enum GPB-compact { + value 4; + description "Compact GPB"; + } + enum Form-data { + value 5; + description "Form Data"; + } + } + default "GPB"; + } + + typedef telemetry_IDType { + type string { + length "1..512"; + } + } + + // telemetry-stream-protocol + typedef telemetry_Protocol { + type enumeration { + enum UDP { + value 1; + description "UDP"; + } + enum gRPC { + value 3; + description "gRPC"; + } + enum HTTP { + value 4; + description "HTTP"; + } + } + default "gRPC"; + } + + // Retrieve Depth + typedef telemetry_RetrieveDepth { + + type uint32 { + range "0..4294967295"; + } + default "0"; + } + + typedef telemetry_SnsrPathType { + type string { + length "1..512"; + } + } + + typedef telemetry_SubIDType { + type uint64 { + range "1..4095"; + } + } + + typedef telemetry_VrfName { + type string { + length "1..32"; + } + } + + typedef telemetry_filterCondType { + type string { + length "0..512"; + } + } + + typedef telemetry_queryCondType { + type string { + length "0..256"; + } + } + + typedef telemetry_sampleIntvlType { + type uint64 { + range "0..604800000"; + } + default "0"; + } + + typedef terminal_Limit { + type uint32; + } + + typedef terminal_TermParity { + type enumeration { + enum none { + value 0; + description "No parity"; + } + enum odd { + value 1; + description "Odd parity"; + } + enum even { + value 2; + description "Even parity"; + } + } + default "none"; + } + + typedef terminal_TermSize { + type uint32; + } + + typedef terminal_TimeoutT { + type uint32 { + range "0..525600"; + } + } + + // TRE day + typedef timerange_Day { + type uint32 { + range "1..31"; + } + } + + // TRE time Format: [00~24]:[00~59]:[00~59] + typedef timerange_HourMinSec { + type string { + pattern "((([01]?\\d|2[0-3]):)?([0-5]?\\d):)?([0-5]?\\d)"; + } + } + + // TRE month + typedef timerange_Month { + type uint8 { + range "1..12"; + } + } + + // Time Range name + typedef timerange_Name { + type string { + length "1..64"; + } + } + + // TRE sequence number + typedef timerange_SequenceNumber { + type int64 { + range "-1..4294967295"; + } + } + + // TRE year + typedef timerange_Year { + type uint32 { + range "2000..2037"; + } + } + + // TRE period + typedef timerange_period { + type string { + pattern "(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday|weekdays|weekend|daily|)(\\s(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday|weekdays|weekend|daily|))*"; + } + } + + // Specifies the Role of this system + typedef top_NodeRole { + type enumeration { + enum unsupported { + value 0; + } + enum controller { + value 1; + } + enum leaf { + value 2; + } + enum spine { + value 3; + } + enum vleaf { + value 4; + } + enum vip { + value 5; + } + enum protection-chain { + value 6; + } + } + default "unsupported"; + } + + // Remote Network Identifier + typedef top_RemoteNetworkId { + type uint32; + default "0"; + } + + // Shard redudancy node + typedef topoctrl_ShardChNode { + type address_Ip; + } + + // Order + typedef traceroute_Order { + type uint8; + } + + // Path flags + typedef traceroute_PathFlags { + + type string; + } + + // Path Group id + typedef traceroute_PathGrpId { + type uint8; + } + + // Path id + typedef traceroute_PathId { + type uint8; + } + + // Type of the path + typedef traceroute_PathT { + type enumeration { + enum external { + value 1; + description "External"; + } + enum internal { + value 2; + description "Internal"; + } + } + default "internal"; + } + + // Address family type + typedef track_Af { + type enumeration { + enum none { + value 0; + } + enum ipv4 { + value 1; + description "IPv4 address family"; + } + enum ipv6 { + value 2; + description "IPv6 address family"; + } + } + default "none"; + } + + // Interface object protocol state + typedef track_IntfProtocolType { + type enumeration { + enum none { + value 0; + } + enum ipv4-routing { + value 1; + } + enum ipv6-routing { + value 2; + } + enum line-protocol { + value 3; + } + } + default "none"; + } + + // Type of List objects threshold/boolean + typedef track_ListObj { + type enumeration { + enum none { + value 0; + } + enum and { + value 1; + description "Boolean 'and' function"; + } + enum or { + value 2; + description "Boolean 'or' function"; + } + enum percentage { + value 3; + description "Threshold percentage"; + } + enum weight { + value 4; + description "Threshold weight"; + } + } + default "none"; + } + + // Probe type for Sla + typedef track_ProbeState { + type enumeration { + enum reachability { + value 0; + description "probe state is reachable or over threshold"; + } + enum state { + value 1; + description "probe state is reachable and within threshold"; + } + } + default "state"; + } + + // Route Owner type + // Process owning the route + typedef track_RouteOwner { + type enumeration { + enum none { + value 0; + } + enum hmm { + value 1; + description "Host Mobility Manager"; + } + } + default "none"; + } + + typedef track_RouteState { + type enumeration { + enum reachability { + value 0; + } + } + default "reachability"; + } + + // This type represents track Object ID. + typedef track_TrackId { + type uint16 { + range "1..512"; + } + } + + // Track state type> + typedef trackutils_ConfigStateType { + type enumeration { + enum none { + value 0; + } + enum running-state { + value 1; + } + enum startup-state { + value 2; + } + } + default "none"; + } + + // Administrative state of tunnel + typedef tunnel_AdminSt { + type enumeration { + enum up { + value 1; + description "up"; + } + enum down { + value 2; + description "down"; + } + } + default "up"; + } + + // Configured MTU + typedef tunnel_ConfMtu { + type uint32 { + range "1..9000"; + } + default "9000"; + } + + // Tunnel encapsulation type + typedef tunnel_EncapT { + type enumeration { + enum unknown { + value 0; + description "unknown"; + } + enum vxlan { + value 1; + description "VXLAN encap"; + } + enum ivxlan { + value 2; + description "iVXLAN encap"; + } + enum nvgre { + value 3; + description "NV-GRE encap"; + } + } + default "ivxlan"; + } + + // Tunnel endpoint identifier + typedef tunnel_EpId { + type address_Ip; + } + + // Tunnel endpoint type + typedef tunnel_EpT { + + type string; + default "physical"; + } + + // Keep alive period + typedef tunnel_KeepAlvIntvl { + type uint32 { + range "0..32767"; + } + default "10"; + } + + // Keep alive retry count + typedef tunnel_KeepAlvRetries { + type uint32 { + range "1..255"; + } + default "3"; + } + + // Tunnel layer type (L2 or L3) + typedef tunnel_LayerT { + type enumeration { + enum l2 { + value 1; + description "l2 tunnel"; + } + enum l3 { + value 2; + description "l3 tunnel"; + } + } + default "l2"; + } + + // Operational state of tunnel + typedef tunnel_OperSt { + type enumeration { + enum up { + value 1; + description "up"; + } + enum down { + value 2; + description "down"; + } + } + default "down"; + } + + // Tunnel types + typedef tunnel_TunnelQual { + type enumeration { + enum unknown { + value 0; + description "unknown"; + } + enum ivxlan { + value 1; + description "ivxlan"; + } + enum vxlan { + value 2; + description "vxlan"; + } + } + default "ivxlan"; + } + + // Cipher Suite + typedef tunnelenc_CipherSuite { + type enumeration { + enum GCM-AES-XPN-128 { + value 3; + description "128 bit GCM-AES Suite with Extended Packet Numbering"; + } + enum GCM-AES-XPN-256 { + value 4; + description "256 bit GCM-AES Suite with Extended Packet Numbering"; + } + } + default "GCM-AES-XPN-256"; + } + + // KeyChain Name + typedef tunnelenc_KeyChainName { + type string { + pattern ".*[a-zA-Z0-9-$_]{0,63}.*"; + } + } + + // Policy Name + typedef tunnelenc_PolicyName { + type string { + pattern ".*[a-zA-Z0-9-$_]{1,32}.*"; + } + default "system-default-tunenc-policy"; + } + + // Replay Protection Window Size + typedef tunnelenc_ReplayWindow { + type uint32 { + range "134217728..1073741823"; + } + default "268435456"; + } + + // SAK Rekey Frequency in seconds + typedef tunnelenc_SakExpiryTime { + type uint32 { + range "0..2592000"; + } + default "0"; + } + + // Snmp trap state + typedef tunnelif_SnmpTrapSt { + type enumeration { + enum enabled { + value 1; + } + enum disabled { + value 2; + } + } + default "enabled"; + } + + // Tunnel Bandwidth in kilobits per second. + typedef tunnelif_TunnelBW { + type uint32 { + range "1..10000000"; + } + default "9"; + } + + // Tunnel mode types + typedef tunnelif_TunnelMode { + type enumeration { + enum gre/ip { + value 1; + description "GRE/IP"; + } + enum gre/ipv6 { + value 6; + description "GRE/IPV6"; + } + enum ipip/ip { + value 7; + description "IPIP/IP"; + } + enum ipip/ipv6 { + value 8; + description "IPIP/IPV6"; + } + enum ipip/dcapany/ip { + value 9; + description "IPIP/Decapsulate Any/IP"; + } + enum ipip/dcapany/ipv6 { + value 10; + description "IPIP/Decapsulate Any/IPV6"; + } + enum ipv6ip { + value 11; + description "IPV6IP"; + } + enum ipv6ip/dcapany { + value 12; + description "IPV6IP/Decapsulate Any"; + } + enum ipv6ipv6 { + value 13; + description "IPV6/IPV6"; + } + enum ipv6ipv6/dcapany { + value 14; + description "IPV6IPV6/Decapsulate Any"; + } + } + default "gre/ip"; + } + + // Configured MTU + typedef tunnelif_TunnelMtu { + type uint32 { + range "64..9196"; + } + default "1476"; + } + + // Operational state of tunnel + typedef tunnelif_TunnelOperSt { + type enumeration { + enum up { + value 1; + description "up"; + } + enum down { + value 2; + description "down"; + } + } + default "down"; + } + + // Reasons for line protcol state being down. + typedef tunnelif_TunnelOperStQual { + type enumeration { + enum unknown { + value 0; + description "unknown"; + } + enum none { + value 1; + description "No reason"; + } + enum initing { + value 2; + description "Initializing hardware"; + } + enum incomp-conf { + value 3; + description "Tunnel configuration is incomplete"; + } + enum dup-conf { + value 4; + description "Duplicate tunnel config"; + } + enum no-mode { + value 5; + description "tunnel mode is not configured"; + } + enum admin-down { + description "Admin state is down"; + } + enum src-down { + value 7; + description "Tunnel source down"; + } + enum src-unres { + value 8; + description "Source IP could not be resolved"; + } + enum no-dest { + value 9; + description "Destination is not configured"; + } + enum desip-unres { + value 10; + description "Destination IP address unresolvable"; + } + enum dest-unreach { + description "Destination unreachable"; + } + enum vrf-mismatch { + value 12; + description "Source interface and tunnel VRF mismatch"; + } + enum vrf-fwdref { + value 13; + description "Tunnel transport VRF is forward referencing"; + } + enum vrf-down { + value 14; + description "VRF is down"; + } + enum mtu-error { + value 15; + description "MTU programming failed"; + } + enum hwprog-fail { + description "Hardware programming failed"; + } + enum no-src { + value 17; + description "Source is not configured"; + } + } + default "unknown"; + } + + // Tunnel Interface Options + typedef tunnelif_TunnelOption { + type enumeration { + enum unknown { + value 0; + description "unknown"; + } + enum del_on_fail { + value 1; + description "delete on failure"; + } + enum usr_cfg_mtu { + value 2; + description "user configured mtu"; + } + } + default "unknown"; + } + + // Configured age timer for Tunnel PMTU + typedef tunnelif_TunnelPMTUAge { + type uint32 { + range "0..30"; + } + default "10"; + } + + // Tunnel Path MTU Discovery + typedef tunnelif_TunnelPMTUD { + type enumeration { + enum enabled { + value 1; + description "enabled"; + } + enum disabled { + value 2; + description "disabled"; + } + } + default "disabled"; + } + + // Tunnel Source Direct + typedef tunnelif_TunnelSrcDirect { + type enumeration { + enum enabled { + value 1; + description "enabled"; + } + enum disabled { + value 2; + description "disabled"; + } + } + default "disabled"; + } + + // Tunnel TTL (from 0 to 255) + typedef tunnelif_TunnelTTL { + type uint32 { + range "0..255"; + } + default "0"; + } + + // Configured Tunnel transport VRF + typedef tunnelif_TunnelTransVRF { + type l3_VrfName; + default "default"; + } + + // Configured min-MTU for Tunnel PMTU + typedef tunnelif_TunnelminPMTU { + type uint32 { + range "64..9196"; + } + default "64"; + } + + // Administrative state + typedef udld_AdminSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "disabled"; + } + + // Msg Interval + typedef udld_MsgIntvl { + type uint8 { + range "7..90"; + } + default "15"; + } + + // Operational state + typedef udld_OperSt { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + default "disabled"; + } + + typedef udld_PortEnable { + type enumeration { + enum port-enabled { + value 0; + description "Port Enabled"; + } + enum port-fiber-disabled { + value 1; + description "Port Fiber Disabled"; + } + enum port-default { + value 2; + description "Port Default"; + } + enum port-default-disable { + value 3; + description "Port Default Disable"; + } + } + default "port-default"; + } + + // Label Table Client Flags + typedef ulib_ClientFlag { + + type string; + } + + typedef ulib_ClientName { + type string; + } + + // Max Dynamic label + typedef ulib_DynLblMax { + type uint32 { + range "16..471804"; + } + default "471804"; + } + + // Min Dynamic label + typedef ulib_DynLblMin { + type uint32 { + range "16..471804"; + } + default "16"; + } + + typedef ulib_EphemeralAddressFamily { + type string; + } + + typedef ulib_FecState { + type string; + } + + typedef ulib_FecType { + type string; + } + + typedef ulib_InterfaceStr { + type string; + } + + // Label Count Value + typedef ulib_LabelCnt { + type uint32 { + range "0..471804"; + } + default "0"; + } + + // Label Range Value + typedef ulib_LabelVal { + type uint32 { + range "0..471804"; + } + } + + typedef ulib_OutLblStack { + type string; + } + + typedef ulib_TableId { + type uint32; + } + + // 32 bit Counter + typedef urib_Counter32 { + type uint32; + } + + typedef urib_NextHopEncapType { + type enumeration { + enum none { + value 0; + description "Not set"; + } + enum vxlan { + value 1; + description "Vxlan encapsulation"; + } + enum invalid { + value 2; + description "Invalid"; + } + } + } + + // The format of this string depends on the time left. + // If time left is: + // - Less than 1 sec: format is 0.UUUUUU + // - >= 1 sec and < 24 hrs: HH:MM:SS + // - >= 24hrs and < 1 week: DD'd'HH'h' e.g.: 12d03h + // - >= 1 week and < 1 year: WW'w'DD'd' + // - >= 1 year: YY'y'WW'w' + typedef urib_TimeStr { + type string; + } + + typedef urib_YesNo { + type enumeration { + enum No { + value 0; + description "No"; + } + enum Yes { + value 1; + description "Yes"; + } + } + } + + // Signing level allowed on the system + typedef virtualService_SigningLevel { + type enumeration { + enum none { + value 1; + description "Most restrictive, don't allow package installation"; + } + enum cisco { + value 2; + description "Allow only Cisco signed packages"; + } + enum unsigned { + value 3; + description "Least restrictive, allow unsigned and all signing methods"; + } + } + default "cisco"; + } + + // User Password Type + typedef vmtracker_PasswordType { + type enumeration { + enum 0 { + value 0; + description "UNENCRYPTED password"; + } + enum 5 { + value 5; + description "ENCRYPTED password"; + } + } + default "0"; + } + + // Application Sap Id + typedef vpc_AppId { + type uint32; + } + + // Track Object + typedef vpc_AutoRecoveryIntvl { + type uint32 { + range "60..3600"; + } + default "240"; + } + + // Batched vpc inventory + typedef vpc_BatchedVpcInv { + + type string; + } + + // vPC Compatibility Reason Code + typedef vpc_CompatQual { + type uint32; + } + + // vPC Compatability Status + typedef vpc_CompatSt { + type enumeration { + enum pass { + value 0; + description "success"; + } + enum fail { + value 1; + description "failed"; + } + enum notDone { + value 2; + description "Not Applicable"; + } + } + default "notDone"; + } + + // Delay Peer Link Bringup + typedef vpc_DelayPeerLinkBringup { + type uint16 { + range "0..7200"; + } + default "0"; + } + + // Delay Restore: Orphan Port + typedef vpc_DelayRestoreOrphanPort { + type uint16 { + range "0..300"; + } + default "0"; + } + + // Delay Restore SVI + typedef vpc_DelayRestoreSVI { + type uint16 { + range "1..3600"; + } + default "10"; + } + + // Delay Restore vPC + typedef vpc_DelayRestoreVPC { + type uint16 { + range "1..3600"; + } + default "30"; + } + + // VPC domain ID + typedef vpc_DomId { + type uint16 { + range "1..1000"; + } + } + + // Domain operational state + typedef vpc_DomOperSt { + + type string; + default "not-applicable"; + } + + // DSCP value + typedef vpc_Dscp { + type uint16 { + range "0..63"; + } + } + + // Dual Active Status + typedef vpc_DualActiveSt { + type enumeration { + enum false { + value 0; + description "0"; + } + enum true { + value 1; + description "1"; + } + } + default "false"; + } + + typedef vpc_ExcludeSVI { + type l2_VlanBitmap; + } + + typedef vpc_ExcludeVLAN { + type l2_VlanBitmap; + } + + // Flush Timeout in seconds + typedef vpc_FlushTout { + type uint32 { + range "3..10"; + } + default "3"; + } + + // vPC number + typedef vpc_Id { + type uint16 { + range "1..16384"; + } + } + + // Keepalive Interval in milli-seconds + typedef vpc_KeepaliveInterval { + type uint32 { + range "400..10000"; + } + default "1000"; + } + + // Keepalive operational state + typedef vpc_KeepaliveOperSt { + + type string; + default "0"; + } + + // Keepalive Timeout in seconds + typedef vpc_KeepaliveTout { + type uint32 { + range "3..20"; + } + default "5"; + } + + // L3 peer-router syslog interval + typedef vpc_L3PeerRouterSyslogInterval { + type uint16 { + range "1..3600"; + } + default "3600"; + } + + // vPC operational Status + typedef vpc_OperSt { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum down { + value 1; + description "Down"; + } + enum up { + value 2; + description "Up"; + } + enum noCfg { + value 3; + description "Not configured"; + } + } + default "unknown"; + } + + // Param Length + typedef vpc_ParamLen { + type uint32; + } + + // Param Type + typedef vpc_ParamType { + type enumeration { + enum unknown { + value 0; + description "Unknown"; + } + enum type-1 { + value 1; + description "Type 1"; + } + enum type-2 { + value 2; + description "Type 2"; + } + } + default "unknown"; + } + + // Param Value + typedef vpc_ParamVal { + type mtx_array_uint8; + } + + // vPC peer Status + typedef vpc_PeerSt { + type enumeration { + enum noCfg { + value 0; + description "Not configured"; + } + enum down { + value 1; + description "Down"; + } + enum up { + value 2; + description "Up"; + } + } + } + + // vPC peer status reason code + typedef vpc_PeerStQual { + type enumeration { + enum success { + value 0; + description "Success"; + } + enum uplinks-down { + value 1; + description "Uplinks down"; + } + enum route-down { + value 2; + description "Route down"; + } + enum peer-unrch { + value 3; + description "Peer unreachable"; + } + enum compat-fail { + value 4; + description "Compatibility Failed"; + } + enum election-err { + value 5; + description "Election error"; + } + enum oob-not-up { + value 6; + description "Keepalive not Operational"; + } + } + default "success"; + } + + // Peer version + typedef vpc_PeerVersion { + type uint32; + } + + // Precedence type + typedef vpc_PrecType { + type enumeration { + enum network { + value 0; + description "Network"; + } + enum internet { + value 1; + description "Internet"; + } + enum critical { + value 2; + description "Critical"; + } + enum flash-override { + value 3; + description "Flash override"; + } + enum flash { + value 4; + description "Flash"; + } + enum immediate { + value 5; + description "Immediate"; + } + enum priority { + value 6; + description "Priority"; + } + enum routine { + value 7; + description "Routine"; + } + } + default "routine"; + } + + // Precedence value + typedef vpc_PrecValue { + type uint8 { + range "0..7"; + } + default "6"; + } + + // Role + typedef vpc_Role { + type enumeration { + enum election-not-done { + value 0; + description "Election-not-done"; + } + enum master { + value 1; + description "Master"; + } + enum slave { + value 2; + description "Slave"; + } + } + default "election-not-done"; + } + + // Role Priority + typedef vpc_RolePrio { + type uint16 { + range "1..65535"; + } + default "32667"; + } + + // Summarized Role + typedef vpc_SummRole { + type enumeration { + enum election-not-done { + value 0; + description "None Established"; + } + enum cfg-master-oper-master { + value 1; + description "Primary"; + } + enum cfg-master-oper-slave { + value 2; + description "Primary, Operational Secondary"; + } + enum cfg-slave-oper-master { + value 3; + description "Secondary, Operational Primary"; + } + enum cfg-slave-oper-slave { + value 4; + description "Secondary"; + } + } + default "election-not-done"; + } + + // System Priority + typedef vpc_SysPrio { + type uint16 { + range "1..65535"; + } + default "32667"; + } + + // Time + typedef vpc_Time { + type union { + type string; + type uint64; + } + } + + // ToS byte + typedef vpc_TosByte { + type uint8 { + range "0..255"; + } + default "0"; + } + + // ToS config type + typedef vpc_TosCfgType { + type enumeration { + enum noCfg { + value 0; + description "No configuration"; + } + enum tos-byte { + value 1; + description "ToS byte"; + } + enum tos-value { + value 2; + description "ToS value"; + } + enum tos-type { + value 3; + description "ToS type"; + } + enum precedence-type { + value 4; + description "Precedence Type"; + } + enum precedence-value { + value 5; + description "Precedence Value"; + } + } + default "noCfg"; + } + + // ToS type + typedef vpc_TosType { + type enumeration { + enum min-delay { + value 0; + description "Min delay"; + } + enum max-throughput { + value 1; + description "Max throughput"; + } + enum max-reliability { + value 2; + description "Max Reliability"; + } + enum min-monetary-cost { + value 3; + description "Min Monetary Cost"; + } + enum normal { + value 4; + description "Normal"; + } + } + default "normal"; + } + + // ToS value + typedef vpc_TosValue { + type uint8 { + range "0..15"; + } + default "0"; + } + + // Track Object + typedef vpc_Track { + type uint16 { + range "0..500"; + } + default "0"; + } + + // admin state + typedef vrrp_AdminSt { + type enumeration { + enum disabled { + value 1; + description "Vrrp id shut"; + } + enum enabled { + value 2; + description "Vrrp id no shut"; + } + } + default "disabled"; + } + + // advertise interval + typedef vrrp_AdvIntvl { + type uint8 { + range "1..255"; + } + default "1"; + } + + // authentication text type + typedef vrrp_AuthTextType { + type string { + length "0..8"; + } + } + + // authentication type + typedef vrrp_AuthType { + type enumeration { + enum none { + value 1; + description "no authentication"; + } + enum simple { + value 2; + description "plain text"; + } + } + default "none"; + } + + // group state + typedef vrrp_GroupSt { + type enumeration { + enum init { + value 0; + description "Vrrp Group state Init"; + } + enum backup { + value 1; + description "vrrp group state backup"; + } + enum master { + value 2; + description "vrrp group state master"; + } + } + } + + // group state qualifier + typedef vrrp_GroupStQual { + type enumeration { + enum up { + value 0; + description "Vrrp group state up"; + } + enum down { + value 1; + description "Vrrp group state down"; + } + enum no-primary-vip { + value 2; + description "vrrp group state down no ip primary vip"; + } + enum admin-down { + value 3; + description "vrrp group state down admin down"; + } + enum interface-down { + value 4; + description "vrrp group state down inteface down"; + } + enum no-intf-ip-cfgd { + value 5; + description "vrrp group state down no intf ip cfgd"; + } + enum no-vrf-info-for-intf { + value 6; + description "vrrp group down no vrf info for intf"; + } + enum bd-not-allocated { + value 7; + description "vrrp group down BD not allocated"; + } + enum vmac-not-added { + value 8; + description "vrrp group down vmac not added"; + } + enum invalid-vip { + value 9; + description "vrrp group down invalid vip"; + } + enum IfIp-vip-subnet-mismatch { + value 10; + description "vrrp group down IfId vIp subnet mismatch"; + } + enum internal_error { + value 11; + description "vrrp group down internal error"; + } + } + } + + // Configuration state vrrp id + typedef vrrp_Id { + type uint8 { + range "1..255"; + } + } + + // Preempt + typedef vrrp_Preempt { + type enumeration { + enum enabled { + value 1; + description "preempt enabled"; + } + enum disabled { + value 2; + description "preempt disabled"; + } + } + default "enabled"; + } + + // priority values + typedef vrrp_PriVal { + type uint8 { + range "1..254"; + } + } + + // upper threshold + typedef vrrp_UprThrshld { + type uint8 { + range "0..254"; + } + default "0"; + } + + // bfd session status + typedef vrrp_bfdSessionSt { + type enumeration { + enum disabled { + value 0; + description "vrrp bfd session is disabled"; + } + enum inactive { + value 1; + description "vrrp bfd session status inactive"; + } + enum deleted { + value 2; + description "vrrp bfd session status deleted"; + } + enum unknown { + value 3; + description "vrrp bfd session status unknown state"; + } + enum active { + value 4; + description "vrrp bfd session status active"; + } + } + default "disabled"; + } + + // Admin State + typedef vrrpv3_AdminSt { + type enumeration { + enum disabled { + value 1; + description "Virtual Router Administratively Disabled"; + } + enum enabled { + value 0; + description "Virtual Router Administratively Enabled"; + } + } + default "enabled"; + } + + // Advertisement Interval + typedef vrrpv3_AdvIntvl { + type uint32 { + range "100..40950"; + } + default "1000"; + } + + // Virtual Router Name + typedef vrrpv3_Desc { + type string { + length "0..80"; + } + } + + // Configuration state vrrpv3 id + typedef vrrpv3_Id { + type uint32 { + range "1..255"; + } + } + + // Preempt + typedef vrrpv3_Preempt { + type enumeration { + enum enabled { + value 1; + description "Preempt Enabled"; + } + enum disabled { + value 0; + description "Preempt Disabled"; + } + } + default "enabled"; + } + + // Delay before preempting a lower priority Master + typedef vrrpv3_PreemptDelay { + type uint32 { + range "0..3600"; + } + default "0"; + } + + // Priority Value + typedef vrrpv3_PriVal { + type uint32 { + range "1..254"; + } + } + + // Generic state type enabled/disabled + typedef vrrpv3_State { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 0; + description "Disabled"; + } + } + } + + // Virtual Router Address family type + typedef vrrpv3_VrAf { + type enumeration { + enum ipv4 { + value 1; + description "IPv4 address family"; + } + enum ipv6 { + value 2; + description "IPv6 address family"; + } + } + default "ipv4"; + } + + typedef vshd_ModeType { + type enumeration { + enum default { + value 0; + description "default"; + } + enum strict { + value 1; + description "strict"; + } + enum loose { + value 2; + description "loose"; + } + } + default "default"; + } + + // Configuration state Preempt + typedef vtp_Mode { + type enumeration { + enum client { + value 1; + description "VTP Mode Client"; + } + enum server { + value 2; + description "VTP Mode Server"; + } + enum transparent { + value 3; + description "VTP Mode Transparent"; + } + enum off { + value 4; + description "VTP Mode Off"; + } + } + default "transparent"; + } + + // A shorthand for GroupPolicyClassTag: + // A tag that is used to identify and classify + // a particular group of resources/end-points + // for policy enforcement purposes + typedef vz_GPCTag { + type vz_GroupPolicyClassTag; + } + + // A tag that is used to identify and classify + // a particular group of resources/end-points + // for policy enforcement purposes + typedef vz_GroupPolicyClassTag { + type uint32; + } + + typedef wedge_BmcIPEnabled { + type enumeration { + enum no { + value 0; + } + enum yes { + value 1; + } + } + default "no"; + } + + // Logging level type + typedef xbar_LoggingLevel { + type uint16 { + range "0..7"; + } + default "5"; + } + + // Logging Level + typedef xbar_LoggingType { + type enumeration { + enum Emergencies { + value 0; + description "Emergencies"; + } + enum Alerts { + value 1; + description "Alerts"; + } + enum Critical { + value 2; + description "Critical"; + } + enum Errors { + value 3; + description "Errors"; + } + enum Warnings { + value 4; + description "Warnings"; + } + enum Notifications { + value 5; + description "Notifications"; + } + enum Information { + value 6; + description "Information"; + } + enum Debugging { + value 7; + description "Debugging"; + } + } + default "Notifications"; + } + + // Type is a Local-MO-Defined-Type + typedef nw_InstCtrl_Inst_ctrl { + + type string; + default "fastExtFallover"; + } + + // Type is a Local-MO-Defined-Type + typedef bgp_NhTimeout_DomAf_critNhTimeout { + type uint32; + default "3000"; + } + + // Type is a Local-MO-Defined-Type + typedef bgp_NhTimeout_DomAf_nonCritNhTimeout { + type uint32; + default "10000"; + } + + // Type is a Local-MO-Defined-Type + typedef syslog_Severity_Level_severity { + type enumeration { + enum emergencies { + value 0; + description "emergencies"; + } + enum alerts { + value 1; + description "alerts"; + } + enum critical { + value 2; + description "critical"; + } + enum errors { + value 3; + description "errors"; + } + enum warnings { + value 4; + description "warnings"; + } + enum notifications { + value 5; + description "notifications"; + } + enum information { + value 6; + description "information"; + } + enum debugging { + value 7; + description "debugging"; + } + enum unspecified { + value 8; + description "unspecified"; + } + } + default "unspecified"; + } + + // Type is a Local-MO-Defined-Type + typedef aaa_KeyEnc_RadiusProvider_keyEnc { + type enumeration { + enum 0 { + value 0; + description "Clear Text"; + } + enum 6 { + value 6; + description "Type-6 Encrypted"; + } + enum 7 { + value 7; + description "Encrypted"; + } + enum inherit-from-global { + value 255; + } + } + default "inherit-from-global"; + } + + // Type is a Local-MO-Defined-Type + typedef aaa_TimeSec_RadiusProvider_timeout { + type uint32; + default "5"; + } + + // Type is a Local-MO-Defined-Type + typedef aaa_Retries_RadiusProvider_retries { + type uint32; + default "1"; + } + + // Type is a Local-MO-Defined-Type + typedef aaa_KeyEnc_LdapProvider_keyEnc { + type enumeration { + enum 0 { + value 0; + description "Clear Text"; + } + enum 6 { + value 6; + description "Type-6 Encrypted"; + } + enum 7 { + value 7; + description "Encrypted"; + } + enum inherit-from-global { + value 255; + } + } + default "inherit-from-global"; + } + + // Type is a Local-MO-Defined-Type + typedef aaa_TimeSec_LdapProvider_timeout { + type uint32; + default "0"; + } + + // Type is a Local-MO-Defined-Type + typedef aaa_Retries_LdapProvider_retries { + type uint32; + default "1"; + } + + // Type is a Local-MO-Defined-Type + typedef aaa_KeyEnc_TacacsPlusProvider_keyEnc { + type enumeration { + enum 0 { + value 0; + description "Clear Text"; + } + enum 6 { + value 6; + description "Type-6 Encrypted"; + } + enum 7 { + value 7; + description "Encrypted"; + } + enum inherit-from-global { + value 255; + } + } + default "inherit-from-global"; + } + + // Type is a Local-MO-Defined-Type + typedef aaa_TimeSec_TacacsPlusProvider_timeout { + type uint32; + default "0"; + } + + // Type is a Local-MO-Defined-Type + typedef aaa_Retries_TacacsPlusProvider_retries { + type uint32; + default "1"; + } + + // Type is a Local-MO-Defined-Type + typedef aaa_Realm_DomainAuth_realm { + type enumeration { + enum local { + value 0; + description "Local"; + } + enum radius { + value 1; + description "RADIUS"; + } + enum tacacs { + value 2; + description "TACACS+"; + } + enum ldap { + value 3; + description "LDAP"; + } + enum none { + value 4; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef aaa_Date_User_expiration { + type union { + type string; + type uint64; + } + default "0"; + } + + // Type is a Local-MO-Defined-Type + typedef l1_FECMode_PhysIf_operFECMode { + type enumeration { + enum auto { + value 4; + description "auto"; + } + enum rs-fec { + value 2; + description "RS-Fec"; + } + enum fc-fec { + value 1; + description "FC-Fec"; + } + enum fec-off { + value 3; + description "Fec-off"; + } + enum rs-ieee { + value 5; + description "RS-IEEE"; + } + enum rs-cons16 { + value 6; + description "RS-CONS16"; + } + enum kp-fec { + value 7; + description "FECMode: KP-Fec CL119"; + } + enum not-available { + value 20; + description "N/A"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef l1_Layer_AggrIf_layer { + type enumeration { + enum Layer2 { + value 1; + description "switched"; + } + enum Layer3 { + value 2; + description "routed"; + } + enum pltfmDfltLayer { + value 3; + } + } + default "pltfmDfltLayer"; + } + + // Type is a Local-MO-Defined-Type + typedef nw_AdminSt_IfStat_proxyArp { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef nw_AdminSt_IfStat_localProxyArp { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef nw_AdminSt_IfStat_mRouting { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef nw_AdminSt_IfStat_icmpRedirect { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef nw_AdminSt_IfStat_directBcast { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef nw_AdminSt_IfStat_ipUnreach { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef nw_AdminSt_IfStat_portUnreach { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef nw_AdminSt_ProcessStat_autoDisc { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef nw_AdminSt_ProcessStat_autoDiscAdd { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef nw_AdminSt_ProcessStat_nullBcast { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef nw_AdminSt_ProcessStat_autoPuntBcast { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef nw_AdminSt_ProcessStat_staticDisc { + type enumeration { + enum enabled { + value 1; + description "Enabled"; + } + enum disabled { + value 2; + description "Disabled"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef pktmgr_RateLimitPps_Inst_rateLimitPps { + type int32; + default "-1"; + } + + // Type is a Local-MO-Defined-Type + typedef pktmgr_RateLimitPps_If_rateLimitPps { + type int32; + default "-1"; + } + + // Type is a Local-MO-Defined-Type + typedef eqpt_Arch_CPU_arch { + type enumeration { + enum x86_32 { + value 1; + description "x86_32"; + } + enum x86_64 { + value 2; + description "x86_64"; + } + enum any { + value 0; + description "any"; + } + } + } + + // Type is a Local-MO-Defined-Type + typedef icmp_IfControl_If_ctrl { + + type string; + default "redirect,port-unreachable"; + } + + // Type is a Local-MO-Defined-Type + typedef mcast_GrpTimeout_GTimers_grpTimeout { + type uint16; + default "0"; + } + + // Type is a Local-MO-Defined-Type + typedef nd_DNSServerLifeTime_RouteAdvDNSServer_dnsServerLifeTime { + type uint32; + default "3"; + } + + // Type is a Local-MO-Defined-Type + typedef nd_DNSServerLifeTime_RouteAdvDNSSearchList_dnsSearchListLifeTime { + type uint32; + default "3"; + } + + grouping l2cap_Prov-group { + description "L2 Capability Provider"; + + // Subject consuming the capability + leaf subj { + config "false"; + + type l2cap_Subj; + description "Subject"; + } + + // Every Consumer has a Subject. + // Subject represents the entity which consumes the capability. + // Namespaces which have concrete consumers, define the Subject property + // and its types + // Max capability available + leaf total { + config "false"; + + type cap_Counter; + description "TBD"; + } + + // Remaining capability available + leaf remaining { + config "false"; + + type cap_Counter; + description "TBD"; + } + + // utilization indicator in percentages of consiumption + leaf utilization { + config "false"; + + type cap_StorageHint; + description "TBD"; + } + + // Type of the Rule consumed by this consumer. + leaf type { + config "false"; + + type cap_RuleT; + description "TBD"; + } + } + + grouping syslog_RemoteDest-group { + description "Syslog Remote Destination"; + + leaf severity { + + type syslog_Severity; + description "Severity"; + } + + leaf port { + + type syslog_SyslogPort; + description "Port"; + } + + leaf transport { + + type mon_Transport; + default "udp"; + description "Transport"; + } + leaf trustpointClientIdentity { + type string { + length "0..64"; + } + description "Trustpoint Client Identity"; + } + + leaf forwardingFacility { + + type syslog_Facility; + description "Forward Facility"; + } + + leaf adminState { + + type mon_AdminState; + description "TBD"; + } + leaf vrfId { + type uint32; + } + + leaf ip { + + type address_HostNameOrDottedQuad; + description "ip address"; + } + + leaf operState { + config "false"; + + type syslog_OperState; + description "TBD"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Hostname or IP for export destination + leaf host { + + type address_HostNameOrDottedQuad { + length "1..255"; + } + description "Host"; + } + leaf epgDn { + config "false"; + type string; + description "Reachability EpG"; + } + + // The vrf that remote host belongs to + leaf vrfName { + + type l3_VrfName; + description "Vrf Name"; + } + + // Syslog Dest state + container destst-items { + list DestState-list { + config "false"; + key "name"; + + uses syslog_DestState-group; + description "syslog Destination State list"; + } + description "syslog Destination State"; + } + + container rsaRemoteHostToEpg-items { + + uses file_RsARemoteHostToEpg_source-group; + } + + container rsaRemoteHostToEpp-items { + + uses file_RsARemoteHostToEpp_source-group; + description "Relation to Remote Host Reachability EPP"; + } + } + + grouping syslog_DestState-group { + description "syslog Destination State"; + + leaf operState { + config "false"; + + type syslog_OperState; + description "TBD"; + } + leaf vrfId { + config "false"; + type uint32; + } + + leaf ip { + config "false"; + + type address_HostNameOrDottedQuad; + description "ip address"; + } + leaf totalBufferedMsgs { + config "false"; + type uint32; + description "total buffered messages"; + } + leaf totalDroppedMsgs { + config "false"; + type uint32; + description "total drooped messages"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Syslog Log Message + container msg-items { + list LogMsg-list { + config "false"; + key "index"; + + uses syslog_LogMsg-group; + description "syslog Destination State list"; + } + description "syslog Destination State"; + } + } + + grouping syslog_LogMsg-group { + description "syslog Destination State"; + leaf index { + config "false"; + type uint32; + description "Message Index"; + } + leaf message { + config "false"; + type string; + description "Message Entry"; + } + leaf facility { + config "false"; + type string; + description "Message Facility"; + } + leaf severity { + config "false"; + type uint16; + description "Message Severity"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping syslog_File-group { + description "File"; + + leaf adminState { + + type mon_AdminState; + description "TBD"; + } + + leaf severity { + + type syslog_Severity; + default "information"; + description "Severity"; + } + + leaf size { + + type syslog_FileSize; + description "Size"; + } + + leaf persistentThreshold { + + type syslog_ThresholdPercent; + description "Set persistent logging utilization alert threshold in percentage"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping syslog_Console-group { + description "Console"; + + leaf adminState { + + type mon_AdminState; + description "TBD"; + } + + leaf severity { + + type syslog_Severity; + default "critical"; + description "Severity"; + } + } + + grouping fv_DomDef-group { + description "Domain"; + + leaf domPKey { + config "false"; + + type fv_PrimKey; + description "TBD"; + } + + leaf instrImedcy { + config "false"; + + type fv_InstrImedcy; + description "TBD"; + } + + leaf name { + config "false"; + + type naming_Name; + description "Name"; + } + + container rsdomDefNs-items { + + uses fv_RsDomDefNs_source-group; + description "VXLAN Pool"; + } + + container rsdomDefNsLocal-items { + + uses fv_RsDomDefNsLocal_source-group; + description "VXLAN Pool"; + } + + container rtfvToDomDef-items { + + list RtFvToDomDef-list { + config "false"; + key "tDn"; + + uses fv_RtFvToDomDef_target-group; + } + } + } + + grouping fv_DEp-group { + description "Dynamic Endpoint"; + + leaf name { + config "false"; + + type naming_Name; + description "Name"; + } + + leaf id { + config "false"; + + type naming_Id; + description "Id"; + } + leaf mac { + config "false"; + type address_Mac; + description "MacAddress"; + } + leaf encap { + config "false"; + type string; + } + leaf uuid { + config "false"; + type string; + } + + container rtspanSrcToVPort-items { + + list RtSpanSrcToVPort-list { + config "false"; + key "tDn"; + + uses span_RtSpanSrcToVPort_target-group; + description "Relation to SPAN Source to Port list"; + } + description "Relation to SPAN Source to Port"; + } + + container rtspanDestToVPort-items { + + list RtSpanDestToVPort-list { + config "false"; + key "tDn"; + + uses span_RtSpanDestToVPort_target-group; + description "Relation to VSPAN Destination Vport list"; + } + description "Relation to VSPAN Destination Vport"; + } + + container rshyper-items { + + list RsHyper-list { + config "false"; + key "tDn"; + + uses fv_RsHyper_source-group; + description "Hypervisor list"; + } + description "Hypervisor"; + } + } + + grouping opflex_IDEp-group { + description "Inband Discovered Endpoint"; + leaf eppdn { + config "false"; + type string; + } + leaf compVmDn { + config "false"; + type string; + } + leaf compHvDn { + config "false"; + type string; + } + leaf epgID { + config "false"; + type string; + } + leaf epHostAddr { + config "false"; + type string; + } + leaf hypervisorName { + config "false"; + type string; + } + leaf portId { + config "false"; + type uint32; + } + leaf containerName { + config "false"; + type string; + } + + // ep transition status + leaf transitionStatus { + config "false"; + + type opflex_EpTransitionStatus; + description "TBD"; + } + + // epp push policy + leaf eppDownloadHint { + config "false"; + + type opflex_EppDownloadHint; + description "TBD"; + } + leaf handle { + config "false"; + type uint64; + } + + // instType + leaf instType { + config "false"; + + type comp_NicInstType; + description "TBD"; + } + leaf pcIfId { + config "false"; + type uint32; + } + + // type of the device + leaf state { + config "false"; + + type comp_NicState; + description "TBD"; + } + + leaf name { + config "false"; + + type naming_Name; + description "Name"; + } + + leaf id { + config "false"; + + type naming_Id; + description "Id"; + } + leaf mac { + config "false"; + type address_Mac; + description "MacAddress"; + } + leaf encap { + config "false"; + type string; + } + leaf uuid { + config "false"; + type string; + } + + // IDEp stats is the object exchanged between opflex agent + // and opflex controller for the end point stats + container idepcntr-items { + list IDEpCntr-list { + config "false"; + key "mac encap"; + + uses opflex_IDEpCntr-group; + } + } + container vdep-items { + list VDEp-list { + config "false"; + key "mac encap brIfId"; + + uses fv_VDEp-group; + description "Vleaf Discovered Endpoint list"; + } + description "Vleaf Discovered Endpoint"; + } + + container rtspanSrcToVPort-items { + + list RtSpanSrcToVPort-list { + config "false"; + key "tDn"; + + uses span_RtSpanSrcToVPort_target-group; + description "Relation to SPAN Source to Port list"; + } + description "Relation to SPAN Source to Port"; + } + + container rtspanDestToVPort-items { + + list RtSpanDestToVPort-list { + config "false"; + key "tDn"; + + uses span_RtSpanDestToVPort_target-group; + description "Relation to VSPAN Destination Vport list"; + } + description "Relation to VSPAN Destination Vport"; + } + + container rshyper-items { + + list RsHyper-list { + config "false"; + key "tDn"; + + uses fv_RsHyper_source-group; + description "Hypervisor list"; + } + description "Hypervisor"; + } + } + + grouping opflex_IDEpCntr-group { + leaf mac { + config "false"; + type address_Mac; + } + leaf encap { + config "false"; + type string; + } + + leaf direction { + config "false"; + + type opflex_Direction; + description "TBD"; + } + + leaf name { + config "false"; + + type naming_Name; + description "Name"; + } + + leaf id { + config "false"; + + type naming_Id; + description "Id"; + } + } + + grouping fv_VDEp-group { + description "Vleaf Discovered Endpoint"; + leaf epgID { + config "false"; + type string; + } + + // Physical Interface ID on which this EP was attached + leaf brIfId { + config "false"; + + type nw_IfId; + description "TBD"; + } + + // instType + leaf instType { + config "false"; + + type comp_NicInstType; + description "TBD"; + } + + leaf name { + config "false"; + + type naming_Name; + description "Name"; + } + + leaf id { + config "false"; + + type naming_Id; + description "Id"; + } + leaf mac { + config "false"; + type address_Mac; + description "MacAddress"; + } + leaf encap { + config "false"; + type string; + } + leaf uuid { + config "false"; + type string; + } + + container rtspanSrcToVPort-items { + + list RtSpanSrcToVPort-list { + config "false"; + key "tDn"; + + uses span_RtSpanSrcToVPort_target-group; + description "Relation to SPAN Source to Port list"; + } + description "Relation to SPAN Source to Port"; + } + + container rtspanDestToVPort-items { + + list RtSpanDestToVPort-list { + config "false"; + key "tDn"; + + uses span_RtSpanDestToVPort_target-group; + description "Relation to VSPAN Destination Vport list"; + } + description "Relation to VSPAN Destination Vport"; + } + + container rsvNode-items { + + list RsVNode-list { + key "tDn"; + + uses fv_RsVNode_source-group; + description "Relation to Virtual Node list"; + } + description "Relation to Virtual Node"; + } + + container rshyper-items { + + list RsHyper-list { + config "false"; + key "tDn"; + + uses fv_RsHyper_source-group; + description "Hypervisor list"; + } + description "Hypervisor"; + } + } + + grouping synthetic_IfcCTestObj-group { + description "Synthetic Ifc C Test Object"; + leaf ifcCTestOnly { + type string; + } + + leaf name { + + type naming_Name; + description "Name"; + } + + leaf id { + + type naming_Id; + description "Id"; + } + + leaf descr { + + type naming_Descr; + description "TBD"; + } + leaf objDn { + type string; + } + + container rttoObj-items { + + uses synthetic_RtToObj_target-group; + } + } + + grouping synthetic_SwCTestObj-group { + description "Synthetic Sw C Test Object"; + leaf swCTestOnly { + type string; + } + + leaf name { + + type naming_Name; + description "Name"; + } + + leaf id { + + type naming_Id; + description "Id"; + } + + leaf descr { + + type naming_Descr; + description "TBD"; + } + leaf objDn { + type string; + } + + container rstoObj-items { + + uses synthetic_RsToObj_source-group; + } + + container rttoObj-items { + + uses synthetic_RtToObj_target-group; + } + } + + grouping System-group { + description "General information about this system"; + leaf name { + type string { + pattern "[0-9a-z-A-Z_\\.-]{0,63}"; + } + } + leaf currentTime { + config "false"; + type union { + type string; + type uint64; + } + description "Current Time on this system"; + } + leaf systemUpTime { + config "false"; + type union { + type string; + type uint64; + } + description "System Up Time in seconds since this system is booted"; + } + + // Serial Number of the system + leaf serial { + config "false"; + + type eqpt_Serial; + description "TBD"; + } + + // global config time stamp + leaf configModTs { + config "false"; + + type mo_TStamp; + description "set when config is performed"; + } + leaf configDirty { + config "false"; + type boolean; + default "false"; + description "set when config is performed, unset after copy r s"; + } + + leaf configModTsBackup { + config "false"; + + type mo_TStamp; + description "set when config is performed, backup old value"; + } + leaf configDirtyBackup { + config "false"; + type boolean; + default "false"; + description "set when config is performed, backup old value"; + } + + // Holds bgp control plane entity information + container bgp-items { + + uses bgp_Entity-group; + description "BGP control plane entity information."; + } + + // bgp trap + container bgptrap-items { + + uses bgp_Tbgp-group; + description "Configure SNMP BGP traps"; + } + + // cbgp2 trap + container cbgp2trap-items { + + uses bgp_Tcbgp2-group; + description "SNMP CISCO-BGP-MIBv2 traps"; + } + + container callhome-items { + + uses callhome_Callhome-group; + description "Callhome node, used as a placeholder for uniformity"; + } + + // Container to hold Capability logging level related objects and statistics + container caploglevel-items { + + uses cap_LogLevel-group; + description "Config Capability logging level"; + } + + container clock-items { + + uses datetime_Clock-group; + description "Clock Manager"; + } + + // Datetime policy + container time-items { + + uses datetime_ClkPol-group; + description "Date Time Policy"; + } + container ntpq-items { + list Ntpq-list { + config "false"; + key "remote"; + + uses datetime_Ntpq-group; + description "Ntp Concrete Details list"; + } + description "Ntp Concrete Details"; + } + + // Holds span manager control plane entity information + container span-items { + + uses span_Entity-group; + description "SPAN Entity"; + } + + container originip-items { + + uses span_ErspanOriginIp-group; + description "Global MO of origin Ip address for every Erspan session"; + } + + // Holds dhcp control plane entity information + container dhcp-items { + + uses dhcp_Entity-group; + description "DHCP Entity"; + } + + // Holds dns control plane entity information + container dns-items { + + uses dns_Entity-group; + description "DNS Entity"; + } + + // Event Manager MO + container email-items { + + uses email_Email-group; + description "Email configuration mode"; + } + + container epbr-items { + + uses epbr_Entity-group; + description "EPBR Entity"; + } + + // Event Manager MO + container evtmgr-items { + + uses evms_EvtMgr-group; + description "Embedded event manager"; + } + + // Inband (sup) Interface + container inb-items { + list InbandIf-list { + key "id"; + + uses l2_InbandIf-group; + description "Layer2 Inband Interface list"; + } + description "Layer2 Inband Interface"; + } + + // Fex fabric Interface + container ext-items { + list ExtIf-list { + key "id"; + + uses l2_ExtIf-group; + description "Layer 2 Extending Interface list"; + } + description "Layer 2 Extending Interface"; + } + + // Bridged Interface + container br-items { + list BrIf-list { + key "id"; + + uses l2_BrIf-group; + description "Layer 2 Bridged Interface list"; + } + description "Layer 2 Bridged Interface"; + } + + // DN: sys/mac + container mac-items { + + uses l2_Macs-group; + description "Mac Address"; + } + + // Holds cdp control plane entity information + container cdp-items { + + uses cdp_Entity-group; + description "CDP Entity"; + } + + // Holds lldp control plane entity information + container lldp-items { + + uses lldp_Entity-group; + description "LLDP Entity"; + } + + // Holds VPC control plane entity information + container vpc-items { + + uses vpc_Entity-group; + description "VPC Entity"; + } + + // Container to hold Xbar logging level related objects and statistics + container xbarloglevel-items { + + uses xbar_LogLevel-group; + description "Config Xbar logging level"; + } + + // Entity for Gold + container gold-items { + + uses gold_Entity-group; + description "Gold Entity"; + } + + // Holds igmp control plane entity information + container igmp-items { + + uses igmp_Entity-group; + description "IGMP Entity"; + } + + // Holds isis control plane entity information + container isis-items { + + uses isis_Entity-group; + description "Holds ISIS Control Plane Entity Information"; + } + + container itd-items { + + uses itd_Entity-group; + description "ITD Entity"; + } + + // Holds lacp control plane entity information + container lacp-items { + + uses lacp_Entity-group; + description "LACP Entity"; + } + + // Mgmt interface + container mgmt-items { + list MgmtIf-list { + key "id"; + + uses mgmt_MgmtIf-group; + description "Management Interface list"; + } + description "Management Interface"; + } + + container logging-items { + + uses logging_Logging-group; + description "Logging root node for logging operations"; + } + + // Holds snmp control plane entity information + container snmp-items { + + uses snmp_Entity-group; + description "SNMP Entity"; + } + + // Holds syslog global accounting information + container syslogacct-items { + + uses syslog_Acct-group; + description "Syslog Accounting"; + } + + container syslog-items { + + uses syslog_Syslog-group; + description "syslog root node"; + } + + container mts-items { + + uses mts_Mts-group; + description "MTS stats"; + } + + container nat-items { + + uses nat_Entity-group; + description "NAT entity"; + } + + // Holds OSPF control plane entity information + container ospf-items { + + uses ospf_Entity-group; + description "Holds OSPF control plane entity information"; + } + + // L2EVPN instance definition + container evpn-items { + + uses rtctrl_L2Evpn-group; + description "L2EVPN Entity"; + } + + container comm-items { + + uses comm_Entity-group; + description "Communication Entity"; + } + + container userext-items { + + uses aaa_UserEp-group; + description "User Management"; + } + + container security-items { + + uses security_Security-group; + description "Security Rules For User And Fips"; + } + + container passwdenc-items { + + uses smartcard_PasswdEncrypt-group; + description "password encryption aes feature"; + } + + // Holds stp control plane entity information + container stp-items { + + uses stp_Entity-group; + description "STP Entity"; + } + + // Aggregate BdTable + container bdTable-items { + + uses aggregate_BdTable-group; + description "Bd Table"; + } + + // Aggregate VlanTable + container globalConfTable-items { + + uses aggregate_GlobalConfTable-group; + description "Global Configuration Table"; + } + + // Aggregate InterfaceTable + container intfTable-items { + + uses aggregate_IntfTable-group; + description "Interface Table"; + } + + // Aggregate MacTable + container macTable-items { + + uses aggregate_MacTable-group; + description "MAC Table"; + } + + container systemTable-items { + + uses aggregate_SystemTable-group; + description "System or switch level properties for SDN controller interface."; + } + + // Aggregate InterfaceTable + container tunnelIntfTable-items { + + uses aggregate_TunnelIntfTable-group; + description "Tunnel Interface Table"; + } + + // Aggregate VlanTable + container vlanTable-items { + + uses aggregate_VlanTable-group; + description "Vlan Table"; + } + + // VPCDOMTAB + container vpcDomTable-items { + + uses aggregate_VpcDomTable-group; + description "Vpc Domain Table"; + } + + container vrfTable-items { + + uses aggregate_VrfTable-group; + } + + // Holds ACL control plane configuration + container acl-items { + + uses acl_Entity-group; + description "Entity of the Access Control List"; + } + + container analytics-items { + + uses analytics_Entity-group; + description "Entity"; + } + + container hwtelemetry-items { + + uses analytics_HwTelemetry-group; + description "Entity for all Hardware Telemetry features"; + } + + container kubernetes-items { + + uses kbs_ContainerTracker-group; + description "Container Tracker entity"; + } + + // Holds copp control plane entity information + container copp-items { + + uses copp_Entity-group; + description "CoPP Entity"; + } + + // synce global configuration + container fsyncmgr-items { + + uses fsyncMgr_SynceEntity-group; + description "synce MO for global configuration"; + } + + // grpc config + // It supports the following options: + // port Specifies the port number on which the grpc Agent listens. + // cert Specifies the certificate trustpoint label. + // useVrf Vrf to be used for grpc communication + container grpc-items { + + uses grpc_Inst-group; + description "Instance node for managing grpc properties"; + } + + // Holds HMM entity information + container hmm-items { + + uses hmm_Entity-group; + description "Holds Host Mobility Manager (HMM) Entity information."; + } + + // Container for all the BDs in the system. + container bd-items { + + uses bd_Entity-group; + description "System BD"; + } + + container icam-items { + + uses icam_Entity-group; + description "ICAM Entity"; + } + + container ipqos-items { + + uses ipqos_Entity-group; + description "QoS configuration space"; + } + + // Holds span manager control plane entity information + container monitor-items { + + uses monitor_Entity-group; + description "Entity"; + } + + // netconf config + // It supports the following options: + // - maxSessions Specifies the number of maximum simultaneous client sessions. + // - idleTimeout Specifies the idle timeout in minutes after which idle client sessions are disconnected. + container netconf-items { + + uses netconf_Inst-group; + description "Instance node for managing netconf properties"; + } + + container flow-items { + + uses flow_Entity-group; + description "Entity"; + } + + // Holds NGOAM entity information + container ngoam-items { + + uses ngoam_Entity-group; + description "NGOAM Entity"; + } + + // nxapi config + // It supports the following options: + // - certificate Https certificate configuration + // - http Http configuration + // - https Https configuration + // - use-vrf Vrf to be used for nxapi communication + // - vrf : Specify the vrf for the transport. + // The default is "", meaning each platform + // could pick it own default setting. + container nxapi-items { + + uses nxapi_Inst-group; + description "NXAPI Instance"; + } + + container ofm-items { + + uses ofm_Inst-group; + description "Static Tunnel"; + } + + // Container for all the interfaces in the system. + container poe-items { + + uses poe_Entity-group; + description "poe Entity"; + } + + // Holds qos manager control plane entity information + container qosm-items { + + uses qosm_Entity-group; + description "QoS Entity"; + } + + // Holds sisf control plane entity information + container sisf-items { + + uses sisf_Entity-group; + description "Enable/Disable FHS feature"; + } + + // Holds service control plane entity information + container sla-items { + + uses sla_Entity-group; + description "SLA"; + } + + container tm-items { + + uses telemetry_Entity-group; + description "Telemetry System"; + } + + // Holds object tracking entity information + container track-items { + + uses track_Entity-group; + description "Object track entity"; + } + + container udld-items { + + uses udld_Entity-group; + description "Unidirectional Link Detection Entity"; + } + + container vmtracker-items { + + uses vmtracker_VmTracker-group; + description "VmTracker entity"; + } + + // Holds Acllog entity information + container acllog-items { + + uses acllog_Entity-group; + description "Acllog entity"; + } + + // TemplateTable MO + container templateTable-items { + + uses conftmpl_TemplateTable-group; + description "Template Table"; + } + + // Holds feature entity information + container fm-items { + + uses fm_Entity-group; + description "Feature entity"; + } + + // Holds file system entity information + container fs-items { + + uses fs_Entity-group; + description "file system entity"; + } + + // This object information is common to featureSet + container fset-items { + list FeatureSet-list { + key "name"; + + uses fset_FeatureSet-group; + description "A FeatureSet is a purely software functionality. It is a collection of componenets that perform a specific set of function list"; + } + description "A FeatureSet is a purely software functionality. It is a collection of componenets that perform a specific set of function"; + } + + // Guest Shell Top Object + container guestshell-items { + + uses guestshell_GuestShell-group; + description "Guest Shell execution space"; + } + + // Ephemeral Section Start Install History Entry + // Ephemeral data + container installhistory-items { + + uses installer_InstallHistoryEntity-group; + description "Installation History information table"; + } + + // Ephemeral Section End Exec results + container install-items { + + uses installer_Install-group; + description "Image installation information and result"; + } + + // Container for all the interfaces in the system. + container intf-items { + + uses interface_Entity-group; + description "Interface"; + } + + // Holds ipv4 control plane entity information + container ipv4-items { + + uses ipv4_Entity-group; + description "IPv4 Entity"; + } + + // Holds ipv6 control plane entity information + container ipv6-items { + + uses ipv6_Entity-group; + description "IPv6 Entity"; + } + + // Holds keychain manager control plane entity information + container kcmgr-items { + + uses kcmgr_Entity-group; + description "keychain manager Entity"; + } + + container ethpm-items { + + uses ethpm_Entity-group; + description "Ethernet Port Manager Entity"; + } + + container breakout-items { + + uses im_Breakout-group; + description "Interface Breakout"; + } + + container im-items { + + uses im_Entity-group; + description "Interface Manager Entity"; + } + + container pc-items { + + uses pc_Entity-group; + description "Port Channel Entity"; + } + container l2capprov-items { + list Prov-list { + config "false"; + key "subj type"; + + uses l2cap_Prov-group; + description "L2 Capability Provider list"; + } + description "L2 Capability Provider"; + } + + container flexlink-items { + + uses flexlink_Flexlink-group; + description "Flexlink configuration and management"; + } + + container l2fm-items { + + uses l2fm_Entity-group; + description "l2fm"; + } + + container l2pt-items { + + uses l2pt_L2protocol-group; + description "L2 Protocol Tunneling configuration and management"; + } + + // L2RIB control plane entity information + container l2rib-items { + + uses l2rib_Entity-group; + description "L2RIB Entity"; + } + + // DN: sys/portsecurity + container portsec-items { + + uses portsecurity_PortSecurity-group; + description "Port Security configuration and management at interface"; + } + + // PVLAN control plane information DN: sys/pvlan + container pvlan-items { + + uses pvlan_PrivateVlan-group; + description "Private VLAN (PVLAN) configuration and management"; + } + + // Holds Vlan-mgr control plane entity information + container vlanmgr-items { + + uses vlanmgr_Entity-group; + description "Vlan Manager Entity"; + } + + container eps-items { + + uses nvo_Eps-group; + description "Container object for NVO endpoint."; + } + + // tenant context object + container ctx-items { + list Ctx-list { + key "encap"; + + uses l3_Ctx-group; + description "Context list"; + } + description "Context"; + } + + // Overlay instance object + container inst-items { + list Inst-list { + key "name"; + + uses l3_Inst-group; + description "Overlay Instance list"; + } + description "Overlay Instance"; + } + + // Holds ipfib entity information + container ipfib-items { + + uses ipfib_Entity-group; + description "Ipfib Entity Information"; + } + + // Holds l3vm entity information + container l3vm-items { + + uses l3vm_Entity-group; + description "L3VM Entity"; + } + + container urib-items { + + uses urib_Entity4-group; + description "Urib ipv4 root element"; + } + + container u6rib-items { + + uses urib_Entity6-group; + description "Urib ipv6 root element"; + } + + // Entity information + container uribv4-items { + + uses uribv4_Entity-group; + description "IPv4 Unicast Routing Information Base Entity"; + } + + // Entity information + container uribv6-items { + + uses uribv6_Entity-group; + description "Unicast Routing Information Base Entity"; + } + + container licensemanager-items { + + uses licensemanager_LicenseManager-group; + description + "LicenseManager node, used as a placeholder for + uniformity"; + } + + // Holds mmode entity information + container mmode-items { + + uses mmode_Entity-group; + description "MMODE Entity"; + } + container vdc-items { + list Vdc-list { + key "id"; + + uses nw_Vdc-group; + description "VDC list"; + } + description "VDC"; + } + + container nxsdk-items { + + uses nxsdk_Entity-group; + description "Nx-sdk Manager"; + } + + // Holds pktmgr entity information + container pktmgr-items { + + uses pktmgr_Entity-group; + description "Pktmgr Entity"; + } + + // Container of processes in the system + container procsys-items { + + uses proc_System-group; + description "System Process Information"; + } + + // Container of processes in the system + container exitproc-items { + + uses proc_ExitProcEntity-group; + description "Exit Proc Entity"; + } + + // Container of processes in the system + // Ephemeral data + container proc-items { + + uses proc_Entity-group; + description "Process Entity"; + } + + // Holds rpm control plane entity information + container rpm-items { + + uses rpm_Entity-group; + description "Route Policy Map Entity"; + } + + container ipSrcIf-items { + + uses srcintf_Entity-group; + description " IP Source Interface"; + } + + // Install RPM Packages in the system + container swpkgs-items { + + uses swpkgs_Install-group; + description "Software packages Install"; + } + + // Holds sysmgr control plane entity information + container sysmgr-items { + + uses sysmgr_Entity-group; + description "Entity"; + } + + // Holds show version information + container showversion-items { + + uses sysmgr_ShowVersion-group; + description "Show Version CLI"; + } + + // Holds tcpudp entity information + container tcpudp-items { + + uses tcpudp_Entity-group; + description "Tcpdp Entity"; + } + + // Terminal MO to form the base, which means the user terminal base + container terml-items { + + uses terminal_Terminal-group; + description "Terminal"; + } + + // Organizes the terminal log-all specific property + container termlog-items { + + uses terminal_TerminalLog-group; + description "Enable accounting log for all commands"; + } + container tunnel-items { + list If-list { + config "false"; + key "id"; + + uses tunnel_If-group; + description "Tunnel Interface list"; + } + description "Tunnel Interface"; + } + + // Container for Virtual Ethernet Ports + container veth-items { + + uses veth_Entity-group; + description "Container for Virtual Ethernet Ports"; + } + + // Top MO for branching everything under + container virtualservice-items { + + uses virtualService_VirtualServiceTop-group; + description "Virtual Service"; + } + + // Holds VTP control plane entity information + container vtp-items { + + uses vtp_Entity-group; + description "VTP Entity"; + } + + // Wedge BMC(Board Management Controller) IP + container wedge-items { + + uses wedge_Bmc-group; + description "Wedge BMC IP"; + } + + // Top MO for branching everything under + container mca-items { + + uses mca_McaTop-group; + description "Mcast Control and Analytics"; + } + + // Top MO for branching everything under + container nbm-items { + + uses nbm_NbmTop-group; + description "Non Blocking Multicast."; + } + + // Top MO for branching everything under + container nbmcc-items { + + uses nbm_NbmCcTable-group; + description "Non Blocking Multicast Consistency Checker"; + } + + // Top MO for branching everything under + container nbmFlowsTable-items { + + uses nbm_NbmFlowsTable-group; + description "Non Blocking Multicast"; + } + + // Top MO for branching everything under + container nbmStats-items { + + uses nbm_NbmStats-group; + description "Non Blocking Multicast"; + } + + container boot-items { + + uses boot_Boot-group; + description "Configure boot images"; + } + + // Hardware chassis container + container ch-items { + + uses eqpt_Ch-group; + description "The hardware chassis information container"; + } + + // Extension chassis + container extch-items { + list ExtCh-list { + config "false"; + key "id"; + + uses eqpt_ExtCh-group; + description "FEX list"; + } + description "FEX"; + } + + // Equipment policy container + container ops-items { + + uses eqpt_Entity-group; + description "Equipment Policy Entity"; + } + + // Holds lcm entity information + container lcm-items { + + uses lcm_Entity-group; + description "lcm entity"; + } + + // Container for all the interfaces in the system. + container pltfm-items { + + uses platform_Entity-group; + description "Platform Entity"; + } + + // Container for the Nexus9000v operation data in the system. + container n9kv-items { + + uses platform_Nexus9000v-group; + description "Nexus9000v Operational Data MO"; + } + + // Satellite manager entity information + container satm-items { + + uses satm_Entity-group; + description "Satellite Manager Entity"; + } + + // Holds adjacency information + container adjacency-items { + + uses adjacency_Entity-group; + description "Adjacency Entity"; + } + + // Holds arp control plane entity information + container arp-items { + + uses arp_Entity-group; + description "ARP Entity"; + } + + // Holds bfd control plane entity information + container bfd-items { + + uses bfd_Entity-group; + description "BFD Entity"; + } + + // Holds cfs control plane entity information + container cfs-items { + + uses cfs_Entity-group; + description "Cfs Entity"; + } + + // Holds dot1x control plane entity information + container dot1x-items { + + uses dot1x_Entity-group; + description "Dot1x entity information"; + } + + // Holds HSRP control plane entity information + container hsrp-items { + + uses hsrp_Entity-group; + description "HSRP Entity"; + } + + // Holds icmpv4 control plane entity information + container icmpv4-items { + + uses icmpv4_Entity-group; + description "ICMPv4 Entity"; + } + + // Holds icmpv6 control plane entity information + container icmpv6-items { + + uses icmpv6_Entity-group; + description "ICMPv6 Entity"; + } + + // Holds igmp control plane entity information + container igmpsnoop-items { + + uses igmpsnoop_Entity-group; + description "Holds IGMP Snooping Entity Information"; + } + + // Holds m6rib entity information + container m6rib-items { + + uses m6rib_Entity-group; + description "Holds M6RIB entity information"; + } + + // Holds macsec control plane entity information + container macsec-items { + + uses macsec_Entity-group; + description "Macsec control plane entity"; + } + + // Holds mcastfwd control plane entity information + container mcastfwd-items { + + uses mcastfwd_Entity-group; + description "Holds Multicast Forwarding Entity Information"; + } + + // Holds mcastfwdv6 control plane entity information + container mcastfwdv6-items { + + uses mcastfwdv6_Entity-group; + description "Holds Multicast Forwarding Entity Information"; + } + + // Holds mld control plane entity information + container mld-items { + + uses mld_Entity-group; + description "MLD Entity"; + } + + // Holds mld control plane entity information + container mldsnoop-items { + + uses mldsnoop_Entity-group; + description "Holds MLD Snooping Entity Information"; + } + + // Holds mpls LDP entity information + container ldp-items { + + uses mplsldp_LDP-group; + description "MPLS LDP Entity, anchoring all LDP specific MOs"; + } + + // Mpls + container mpls-items { + + uses mpls_Entity-group; + description "Root MPLS Manager entity anchoring general MPLS MOs"; + } + + // Mpls + container mplsstatic-items { + + uses mplsstatic_Entity-group; + description "Root MPLS Static entity anchoring MPLS Static MOs"; + } + + // This object holds mpls strip mode information + container mplsstripclmode-items { + + uses mplsstripcl_MplsStripclMode-group; + description "MPLS Stripcl Mode"; + } + + // This object holds mpls tap-aggregation information + container mplsta-items { + list MplsTA-list { + key "id"; + + uses mplsstripcl_MplsTA-group; + description "MPLS tap-aggregation list"; + } + description "MPLS tap-aggregation"; + } + + // Label Table + container labeltable-items { + + uses ulib_LabelTable-group; + description "Label Table. Contains aggregate properties for allocated labels and anchors children that describe the allocated labels"; + } + + // Holds mrib entity information + container mrib-items { + + uses mrib_Entity-group; + description "Holds MRIB entity information"; + } + + // Holds MSDP control plane entity information + container msdp-items { + + uses msdp_Entity-group; + description "Holds MSDP control plane entity information"; + } + + // Holds mvpn control plane entity information + container mvpn-items { + + uses mvpn_Entity-group; + description "Holds MVPN control plane entity information"; + } + + // Holds nd control plane entity information + container nd-items { + + uses nd_Entity-group; + description "Neighbor Discover Entity"; + } + + // Holds NGMVPN + // entity information + container ngmvpn-items { + + uses ngmvpn_Entity-group; + description "Fabric Group Manager Entity, which hold NGMVPN entity information"; + } + + // Holds openflow entity information + container openflow-items { + + uses openflow_Entity-group; + description "Openflow Entity Object"; + } + + // Holds OSPFv3 control plane entity information + container ospfv3-items { + + uses ospfv3_Entity-group; + description "OSPFv3 control plane entity information"; + } + + // Holds pim control plane entity information + container pim-items { + + uses pim_Entity-group; + description "Holds PIM control plane entity information"; + } + + // Holds pim6 control plane entity information + container pim6-items { + + uses pim6_Entity-group; + description "Holds PIM6 control plane entity information"; + } + + // Holds ptp control plane entity information + container ptp-items { + + uses ptp_PtpEntity-group; + description "PTP Entity MO for all the PTP global configuration properties"; + } + + container ttag-items { + + uses ttag_TtagEntity-group; + description "PTP ttag configuration and management"; + } + + // Holds Segment-routing entity information + container segrt-items { + + uses segrt_Entity-group; + description "Segment-routing Entity"; + } + + // Holds tunnel-encryption control plane entity information + container tunnelenc-items { + + uses tunnelenc_Entity-group; + description "Tunnel-encryption control plane entity"; + } + + // Holds vrrp control plane entity information + container vrrp-items { + + uses vrrp_Entity-group; + description "VRRP Entity"; + } + + // Holds vrrpv3 control plane entity information + container vrrpv3-items { + + uses vrrpv3_Entity-group; + description "VRRPv3 Entity"; + } + + // Root node for scratchpad subtree + container scrtchpdrt-items { + + uses scrtchpd_Root-group; + description "Root"; + } + container sectl-items { + list SwTLTestObj-list { + key "name"; + + uses synthetic_SwTLTestObj-group; + description "Synthetic Sw TL Test Object list"; + } + description "Synthetic Sw TL Test Object"; + } + container caggr-items { + list AggrIf-list { + key "id"; + + uses cnw_AggrIf-group; + description "Controller Aggregated Interface list"; + } + description "Controller Aggregated Interface"; + } + + // Physical ethernet interface information holder + container cphys-items { + list PhysIf-list { + key "id"; + + uses cnw_PhysIf-group; + description "Controller Physical Interface list"; + } + description "Controller Physical Interface"; + } + + // TrackconfigStateandData MO + container trackutils-items { + + uses trackutils_TrackUtils-group; + description + "TrackUtils keeps details about running/startup state, + file to be backedup and the location from where binaries needs to be restored as properties"; + } + + // CliAlias entries list + container clialias-items { + list CliAlias-list { + key "aliasName"; + + uses vshd_CliAlias-group; + description "Cli alias configuration list"; + } + description "Cli alias configuration"; + } + + // CliAlias Check + container clialiascheck-items { + + uses vshd_CliAliasCheck-group; + description "Cli alias check configuration"; + } + + // CLI Variable + container clivar-items { + list CliVar-list { + key "varName"; + + uses vshd_CliVar-group; + description "Configure CLI commands list"; + } + description "Configure CLI commands"; + } + + container action-items { + + uses action_LCont-group; + description "Action Container of mo LCont"; + } + + container rtdbgexpTsSrc-items { + + list RtDbgexpTsSrc-list { + config "false"; + key "tDn"; + + uses dbgexp_RtDbgexpTsSrc_target-group; + description "Relation to Traceroute Source Node list"; + } + description "Relation to Traceroute Source Node"; + } + + container rttraceroutepTrSrc-items { + + list RtTraceroutepTrSrc-list { + config "false"; + key "tDn"; + + uses traceroutep_RtTraceroutepTrSrc_target-group; + description "Relation to Source Node list"; + } + description "Relation to Source Node"; + } + + container rttraceroutepTrDst-items { + + list RtTraceroutepTrDst-list { + config "false"; + key "tDn"; + + uses traceroutep_RtTraceroutepTrDst_target-group; + description "Relation to Traceroute Destination list"; + } + description "Relation to Traceroute Destination"; + } + + container rtmaintFwinstlsrc-items { + + list RtMaintFwinstlsrc-list { + config "false"; + key "tDn"; + + uses maint_RtMaintFwinstlsrc_target-group; + description "Relation to Source Node list"; + } + description "Relation to Source Node"; + } + } + + grouping bgp_Entity-group { + description "BGP control plane entity information."; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per bgp instance information. There is only + // instance supported in bgp + container inst-items { + + uses bgp_Inst-group; + description + "Config and runtime information of + per BGP instance"; + } + } + + grouping bgp_Inst-group { + description + "Config and runtime information of + per BGP instance"; + + // Autonomous system number + leaf asn { + + type bgp_AsnNum; + description "Autonomous System Number, takes value from (1-4294967295 | 1-65535[.(0-65535)]) "; + } + + // Disable Policy Batching + leaf disPolBatch { + + type bgp_AdminSt; + description "Disable Batching Evaluation To All Peers"; + } + leaf disPolBatchv4PfxLst { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Disable Batching Evaluation Of IPv4 Prefix Advertisements To All Peers"; + } + leaf disPolBatchv6PfxLst { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Disable Batching Evaluation Of IPv6 Prefix Advertisements To All Peers"; + } + leaf createTs { + config "false"; + type union { + type string; + type uint64; + } + description "Creation Timestamp, denotes the time when this instance was created"; + } + leaf activateTs { + config "false"; + type union { + type string; + type uint64; + } + description "Activation Timestamp, the time when this instance is activated with all the configuration"; + } + leaf waitDoneTs { + config "false"; + type union { + type string; + type uint64; + } + description "Wait Done Timestamp, the timestamp when the bgp protocol was out of wait mode"; + } + + // Memory alert level + leaf memAlert { + config "false"; + + type nw_MemAlertLevel; + description "Memory Alert Level"; + } + + // Number of route attribute entries learned + leaf numRtAttrib { + config "false"; + + type cap_Quant; + description "Route Attributes"; + } + + // Current size of attribute database + leaf attribDbSz { + config "false"; + + type bgp_AttribDbSz; + description "Attribute Database Size"; + } + + // Number of AS path entries learned + leaf numAsPath { + config "false"; + + type cap_Quant; + description "AS Paths entries"; + } + + // Current size of AS path database + leaf asPathDbSz { + config "false"; + + type bgp_AsPathDbSz; + description "AS Path Database Size"; + } + + // Enable/Disable isolate bgp + leaf isolate { + + type bgp_IsolateMode; + description "Isolate router from BGP perspective"; + } + + // MED dampening interval + leaf medDampIntvl { + + type bgp_MedIntvl; + description "Setting med dampening interval"; + } + leaf fabricSoo { + type mtx_array_community; + description "Fabric Site of Origin extcommunity"; + } + + // Enable/Disable flush-routes bgp + leaf flushRoutes { + + type bgp_AdminSt; + description "Flush routes in RIB upon controlled restart"; + } + + // Activate the affinity group activate + leaf affGrpActv { + + type bgp_AffGrpActv; + description "Activate the affinity group"; + } + + // Segment routing global block min range value + leaf srgbMinLbl { + config "false"; + + type bgp_SRGBRange; + description "Segment Routing Global Block Min Label. (Value should be in the range 16000-471804 when feature segment-routing is enabled."; + } + + // Segment routing global block max range value + leaf srgbMaxLbl { + config "false"; + + type bgp_SRGBRange; + description "Segment Routing Global Block Max Label. (Value should be in the range 16000-471804 when feature segment-routing is enabled."; + } + + // EPE Configured Peers + leaf epeConfiguredPeers { + config "false"; + + type bgp_NumPeers; + description "EPE Configured Peers"; + } + + // EPE Active Peers + leaf epeActivePeers { + config "false"; + + type bgp_NumPeers; + description "EPE Active Peers"; + } + + // Link-State Server + leaf lnkStSrvr { + config "false"; + + type bgp_LsAdminSt; + description "EPE Link-State Server"; + } + + // Link-State Client + leaf lnkStClnt { + config "false"; + + type bgp_LsAdminSt; + description "EPE Link-State Server"; + } + + // nexthop suppress-default-resolution + leaf nhSupprDefRes { + + type bgp_AdminSt; + description "Suppress use of default route for nexthop address resolution"; + } + leaf enhancedErr { + type boolean; + default "true"; + description "Enable BGP Enhanced Error Handling to prevent inadvertent session resets for minor errors. See RFC7606 for more details"; + } + + // Dual RD for vxlan multisite border gateway + leaf rdDual { + + type bgp_AdminSt; + default "enabled"; + description "Generate Secondary Route Distinguisher for vxlan multisite border gateway"; + } + leaf rdDualId { + type uint16 { + range "0..65535"; + } + description "ID to generate Secondary RD with ID:VNI format"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + // Default value handled in local MO type + leaf ctrl { + + // Type is a Local-MO-Defined-Type + type nw_InstCtrl_Inst_ctrl; + description "Fast External Fallover"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This objects hold per bgp domain (vrf) information + container dom-items { + list Dom-list { + key "name"; + + uses bgp_Dom-group; + description "Domain: Virtual Router Context list"; + } + description "Domain: Virtual Router Context"; + } + + // This object holds global BGP customized buffer for event-history + container evthist-items { + list EvtHist-list { + key "type"; + + uses bgp_EvtHist-group; + description "BGP customized buffer detail for event-history list"; + } + description "BGP customized buffer detail for event-history"; + } + + // This object holds bgp operational information. + container oper-items { + + uses bgp_OperBgp-group; + description + "Top-level container to hold BGP + runtime operational data"; + } + } + + grouping bgp_Dom-group { + description "Domain: Virtual Router Context"; + + // Mode, (external | fabric) + leaf mode { + + type bgp_Mode; + description "BGP running in Fabric or External mode, default is fabric"; + } + + // Router id + leaf rtrId { + + type ip_RtrId; + description "Holds ip address to use as Router ID"; + } + + // Route refelector id (cluster id) identifies the cluster + // of the route reflector domain. + // The regular expression allows (1) a cluster id of value between + // 1-4294967295 or (2) an IPv4 address. + leaf clusterId { + + type bgp_ClusterId { + pattern "(|(1|(\\+)?[1-9]{1}[0-9]{0,8}|(\\+)?[1-3]{1}[0-9]{1,9}|(\\+)?4{1}([0-1]{1}[0-9]{8}|2{1}([0-8]{1}[0-9]{7}|9{1}([0-3]{1}[0-9]{6}|4{1}([0-8]{1}[0-9]{5}|9{1}([0-5]{1}[0-9]{4}|6{1}([0-6]{1}[0-9]{3}|7{1}([0-1]{1}[0-9]{2}|2{1}([0-8]{1}[0-9]{1}|9{1}[0-5]{1})))))))))|((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))"; + } + description "Route Reflector Cluster ID"; + } + + // Keepalive interval, how often you send keepalives + leaf kaIntvl { + + type bgp_KaIntvl; + description "Keepalive interval timer in secs"; + } + + // Hold interval, how long you wait before you declare the + // neighbor down + leaf holdIntvl { + + type bgp_HoldIntvl; + description "Hold interval timer in secs"; + } + + // Prefix Peer Timeout + leaf pfxPeerTimeout { + + type bgp_PfxPeerTimeout; + description "Prefix Peer Timeout in secs"; + } + + // Prefix Peer Wait Time + leaf pfxPeerWaitTime { + + type bgp_PfxPeerWaitTime; + description "Prefix Peer Wait Time in secs"; + } + + // Maximum AS limit, to discard routes that have excessive + // AS numbers + leaf maxAsLimit { + + type bgp_MaxAsLimit; + description "Max AS-Path limit from EBGP neighbor"; + } + + // Timeout for first bestpath after restart + leaf bestPathIntvl { + + type bgp_BestPathIntvl; + description "Holds timeout for first bestpath after restart"; + } + + // Update Delay Option for first bestpath timeout + leaf always { + + type bgp_AdminSt; + description "Update delay option for first bestpath timeout"; + } + + // Configure connection reconnect interval in secs + leaf reConnIntvl { + + type bgp_ReConnectIntvl; + description "Connection reconnect interval in secs"; + } + + // Operational state + leaf operSt { + config "false"; + + type bgp_DomOperSt; + description "Operational State"; + } + + // Operational router id + leaf operRtrId { + config "false"; + + type ip_RtrId; + description "Operational Router ID"; + } + leaf firstPeerUpTs { + config "false"; + type union { + type string; + type uint64; + } + description "First Peer Up Timestamp"; + } + + // Number of Peers + leaf numPeers { + config "false"; + + type bgp_NumPeers; + description "Number of Peers"; + } + + // Number of Configured Peers pending + leaf numPeersPending { + config "false"; + + type bgp_NumPeers; + description "Number of Configured Peers pending"; + } + + // Number of Established Peers + leaf numEstPeers { + config "false"; + + type bgp_NumPeers; + description "Number of Established Peers"; + } + + // VRF Id + leaf id { + config "false"; + + type bgp_DomId; + description "VRF Id"; + } + + // VRF Vnid + leaf vnid { + config "false"; + + type bgp_Vnid; + description "Domain Vnid (Value in the range 1-16777214)"; + } + leaf vtepIp { + config "false"; + type address_Ip; + description "VTEP IP address"; + } + leaf vtepVirtIp { + config "false"; + type address_Ip; + description "VTEP Virtual IP address"; + } + leaf routerMac { + config "false"; + type address_Mac; + description "Router Mac address from nve"; + } + + // Local ASN + leaf localAsn { + + type bgp_AsnNum; + description "Local Asn for the EBGP neighbor"; + } + leaf allocIndex { + type uint32 { + range "0..8000"; + } + description "Allocate index for vrf (Value in the range 1-8000)"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern "[A-Za-z0-9!@#$\\^\\*=\\+\\{\\}\\.;:_-]{1,32}"; + } + description "Name"; + } + + // This object holds global BGP knobs at Dom level + container rtctrl-items { + + uses bgp_RtCtrl-group; + description "Route Control Information"; + } + + // This object holds global BGP bestpath knobs at Dom level + container pathctrl-items { + + uses bgp_PathCtrl-group; + description "Path Control"; + } + + // AS Confed are needed to club ASNs together to look like a single ASN + container confed-items { + + uses bgp_Confederation-group; + description "AS confederation parameters"; + } + + // This object holds per address family bgp vrf information + container af-items { + list DomAf-list { + key "type"; + + uses bgp_DomAf-group; + description "Address Family Information list"; + } + description "Address Family Information"; + } + + // This object holds the BMP server information + container bmp-items { + list BmpSvr-list { + key "id"; + + uses bgp_BmpSvr-group; + description "BMP server configuration list"; + } + description "BMP server configuration"; + } + + // This objects hold per domain graceful restart information + container gr-items { + + uses bgp_Gr-group; + description "Graceful Restart"; + } + + // This objects hold graceful shutdown informations + container gs-items { + + uses bgp_Gs-group; + description "Graceful shutdown activation/deactivation information under global, peer and template mode"; + } + + // This object holds bgp information pertaining to a peer with ip + container peer-items { + list Peer-list { + key "addr"; + + uses bgp_Peer-group; + description "BGP Peer: BGP information pertaining to a peer with ip list"; + } + description "BGP Peer: BGP information pertaining to a peer with ip"; + } + + // This object holds bgp information pertaining to a peer with intf + container peerif-items { + list PeerIf-list { + key "id"; + + uses bgp_PeerIf-group; + description "BGP Peer: BGP information pertaining to a peer with interface list"; + } + description "BGP Peer: BGP information pertaining to a peer with interface"; + } + + // This object holds Bgp's Segment Routing configurations + container segrt-items { + list SgmtRtg-list { + key "sr"; + + uses bgp_SgmtRtg-group; + description "Object to hold BGP's MPLS Segment Routing configurations list"; + } + description "Object to hold BGP's MPLS Segment Routing configurations"; + } + + // This object holds parameters pertaining to peer templates + container peercont-items { + list PeerCont-list { + key "name"; + + uses bgp_PeerCont-group; + description "Peer Container: parameters pertaining to peer templates list"; + } + description "Peer Container: parameters pertaining to peer templates"; + } + + // This object holds parameters related to session templates + container sessioncont-items { + list SessionCont-list { + key "name"; + + uses bgp_SessionCont-group; + description "Session Container: parameters related to session templates list"; + } + description "Session Container: parameters related to session templates"; + } + + // This object holds parameters pertaining to policy templates + container policycont-items { + list PolicyCont-list { + key "name"; + + uses bgp_PolicyCont-group; + description "Policy Container: parameters pertaining to policy templates list"; + } + description "Policy Container: parameters pertaining to policy templates"; + } + } + + grouping bgp_RtCtrl-group { + description "Route Control Information"; + + // Advertise only routes that are programmed in hardware to peers + leaf supprRt { + + type bgp_AdminSt; + default "enabled"; + description + "Suppress Routes: Advertise only routes that + are programmed in hardware to peers"; + } + + // Generate system message when any neighbor state changes + leaf logNeighborChanges { + + type bgp_AdminSt; + description "Log Neighbor Changes"; + } + + // Enforce the neighbor AS to be the first AS listed in the AS_path attribute for eBGP. + leaf enforceFirstAs { + + type bgp_AdminSt; + default "enabled"; + description "Enforce First AS For EBgp"; + } + + // Handle BGP neighbor down event + leaf fibAccelerate { + + type bgp_AdminSt; + description "Accelerate the hardware updates for IP/IPv6 adjacencies for neighbor"; + } + } + + grouping bgp_PathCtrl-group { + description "Path Control"; + + // Compare MED on paths from different AS + leaf alwaysCompMed { + + type bgp_AdminSt; + description "Compare MED on paths from different AS"; + } + + // Allow load sharing across providers with different AS paths + leaf asPathMultipathRelax { + + type bgp_AdminSt; + description "Relax AS-Path restriction when choosing multipaths"; + } + + // Allow load sharing across providers with different AS paths + leaf asPathIgnore { + + type bgp_AdminSt; + description "Ignore AS-Path during bestpath selection"; + } + + // Compare router-id for identical EBGP paths + leaf compRtrId { + + type bgp_AdminSt; + description "Compare Router Id"; + } + + // Compare neighbor-id for identical EBGP paths + leaf compNbrId { + + type bgp_AdminSt; + description "Compare Neighbor Id"; + } + + // Ignore cost communities + leaf costCommunityIgnore { + + type bgp_AdminSt; + description "Ignore Cost Communities"; + } + + // Compare MED for paths originated from within a confederation + leaf medConfed { + + type bgp_AdminSt; + description "Compare MED only from paths originated from within a confederation"; + } + + // Treat missing MED as highest MED + leaf medMissingAsWorst { + + type bgp_AdminSt; + description "Med Missing As Worst"; + } + + // Do not always pick the best-MED path among paths from same AS + leaf medNonDeter { + + type bgp_AdminSt; + description "Med Non-Deterministic"; + } + + // Ignore IGP metric for next-hop during bestpath calculation + leaf igpMetricIgnore { + + type bgp_AdminSt; + description "Ignore IGP metric for next-hop during bestpath calculation"; + } + } + + grouping bgp_Confederation-group { + description "AS confederation parameters"; + + // Autonomous system number + leaf asn { + + type bgp_AsnNum; + description "Autonomous System Number, takes value from (1-4294967295 | 1-65535[.(0-65535)])"; + } + + // AS Confed are needed to club ASNs together to look like a single ASN + container peer-items { + list ConfederationPeer-list { + key "asn"; + + uses bgp_ConfederationPeer-group; + description "Peer ASs in BGP confederation list"; + } + description "Peer ASs in BGP confederation"; + } + } + + grouping bgp_ConfederationPeer-group { + description "Peer ASs in BGP confederation"; + + // Autonomous system in the confederation + leaf asn { + + type bgp_AsnNum; + description "Autonomous System Number, takes value from (1-4294967295 | 1-65535[.(0-65535)])"; + } + } + + grouping bgp_DomAf-group { + description "Address Family Information"; + + // Maximum number of equal-cost paths for load sharing + leaf maxEcmp { + + type bgp_MaxEcmp; + description "Max ECMP"; + } + + // Maximum number of equal-cost paths for eBGP + leaf maxExtEcmp { + + type bgp_MaxEcmp; + description "Max External ECMP"; + } + + // Maximum number of equal-cost paths for eiBGP + leaf maxExtIntEcmp { + + type bgp_MaxEcmp; + description "Max External Internal ECMP"; + } + + // Maximum number of equal-cost multipath for local and remote paths + leaf maxMxdEcmp { + + type bgp_MaxEcmp; + description "Max mixed equal-cost multipath for local and remote paths"; + } + + // Maximum number of equal-cost multipath for local paths + leaf maxLclEcmp { + + type bgp_MaxEcmp; + description "Maximum number of equal-cost multipath for local paths"; + } + leaf tmrBstpthDfr { + type uint32 { + range "0..3000"; + } + description "Configure bgp related timers"; + } + leaf tmrMax { + type uint32 { + range "0..300000"; + } + description "Configure bestpath defer timer"; + } + leaf tblMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route-map name"; + } + + // Configure table-map for Selective route download + leaf tblMapFltr { + + type bgp_AdminSt; + description "Selective route download"; + } + + // Allow VNI in Ethernet Tag field in EVPN route + leaf vniEthTag { + + type bgp_AdminSt; + description "Allow VNI in Ethernet Tag field in EVPN route"; + } + + // Advertise extra EVPN RT-2 with system MAC + leaf advSysMac { + + type bgp_AdminSt; + description "Advertise extra EVPN RT-2 with system MAC"; + } + leaf bestPathSigTs { + config "false"; + type union { + type string; + type uint64; + } + description "Best Path Signalled Timestamp"; + } + leaf bestPathCmpltTs { + config "false"; + type union { + type string; + type uint64; + } + description "Best Path Completed Timestamp"; + } + + // Critical NH timeout + // Default value handled in local MO type + leaf critNhTimeout { + + // Type is a Local-MO-Defined-Type + type bgp_NhTimeout_DomAf_critNhTimeout; + description "Critical Next-hop Trigger-delay"; + } + + // Non-Critical NH timeout + // Default value handled in local MO type + leaf nonCritNhTimeout { + + // Type is a Local-MO-Defined-Type + type bgp_NhTimeout_DomAf_nonCritNhTimeout; + description "Non-Critical Next-hop Trigger-delay"; + } + + // Local BGP table version + leaf tblVer { + config "false"; + + type bgp_TblVer; + description "Table Version"; + } + leaf nhRtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Next hop route map name"; + } + + // client-to-client route reflection + leaf clReflection { + + type bgp_AdminSt; + default "enabled"; + description "client-to-client Reflection of routes"; + } + + // Advertise l2vpn evpn - Originate Type 5 L2VPN EVPN route + // correspoinding to VRF route or not + leaf advertL2vpnEvpn { + + type bgp_AdvertL2vpnEvpn; + description "Advertise L2vpn Evpn"; + } + + leaf allocLblAll { + + type bgp_AdminSt; + description "Allocate labels for all routes"; + } + leaf allocLblRtMap { + type string { + pattern ".*[!-~]{0,63}"; + } + description "Allocate labels for selective routes"; + } + + // Configure label allocation mode + leaf lblAllocMod { + + type bgp_AdminSt; + default "enabled"; + description "per VRF label allocation mode"; + } + leaf retainRttRtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Retain Route Target Route Map"; + } + + // Retain Route Target All + leaf retainRttAll { + + type bgp_AdminSt; + description "Retain Route Target All"; + } + leaf defMetric { + type string { + pattern "0*((429496729[0-5])|(42949672[0-8]\\d)|(4294967[01]\\d{2})|(429496[0-6]\\d{3})|(42949[0-5]\\d{4})|(4294[0-8]\\d{5})|(429[0-3]\\d{6})|(42[0-8]\\d{7})|(4[01]\\d{8})|([1-3]\\d{9})|\\d{0,9})"; + } + description "Default Metric"; + } + + // Local BGP table Id + leaf tblId { + config "false"; + + type bgp_TblVer; + description "Table Id in hex display"; + } + + // Local BGP table state + leaf tblSt { + config "false"; + + type bgp_DomOperSt; + description "Local BGP table state"; + } + + // Number of Peers + leaf numPeers { + config "false"; + + type bgp_NumPeers; + description "Number of Peers"; + } + + // Number of Active Peers + leaf numPeersActive { + config "false"; + + type bgp_NumPeers; + description "Number of Active Peers"; + } + + // Number of Routes + leaf numRoutes { + config "false"; + + type bgp_NumPaths; + description "Number of Routes"; + } + + // Number of Paths + leaf numPaths { + config "false"; + + type bgp_NumPaths; + description "Number of Paths"; + } + leaf numNetworks { + config "false"; + type uint32; + description "Number of Networks"; + } + leaf numAggregates { + config "false"; + type uint32; + description "Number of Aggregates"; + } + + // default-information originate command + leaf defInfOriginate { + + type bgp_AdminSt; + description "default-information originate"; + } + leaf defInfOrigRd { + type mtx_array_community; + description "Default-information Originate always Route Distinguisher"; + } + leaf defInfOrigRtt { + type mtx_array_community; + description "Default-information Originate always Route Target"; + } + + // Dampen IGP metric + leaf igpMetric { + + type bgp_igpMetric; + description "Dampen IGP metric-related changes"; + } + + // Suppress inactive + leaf supprInactive { + + type bgp_AdminSt; + description "Advertise only active routes to peers"; + } + + // advertise-pip + leaf advPip { + + type bgp_AdminSt; + description "Advertise physical IP for type-5 routes"; + } + + // Export Gateway IP to in Type-5 routes to neighbor + leaf exportGwIp { + + type bgp_AdminSt; + description "Export Gateway IP to Type-5 EVPN routes for VRF"; + } + + // Wait for IGP convergence before starting bestpath computation + leaf waitIgpConv { + + type bgp_AdminSt; + description "Delay initial bestpath until redistributed IGPs have converged"; + } + + // Allow allocation of option B labels + leaf allocLblOptB { + + type bgp_AdminSt; + default "enabled"; + description "Allow allocation of option B labels"; + } + + // prefix-priority + leaf prfxPriority { + + type bgp_PrfxPriorityLevelT; + default "none"; + description "Enable prefix priority for AF"; + } + + // Type + leaf type { + + type bgp_AfT; + description "Address Family Type"; + } + + // This object holds policy to control vpn af + // information for a given vrf + container ctrl-items { + list VpnCtrlP-list { + config "false"; + key "type"; + + uses bgp_VpnCtrlP-group; + description "Virtual Private Network Control Policy list"; + } + description "Virtual Private Network Control Policy"; + } + + // Administrative distance is used by routers to select the best path when + // there are two or more different routes to the same destination from + // two different routing protocols + container adminDist-items { + + uses bgp_AdminDist-group; + description "Administrative Distance: This is the distance used by routers to select the best path when there are two or more different routes to the same destination from two different routing protocols."; + } + + // Dampening is a BGP feature to suppress unstable routes + container dampening-items { + + uses bgp_DampeningCtrl-group; + description "Dampening Control: BGP route flap dampening parameters"; + } + + // Bgp advertise to IP + container prefix-items { + list AdvPrefix-list { + key "addr"; + + uses bgp_AdvPrefix-group; + description "Advertise To Prefix list"; + } + description "Advertise To Prefix"; + } + + // This object holds per address family per bgp vrf aggregate address information + container aggaddr-items { + list AggAddr-list { + key "addr"; + + uses bgp_AggAddr-group; + description "Configure BGP aggregate prefixes list"; + } + description "Configure BGP aggregate prefixes"; + } + + // BGP Additional Paths feature allows the advertisement of multiple + // paths through the same peering session for the same prefix without + // the new paths implicitly replacing any previous paths + container addlpath-items { + + uses bgp_AddlPath-group; + description + "Additional Paths: Advertise paths through the same + peering session for the same prefix without the new + implicitly replacing any previous paths."; + } + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + + // This object holds the bgp vpn route information + // Ephemeral data + container vpnrt-items { + + // Ephemeral data + list VpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_VpnRoute-group; + description "VPN Route information list"; + } + description "VPN Route information"; + } + + // Ephemeral data + container lblrt-items { + + // Ephemeral data + list LblRoute-list { + config "false"; + key "pfx"; + + uses bgp_LblRoute-group; + description "Labeled Route list"; + } + description "Labeled Route"; + } + + // Ephemeral data + container lsrt-items { + + // Ephemeral data + list LnkStRoute-list { + config "false"; + key "pfx"; + + uses bgp_LnkStRoute-group; + description "Link State Route list"; + } + description "Link State Route"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + + // MCAST-VPN route + // Ephemeral data + container mvpnrt-items { + + // Ephemeral data + list MvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_MvpnRoute-group; + description "MVPN Route list"; + } + description "MVPN Route"; + } + + // Show only Imported Routes + // Ephemeral data + container importedrt-items { + + uses bgp_ImportedRoutes-group; + description "Display Imported Routes"; + } + + // Show only Self-originated Routes + // Ephemeral data + container selforigrt-items { + + uses bgp_SelfOrigRoutes-group; + description "Display Self-originated Routes"; + } + + // Show only Injected Routes + // Ephemeral data + container injectedrt-items { + + uses bgp_InjectedRoutes-group; + description "Display Injected Routes"; + } + + // Ephemeral data + container exportedrt-items { + + uses bgp_ExportedRoutes-group; + description "Display Exported Routes"; + } + + // Show only Received Paths Routes + // Ephemeral data + container rcvdpathsrt-items { + + uses bgp_RcvdPathsRoutes-group; + description "Display Received Paths Routes"; + } + + // This object holds the bgp routes matching route-map + // Ephemeral data + container rtmap-items { + + // Ephemeral data + list RtMapRoutes-list { + config "false"; + key "name"; + + uses bgp_RtMapRoutes-group; + description "Display Routes matching rtmap name list"; + } + description "Display Routes matching rtmap name"; + } + + // This object holds the bgp routes matching filter-list + // Ephemeral data + container fltrlist-items { + + // Ephemeral data + list FltrListRoutes-list { + config "false"; + key "name"; + + uses bgp_FltrListRoutes-group; + description "Display Routes matching filter-list name list"; + } + description "Display Routes matching filter-list name"; + } + + // This object holds the bgp routes matching prefix-list + // Ephemeral data + container pfxlist-items { + + // Ephemeral data + list PfxListRoutes-list { + config "false"; + key "name"; + + uses bgp_PfxListRoutes-group; + description "Display Routes matching prefix-list name list"; + } + description "Display Routes matching prefix-list name"; + } + + // Show only Dampening Paths Routes + // Ephemeral data + container damppathsrt-items { + + uses bgp_DampPathsRoutes-group; + description "Display Dampening Paths Routes"; + } + + // Show only Dampening History Paths Routes + // Ephemeral data + container damphstpathsrt-items { + + uses bgp_DampHistPathsRoutes-group; + description "Display Dampening History Paths Routes"; + } + + // Show Routes by route-type + // Ephemeral data + container rttype-items { + + // Ephemeral data + list RtTypeRoutes-list { + config "false"; + key "rtType"; + + uses bgp_RtTypeRoutes-group; + description "Display routes by route-type 1-5 list"; + } + description "Display routes by route-type 1-5"; + } + + // Show Evpn routes by vni-id + // Ephemeral data + container vnid-items { + + // Ephemeral data + list EvpnVnIdRoutes-list { + config "false"; + key "vnid"; + + uses bgp_EvpnVnIdRoutes-group; + description "Display Evpn routes by vni id 1-16777214 list"; + } + description "Display Evpn routes by vni id 1-16777214"; + } + + // Show Evpn routes by mac address + // Ephemeral data + container mac-items { + + // Ephemeral data + list EvpnMacAddrRoutes-list { + config "false"; + key "macaddr"; + + uses bgp_EvpnMacAddrRoutes-group; + description "Display Evpn routes by mac address EE:EE:EE:EE:EE:EE list"; + } + description "Display Evpn routes by mac address EE:EE:EE:EE:EE:EE"; + } + + // Show routes by RD + // Ephemeral data + container rd-items { + + // Ephemeral data + list RdRoutes-list { + config "false"; + key "rd"; + + uses bgp_RdRoutes-group; + description "Display RD routes by format ASN2:NN ASN4:NN IPV4:NN list"; + } + description "Display RD routes by format ASN2:NN ASN4:NN IPV4:NN"; + } + + // Show routes by exact Prefix + // Ephemeral data + container pfx-items { + + // Ephemeral data + list PfxRoutes-list { + config "false"; + key "pfx"; + + uses bgp_PfxRoutes-group; + description "Display Prefix routes by format IPV4 and IPV6 addr list"; + } + description "Display Prefix routes by format IPV4 and IPV6 addr"; + } + + // Show Evpn routes by Ethernet Segment + // Ephemeral data + container esid-items { + + // Ephemeral data + list EvpnEsRoutes-list { + config "false"; + key "esid"; + + uses bgp_EvpnEsRoutes-group; + description "Display Evpn Ethernet Segment routes by ESID list"; + } + description "Display Evpn Ethernet Segment routes by ESID"; + } + + // Show nexthop routes + // Ephemeral data + container nh-items { + + // Ephemeral data + list NextHopRoutes-list { + config "false"; + key "pfx"; + + uses bgp_NextHopRoutes-group; + description "Display next hop routes list"; + } + description "Display next hop routes"; + } + + // Show MCAST Routes by route-type + // Ephemeral data + container mrttype-items { + + // Ephemeral data + list McastRtTypeRoutes-list { + config "false"; + key "rtType"; + + uses bgp_McastRtTypeRoutes-group; + description "Display MCAST routes by route-type 1-7 list"; + } + description "Display MCAST routes by route-type 1-7"; + } + + // This objects holds default route leak policy, + // this is not needed for FCS in our solution + container defrtleak-items { + + uses bgp_DefRtLeakP-group; + description "Default Route Leak Policy"; + } + + // Inter protocol route leak policy. This defines distribution + // of routes from one protocol to another protocol + container interleak-items { + list InterLeakP-list { + key "proto inst"; + + uses bgp_InterLeakP-group; + description + "Inter Protocol Leak Policy: Defines the distribution + of routes from one protocol to another protocol list"; + } + description + "Inter Protocol Leak Policy: Defines the distribution + of routes from one protocol to another protocol"; + } + + // Inject route leak policy route map + container injname-items { + list InjLeakP-list { + key "name rtMap"; + + uses bgp_InjLeakP-group; + description "Inject Route Policy list"; + } + description "Inject Route Policy"; + } + + // This object holds Bgp's Segment Routing configurations + container segrt-items { + list SgmtRtg-list { + key "sr"; + + uses bgp_SgmtRtg-group; + description "Object to hold BGP's MPLS Segment Routing configurations list"; + } + description "Object to hold BGP's MPLS Segment Routing configurations"; + } + } + + grouping bgp_VpnCtrlP-group { + description "Virtual Private Network Control Policy"; + + // Type + leaf type { + config "false"; + + type bgp_AfT; + description "Address Family Type"; + } + } + + grouping bgp_AdminDist-group { + description "Administrative Distance: This is the distance used by routers to select the best path when there are two or more different routes to the same destination from two different routing protocols."; + + // eBGP Distance + leaf eDist { + + type bgp_Distance; + description "eBGP Distance"; + } + + // iBGP Distance + leaf iDist { + + type bgp_Distance; + description "iBGP Distance"; + } + + // Local Distance + leaf localDist { + + type bgp_Distance; + description "Local Distance"; + } + } + + grouping bgp_DampeningCtrl-group { + description "Dampening Control: BGP route flap dampening parameters"; + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Apply route-map to specify dampening criteria"; + } + + // Dampening decay half life + leaf halfLife { + + type rtmap_DampHalfLife; + description "Decay Half Life, range 1-45"; + } + + // Dampening reuse limit + leaf reuse { + + type rtmap_DampReuse; + description "Dampening Reuse Limit"; + } + + // Dampening suppress limit + leaf suppress { + + type rtmap_DampSuppress; + description "Dampening Suppress Limit"; + } + leaf maxSupprPenalty { + config "false"; + type uint32; + description "Max Suppress Penalty"; + } + + // Dampening max suppress time + leaf maxSuppressTime { + + type rtmap_DampMaxSuppressTime; + description "Max Suppress Time"; + } + } + + grouping bgp_AdvPrefix-group { + description "Advertise To Prefix"; + leaf addr { + type address_Ip; + description "IP address of the network or prefix to advertise"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route map to modify attributes"; + } + } + + grouping bgp_AggAddr-group { + description "Configure BGP aggregate prefixes"; + leaf addr { + type address_Ip; + description "Aggregate Address"; + } + leaf adverMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description + "Advertise Map: Route map used to select + attribute information from selected routes"; + } + leaf attrMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description + "Attribute Map: Route map to set attribute + information of aggregate"; + } + + // Generate AS set path info and community info from contributing paths + leaf asSet { + + type bgp_AsSet; + description "AS-SET"; + } + + // Aggregate Address Summary only + leaf summaryOnly { + + type bgp_SummaryOnly; + description "Aggregate address Summary only"; + } + leaf supprMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Suppress Map to conditionally filter more-specific routes"; + } + } + + grouping bgp_AddlPath-group { + description + "Additional Paths: Advertise paths through the same + peering session for the same prefix without the new + implicitly replacing any previous paths."; + + // Capability + leaf capability { + + type bgp_AddlPathCapT; + description "Additional paths capability"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route map name for path selection"; + } + } + + grouping bgp_Route-group { + description "Route"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Version of the route + // Ephemeral data + leaf ver { + config "false"; + + type bgp_RtVer; + description "Version"; + } + + // Route flags + // Ephemeral data + leaf rtFlags { + config "false"; + + type bgp_RtFlags; + description "Flags"; + } + + // Ephemeral data + leaf numPaths { + config "false"; + type uint32; + description "Number of paths available"; + } + + // Bestpath Id + // Ephemeral data + leaf bestPathId { + config "false"; + + type bgp_PathId; + description "Bestpath Id"; + } + + // Ephemeral data + leaf pfx { + config "false"; + type address_Ip; + description "Prefix"; + } + + // This object holds the bgp AS path information + // Ephemeral data + container path-items { + + // Ephemeral data + list Path-list { + config "false"; + key "peer id nh importedRd origImportedRd recvd"; + + uses bgp_Path-group; + description "Path: BGP AS path information list"; + } + description "Path: BGP AS path information"; + } + } + + grouping bgp_Path-group { + description "Path: BGP AS path information"; + + // Ephemeral data + leaf peer { + config "false"; + type address_Ip; + description "Peer"; + } + + // Path id + // Ephemeral data + leaf id { + config "false"; + + type bgp_PathId; + description "ID"; + } + + // Ephemeral data + leaf nh { + config "false"; + type address_Ip; + description "Nexthop"; + } + + // Nexthop metric + // Ephemeral data + leaf nhMetric { + config "false"; + + type bgp_Metric; + description "Nexthop Metric"; + } + + // Path type + // Ephemeral data + leaf type { + config "false"; + + type bgp_PathT; + description "Type"; + } + + // Path status + // Ephemeral data + leaf operSt { + config "false"; + + type bgp_PathSt; + description "Operational State"; + } + + // Path flags + // Ephemeral data + leaf flags { + config "false"; + + type bgp_PathFlags; + description "Flags"; + } + + // Origin + // Ephemeral data + leaf origin { + config "false"; + + type bgp_Origin; + description "Origin"; + } + + // Metric + // Ephemeral data + leaf metric { + config "false"; + + type rtmap_Metric; + description "Metric"; + } + + // Local preference + // Ephemeral data + leaf localPref { + config "false"; + + type rtmap_LocalPref; + description "Local Preference"; + } + + // Weight + // Ephemeral data + leaf weight { + config "false"; + + type rtmap_Weight; + description "Weight"; + } + + // Ephemeral data + leaf aggr { + config "false"; + type address_Ip; + description "Aggregator"; + } + + // Aggregator AS + // Ephemeral data + leaf aggrAs { + config "false"; + + type bgp_AsnNum; + description "Aggregator ASN"; + } + + // Ephemeral data + leaf importedRd { + config "false"; + type mtx_array_community; + description "Imported Src Route Distinguisher"; + } + + // Ephemeral data + leaf origImportedRd { + config "false"; + type mtx_array_community; + description "Original Imported Src Route Distinguisher"; + } + + // Ephemeral data + leaf recvd { + config "false"; + type boolean; + description "Received Unmodified Path From Adj-RIB-In"; + } + + // Ephemeral data + leaf unknownAttrData { + config "false"; + type string; + description "Unknown Attribute Data"; + } + + // Unknown Attribute Data + // Ephemeral data + leaf unknownAttrLen { + config "false"; + + type bgp_UnknownAttrLen; + description "Unknown Attribute Length"; + } + leaf discardedAttrData { + config "false"; + type string; + description "Discarded Attribute Data"; + } + + // Discarded Attribute Data + leaf discardedAttrLen { + config "false"; + + type bgp_DiscardedAttrLen; + description "Discarded Attribute Length"; + } + + // Ephemeral data + leaf regComm { + config "false"; + type string; + description "Community"; + } + + // Ephemeral data + leaf extComm { + config "false"; + type string; + description "Extcommunity"; + } + + // Ephemeral data + leaf asPath { + config "false"; + type string; + description "AS-Path"; + } + + // Ephemeral data + leaf rcvdLbl { + config "false"; + type string; + description "Received label"; + } + + // Ephemeral data + leaf originatorId { + config "false"; + type address_Ip; + description "Originator Id"; + } + + // Ephemeral data + leaf clusterLst { + config "false"; + type string; + description "Cluster-List"; + } + + // Ephemeral data + leaf peerRtrId { + config "false"; + type string; + description "Peer router id ipaddress"; + } + + // Ephemeral data + leaf numImported { + config "false"; + type uint16; + description "Number of imported paths in the prefix"; + } + + // Ephemeral data + leaf importedLst { + config "false"; + type string; + description "List of imported paths"; + } + + // Ephemeral data + leaf importedSrc { + config "false"; + type string; + description "Imported from source info"; + } + + // Ephemeral data + leaf origImportedSrc { + config "false"; + type string; + description "Original Imported source info"; + } + + // Ephemeral data + leaf gatewayIp { + config "false"; + type address_Ip; + description "Gateway Ip advertised by BGP for EVPN Type-5 routes"; + } + + // This object holds the bgp path AS segment information + // Ephemeral data + container seg-items { + + // Ephemeral data + list AsSeg-list { + config "false"; + key "order"; + + uses bgp_AsSeg-group; + description + "Autonomous System Segment: BGP + Path AS Segment information. list"; + } + description + "Autonomous System Segment: BGP + Path AS Segment information."; + } + + // Ephemeral data + container rcomm-items { + + // Ephemeral data + list RegComm-list { + config "false"; + key "community"; + + uses bgp_RegComm-group; + description "Regular Community list"; + } + description "Regular Community"; + } + + // Ephemeral data + container ecomm-items { + + uses bgp_ExtComm-group; + description "Extended Community"; + } + + // Link-state Attribute + // Ephemeral data + container lnkstattr-items { + + uses bgp_LnkStAttr-group; + description "Link-state attribute"; + } + + // Prefix-SID Attribute + // Ephemeral data + container pfxsid-items { + + uses bgp_PfxSidAttr-group; + description "Prefix-SID attribute"; + } + + // PMSI Tunnel Attribute + // Ephemeral data + container pmsi-items { + + uses bgp_PmsiTunAttr-group; + description "PMSI Tunnel Attribute"; + } + + // Tunnel Encapsulation Attribute + // Ephemeral data + container tunencap-items { + + uses bgp_TunEncapAttr-group; + description "Tunnel Encapsulation Attribute"; + } + } + + grouping bgp_AsSeg-group { + description + "Autonomous System Segment: BGP + Path AS Segment information."; + + // type + leaf type { + config "false"; + + type bgp_AsSegT; + description "Type"; + } + + // Order + // Ephemeral data + leaf order { + config "false"; + + type bgp_Order; + description "Order"; + } + + // This object holds the AS segment items + // Ephemeral data + container asn-items { + + // Ephemeral data + list AsItem-list { + config "false"; + key "order"; + + uses bgp_AsItem-group; + description "Autonomous System Item list"; + } + description "Autonomous System Item"; + } + } + + grouping bgp_AsItem-group { + description "Autonomous System Item"; + + // Order + // Ephemeral data + leaf order { + config "false"; + + type bgp_Order; + description "Order"; + } + + // AS number + // Ephemeral data + leaf asn { + config "false"; + + type bgp_AsnNum; + description "Autonomous System Number, takes value from (1-4294967295 | 1-65535[.(0-65535)])"; + } + } + + grouping bgp_RegComm-group { + description "Regular Community"; + + // Ephemeral data + leaf community { + config "false"; + type mtx_array_community; + description "Community"; + } + } + + grouping bgp_ExtComm-group { + description "Extended Community"; + + // Ephemeral data + leaf encap { + config "false"; + type string; + description "Encapsulation"; + } + + // Ephemeral data + leaf rtrMac { + config "false"; + type address_Mac; + description "Router Mac address from nve"; + } + + // Extended community route-target attribute entry + // Ephemeral data + container rt-items { + + // Ephemeral data + list ExtCommRt-list { + config "false"; + key "community"; + + uses bgp_ExtCommRt-group; + description "Route-target attribute Extended Community list"; + } + description "Route-target attribute Extended Community"; + } + } + + grouping bgp_ExtCommRt-group { + description "Route-target attribute Extended Community"; + + // Ephemeral data + leaf community { + config "false"; + type mtx_array_community; + description "Community"; + } + } + + grouping bgp_LnkStAttr-group { + description "Link-state attribute"; + + // Link attribute TLV flags + // Ephemeral data + leaf lnkAttrFlags { + config "false"; + + type bgp_LnkLsAttrFlags; + description "Link-state Link TLV attribute flags"; + } + + // Ephemeral data + leaf attrLen { + config "false"; + type uint16; + description "Link-state attribute length"; + } + + // Link-state Attribute Entry + // Ephemeral data + container tlv-items { + + // Ephemeral data + list LnkStAttrEntry-list { + config "false"; + key "type"; + + uses bgp_LnkStAttrEntry-group; + description "Link-state attributei entry list"; + } + description "Link-state attributei entry"; + } + } + + grouping bgp_LnkStAttrEntry-group { + description "Link-state attributei entry"; + + // Type + // Ephemeral data + leaf type { + config "false"; + + type bgp_LsAttrEntryType; + description "Link-state TLV code point"; + } + + // Ephemeral data + leaf val { + config "false"; + type string; + description "Value"; + } + } + + grouping bgp_PfxSidAttr-group { + description "Prefix-SID attribute"; + + // Ephemeral data + leaf pfxSidAttrLen { + config "false"; + type uint16; + description "Prefix-SID attribute length"; + } + + // Prefix-SID Attribute Entry + // Ephemeral data + container tlv-items { + + // Ephemeral data + list PfxSidAttrEntry-list { + config "false"; + key "type"; + + uses bgp_PfxSidAttrEntry-group; + description "Prefix-SID attribute entry list"; + } + description "Prefix-SID attribute entry"; + } + } + + grouping bgp_PfxSidAttrEntry-group { + description "Prefix-SID attribute entry"; + + // Type + // Ephemeral data + leaf type { + config "false"; + + type bgp_PfxSidAttrEntryType; + description "Link-state TLV code point"; + } + + // Ephemeral data + leaf len { + config "false"; + type uint16; + description "Length"; + } + + // Ephemeral data + leaf val { + config "false"; + type string; + description "Value"; + } + } + + grouping bgp_PmsiTunAttr-group { + description "PMSI Tunnel Attribute"; + + // Ephemeral data + leaf flags { + config "false"; + + type string; + description "PMSI Tunnel Attribute Flags"; + } + + // Tunnel Type + // Ephemeral data + leaf tunType { + config "false"; + + type bgp_PmsiTunType; + description "PMSI Tunnel Type"; + } + + // Ephemeral data + leaf lbl { + config "false"; + type uint32; + description "PMSI label"; + } + + // Ephemeral data + leaf tunId { + config "false"; + type address_Ip; + description "PMSI Tunnel ID"; + } + } + + grouping bgp_TunEncapAttr-group { + description "Tunnel Encapsulation Attribute"; + + // Ephemeral data + leaf attrLen { + config "false"; + type uint16; + description "Tunnel Encapsulation attribute length"; + } + } + + grouping bgp_VpnRoute-group { + description "VPN Route information"; + + // Ephemeral data + leaf rd { + config "false"; + type mtx_array_community; + description "Route Distinguisher"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Version of the route + // Ephemeral data + leaf ver { + config "false"; + + type bgp_RtVer; + description "Version"; + } + + // Route flags + // Ephemeral data + leaf rtFlags { + config "false"; + + type bgp_RtFlags; + description "Flags"; + } + + // Ephemeral data + leaf numPaths { + config "false"; + type uint32; + description "Number of paths available"; + } + + // Bestpath Id + // Ephemeral data + leaf bestPathId { + config "false"; + + type bgp_PathId; + description "Bestpath Id"; + } + + // Ephemeral data + leaf pfx { + config "false"; + type address_Ip; + description "Prefix"; + } + + // This object holds the bgp AS path information + // Ephemeral data + container path-items { + + // Ephemeral data + list Path-list { + config "false"; + key "peer id nh importedRd origImportedRd recvd"; + + uses bgp_Path-group; + description "Path: BGP AS path information list"; + } + description "Path: BGP AS path information"; + } + } + + grouping bgp_LblRoute-group { + description "Labeled Route"; + + // Ephemeral data + leaf rd { + config "false"; + type mtx_array_community; + description "Route Distinguisher"; + } + + // Labeled address-family route flags + // Ephemeral data + leaf rtLblAfFlags { + config "false"; + + type bgp_RtLblAfFlags; + description "Labeled address-family route flags"; + } + + // Ephemeral data + leaf rtLblAfVer { + config "false"; + type uint32; + description "Labeled address-family version"; + } + + // Local label + // Ephemeral data + leaf locLbl { + config "false"; + + type bgp_Lbl; + description "Local label"; + } + + // Ephemeral data + leaf pfxLblHoldDownDelTs { + config "false"; + type union { + type string; + type uint64; + } + description "Prefix label hold down delete timestamp"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Version of the route + // Ephemeral data + leaf ver { + config "false"; + + type bgp_RtVer; + description "Version"; + } + + // Route flags + // Ephemeral data + leaf rtFlags { + config "false"; + + type bgp_RtFlags; + description "Flags"; + } + + // Ephemeral data + leaf numPaths { + config "false"; + type uint32; + description "Number of paths available"; + } + + // Bestpath Id + // Ephemeral data + leaf bestPathId { + config "false"; + + type bgp_PathId; + description "Bestpath Id"; + } + + // Ephemeral data + leaf pfx { + config "false"; + type address_Ip; + description "Prefix"; + } + + // This object holds the bgp AS path information + // Ephemeral data + container path-items { + + // Ephemeral data + list Path-list { + config "false"; + key "peer id nh importedRd origImportedRd recvd"; + + uses bgp_Path-group; + description "Path: BGP AS path information list"; + } + description "Path: BGP AS path information"; + } + } + + grouping bgp_LnkStRoute-group { + description "Link State Route"; + + // Ephemeral data + leaf pfx { + config "false"; + type string; + description "Link-state NLRI"; + } + + // NLRI Type + // Ephemeral data + leaf nlriType { + config "false"; + + type bgp_LsNlriType; + description "Link-state NLRI type"; + } + + // Protocol Id + // Ephemeral data + leaf protoId { + config "false"; + + type bgp_LsProtoId; + description "Link-state NLRI Protocol ID"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Version of the route + // Ephemeral data + leaf ver { + config "false"; + + type bgp_RtVer; + description "Version"; + } + + // Route flags + // Ephemeral data + leaf rtFlags { + config "false"; + + type bgp_RtFlags; + description "Flags"; + } + + // Ephemeral data + leaf numPaths { + config "false"; + type uint32; + description "Number of paths available"; + } + + // Bestpath Id + // Ephemeral data + leaf bestPathId { + config "false"; + + type bgp_PathId; + description "Bestpath Id"; + } + + // This object holds the bgp AS path information + // Ephemeral data + container path-items { + + // Ephemeral data + list Path-list { + config "false"; + key "peer id nh importedRd origImportedRd recvd"; + + uses bgp_Path-group; + description "Path: BGP AS path information list"; + } + description "Path: BGP AS path information"; + } + } + + grouping bgp_EvpnRoute-group { + description "EVPN Route"; + + // Ephemeral data + leaf rd { + config "false"; + type mtx_array_community; + description "Route Distinguisher"; + } + + // Ephemeral data + leaf pfx { + config "false"; + type string; + description "EVPN prefix"; + } + + // EVPN route-type + // Ephemeral data + leaf rtType { + config "false"; + + type bgp_EvpnRtType; + description "EVPN route-type"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Version of the route + // Ephemeral data + leaf ver { + config "false"; + + type bgp_RtVer; + description "Version"; + } + + // Route flags + // Ephemeral data + leaf rtFlags { + config "false"; + + type bgp_RtFlags; + description "Flags"; + } + + // Ephemeral data + leaf numPaths { + config "false"; + type uint32; + description "Number of paths available"; + } + + // Bestpath Id + // Ephemeral data + leaf bestPathId { + config "false"; + + type bgp_PathId; + description "Bestpath Id"; + } + + // This object holds the bgp AS path information + // Ephemeral data + container path-items { + + // Ephemeral data + list Path-list { + config "false"; + key "peer id nh importedRd origImportedRd recvd"; + + uses bgp_Path-group; + description "Path: BGP AS path information list"; + } + description "Path: BGP AS path information"; + } + } + + grouping bgp_MvpnRoute-group { + description "MVPN Route"; + + // Ephemeral data + leaf rd { + config "false"; + type mtx_array_community; + description "Route Distinguisher"; + } + + // Ephemeral data + leaf pfx { + config "false"; + type string; + description "MVPN NLRI"; + } + + // MVPN route-type + // Ephemeral data + leaf rtType { + config "false"; + + type bgp_MvpnRtType; + description "MVPN route-type"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Version of the route + // Ephemeral data + leaf ver { + config "false"; + + type bgp_RtVer; + description "Version"; + } + + // Route flags + // Ephemeral data + leaf rtFlags { + config "false"; + + type bgp_RtFlags; + description "Flags"; + } + + // Ephemeral data + leaf numPaths { + config "false"; + type uint32; + description "Number of paths available"; + } + + // Bestpath Id + // Ephemeral data + leaf bestPathId { + config "false"; + + type bgp_PathId; + description "Bestpath Id"; + } + + // This object holds the bgp AS path information + // Ephemeral data + container path-items { + + // Ephemeral data + list Path-list { + config "false"; + key "peer id nh importedRd origImportedRd recvd"; + + uses bgp_Path-group; + description "Path: BGP AS path information list"; + } + description "Path: BGP AS path information"; + } + } + + grouping bgp_ImportedRoutes-group { + description "Display Imported Routes"; + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + + // This object holds the bgp vpn route information + // Ephemeral data + container vpnrt-items { + + // Ephemeral data + list VpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_VpnRoute-group; + description "VPN Route information list"; + } + description "VPN Route information"; + } + + // Ephemeral data + container lblrt-items { + + // Ephemeral data + list LblRoute-list { + config "false"; + key "pfx"; + + uses bgp_LblRoute-group; + description "Labeled Route list"; + } + description "Labeled Route"; + } + } + + grouping bgp_SelfOrigRoutes-group { + description "Display Self-originated Routes"; + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + } + + grouping bgp_InjectedRoutes-group { + description "Display Injected Routes"; + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + } + + grouping bgp_ExportedRoutes-group { + description "Display Exported Routes"; + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + + // This object holds the bgp vpn route information + // Ephemeral data + container vpnrt-items { + + // Ephemeral data + list VpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_VpnRoute-group; + description "VPN Route information list"; + } + description "VPN Route information"; + } + + // Ephemeral data + container lblrt-items { + + // Ephemeral data + list LblRoute-list { + config "false"; + key "pfx"; + + uses bgp_LblRoute-group; + description "Labeled Route list"; + } + description "Labeled Route"; + } + } + + grouping bgp_RcvdPathsRoutes-group { + description "Display Received Paths Routes"; + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + + // This object holds the bgp vpn route information + // Ephemeral data + container vpnrt-items { + + // Ephemeral data + list VpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_VpnRoute-group; + description "VPN Route information list"; + } + description "VPN Route information"; + } + + // Ephemeral data + container lblrt-items { + + // Ephemeral data + list LblRoute-list { + config "false"; + key "pfx"; + + uses bgp_LblRoute-group; + description "Labeled Route list"; + } + description "Labeled Route"; + } + + // Ephemeral data + container lsrt-items { + + // Ephemeral data + list LnkStRoute-list { + config "false"; + key "pfx"; + + uses bgp_LnkStRoute-group; + description "Link State Route list"; + } + description "Link State Route"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + + // MCAST-VPN route + // Ephemeral data + container mvpnrt-items { + + // Ephemeral data + list MvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_MvpnRoute-group; + description "MVPN Route list"; + } + description "MVPN Route"; + } + } + + grouping bgp_RtMapRoutes-group { + description "Display Routes matching rtmap name"; + + // Ephemeral data + leaf name { + config "false"; + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route ctrl name"; + } + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + + // This object holds the bgp vpn route information + // Ephemeral data + container vpnrt-items { + + // Ephemeral data + list VpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_VpnRoute-group; + description "VPN Route information list"; + } + description "VPN Route information"; + } + + // Ephemeral data + container lblrt-items { + + // Ephemeral data + list LblRoute-list { + config "false"; + key "pfx"; + + uses bgp_LblRoute-group; + description "Labeled Route list"; + } + description "Labeled Route"; + } + + // Ephemeral data + container lsrt-items { + + // Ephemeral data + list LnkStRoute-list { + config "false"; + key "pfx"; + + uses bgp_LnkStRoute-group; + description "Link State Route list"; + } + description "Link State Route"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + + // MCAST-VPN route + // Ephemeral data + container mvpnrt-items { + + // Ephemeral data + list MvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_MvpnRoute-group; + description "MVPN Route list"; + } + description "MVPN Route"; + } + } + + grouping bgp_FltrListRoutes-group { + description "Display Routes matching filter-list name"; + + // Ephemeral data + leaf name { + config "false"; + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route ctrl name"; + } + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + + // This object holds the bgp vpn route information + // Ephemeral data + container vpnrt-items { + + // Ephemeral data + list VpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_VpnRoute-group; + description "VPN Route information list"; + } + description "VPN Route information"; + } + + // Ephemeral data + container lblrt-items { + + // Ephemeral data + list LblRoute-list { + config "false"; + key "pfx"; + + uses bgp_LblRoute-group; + description "Labeled Route list"; + } + description "Labeled Route"; + } + + // Ephemeral data + container lsrt-items { + + // Ephemeral data + list LnkStRoute-list { + config "false"; + key "pfx"; + + uses bgp_LnkStRoute-group; + description "Link State Route list"; + } + description "Link State Route"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + + // MCAST-VPN route + // Ephemeral data + container mvpnrt-items { + + // Ephemeral data + list MvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_MvpnRoute-group; + description "MVPN Route list"; + } + description "MVPN Route"; + } + } + + grouping bgp_PfxListRoutes-group { + description "Display Routes matching prefix-list name"; + + // Ephemeral data + leaf name { + config "false"; + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route ctrl name"; + } + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + } + + grouping bgp_DampPathsRoutes-group { + description "Display Dampening Paths Routes"; + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + + // This object holds the bgp vpn route information + // Ephemeral data + container vpnrt-items { + + // Ephemeral data + list VpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_VpnRoute-group; + description "VPN Route information list"; + } + description "VPN Route information"; + } + + // Ephemeral data + container lblrt-items { + + // Ephemeral data + list LblRoute-list { + config "false"; + key "pfx"; + + uses bgp_LblRoute-group; + description "Labeled Route list"; + } + description "Labeled Route"; + } + + // Ephemeral data + container lsrt-items { + + // Ephemeral data + list LnkStRoute-list { + config "false"; + key "pfx"; + + uses bgp_LnkStRoute-group; + description "Link State Route list"; + } + description "Link State Route"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + + // MCAST-VPN route + // Ephemeral data + container mvpnrt-items { + + // Ephemeral data + list MvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_MvpnRoute-group; + description "MVPN Route list"; + } + description "MVPN Route"; + } + } + + grouping bgp_DampHistPathsRoutes-group { + description "Display Dampening History Paths Routes"; + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + + // This object holds the bgp vpn route information + // Ephemeral data + container vpnrt-items { + + // Ephemeral data + list VpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_VpnRoute-group; + description "VPN Route information list"; + } + description "VPN Route information"; + } + + // Ephemeral data + container lblrt-items { + + // Ephemeral data + list LblRoute-list { + config "false"; + key "pfx"; + + uses bgp_LblRoute-group; + description "Labeled Route list"; + } + description "Labeled Route"; + } + + // Ephemeral data + container lsrt-items { + + // Ephemeral data + list LnkStRoute-list { + config "false"; + key "pfx"; + + uses bgp_LnkStRoute-group; + description "Link State Route list"; + } + description "Link State Route"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + + // MCAST-VPN route + // Ephemeral data + container mvpnrt-items { + + // Ephemeral data + list MvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_MvpnRoute-group; + description "MVPN Route list"; + } + description "MVPN Route"; + } + } + + grouping bgp_RtTypeRoutes-group { + description "Display routes by route-type 1-5"; + + // EVPN and Linkstate route-type + // Ephemeral data + leaf rtType { + config "false"; + + type bgp_EvpnRtType; + description "EVPN route-type"; + } + + // Ephemeral data + container lsrt-items { + + // Ephemeral data + list LnkStRoute-list { + config "false"; + key "pfx"; + + uses bgp_LnkStRoute-group; + description "Link State Route list"; + } + description "Link State Route"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + } + + grouping bgp_EvpnVnIdRoutes-group { + description "Display Evpn routes by vni id 1-16777214"; + + // EVPN route-type + // Ephemeral data + leaf vnid { + config "false"; + + type bgp_Vnid; + description "EVPN vnid (Value should be in the range 1-16777214 when the feature is enabled.)"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + } + + grouping bgp_EvpnMacAddrRoutes-group { + description "Display Evpn routes by mac address EE:EE:EE:EE:EE:EE"; + + // Ephemeral data + leaf macaddr { + config "false"; + type address_Mac; + description "EVPN mac address"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + } + + grouping bgp_RdRoutes-group { + description "Display RD routes by format ASN2:NN ASN4:NN IPV4:NN"; + + // Ephemeral data + leaf rd { + config "false"; + type mtx_array_community; + description "Route Distinguisher"; + } + + // This object holds the bgp vpn route information + // Ephemeral data + container vpnrt-items { + + // Ephemeral data + list VpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_VpnRoute-group; + description "VPN Route information list"; + } + description "VPN Route information"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + + // MCAST-VPN route + // Ephemeral data + container mvpnrt-items { + + // Ephemeral data + list MvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_MvpnRoute-group; + description "MVPN Route list"; + } + description "MVPN Route"; + } + } + + grouping bgp_PfxRoutes-group { + description "Display Prefix routes by format IPV4 and IPV6 addr"; + + // Ephemeral data + leaf pfx { + config "false"; + type address_Ip; + description "Evpn/LnkState Prefix"; + } + + // Ephemeral data + container lsrt-items { + + // Ephemeral data + list LnkStRoute-list { + config "false"; + key "pfx"; + + uses bgp_LnkStRoute-group; + description "Link State Route list"; + } + description "Link State Route"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + } + + grouping bgp_EvpnEsRoutes-group { + description "Display Evpn Ethernet Segment routes by ESID"; + + // Ephemeral data + leaf esid { + config "false"; + type string { + pattern "[!-~]{1,10}"; + } + description "Evpn Ethernet Segment ID"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + } + + grouping bgp_NextHopRoutes-group { + description "Display next hop routes"; + + // Ephemeral data + leaf pfx { + config "false"; + type address_Ip; + description "Prefix"; + } + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + + // This object holds the bgp vpn route information + // Ephemeral data + container vpnrt-items { + + // Ephemeral data + list VpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_VpnRoute-group; + description "VPN Route information list"; + } + description "VPN Route information"; + } + + // Ephemeral data + container lblrt-items { + + // Ephemeral data + list LblRoute-list { + config "false"; + key "pfx"; + + uses bgp_LblRoute-group; + description "Labeled Route list"; + } + description "Labeled Route"; + } + + // Ephemeral data + container lsrt-items { + + // Ephemeral data + list LnkStRoute-list { + config "false"; + key "pfx"; + + uses bgp_LnkStRoute-group; + description "Link State Route list"; + } + description "Link State Route"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + + // MCAST-VPN route + // Ephemeral data + container mvpnrt-items { + + // Ephemeral data + list MvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_MvpnRoute-group; + description "MVPN Route list"; + } + description "MVPN Route"; + } + } + + grouping bgp_McastRtTypeRoutes-group { + description "Display MCAST routes by route-type 1-7"; + + // MCAST route-type + // Ephemeral data + leaf rtType { + config "false"; + + type bgp_MvpnRtType; + description "MVPN route-type"; + } + + // MCAST-VPN route + // Ephemeral data + container mvpnrt-items { + + // Ephemeral data + list MvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_MvpnRoute-group; + description "MVPN Route list"; + } + description "MVPN Route"; + } + } + + grouping bgp_DefRtLeakP-group { + description "Default Route Leak Policy"; + + // Scope of the policy (intra protocol, inter protcol, + // default route) + leaf scope { + + type rtleak_Scope; + default "defrt"; + description "Scope"; + } + leaf rtMap { + type string; + description "Route Map"; + } + } + + grouping bgp_InterLeakP-group { + description + "Inter Protocol Leak Policy: Defines the distribution + of routes from one protocol to another protocol"; + + // Scope of the policy (intra protocol, inter protcol, + // default route) + leaf scope { + + type rtleak_Scope; + default "inter"; + description "Scope"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map applied to redistributed routes"; + } + + // Protocol from where the routes are leaked + leaf proto { + + type rtleak_Proto; + description "Protocol"; + } + + // Routing protocol instance, the routing instance of the + // protocol from where the routes are being leaked + leaf inst { + + type rtleak_Inst; + description "Instance"; + } + + // Leak BGP routes from this Autonomous System (AS) <1-4294967295>|<1-65535>[.<0-65535>] Autonomous system number + leaf asn { + + type rtleak_Asn { + pattern "((none)|([1-9]{1}[0-9]{0,8}|[1-3]{1}[0-9]{1,9}|4{1}[0-1]{1}[0-9]{8}|4{1}2{1}[0-8]{1}[0-9]{7}|4{1}2{1}9{1}[0-3]{1}[0-9]{6}|4{1}2{1}9{1}4{1}[0-8]{1}[0-9]{5}|4{1}2{1}9{1}4{1}9{1}[0-5]{1}[0-9]{4}|4{1}2{1}9{1}4{1}9{1}6{1}[0-6]{1}[0-9]{3}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}[0-1]{1}[0-9]{2}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}2{1}[0-8]{1}[0-9]{1}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}2{1}9{1}[0-5]{1})|(([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\\.([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])))"; + } + description "Autonomous System Number"; + } + + // SRv6 Prefix Type which is being leaked + leaf srv6PrefixType { + + type rtleak_Srv6PrefixType; + description "SRv6 Prefix Type; Valid only when proto is srv6"; + } + } + + grouping bgp_InjLeakP-group { + description "Inject Route Policy"; + + // Copy attributes from aggregate + leaf copyAttr { + + type bgp_AdminSt; + description "Copy attributes from aggregate"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[!-~]{0,63}.*"; + } + description "Inject Route Map Name"; + } + + // Scope of the policy (intra protocol, inter protcol, + // default route) + leaf scope { + + type rtleak_Scope; + description "Scope"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map which specifies prefixes to inject"; + } + } + + grouping bgp_SgmtRtg-group { + description "Object to hold BGP's MPLS Segment Routing configurations"; + + leaf sr { + + type bgp_SgmntRtg; + description "Support MPLS SR options in BGP's Segment-Routing"; + } + + leaf sidAllocMod { + + type bgp_AllocMod; + description "per VRF SID allocation mode, under Dom or DomAF"; + } + leaf srv6SrcEncpAddr { + config "false"; + type address_Ip; + description "per VRF SRv6 Source Encapsulation Address, under Dom or DomAF"; + } + leaf srv6SID { + config "false"; + type address_Ip; + description "per VRF per AF SRv6 SID"; + } + leaf srv6LocName { + config "false"; + type string; + description "per VRF SRv6 SID Locator"; + } + leaf srv6LocId { + config "false"; + type uint16; + description "per VRF SRv6 Locator ID"; + } + leaf srv6LocPrfx { + config "false"; + type address_Ip; + description "per VRF SRv6 Locator Prefix"; + } + + // This object holds Bgp's Segment Routing Locator configuration + container loc-items { + list Locator-list { + key "name"; + + uses bgp_Locator-group; + description "Object to hold BGP's MPLS Segment Routing SRv6 Locator configurations list"; + } + description "Object to hold BGP's MPLS Segment Routing SRv6 Locator configurations"; + } + } + + grouping bgp_Locator-group { + description "Object to hold BGP's MPLS Segment Routing SRv6 Locator configurations"; + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern ".*[!-~]{1,80}.*"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Indicates whether locator state is operational"; + } + } + + grouping bgp_BmpSvr-group { + description "BMP server configuration"; + + // BMP server identifier + leaf id { + + type bgp_SrvId; + description "BMP Server Id"; + } + leaf addr { + type address_Ip; + description "IP address of the BMP server"; + } + leaf port { + type uint16 { + range "0..65535"; + } + description "Port number of the BMP server"; + } + leaf descr { + type string { + pattern "(.{1,80}).*|()"; + } + description "BMP server description string"; + } + leaf refreshIntvlDelay { + type uint16 { + range "30..720"; + } + default "30"; + description "Route refresh trigger delay"; + } + leaf refreshIntvlSkip { + type boolean; + default "false"; + description "Route refresh trigger skip"; + } + leaf delayIntvl { + type uint16 { + range "30..720"; + } + default "45"; + description "Initial connect delay"; + } + leaf statIntvl { + type uint16 { + range "0..720"; + } + description "Statistics reporting interval"; + } + + // BMP server session config + leaf adminSt { + + type bgp_BmpSt; + description "BMP server config state"; + } + + // BMP server VRF config + leaf vrfName { + + type l3_VrfName; + description "VRF for BMP server"; + } + + // BMP server Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface for BMP server"; + } + } + + grouping bgp_Gr-group { + description "Graceful Restart"; + + // Graceful restart controls + leaf ctrl { + + type bgp_GrCtrl; + description "Graceful Restart Control"; + } + + // Restart interval + leaf restartIntvl { + + type bgp_GrIntvl; + description "Restart Time Advertised to Peer"; + } + + // Stale interval for routes advertised by peer + leaf staleIntvl { + + type bgp_GrStaleIntvl; + description "Stale Time for Routes Advertised by Peer"; + } + } + + grouping bgp_Gs-group { + description "Graceful shutdown activation/deactivation information under global, peer and template mode"; + leaf gshutAware { + type boolean; + default "true"; + description "Lower preference of routes carrying graceful-shutdown community"; + } + leaf gshutActivate { + type boolean; + description "Send graceful-shutdown community on all routes"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + } + + grouping bgp_Peer-group { + description "BGP Peer: BGP information pertaining to a peer with ip"; + leaf addr { + type address_Ip; + description "IP Address of the neighbor"; + } + leaf password { + type string; + description "Configure a password for neighbor"; + } + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source interface of BGP session and updates"; + } + leaf dynRtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Dynamic/Prefix Peer Route Map"; + } + + // Maximum peers for prefix + leaf maxPeerCnt { + + type bgp_MaxPeerCnt; + description "Maximum Peers For Prefix"; + } + + // Bits in this property represent whether to inherit or + // not to inherit from template. + // To disable inheritance of an attribute from a template + // of a neighbor, set the corresponding bit of this + // property. + // For example, to disable inheritance of 'keepalive and hold + // timer' and BFD from a template, set this property with + // values - 'timer' and 'bfd'. + // A note that any attributes configured for the neighbor + // take priority over any attributes inherited from a + // template. + leaf inheritContPeerCtrl { + + type bgp_InheritContPeerCtrlType; + description "Inherit control of peer parameters"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern "(.{1,80}).*|()"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Administrative State"; + } + leaf asn { + type string; + description "Autonomous System Number, takes value from (1-4294967295 | 1-65535[.(0-65535)])"; + } + + // Generate system message when any neighbor state changes + leaf logNbrChgs { + + type bgp_LogNbrSt; + description "Log messages for Neighbor up/down events"; + } + + // Peer Fabric type + leaf peerType { + + type bgp_PeerFabType; + description "Neighbor Fabric Type"; + } + + leaf passwdType { + + type bgp_PwdType; + description "Password EnCrypt Type"; + } + + // Peer controls + leaf ctrl { + + type bgp_PeerControl; + description "Peer Controls"; + } + + // eBGP Multihop + leaf ttl { + + type bgp_TtlVal; + description "eBGP Multihop TTL value"; + } + + // Keepalive interval, how often you send keepalives + leaf kaIntvl { + + type bgp_KaIntvl; + description "Keepalive Interval"; + } + + // Hold interval, how long you wait before you declare the + // neighbor down + leaf holdIntvl { + + type bgp_HoldIntvl; + description "Hold Interval"; + } + + // Connection Mode + leaf connMode { + + type bgp_ConnMode; + description "BGP transport connection mode"; + } + leaf sessionContImp { + type string { + pattern ".*[!-~]{0,80}.*"; + } + description "Peer Session Template To Import From"; + } + leaf peerImp { + type string { + pattern ".*[!-~]{0,80}.*"; + } + description "Peer Template To Import From"; + } + + // Remove Private ASN + leaf privateASctrl { + + type bgp_PrivateASControl; + description "Remove private AS number from outbound updates"; + } + + // Egress Peer Engineering (EPE) for neighbor + leaf epe { + + type bgp_AdminSt; + description "Egress Peer Engineering EPE for neighbor"; + } + leaf epePeerSet { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Egress Peer Engineering EPE Peer-Set name"; + } + + // Low Memory Exempt + leaf lowMemExempt { + + type bgp_AdminSt; + description "Low Memory Exempt"; + } + + // Capability Suppress + leaf capSuppr4ByteAsn { + + type bgp_AdminSt; + description "Capability Suppress 4-byte-as"; + } + leaf affGrp { + type uint16; + description "Affinity group for the neighbor."; + } + leaf ttlScrtyHops { + type uint16 { + range "0..254"; + } + description "Enable TTL Security Mechanism"; + } + + // bmp-activate-server 1 + leaf bmpSrvId1St { + + type bgp_AdminSt; + description "Activate BMP Server 1"; + } + + // bmp-activate-server 2 + leaf bmpSrvId2St { + + type bgp_AdminSt; + description "Activate BMP Server 2"; + } + + // Dscp value, set it in tcp packets + leaf dscp { + + type bgp_BgpDscp; + description "Specify DSCP value for Locally Originated packets"; + } + + // Forced BFD session type + leaf bfdType { + + type bgp_BfdSessionType; + description "Specify BFD session type"; + } + + // Operational state Maximum Prefix Peers + leaf maxPfxPeers { + config "false"; + + type bgp_PfxPeerCounts; + description "Maximum Prefix Peers Count"; + } + + // Current Prefix Peers + leaf curPfxPeers { + config "false"; + + type bgp_PfxPeerCounts; + description "Current Prefix Peers Counts"; + } + + // Active Prefix Peers + leaf activePfxPeers { + config "false"; + + type bgp_PfxPeerCounts; + description "Active Prefix Peer Counts"; + } + + // Maximum Current Peers + leaf maxCurPeers { + config "false"; + + type bgp_PfxPeerCounts; + description "Maximum Current Peers Counts"; + } + + // Total Prefix Peers + leaf totalPfxPeers { + config "false"; + + type bgp_PfxPeerCounts; + description "Total Prefix Peers Counts"; + } + + // This object holds the path attribute type + container pathattr-items { + list PathAttr-list { + key "fltrType"; + + uses bgp_PathAttr-group; + description "Configure peer to filter optional attributes on a BGP Update message and treat the BGP Update Message as Withdraw or Discard the attribute list"; + } + description "Configure peer to filter optional attributes on a BGP Update message and treat the BGP Update Message as Withdraw or Discard the attribute"; + } + + // This objects hold graceful shutdown informations + container gs-items { + + uses bgp_Gs-group; + description "Graceful shutdown activation/deactivation information under global, peer and template mode"; + } + + // Mo to hold bfd multihop interval information + container mhbfdintvl-items { + + uses bgp_MhBfdIntvl-group; + description "Configure BFD session interval parameters"; + } + + // Mo to hold bfd multihop Authenticationinformation + container mhbfdauth-items { + + uses bgp_MhBfdAuth-group; + description "Configure BFD authentication parameters"; + } + + // This object holds local AS information pertaining to a peer + container localasn-items { + + uses bgp_LocalAsn-group; + description "Local AS: local AS information pertaining to a peer"; + } + + // This object holds bgp peer operational status information. + container ent-items { + list PeerEntry-list { + config "false"; + key "addr"; + + uses bgp_PeerEntry-group; + description + "BGP Peer Entry: BGP peer operational + status information. list"; + } + description + "BGP Peer Entry: BGP peer operational + status information."; + } + + // This object holds operational state information for + // bgp segment routing egress peer engineering + container epe-items { + + uses bgp_PeerEpeEntry-group; + description "BGP Peer Egress Peer Engineering Entry"; + } + + // This object holds per address family bgp peer information + container af-items { + list PeerAf-list { + key "type"; + + uses bgp_PeerAf-group; + description "Peer Address Family list"; + } + description "Peer Address Family"; + } + } + + grouping bgp_PathAttr-group { + description "Configure peer to filter optional attributes on a BGP Update message and treat the BGP Update Message as Withdraw or Discard the attribute"; + + // Attribute value + leaf fltrType { + + type bgp_AttrFltrType; + description "Specify type of action performed on the filtered BGP Update Message"; + } + + // This objects holds path-attribute value per neighbor + container dir-items { + list FltrAttr-list { + key "direction startVal endVal"; + + uses bgp_FltrAttr-group; + description "Specify a range of attributes to filter the BGP Update message list"; + } + description "Specify a range of attributes to filter the BGP Update message"; + } + } + + grouping bgp_FltrAttr-group { + description "Specify a range of attributes to filter the BGP Update message"; + + // Attribute value + leaf startVal { + + type bgp_AttrTypes; + description "Specify the start of the range of attributes"; + } + + leaf endVal { + + type bgp_AttrTypes; + description "Specify the end of the range of attributes"; + } + + leaf direction { + + type bgp_AttrFltrDir; + description "Specify the filter direction of the BGP Update messages"; + } + + leaf inheritFltrAttrCtrl { + + type bgp_FltrSt; + description "Specify the State of the filter. Whether its enabled or disabled. A Filter can only be disabled when peer inherits"; + } + } + + grouping bgp_MhBfdIntvl-group { + description "Configure BFD session interval parameters"; + + // TX interval in milliseconds + leaf minTxMs { + + type bgp_MhTxRxIntvlT; + description "Minimum transmit interval in milliseconds"; + } + + // RX interval in milliseconds + leaf minRxMs { + + type bgp_MhTxRxIntvlT; + description "Minimum receive interval in milliseconds"; + } + + // Configure detect multiplier for bfd sessions + leaf multiplier { + + type bgp_MultiplierT; + description "Detect multiplier for bfd sessions"; + } + } + + grouping bgp_MhBfdAuth-group { + description "Configure BFD authentication parameters"; + + // Authentication algorithm + leaf authName { + + type bgp_AuthNameT; + description "Authentication algorithm"; + } + + // Key ID value + leaf keyId { + + type bgp_KeyIdT; + description "Key ID value, range from 1 to 255"; + } + + // SHA1 secret value binary + leaf keyAsciiVal { + + type bgp_KeyValT; + description "SHA1 secret key in binary value"; + } + + // SHA1 secret value hex + leaf keyHexVal { + + type bgp_HkeyValT; + description "SHA1 secret key in hex value"; + } + } + + grouping bgp_LocalAsn-group { + description "Local AS: local AS information pertaining to a peer"; + + // Local ASN + leaf localAsn { + + type bgp_AsnNum; + description "Local Autonomous System Number"; + } + + // local ASN config + leaf asnPropagate { + + type bgp_AsnPropagation; + description "ASN Propagation"; + } + } + + grouping bgp_PeerEntry-group { + description + "BGP Peer Entry: BGP peer operational + status information."; + leaf addr { + config "false"; + type address_Ip; + description "IP Address of Peer"; + } + + // Peer Type + leaf type { + config "false"; + + type bgp_PeerType; + description "Peer Link Type"; + } + + // Peer router id + leaf rtrId { + config "false"; + + type ip_RtrId; + description "Router ID"; + } + + // Operational state + leaf operSt { + config "false"; + + type bgp_PeerOperSt; + description "Operational State"; + } + + // Previous Operational state + leaf prevOperSt { + config "false"; + + type bgp_PeerOperSt; + description "Previous Operational State"; + } + + // Shut state qualifier + leaf shutStQual { + config "false"; + + type bgp_ShutStQual; + description "Shut State Qualifier"; + } + leaf lastFlapTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last Flap Timestamp"; + } + leaf maxConnRetryIntvl { + config "false"; + type uint16; + default "60"; + description "Max Connect Retry Interval"; + } + + // Flags + leaf flags { + config "false"; + + type bgp_PeerFlags; + description "Flags"; + } + + // Advertised capability + leaf advCap { + config "false"; + + type bgp_CapT; + description "Advertised Capability"; + } + + // Received capability + leaf rcvCap { + config "false"; + + type bgp_CapT; + description "Received Capability"; + } + + // Connected interface + leaf connIf { + config "false"; + + type nw_IfId; + description "Directly Attached Interface"; + } + + // Negotiated hold time + leaf holdIntvl { + config "false"; + + type bgp_HoldIntvl; + description "Hold Interval in secs"; + } + + // Negotiated keepalive interval + leaf kaIntvl { + config "false"; + + type bgp_KaIntvl; + description "Keepalive Interval in secs"; + } + leaf localIp { + config "false"; + type address_Ip; + description "Local IP"; + } + + // Local L4 port + leaf localPort { + config "false"; + + type l4_Port; + description "Local port number of the local host"; + } + + // Remote L4 port + leaf remotePort { + config "false"; + + type l4_Port; + description "Remote port number of the remote host"; + } + + // Number of times connections established + leaf connEst { + config "false"; + + type cap_Quant; + description "Connections Established"; + } + + // Number of times connections dropped + leaf connDrop { + config "false"; + + type cap_Quant; + description "Connections Dropped"; + } + leaf updateElapsedTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last Update Received Timestamp"; + } + + // FD to connect to peer + leaf fd { + config "false"; + + type bgp_SockFD; + description "FD to Connect to Peer"; + } + + // Peer Index + leaf peerIdx { + config "false"; + + type bgp_PeerIdx; + description "Peer Index"; + } + + // Connection Attempts + leaf connAttempts { + config "false"; + + type bgp_ConnAttempts; + description "Connection Attempts"; + } + + // Peer idle state reason + leaf stReason { + config "false"; + + type bgp_StReason; + description "Peer Idle State Reason"; + } + + // Indicate if password is set + leaf passwdSet { + config "false"; + + type bgp_PasswdSet; + description "TCP MD5 Authentication"; + } + + // This objects hold graceful restart operational information. This + // is valid per neighbor + container gr-items { + + uses bgp_GrSt-group; + description "Graceful Restart State"; + } + + // This object holds peer event information + container ev-items { + + uses bgp_PeerEvents-group; + description "Peer Events"; + } + + // This object holds operational state information for + // bgp segment routing egress peer engineering + container epe-items { + + uses bgp_PeerEpeEntry-group; + description "BGP Peer Egress Peer Engineering Entry"; + } + + // This object holds bgp peer af operational status info + container af-items { + list PeerAfEntry-list { + config "false"; + key "type"; + + uses bgp_PeerAfEntry-group; + description "BGP Peer Address Family Entry list"; + } + description "BGP Peer Address Family Entry"; + } + + // This object holds bgp peer statistics operational information. + // This is a singleton within a peerEntry + container peerstats-items { + + uses bgp_PeerEntryStats-group; + description "Peer Entry Statistics"; + } + } + + grouping bgp_GrSt-group { + description "Graceful Restart State"; + + // Graceful state + leaf operSt { + config "false"; + + type bgp_PeerGrSt; + description "Operational State"; + } + + // Graceful restart interval advertised by peer + leaf restartIntvl { + config "false"; + + type bgp_PeerGrIntvl; + description "Peer Graceful Restart Interval"; + } + leaf grTs { + config "false"; + type union { + type string; + type uint64; + } + description "Graceful Restart Timestamp"; + } + } + + grouping bgp_PeerEvents-group { + description "Peer Events"; + + // Major error during last reset sent + leaf majErrRstSent { + config "false"; + + type bgp_MajNotifErr; + description "Major Error During Last Resent Sent"; + } + + // Minor error during last reset sent + leaf minErrRstSent { + config "false"; + + type bgp_MinNotifErr; + description "Minor Error During Last Reset Sent"; + } + + // Last error value sent + leaf lastErrValSent { + config "false"; + + type bgp_LastErrVal; + description "Last Error Value Sent"; + } + leaf rstSentTs { + config "false"; + type union { + type string; + type uint64; + } + description "Reset Sent Timestamp"; + } + + // Major error during last reset received + leaf majErrRstRsvd { + config "false"; + + type bgp_MajNotifErr; + description "Major Error During Last Reset Received"; + } + + // Minor error during last reset received + leaf minErrRstRsvd { + config "false"; + + type bgp_MinNotifErr; + description "Minor Error During Last Reset Received"; + } + + // Last error value received + leaf lastErrValRsvd { + config "false"; + + type bgp_LastErrVal; + description "Last Error Value Received"; + } + leaf rstRsvdTs { + config "false"; + type union { + type string; + type uint64; + } + description "Reset Received Timestamp"; + } + + // Last error length received + leaf lastErrLenRsvd { + config "false"; + + type bgp_LastErrLen; + description "Last Error Length Received"; + } + + // Last error length sent + leaf lastErrLenSent { + config "false"; + + type bgp_LastErrLen; + description "Last Error Length Sent"; + } + leaf lastErrDataRsvd { + config "false"; + type string; + description "Last Error Data Received"; + } + leaf lastErrDataSent { + config "false"; + type string; + description "Last Error Data Sent"; + } + } + + grouping bgp_PeerEpeEntry-group { + description "BGP Peer Egress Peer Engineering Entry"; + + // Egress peer engineering + leaf adminSt { + config "false"; + + type bgp_EgressPeerEng; + description "Egress Peer Engineering State"; + } + leaf sid { + config "false"; + type uint32; + description "EPE Peer Segment ID"; + } + leaf rpcSetID { + config "false"; + type uint32; + description "EPE Peer RPC Set ID"; + } + leaf peerSetName { + config "false"; + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "EPE Peer Set Name"; + } + leaf peerSetSid { + config "false"; + type uint32; + description "EPE Peer Set Segment ID"; + } + leaf peerSetRpcSetID { + config "false"; + type uint32; + description "EPE Peer Set RPC Set ID"; + } + + // Egress Peer Engineering Peer Adjacencies + container epeadj-items { + list PeerEpeAdj-list { + config "false"; + key "rpcSetID"; + + uses bgp_PeerEpeAdj-group; + description "Egress Peer Engineering Peer Adjacencies list"; + } + description "Egress Peer Engineering Peer Adjacencies"; + } + } + + grouping bgp_PeerEpeAdj-group { + description "Egress Peer Engineering Peer Adjacencies"; + leaf localAddr { + config "false"; + type address_Ip; + description "Local IP Address"; + } + leaf remoteAddr { + config "false"; + type address_Ip; + description "Remote IP Address"; + } + + // Interface index + leaf ifIndex { + config "false"; + + type nw_IfId; + description "Interface Index"; + } + leaf rpcSetID { + config "false"; + type uint32; + description "RPC Set ID"; + } + leaf sid { + config "false"; + type uint32; + description "Adjcency Segment ID"; + } + } + + grouping bgp_PeerAfEntry-group { + description "BGP Peer Address Family Entry"; + + // Local BGP table version + leaf tblVer { + config "false"; + + type bgp_TblVer; + description "Local BGP Table Version"; + } + + // Peer table version + leaf peerTblVer { + config "false"; + + type bgp_TblVer; + description "Peer Table Version"; + } + + // Table state + leaf tblSt { + config "false"; + + type bgp_TblSt; + description "Table State"; + } + + // Number of accepted paths + leaf acceptedPaths { + config "false"; + + type bgp_NumPaths; + description "Number of accepted paths"; + } + + // Number of denied paths + leaf deniedPaths { + config "false"; + + type bgp_NumPaths; + description "Number of denied paths"; + } + + // Number of withDrawn paths + leaf withDrawnPaths { + config "false"; + + type bgp_NumPaths; + description "Number of withDrawn paths"; + } + + // Number of treatAsWithdrawn paths + leaf treatAswithDrawnPaths { + config "false"; + + type bgp_NumPaths; + description "Number of treat-as-withdrawn paths"; + } + + // Memory consumed by the number of accepted paths + leaf memAccPaths { + config "false"; + + type bgp_MemConsumed; + description "Memory consumed by the number of accepted paths"; + } + + // Flags + leaf flags { + config "false"; + + type bgp_PeerAfFlags; + description "Flags"; + } + + // Prefixes Sent to peer + leaf pfxSent { + config "false"; + + type bgp_PfxSent; + description "Prefixes sent to peer"; + } + + // Prefixes Saved from peer + leaf pfxSaved { + config "false"; + + type bgp_PfxSaved; + description "Prefixes saved from peer"; + } + + // Prefixes Flushed from peer + leaf pfxFlushed { + config "false"; + + type bgp_PfxFlushed; + description "Prefixes flushed from peer"; + } + leaf lastEorRcvdTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last EOR Received Timestamp"; + } + leaf firstEorRcvdTs { + config "false"; + type union { + type string; + type uint64; + } + description "First EOR Received Timestamp"; + } + + // Type + leaf type { + config "false"; + + type bgp_AfT; + description "Address Family Type"; + } + } + + grouping bgp_PeerEntryStats-group { + description "Peer Entry Statistics"; + + // BGP Peer Stats Number of BGP Open Messages sent + leaf openSent { + config "false"; + + type bgp_PeerCount; + description "Number of Open Messages Sent"; + } + + // Number of BGP Open Messages received + leaf openRcvd { + config "false"; + + type bgp_PeerCount; + description "Number of Open Messages Received"; + } + + // Number of BGP Update Messages sent + leaf updateSent { + config "false"; + + type bgp_PeerCount; + description "Number of Update Messages Sent"; + } + + // Number of BGP Update Messages received + leaf updateRcvd { + config "false"; + + type bgp_PeerCount; + description "Number of Update Messages Received"; + } + + // Number of BGP Keepalive Messages sent + leaf kaSent { + config "false"; + + type bgp_PeerCount; + description "Number of Keepalive Messages Sent"; + } + + // Number of BGP Keepalive Messages received + leaf kaRcvd { + config "false"; + + type bgp_PeerCount; + description "Number of Keepalive Messages Received"; + } + + // Number of BGP Route Refresh Messages sent + leaf routeRefreshSent { + config "false"; + + type bgp_PeerCount; + description "Number of Route Refresh Messages Sent"; + } + + // Number of BGP Route Refresh Messages received + leaf routeRefreshRcvd { + config "false"; + + type bgp_PeerCount; + description "Number of Route Refresh Messages Received"; + } + + // Number of BGP Capability Messages sent + leaf capSent { + config "false"; + + type bgp_PeerCount; + description "Number of Capability Messages Sent"; + } + + // Number of BGP Capability Messages received + leaf capRcvd { + config "false"; + + type bgp_PeerCount; + description "Number of Capability Messages Received"; + } + + // Number of BGP Notification Messages sent + leaf notifSent { + config "false"; + + type bgp_PeerCount; + description "Number of Notification Messages Sent"; + } + + // Number of BGP Notification Messages received + leaf notifRcvd { + config "false"; + + type bgp_PeerCount; + description "Number of Notification Messages Received"; + } + + // Number of BGP Messages sent + leaf msgSent { + config "false"; + + type bgp_PeerCount; + description "Number of Messages Sent"; + } + + // Number of BGP Messages received + leaf msgRcvd { + config "false"; + + type bgp_PeerCount; + description "Number of Messages Received"; + } + + // Number of BGP Message Bytes sent + leaf byteSent { + config "false"; + + type bgp_PeerCount; + description "Number of Bytes Sent"; + } + + // Number of BGP Message Bytes received + leaf byteRcvd { + config "false"; + + type bgp_PeerCount; + description "Number of Bytes Received"; + } + + // Bytes in send queue + leaf byteInSendQ { + config "false"; + + type bgp_PeerCount; + description "Bytes in Send Queue"; + } + + // Bytes in receive queue + leaf byteInRecvQ { + config "false"; + + type bgp_PeerCount; + description "Bytes in Receive Queue"; + } + leaf connectRetryTs { + config "false"; + type union { + type string; + type uint64; + } + description "Connect Retry Timestamp"; + } + leaf kaTs { + config "false"; + type union { + type string; + type uint64; + } + description "Keepalive Timestamp"; + } + + // Total Discarded Attributes + leaf totalDiscardedAttributes { + config "false"; + + type bgp_PeerCount; + description "Total number of attributes discarded"; + } + } + + grouping bgp_PeerAf-group { + description "Peer Address Family"; + + // Peer address family controls + leaf ctrl { + + type bgp_PeerAfControl; + description "Peer address-family control"; + } + leaf allowedSelfAsCnt { + type uint8 { + range "0..10"; + } + default "0"; + description "Allowed Self AS Count"; + } + + // Soft Reconfiguration + leaf softReconfigBackup { + + type bgp_SoftReconfigBackup; + description "Soft Reconfiguration"; + } + + // Neighbor advertisement interval + leaf advIntvl { + + type bgp_AdvInterval; + description "Neighbor advertisement interval"; + } + + leaf defOrg { + + type bgp_AdminSt; + description "Default Originate is enabled"; + } + leaf defOrgRtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Default Originate Route Map"; + } + + // Capability Additional Paths + leaf capAddlPaths { + + type bgp_CapAddlPathCapT; + description "Capability Additional Paths"; + } + leaf unSupprMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route-map to selectively unsuppress suppressed routes"; + } + + // as-override + leaf asOverride { + + type bgp_AdminSt; + description "Override matching AS-number while sending update"; + } + + // next-hop-third-party + leaf nhThirdparty { + + type bgp_AdminSt; + default "enabled"; + description "Compute a third-party nexthop if possible"; + } + leaf wght { + type string { + pattern ".*\\d*.*"; + } + description "Weight for the neighbor."; + } + leaf soo { + type mtx_array_community; + description "Site-of-origin extcommunity"; + } + + // Send-community standard + leaf sendComStd { + + type bgp_AdminSt; + description "Send-community standard"; + } + + // Send-community extended + leaf sendComExt { + + type bgp_AdminSt; + description "Send-community extended"; + } + + // encapsulation mpls for L2Vpn Evpn PeerAf + leaf encapMpls { + + type bgp_AdminSt; + description "Configure encapsulation type for EVPN routes"; + } + + // rewrite-evpn-rt-asn + rewrite-rt-asn + leaf rewriteRtAsn { + + type bgp_AdminSt; + description "Auto generate RTs for EBGP neighbor"; + } + + // Advertise Gateway IP to in Type-5 routes to neighbor + leaf advGwIp { + + type nw_AdminSt; + description "Advertise Gateway IP in Type-5 routes to neighbor"; + } + + // advertise local-labeled-route + leaf advLocalLblRt { + + type nw_AdminSt; + description "Advertise a route with local label to peer"; + } + leaf nhSelfAll { + type boolean; + description "Set address as next-hop for all routes"; + } + + // Bits in this property represent whether to inherit or + // not to inherit from template. + // To disable inheritance of an attribute from a template + // of a neighbor AF, set the corresponding bit of this + // property. + // For example, to disable inheritance of 'send community' + // from a template, set this property with value - + // 'send-com'. + // A note that any attributes configured for the neighbor AF + // take priority over any attributes inherited from a + // template. + leaf inheritContPeerPolicyCtrl { + + type bgp_InheritContPeerPolicyCtrlType; + description "Inherit control of peer policy parameters"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "bgp PeerAf"; + } + + // Type + leaf type { + + type bgp_AfT; + description "Address Family Type"; + } + + // This Mo holds conifg parameters to enable import routes into + // another address-family routes from the WAN edge device to the + // border leaf or border spine switch of a VXLAN setup + container import-items { + list ImportRt-list { + key "importType"; + + uses bgp_ImportRt-group; + description + "Neighbor conditional import routes into + another address-family list"; + } + description + "Neighbor conditional import routes into + another address-family"; + } + + // This policy tells on what to do when the number of prefixes + // advertised by the peer crosses a maximum limit specified. + // This is used as a defensive mechanism to protect resources + // on the router + container maxpfxp-items { + + uses bgp_MaxPfxP-group; + description "Maximum Prefix Policy"; + } + + // This object holds per advertise-map information + container advtmap-items { + + uses bgp_AdvtMap-group; + description "Advertise-Map: This object holds per advertise-map information."; + } + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + + // This object holds the bgp vpn route information + // Ephemeral data + container vpnrt-items { + + // Ephemeral data + list VpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_VpnRoute-group; + description "VPN Route information list"; + } + description "VPN Route information"; + } + + // Ephemeral data + container lblrt-items { + + // Ephemeral data + list LblRoute-list { + config "false"; + key "pfx"; + + uses bgp_LblRoute-group; + description "Labeled Route list"; + } + description "Labeled Route"; + } + + // Ephemeral data + container lsrt-items { + + // Ephemeral data + list LnkStRoute-list { + config "false"; + key "pfx"; + + uses bgp_LnkStRoute-group; + description "Link State Route list"; + } + description "Link State Route"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + + // MCAST-VPN route + // Ephemeral data + container mvpnrt-items { + + // Ephemeral data + list MvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_MvpnRoute-group; + description "MVPN Route list"; + } + description "MVPN Route"; + } + + // Ephemeral data + container advtdrt-items { + + uses bgp_AdvtdRoutes-group; + description "Display Advertised Routes to Peer"; + } + + // Ephemeral data + container rcvdrt-items { + + uses bgp_RcvdRoutes-group; + description "Display Received Routes from Peer"; + } + + // Show only Dampening Paths Routes + // Ephemeral data + container damppathsrt-items { + + uses bgp_DampPathsRoutes-group; + description "Display Dampening Paths Routes"; + } + + // Route control policy for routes coming/going to peers. + // There are few ways to apply this policy, controlling + // through route maps or prefix lists or filter lists. + // If both are specified, the order is implicit. Prefix + // lists are applied before route maps. + // The direction specifies whether to apply this policy + // in the incoming or outgoing direction + container rtctrl-items { + list RtCtrlP-list { + key "direction"; + + uses bgp_RtCtrlP-group; + description + "Route Control Policy: Policies to apply to + incoming/outgoing routes going to peers. list"; + } + description + "Route Control Policy: Policies to apply to + incoming/outgoing routes going to peers."; + } + + // This objects holds default route leak policy, + // this is not needed for FCS in our solution + container defrtleak-items { + + uses bgp_DefRtLeakP-group; + description "Default Route Leak Policy"; + } + container pfxctrl-items { + list PfxCtrlP-list { + key "direction"; + + uses bgp_PfxCtrlP-group; + description "Prefix-list Control Policy list"; + } + description "Prefix-list Control Policy"; + } + container fltrctrl-items { + list FltrCtrlP-list { + key "direction"; + + uses bgp_FltrCtrlP-group; + description "Filter-list Control Policy list"; + } + description "Filter-list Control Policy"; + } + + // This object holds bgp peer af peer policy inherit + container pol-items { + list PolicyInheritRule-list { + key "name"; + + uses bgp_PolicyInheritRule-group; + description "Rule for policy template import list"; + } + description "Rule for policy template import"; + } + } + + grouping bgp_ImportRt-group { + description + "Neighbor conditional import routes into + another address-family"; + + // Import routes category + leaf importType { + + type bgp_ImportRtT; + description + "Type of routes to import from another + address-family"; + } + leaf importRt { + type boolean; + description + "Import routes into another address-family when + neither route-map nor reoriginate specified"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Apply route-map to specify import criteria"; + } + leaf reoriginate { + type boolean; + description "Reoriginate the route with new route"; + } + } + + grouping bgp_MaxPfxP-group { + description "Maximum Prefix Policy"; + + // Maximum number of prefixes allowed from the peer + leaf maxPfx { + + type bgp_MaxPfx; + description "Maximum number of prefixes from this neighbor"; + } + + // Threshold at which warning is issued when number of + // prefixes crosses the threshold + leaf thresh { + + type bgp_MaxPfxThresh; + description "Threshold percentage at which to generate a warning"; + } + + // Action on what to do when the maximum prefix limit is + // reached + leaf action { + + type bgp_MaxPfxAct; + description "Action to do when limit is exceeded"; + } + + // Duration before we restart the peer when the prefix + // limit is reached (in minutes) + leaf restartTime { + + type bgp_MaxPfxDuration; + description "Restart bgp connection after prefix limit is exceeded"; + } + } + + grouping bgp_AdvtMap-group { + description "Advertise-Map: This object holds per advertise-map information."; + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "advertise route map"; + } + + // Condition route-map + leaf condition { + + type bgp_AdvtMapCondition; + description "Specify route-map for conditional advertisement"; + } + leaf condMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "conditional exist or non-exist route map"; + } + } + + grouping bgp_AdvtdRoutes-group { + description "Display Advertised Routes to Peer"; + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + + // This object holds the bgp vpn route information + // Ephemeral data + container vpnrt-items { + + // Ephemeral data + list VpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_VpnRoute-group; + description "VPN Route information list"; + } + description "VPN Route information"; + } + + // Ephemeral data + container lblrt-items { + + // Ephemeral data + list LblRoute-list { + config "false"; + key "pfx"; + + uses bgp_LblRoute-group; + description "Labeled Route list"; + } + description "Labeled Route"; + } + + // Ephemeral data + container lsrt-items { + + // Ephemeral data + list LnkStRoute-list { + config "false"; + key "pfx"; + + uses bgp_LnkStRoute-group; + description "Link State Route list"; + } + description "Link State Route"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + } + + grouping bgp_RcvdRoutes-group { + description "Display Received Routes from Peer"; + + // This object holds the bgp route information + // Ephemeral data + container rt-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfx"; + + uses bgp_Route-group; + description "Route list"; + } + description "Route"; + } + + // This object holds the bgp vpn route information + // Ephemeral data + container vpnrt-items { + + // Ephemeral data + list VpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_VpnRoute-group; + description "VPN Route information list"; + } + description "VPN Route information"; + } + + // Ephemeral data + container lblrt-items { + + // Ephemeral data + list LblRoute-list { + config "false"; + key "pfx"; + + uses bgp_LblRoute-group; + description "Labeled Route list"; + } + description "Labeled Route"; + } + + // Ephemeral data + container lsrt-items { + + // Ephemeral data + list LnkStRoute-list { + config "false"; + key "pfx"; + + uses bgp_LnkStRoute-group; + description "Link State Route list"; + } + description "Link State Route"; + } + + // EVPN route + // Ephemeral data + container evpnrt-items { + + // Ephemeral data + list EvpnRoute-list { + config "false"; + key "pfx rd"; + + uses bgp_EvpnRoute-group; + description "EVPN Route list"; + } + description "EVPN Route"; + } + } + + grouping bgp_RtCtrlP-group { + description + "Route Control Policy: Policies to apply to + incoming/outgoing routes going to peers."; + + // Operational state + leaf operSt { + config "false"; + + type bgp_RtCtrlOperSt; + description "Operational State"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Direction [in/out] + leaf direction { + + type rtctrl_RtCtrlDir; + description "Direction"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + } + + grouping bgp_PfxCtrlP-group { + description "Prefix-list Control Policy"; + + // Direction [in/out] + leaf direction { + + type bgp_RtCtrlDir; + description + "Direction: Specifies whether to apply this policy in the + incoming or outgoing direction."; + } + leaf list { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Name of Prefix List"; + } + } + + grouping bgp_FltrCtrlP-group { + description "Filter-list Control Policy"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Direction [in/out] + leaf direction { + + type bgp_RtCtrlDir; + description + "Direction: Specifies whether to apply this policy in the + incoming or outgoing direction."; + } + leaf list { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Name of Filter List"; + } + } + + grouping bgp_PolicyInheritRule-group { + description "Rule for policy template import"; + + // Sequence number of the inheritted peer policy template + leaf seq { + + type bgp_Order { + range "1..65535"; + } + description "Sequence Number"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern ".*[!-~]{1,80}.*"; + } + description "Name"; + } + } + + grouping bgp_PeerIf-group { + description "BGP Peer: BGP information pertaining to a peer with interface"; + + // Peer interface id + leaf id { + + type nw_IfId; + description "Interface identifier of the neighbor"; + } + leaf password { + type string; + description "Configure a password for neighbor"; + } + leaf operIpAddr { + config "false"; + type address_Ip; + description "IP Address of the interface"; + } + + // Bits in this property represent whether to inherit or + // not to inherit from template. + // To disable inheritance of an attribute from a template + // of a neighbor, set the corresponding bit of this + // property. + // For example, to disable inheritance of 'keepalive and hold + // timer' and BFD from a template, set this property with + // values - 'timer' and 'bfd'. + // A note that any attributes configured for the neighbor + // take priority over any attributes inherited from a + // template. + leaf inheritContPeerCtrl { + + type bgp_InheritContPeerCtrlType; + description "Inherit control of peer parameters"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern "(.{1,80}).*|()"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Administrative State"; + } + leaf asn { + type string; + description "Autonomous System Number, takes value from (1-4294967295 | 1-65535[.(0-65535)])"; + } + + // Generate system message when any neighbor state changes + leaf logNbrChgs { + + type bgp_LogNbrSt; + description "Log messages for Neighbor up/down events"; + } + + // Peer Fabric type + leaf peerType { + + type bgp_PeerFabType; + description "Neighbor Fabric Type"; + } + + leaf passwdType { + + type bgp_PwdType; + description "Password EnCrypt Type"; + } + + // Peer controls + leaf ctrl { + + type bgp_PeerControl; + description "Peer Controls"; + } + + // eBGP Multihop + leaf ttl { + + type bgp_TtlVal; + description "eBGP Multihop TTL value"; + } + + // Keepalive interval, how often you send keepalives + leaf kaIntvl { + + type bgp_KaIntvl; + description "Keepalive Interval"; + } + + // Hold interval, how long you wait before you declare the + // neighbor down + leaf holdIntvl { + + type bgp_HoldIntvl; + description "Hold Interval"; + } + + // Connection Mode + leaf connMode { + + type bgp_ConnMode; + description "BGP transport connection mode"; + } + leaf sessionContImp { + type string { + pattern ".*[!-~]{0,80}.*"; + } + description "Peer Session Template To Import From"; + } + leaf peerImp { + type string { + pattern ".*[!-~]{0,80}.*"; + } + description "Peer Template To Import From"; + } + + // Remove Private ASN + leaf privateASctrl { + + type bgp_PrivateASControl; + description "Remove private AS number from outbound updates"; + } + + // Egress Peer Engineering (EPE) for neighbor + leaf epe { + + type bgp_AdminSt; + description "Egress Peer Engineering EPE for neighbor"; + } + leaf epePeerSet { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Egress Peer Engineering EPE Peer-Set name"; + } + + // Low Memory Exempt + leaf lowMemExempt { + + type bgp_AdminSt; + description "Low Memory Exempt"; + } + + // Capability Suppress + leaf capSuppr4ByteAsn { + + type bgp_AdminSt; + description "Capability Suppress 4-byte-as"; + } + leaf affGrp { + type uint16; + description "Affinity group for the neighbor."; + } + leaf ttlScrtyHops { + type uint16 { + range "0..254"; + } + description "Enable TTL Security Mechanism"; + } + + // bmp-activate-server 1 + leaf bmpSrvId1St { + + type bgp_AdminSt; + description "Activate BMP Server 1"; + } + + // bmp-activate-server 2 + leaf bmpSrvId2St { + + type bgp_AdminSt; + description "Activate BMP Server 2"; + } + + // Dscp value, set it in tcp packets + leaf dscp { + + type bgp_BgpDscp; + description "Specify DSCP value for Locally Originated packets"; + } + + // Forced BFD session type + leaf bfdType { + + type bgp_BfdSessionType; + description "Specify BFD session type"; + } + + // Operational state Maximum Prefix Peers + leaf maxPfxPeers { + config "false"; + + type bgp_PfxPeerCounts; + description "Maximum Prefix Peers Count"; + } + + // Current Prefix Peers + leaf curPfxPeers { + config "false"; + + type bgp_PfxPeerCounts; + description "Current Prefix Peers Counts"; + } + + // Active Prefix Peers + leaf activePfxPeers { + config "false"; + + type bgp_PfxPeerCounts; + description "Active Prefix Peer Counts"; + } + + // Maximum Current Peers + leaf maxCurPeers { + config "false"; + + type bgp_PfxPeerCounts; + description "Maximum Current Peers Counts"; + } + + // Total Prefix Peers + leaf totalPfxPeers { + config "false"; + + type bgp_PfxPeerCounts; + description "Total Prefix Peers Counts"; + } + + // This object holds the path attribute type + container pathattr-items { + list PathAttr-list { + key "fltrType"; + + uses bgp_PathAttr-group; + description "Configure peer to filter optional attributes on a BGP Update message and treat the BGP Update Message as Withdraw or Discard the attribute list"; + } + description "Configure peer to filter optional attributes on a BGP Update message and treat the BGP Update Message as Withdraw or Discard the attribute"; + } + + // This objects hold graceful shutdown informations + container gs-items { + + uses bgp_Gs-group; + description "Graceful shutdown activation/deactivation information under global, peer and template mode"; + } + + // This object holds local AS information pertaining to a peer + container localasn-items { + + uses bgp_LocalAsn-group; + description "Local AS: local AS information pertaining to a peer"; + } + + // This object holds bgp peerif operational status information. + container ent-items { + list PeerIfEntry-list { + config "false"; + key "id"; + + uses bgp_PeerIfEntry-group; + description + "BGP Peer Interface Entry: BGP peer operational + status information. list"; + } + description + "BGP Peer Interface Entry: BGP peer operational + status information."; + } + + // This object holds per address family bgp peer information + container af-items { + list PeerAf-list { + key "type"; + + uses bgp_PeerAf-group; + description "Peer Address Family list"; + } + description "Peer Address Family"; + } + } + + grouping bgp_PeerIfEntry-group { + description + "BGP Peer Interface Entry: BGP peer operational + status information."; + + // Peer interface id + leaf id { + config "false"; + + type nw_IfId; + description "Interface id of the neighbor"; + } + + // Peer Type + leaf type { + config "false"; + + type bgp_PeerType; + description "Peer Link Type"; + } + + // Peer router id + leaf rtrId { + config "false"; + + type ip_RtrId; + description "Router ID"; + } + + // Operational state + leaf operSt { + config "false"; + + type bgp_PeerOperSt; + description "Operational State"; + } + + // Previous Operational state + leaf prevOperSt { + config "false"; + + type bgp_PeerOperSt; + description "Previous Operational State"; + } + + // Shut state qualifier + leaf shutStQual { + config "false"; + + type bgp_ShutStQual; + description "Shut State Qualifier"; + } + leaf lastFlapTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last Flap Timestamp"; + } + leaf maxConnRetryIntvl { + config "false"; + type uint16; + default "60"; + description "Max Connect Retry Interval"; + } + + // Flags + leaf flags { + config "false"; + + type bgp_PeerFlags; + description "Flags"; + } + + // Advertised capability + leaf advCap { + config "false"; + + type bgp_CapT; + description "Advertised Capability"; + } + + // Received capability + leaf rcvCap { + config "false"; + + type bgp_CapT; + description "Received Capability"; + } + + // Connected interface + leaf connIf { + config "false"; + + type nw_IfId; + description "Directly Attached Interface"; + } + + // Negotiated hold time + leaf holdIntvl { + config "false"; + + type bgp_HoldIntvl; + description "Hold Interval in secs"; + } + + // Negotiated keepalive interval + leaf kaIntvl { + config "false"; + + type bgp_KaIntvl; + description "Keepalive Interval in secs"; + } + leaf localIp { + config "false"; + type address_Ip; + description "Local IP"; + } + + // Local L4 port + leaf localPort { + config "false"; + + type l4_Port; + description "Local port number of the local host"; + } + + // Remote L4 port + leaf remotePort { + config "false"; + + type l4_Port; + description "Remote port number of the remote host"; + } + + // Number of times connections established + leaf connEst { + config "false"; + + type cap_Quant; + description "Connections Established"; + } + + // Number of times connections dropped + leaf connDrop { + config "false"; + + type cap_Quant; + description "Connections Dropped"; + } + leaf updateElapsedTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last Update Received Timestamp"; + } + + // FD to connect to peer + leaf fd { + config "false"; + + type bgp_SockFD; + description "FD to Connect to Peer"; + } + + // Peer Index + leaf peerIdx { + config "false"; + + type bgp_PeerIdx; + description "Peer Index"; + } + + // Connection Attempts + leaf connAttempts { + config "false"; + + type bgp_ConnAttempts; + description "Connection Attempts"; + } + + // Peer idle state reason + leaf stReason { + config "false"; + + type bgp_StReason; + description "Peer Idle State Reason"; + } + + // Indicate if password is set + leaf passwdSet { + config "false"; + + type bgp_PasswdSet; + description "TCP MD5 Authentication"; + } + + // This object holds peer event information + container ev-items { + + uses bgp_PeerEvents-group; + description "Peer Events"; + } + + // This object holds operational state information for + // bgp segment routing egress peer engineering + container epe-items { + + uses bgp_PeerEpeEntry-group; + description "BGP Peer Egress Peer Engineering Entry"; + } + + // This object holds bgp peer af operational status info + container af-items { + list PeerAfEntry-list { + config "false"; + key "type"; + + uses bgp_PeerAfEntry-group; + description "BGP Peer Address Family Entry list"; + } + description "BGP Peer Address Family Entry"; + } + + // This object holds bgp peer statistics operational information. + // This is a singleton within a peerEntry + container peerstats-items { + + uses bgp_PeerEntryStats-group; + description "Peer Entry Statistics"; + } + } + + grouping bgp_PeerCont-group { + description "Peer Container: parameters pertaining to peer templates"; + + // Bits in this property represent whether to inherit or + // not to inherit from template. + // To disable inheritance of an attribute from a template + // of a neighbor, set the corresponding bit of this + // property. + // For example, to disable inheritance of 'keepalive and hold + // timer' and BFD from a template, set this property with + // values - 'timer' and 'bfd'. + // A note that any attributes configured for the neighbor + // take priority over any attributes inherited from a + // template. + leaf inheritContPeerCtrl { + + type bgp_InheritContPeerCtrlType; + description "Inherit control of peer parameters"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern ".*[!-~]{1,80}.*"; + } + description "Name"; + } + leaf desc { + type string { + pattern "(.{1,80}).*|()"; + } + description "Description"; + } + + leaf adminSt { + + type nw_AdminSt; + description "Administrative State"; + } + leaf asn { + type string; + description "Autonomous System Number"; + } + + // Generate system message when any neighbor state changes + leaf logNbrChgs { + + type bgp_LogNbrSt; + description "Log Neighbor Changes"; + } + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + leaf password { + type string; + description "Configure a password for neighbor"; + } + + // Password Encrypt Type + leaf passwdType { + + type bgp_PwdType; + description "Password EnCrypt Type"; + } + + // Peer controls + leaf ctrl { + + type bgp_PeerControl; + description "Control"; + } + + // eBGP Multihop + leaf ttl { + + type bgp_TtlVal; + description "eBGP Multihop"; + } + + // Keepalive interval, how often you send keepalives + leaf kaIntvl { + + type bgp_KaIntvl; + description "Keepalive Interval"; + } + + // Hold interval, how long you wait before you declare the + // neighbor down + leaf holdIntvl { + + type bgp_HoldIntvl; + description "Hold Interval"; + } + + // Connection Mode + leaf connMode { + + type bgp_ConnMode; + description "Connection Mode"; + } + leaf sessionContImp { + type string { + pattern ".*[!-~]{0,80}.*"; + } + description + "Importing Session Specific properties from + Session Template"; + } + + // Remove Private ASN + leaf privateASctrl { + + type bgp_PrivateASControl; + description "Private AS Control"; + } + + // Peer Fabric type + leaf peerType { + + type bgp_PeerFabType; + description "Neighbor Fabric Type"; + } + + // Low Memory Exempt + leaf lowMemExempt { + + type bgp_AdminSt; + description "Low Memory Exempt"; + } + + // Capability Suppress + leaf capSuppr4ByteAsn { + + type bgp_AdminSt; + description "Capability Suppress 4-byte-as"; + } + leaf affGrp { + type uint16; + description "Affinity group for the neighbor."; + } + + // Egress Peer Engineering (EPE) for neighbor + leaf epe { + + type bgp_AdminSt; + description "Egress Peer Engineering EPE for neighbor"; + } + leaf epePeerSet { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Egress Peer Engineering EPE Peer-Set name"; + } + + // bmp-activate-server 1 + leaf bmpSrvId1St { + + type bgp_AdminSt; + description "Activate BMP Server 1"; + } + + // bmp-activate-server 2 + leaf bmpSrvId2St { + + type bgp_AdminSt; + description "Activate BMP Server 2"; + } + + // Dscp value, set it in tcp packets + leaf dscp { + + type bgp_BgpDscp; + description "Specify DSCP value for Locally Originated packets"; + } + leaf ttlScrtyHops { + type uint16 { + range "0..254"; + } + description + "Enable TTL Security Mechanism + with hop counts specified for remote peers"; + } + + // Forced BFD session type + leaf bfdType { + + type bgp_BfdSessionType; + description "Specify BFD session type"; + } + + // This object holds the path attribute type + container pathattr-items { + list PathAttr-list { + key "fltrType"; + + uses bgp_PathAttr-group; + description "Configure peer to filter optional attributes on a BGP Update message and treat the BGP Update Message as Withdraw or Discard the attribute list"; + } + description "Configure peer to filter optional attributes on a BGP Update message and treat the BGP Update Message as Withdraw or Discard the attribute"; + } + + // This objects hold graceful shutdown informations + container gs-items { + + uses bgp_Gs-group; + description "Graceful shutdown activation/deactivation information under global, peer and template mode"; + } + + // Mo to hold bfd multihop interval information + container mhbfdintvl-items { + + uses bgp_MhBfdIntvl-group; + description "Configure BFD session interval parameters"; + } + + // Mo to hold bfd multihop Authenticationinformation + container mhbfdauth-items { + + uses bgp_MhBfdAuth-group; + description "Configure BFD authentication parameters"; + } + + // This object holds local AS information pertaining to a peer + container localasn-items { + + uses bgp_LocalAsn-group; + description "Local AS: local AS information pertaining to a peer"; + } + + // This object holds per address family bgp peer information + container af-items { + list PeerAf-list { + key "type"; + + uses bgp_PeerAf-group; + description "Peer Address Family list"; + } + description "Peer Address Family"; + } + } + + grouping bgp_SessionCont-group { + description "Session Container: parameters related to session templates"; + + // Bits in this property represent whether to inherit or + // not to inherit from template. + // To disable inheritance of an attribute from a template + // of a neighbor, set the corresponding bit of this + // property. + // For example, to disable inheritance of 'keepalive and hold + // timer' and BFD from a template, set this property with + // values - 'timer' and 'bfd'. + // A note that any attributes configured for the neighbor + // take priority over any attributes inherited from a + // template. + leaf inheritContPeerCtrl { + + type bgp_InheritContPeerCtrlType; + description "Inherit control of peer parameters"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern ".*[!-~]{1,80}.*"; + } + description "Name"; + } + leaf desc { + type string { + pattern "(.{1,80}).*|()"; + } + description "Description"; + } + + leaf adminSt { + + type nw_AdminSt; + description "Administrative State"; + } + leaf asn { + type string; + description "Autonomous System Number"; + } + + // Generate system message when any neighbor state changes + leaf logNbrChgs { + + type bgp_LogNbrSt; + description "Log Neighbor Changes"; + } + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + leaf password { + type string; + description "Configure a password for neighbor"; + } + + // Password Encrypt Type + leaf passwdType { + + type bgp_PwdType; + description "Password EnCrypt Type"; + } + + // Peer controls + leaf ctrl { + + type bgp_PeerControl; + description "Control"; + } + + // eBGP Multihop + leaf ttl { + + type bgp_TtlVal; + description "eBGP Multihop"; + } + + // Keepalive interval, how often you send keepalives + leaf kaIntvl { + + type bgp_KaIntvl; + description "Keepalive Interval"; + } + + // Hold interval, how long you wait before you declare the + // neighbor down + leaf holdIntvl { + + type bgp_HoldIntvl; + description "Hold Interval"; + } + + // Connection Mode + leaf connMode { + + type bgp_ConnMode; + description "Connection Mode"; + } + leaf sessionContImp { + type string { + pattern ".*[!-~]{0,80}.*"; + } + description + "Importing Session Specific properties from + Session Template"; + } + + // Remove Private ASN + leaf privateASctrl { + + type bgp_PrivateASControl; + description "Private AS Control"; + } + + // Peer Fabric type + leaf peerType { + + type bgp_PeerFabType; + description "Neighbor Fabric Type"; + } + + // Low Memory Exempt + leaf lowMemExempt { + + type bgp_AdminSt; + description "Low Memory Exempt"; + } + + // Capability Suppress + leaf capSuppr4ByteAsn { + + type bgp_AdminSt; + description "Capability Suppress 4-byte-as"; + } + leaf affGrp { + type uint16; + description "Affinity group for the neighbor."; + } + + // Egress Peer Engineering (EPE) for neighbor + leaf epe { + + type bgp_AdminSt; + description "Egress Peer Engineering EPE for neighbor"; + } + leaf epePeerSet { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Egress Peer Engineering EPE Peer-Set name"; + } + + // bmp-activate-server 1 + leaf bmpSrvId1St { + + type bgp_AdminSt; + description "Activate BMP Server 1"; + } + + // bmp-activate-server 2 + leaf bmpSrvId2St { + + type bgp_AdminSt; + description "Activate BMP Server 2"; + } + + // Dscp value, set it in tcp packets + leaf dscp { + + type bgp_BgpDscp; + description "Specify DSCP value for Locally Originated packets"; + } + leaf ttlScrtyHops { + type uint16 { + range "0..254"; + } + description + "Enable TTL Security Mechanism + with hop counts specified for remote peers"; + } + + // Forced BFD session type + leaf bfdType { + + type bgp_BfdSessionType; + description "Specify BFD session type"; + } + + // This object holds the path attribute type + container pathattr-items { + list PathAttr-list { + key "fltrType"; + + uses bgp_PathAttr-group; + description "Configure peer to filter optional attributes on a BGP Update message and treat the BGP Update Message as Withdraw or Discard the attribute list"; + } + description "Configure peer to filter optional attributes on a BGP Update message and treat the BGP Update Message as Withdraw or Discard the attribute"; + } + + // This objects hold graceful shutdown informations + container gs-items { + + uses bgp_Gs-group; + description "Graceful shutdown activation/deactivation information under global, peer and template mode"; + } + + // Mo to hold bfd multihop interval information + container mhbfdintvl-items { + + uses bgp_MhBfdIntvl-group; + description "Configure BFD session interval parameters"; + } + + // Mo to hold bfd multihop Authenticationinformation + container mhbfdauth-items { + + uses bgp_MhBfdAuth-group; + description "Configure BFD authentication parameters"; + } + + // This object holds local AS information pertaining to a peer + container localasn-items { + + uses bgp_LocalAsn-group; + description "Local AS: local AS information pertaining to a peer"; + } + } + + grouping bgp_PolicyCont-group { + description "Policy Container: parameters pertaining to policy templates"; + + // Peer address family controls + leaf ctrl { + + type bgp_PeerAfControl; + description "Control"; + } + leaf allowedSelfAsCnt { + type uint8 { + range "0..10"; + } + default "0"; + description "Allowed Self AS Count"; + } + + // Soft Reconfiguration + leaf softReconfigBackup { + + type bgp_SoftReconfigBackup; + description "Soft Reconfiguration"; + } + + // Neighbor advertisement interval + leaf advIntvl { + + type bgp_AdvInterval; + description "Neighbor advertisement interval"; + } + + leaf defOrg { + + type bgp_AdminSt; + description "Default Originate is enabled"; + } + leaf defOrgRtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Default Originate Route Map"; + } + + // Capability Additional Paths + leaf capAddlPaths { + + type bgp_CapAddlPathCapT; + description "Capability Additional Paths"; + } + leaf unSupprMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route-map to selectively unsuppress suppressed routes"; + } + + // as-override + leaf asOverride { + + type bgp_AdminSt; + description "Override matching AS-number while sending update"; + } + + // next-hop-third-party + leaf nhThirdparty { + + type bgp_AdminSt; + default "enabled"; + description "Compute a third-party nexthop if possible"; + } + leaf wght { + type string { + pattern ".*\\d*.*"; + } + description "Weight for the neighbor."; + } + leaf soo { + type mtx_array_community; + description "Site-of-origin extcommunity"; + } + + // Send-community standard + leaf sendComStd { + + type bgp_AdminSt; + description "Send-community standard"; + } + + // Send-community extended + leaf sendComExt { + + type bgp_AdminSt; + description "Send-community extended"; + } + + // template: advertise local-labeled-route + leaf advLocalLblRt { + + type nw_AdminSt; + description "Advertise a route with local label to peer"; + } + leaf nhSelfAll { + type boolean; + description "Set address as next-hop for all routes"; + } + + // Bits in this property represent whether to inherit or + // not to inherit from template. + // To disable inheritance of an attribute from a template + // of a neighbor AF, set the corresponding bit of this + // property. + // For example, to disable inheritance of 'send community' + // from a template, set this property with value - + // 'send-com'. + // A note that any attributes configured for the neighbor AF + // take priority over any attributes inherited from a + // template. + leaf inheritContPeerPolicyCtrl { + + type bgp_InheritContPeerPolicyCtrlType; + description "Inherit control of peer policy parameters"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern ".*[!-~]{1,80}.*"; + } + description "Name"; + } + + // This Mo holds conifg parameters to enable import routes into + // another address-family routes from the WAN edge device to the + // border leaf or border spine switch of a VXLAN setup + container import-items { + list ImportRt-list { + key "importType"; + + uses bgp_ImportRt-group; + description + "Neighbor conditional import routes into + another address-family list"; + } + description + "Neighbor conditional import routes into + another address-family"; + } + + // This policy tells on what to do when the number of prefixes + // advertised by the peer crosses a maximum limit specified. + // This is used as a defensive mechanism to protect resources + // on the router + container maxpfxp-items { + + uses bgp_MaxPfxP-group; + description "Maximum Prefix Policy"; + } + + // This object holds per advertise-map information + container advtmap-items { + + uses bgp_AdvtMap-group; + description "Advertise-Map: This object holds per advertise-map information."; + } + + // Route control policy for routes coming/going to peers. + // There are few ways to apply this policy, controlling + // through route maps or prefix lists or filter lists. + // If both are specified, the order is implicit. Prefix + // lists are applied before route maps. + // The direction specifies whether to apply this policy + // in the incoming or outgoing direction + container rtctrl-items { + list RtCtrlP-list { + key "direction"; + + uses bgp_RtCtrlP-group; + description + "Route Control Policy: Policies to apply to + incoming/outgoing routes going to peers. list"; + } + description + "Route Control Policy: Policies to apply to + incoming/outgoing routes going to peers."; + } + container pfxctrl-items { + list PfxCtrlP-list { + key "direction"; + + uses bgp_PfxCtrlP-group; + description "Prefix-list Control Policy list"; + } + description "Prefix-list Control Policy"; + } + container fltrctrl-items { + list FltrCtrlP-list { + key "direction"; + + uses bgp_FltrCtrlP-group; + description "Filter-list Control Policy list"; + } + description "Filter-list Control Policy"; + } + + // This object holds bgp peer af peer policy inherit + container pol-items { + list PolicyInheritRule-list { + key "name"; + + uses bgp_PolicyInheritRule-group; + description "Rule for policy template import list"; + } + description "Rule for policy template import"; + } + } + + grouping bgp_EvtHist-group { + description "BGP customized buffer detail for event-history"; + + // Event-history buffer type + leaf type { + + type bgp_EhType; + description "Configure event-history {cli | events | periodic | detail | errors | socket | nve}"; + } + + // Event-history buffer size + leaf size { + + type bgp_Size; + description "Configure event-history with buffer size"; + } + } + + grouping bgp_OperBgp-group { + description + "Top-level container to hold BGP + runtime operational data"; + + // This object holds bgp operational information for L2. + container l2-items { + list OperRtctrlL2-list { + config "false"; + key "encap"; + + uses bgp_OperRtctrlL2-group; + description + "BGP operational data for L2 EVPN. This MO + contains route control information + for evpn prefixes. list"; + } + description + "BGP operational data for L2 EVPN. This MO + contains route control information + for evpn prefixes."; + } + + // This object holds bgp operational information for L3. + container l3-items { + list OperRtctrlL3-list { + config "false"; + key "encap"; + + uses bgp_OperRtctrlL3-group; + description + "BGP operational data for L3. This MO contains + route control information for L3 prefixes belonging + to address families IPv4 and IPv6 list"; + } + description + "BGP operational data for L3. This MO contains + route control information for L3 prefixes belonging + to address families IPv4 and IPv6"; + } + } + + grouping bgp_OperRtctrlL2-group { + description + "BGP operational data for L2 EVPN. This MO + contains route control information + for evpn prefixes."; + leaf assocDom { + config "false"; + type string { + pattern "[A-Za-z0-9!@#$\\^\\*=\\+\\{\\}\\.;:_-]{1,32}"; + } + description "L2VNI's associated IP-VRF"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf rd { + config "false"; + type mtx_array_community; + description "Route Distinguisher"; + } + leaf encap { + config "false"; + type string; + description "Encapsulation"; + } + + // Route target policy + container rttp-items { + list OperRttP-list { + config "false"; + key "type"; + + uses bgp_OperRttP-group; + description "Operational Route Target Policy for import/export list"; + } + description "Operational Route Target Policy for import/export"; + } + } + + grouping bgp_OperRttP-group { + description "Operational Route Target Policy for import/export"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Type + leaf type { + config "false"; + + type rtctrl_RttPType; + description "Type"; + } + + // List of route targets + container entry-items { + list OperRttEntry-list { + config "false"; + key "rtt"; + + uses bgp_OperRttEntry-group; + description "Operational Route Target Entry list"; + } + description "Operational Route Target Entry"; + } + } + + grouping bgp_OperRttEntry-group { + description "Operational Route Target Entry"; + leaf rtt { + config "false"; + type mtx_array_community; + description "Route Target"; + } + } + + grouping bgp_OperRtctrlL3-group { + description + "BGP operational data for L3. This MO contains + route control information for L3 prefixes belonging + to address families IPv4 and IPv6"; + leaf assocDom { + config "false"; + type string { + pattern "[A-Za-z0-9!@#$\\^\\*=\\+\\{\\}\\.;:_-]{1,32}"; + } + description "L3VNI's associated IP-VRF"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf rd { + config "false"; + type mtx_array_community; + description "Route Distinguisher"; + } + leaf encap { + config "false"; + type string; + description "Encapsulation"; + } + + // This object holds per address family bgp vrf information + container af-items { + list OperDomAf-list { + config "false"; + key "type"; + + uses bgp_OperDomAf-group; + description "Operational Address Family Domain list"; + } + description "Operational Address Family Domain"; + } + } + + grouping bgp_OperDomAf-group { + description "Operational Address Family Domain"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type + leaf type { + config "false"; + + type bgp_AfT; + description "Address Family Type"; + } + + // This object holds policy to control vpn af + // information for a given vrf + container ctrl-items { + list OperAfCtrl-list { + config "false"; + key "type"; + + uses bgp_OperAfCtrl-group; + description "Operational Virtual Private Network Control Policy list"; + } + description "Operational Virtual Private Network Control Policy"; + } + } + + grouping bgp_OperAfCtrl-group { + description "Operational Virtual Private Network Control Policy"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type + leaf type { + config "false"; + + type bgp_AfT; + description "Address Family Type"; + } + + // Route target policy + container rttp-items { + list OperRttP-list { + config "false"; + key "type"; + + uses bgp_OperRttP-group; + description "Operational Route Target Policy for import/export list"; + } + description "Operational Route Target Policy for import/export"; + } + } + + grouping bgp_Tbgp-group { + description "Configure SNMP BGP traps"; + + // SNMP BGP trap for All 3 (back-trans, limited, all) + // state change traps + leaf stChange { + + type bgp_TrapType; + description "SNMP BGP trap for all bgp state change traps"; + } + leaf stChangeAllFsm { + type boolean; + description "SNMP BGP trap for all fsm state change"; + } + leaf stChangeBackTrans { + type boolean; + description "SNMP BGP trap for backward transition state change trap"; + } + leaf stChangeLtd { + type boolean; + description "SNMP BGP trap for limited state change trap"; + } + leaf thresPfx { + type boolean; + description "SNMP BGP trap for prefix threshold event"; + } + + // SNMP BGP trap to enable all state change and + // prefix threshold trap + leaf trapAll { + + type bgp_TrapType; + description "All state-change and threshold prefix traps"; + } + } + + grouping bgp_Tcbgp2-group { + description "SNMP CISCO-BGP-MIBv2 traps"; + + // SNMP BGP trap for All 3 (back-trans, limited, all) + // state change traps + leaf stChange { + + type bgp_TrapType; + description "SNMP BGP trap for all bgp state change traps"; + } + leaf stChangeAllFsm { + type boolean; + description "SNMP BGP trap for all fsm state change"; + } + leaf stChangeBackTrans { + type boolean; + description "SNMP BGP trap for backward transition state change trap"; + } + leaf stChangeLtd { + type boolean; + description "SNMP BGP trap for limited state change trap"; + } + leaf thresPfx { + type boolean; + description "SNMP BGP trap for prefix threshold event"; + } + + // SNMP BGP trap to enable all state change and + // prefix threshold trap + leaf trapAll { + + type bgp_TrapType; + description "All state-change and threshold prefix traps"; + } + } + + grouping callhome_Callhome-group { + description "Callhome node, used as a placeholder for uniformity"; + + container inst-items { + + uses callhome_Inst-group; + description "Callhome instance node, represents an instance of callhome"; + } + } + + grouping callhome_Inst-group { + description "Callhome instance node, represents an instance of callhome"; + + leaf callhomeEnable { + + type callhome_Boolean; + default "disabled"; + description "Enable/Disable callhome"; + } + + leaf dupMsgThrottle { + + type callhome_Boolean; + default "enabled"; + description "Enable/Disable duplicate message throttling"; + } + + leaf contractId { + + type callhome_StringRange; + description "Service contract id of the customer"; + } + + leaf customerId { + + type callhome_StringRange; + description "Customer ID as specified in the service agreement"; + } + + leaf emailId { + + type callhome_Email { + length "0..255"; + } + description "Email address of the contact person"; + } + + leaf phoneContact { + + type callhome_Phone { + length "0..17"; + } + description "Contact person's phone number"; + } + + leaf siteId { + + type callhome_StringRange; + description "Site id of the network where switch is deployed"; + } + + leaf streetAddress { + + type callhome_StringRange; + description "Configure replacement part shipping address"; + } + leaf switchPri { + type uint16 { + range "0..7"; + } + default "7"; + description "Priority of the switch"; + } + + leaf periodicInvNotif { + + type callhome_Boolean; + default "enabled"; + description "Enable/Disable periodic inventory notification"; + } + + leaf periodInvNotifInterval { + + type callhome_PeriodicSystemInventoryIntervalDays; + description "The time period for periodic inventory"; + } + + leaf periodInvNotifTimeOfDayHour { + + type callhome_PeriodicSystemInventoryTimeOfDayHour; + description "The hour part of time period"; + } + + leaf periodInvNotifTimeOfDayMinute { + + type callhome_PeriodicSystemInventoryTimeOfDayMinute; + description "The minute part of time period"; + } + + // mo for alert group + container alertgroup-items { + list AlertGroup-list { + key "alertGroup seqNum"; + + uses callhome_AlertGroup-group; + description "Alert group node list"; + } + description "Alert group node"; + } + + // mo for Destination profile + container destprof-items { + + uses callhome_DestProf-group; + description "Destination profile node with required delivery information for an alert notification"; + } + + // mo for Transport + container transport-items { + + uses callhome_Transport-group; + description "Tranport node to configure transport related configuration"; + } + } + + grouping callhome_AlertGroup-group { + description "Alert group node"; + + leaf alertGroup { + + type callhome_AlertGroupName; + description "Grouped callhome alerts"; + } + leaf seqNum { + type uint32 { + range "1..5"; + } + description "Sequence number assosiated with user defined command"; + } + leaf userDefCmd { + type string { + length "1..600"; + } + description "User defined show commands for alert group action"; + } + } + + grouping callhome_DestProf-group { + description "Destination profile node with required delivery information for an alert notification"; + + // mo for xml(CiscoTac1),full-text,short-text + container predefprofile-items { + list PredefinedProfile-list { + key "predefProfile"; + + uses callhome_PredefinedProfile-group; + description "Predefined destination profile node with required delivery information list"; + } + description "Predefined destination profile node with required delivery information"; + } + + // mo for Custom Profile + container custprof-items { + list CustomProfile-list { + key "profileName"; + + uses callhome_CustomProfile-group; + description "User defined destination profile node list"; + } + description "User defined destination profile node"; + } + } + + grouping callhome_PredefinedProfile-group { + description "Predefined destination profile node with required delivery information"; + + leaf predefProfile { + + type callhome_PredefProfileName; + description "Predefined destination profile names"; + } + + leaf transportMethodEmail { + + type callhome_Boolean; + default "enabled"; + description "Trnasport method as email "; + } + + leaf transportMethodHttp { + + type callhome_Boolean; + default "disabled"; + description "Transport method as http"; + } + leaf messageLevel { + type uint32 { + range "0..9"; + } + default "0"; + description "Callhome message-level for the configured profile"; + } + leaf messageSize { + type uint32 { + range "0..5000000"; + } + default "2500000"; + description "Callhome message-size for the configured profile"; + } + + leaf format { + + type callhome_Format; + description "Callhome message format to be sent to configured profile"; + } + + leaf alertGrpCiscoTac1 { + + type callhome_Boolean; + description "Events which are meant for Cisco TAC only"; + } + + leaf alertGrpConfiguration { + + type callhome_Boolean; + description "Events related to Configuration"; + } + + leaf alertGrpDiagnostic { + + type callhome_Boolean; + description "Events related to Diagnostic"; + } + + leaf alertGrpEEM { + + type callhome_Boolean; + description "Events related to EEM"; + } + + leaf alertGrpEnvironmental { + + type callhome_Boolean; + description "Power,Fan,Temperature related events"; + } + + leaf alertGrpInventory { + + type callhome_Boolean; + description "Inventory Status Events"; + } + + leaf alertGrpLinecard { + + type callhome_Boolean; + description "Linecard related events"; + } + + leaf alertGrpSupervisor { + + type callhome_Boolean; + description "Supervisor related events"; + } + + leaf alertGrpSyslogPort { + + type callhome_Boolean; + description "Events related to syslog messages filed by port manager"; + } + + leaf alertGrpSystem { + + type callhome_Boolean; + description "Software related events"; + } + + leaf alertGrpTest { + + type callhome_Boolean; + description "User generated test events"; + } + + leaf alertGrpLicense { + + type callhome_Boolean; + description "Events related to licensing"; + } + + leaf alertGrpAll { + + type callhome_Boolean; + description "This alert group consists of all of the callhome messages"; + } + + // mo for PredefProfile/PredefProfileName/Email + container pdprofemail-items { + list PredefProfEmail-list { + key "seqNum"; + + uses callhome_PredefProfEmail-group; + description "Email address node to send email notifications list"; + } + description "Email address node to send email notifications"; + } + + // mo for PredefProfile/PredefProfileName/PredefProfHttp + container pdprofhttp-items { + list PredefProfHttp-list { + key "seqNum"; + + uses callhome_PredefProfHttp-group; + description "HTTP node with URL configuration for profile list"; + } + description "HTTP node with URL configuration for profile"; + } + } + + grouping callhome_PredefProfEmail-group { + description "Email address node to send email notifications"; + leaf seqNum { + type uint32 { + range "1..50"; + } + description "Sequence number associated with email-id"; + } + + leaf emailAddr { + + type callhome_Email; + description "Email address for the profile"; + } + } + + grouping callhome_PredefProfHttp-group { + description "HTTP node with URL configuration for profile"; + leaf seqNum { + type uint32 { + range "1..50"; + } + description "Sequence number associated with HTTP URL"; + } + leaf http { + type string { + length "11..255"; + } + description "HTTP URL configuration for the profile"; + } + } + + grouping callhome_CustomProfile-group { + description "User defined destination profile node"; + leaf profileName { + type string { + length "0..31"; + } + description "User defined destination profile name"; + } + + leaf transportMethodEmail { + + type callhome_Boolean; + default "enabled"; + description "Trnasport method as email "; + } + + leaf transportMethodHttp { + + type callhome_Boolean; + default "disabled"; + description "Transport method as http"; + } + leaf messageLevel { + type uint32 { + range "0..9"; + } + default "0"; + description "Callhome message-level for the configured profile"; + } + leaf messageSize { + type uint32 { + range "0..5000000"; + } + default "2500000"; + description "Callhome message-size for the configured profile"; + } + + leaf format { + + type callhome_Format; + description "Callhome message format to be sent to configured profile"; + } + + leaf alertGrpCiscoTac1 { + + type callhome_Boolean; + description "Events which are meant for Cisco TAC only"; + } + + leaf alertGrpConfiguration { + + type callhome_Boolean; + description "Events related to Configuration"; + } + + leaf alertGrpDiagnostic { + + type callhome_Boolean; + description "Events related to Diagnostic"; + } + + leaf alertGrpEEM { + + type callhome_Boolean; + description "Events related to EEM"; + } + + leaf alertGrpEnvironmental { + + type callhome_Boolean; + description "Power,Fan,Temperature related events"; + } + + leaf alertGrpInventory { + + type callhome_Boolean; + description "Inventory Status Events"; + } + + leaf alertGrpLinecard { + + type callhome_Boolean; + description "Linecard related events"; + } + + leaf alertGrpSupervisor { + + type callhome_Boolean; + description "Supervisor related events"; + } + + leaf alertGrpSyslogPort { + + type callhome_Boolean; + description "Events related to syslog messages filed by port manager"; + } + + leaf alertGrpSystem { + + type callhome_Boolean; + description "Software related events"; + } + + leaf alertGrpTest { + + type callhome_Boolean; + description "User generated test events"; + } + + leaf alertGrpLicense { + + type callhome_Boolean; + description "Events related to licensing"; + } + + leaf alertGrpAll { + + type callhome_Boolean; + description "This alert group consists of all of the callhome messages"; + } + + // mo for CustomProfile/CustomEmail + container custemail-items { + list CustomEmail-list { + key "seqNum"; + + uses callhome_CustomEmail-group; + description "Email address node with delivery information for the custom profile list"; + } + description "Email address node with delivery information for the custom profile"; + } + + // mo for CustomProfile/CustomHttp + container custhttp-items { + list CustomHttp-list { + key "seqNum"; + + uses callhome_CustomHttp-group; + description "HTTP node with the URL configuration for custom profile list"; + } + description "HTTP node with the URL configuration for custom profile"; + } + } + + grouping callhome_CustomEmail-group { + description "Email address node with delivery information for the custom profile"; + leaf seqNum { + type uint32 { + range "1..50"; + } + description "Sequence number associated with email-id"; + } + + leaf emailAddr { + + type callhome_Email; + description "Email address to send email notifications"; + } + } + + grouping callhome_CustomHttp-group { + description "HTTP node with the URL configuration for custom profile"; + leaf seqNum { + type uint32 { + range "1..50"; + } + description "Sequence number associated with http url"; + } + leaf http { + type string { + length "11..255"; + } + description "HTTP URL configuration for custom profile"; + } + } + + grouping callhome_Transport-group { + description "Tranport node to configure transport related configuration"; + + leaf httpProxyEnable { + + type callhome_Boolean; + default "disabled"; + description "Enable HTTP proxy server to send messages"; + } + + leaf proxyServer { + + type callhome_ServerType; + description "Proxy server name or IP address"; + } + leaf proxyServerPort { + type uint32 { + range "1..65535"; + } + default "8080"; + description "Configure proxy server port"; + } + leaf httpUseVrf { + type string { + length "1..32"; + } + default "default"; + description "Configure HTTP VRF name"; + } + + leaf emailFrom { + + type callhome_Email; + description "Configure from email address"; + } + + leaf emailReplyTo { + + type callhome_Email; + description "Configure replyto email address"; + } + + // mo for Email + container emailserver-items { + list EmailServer-list { + key "emailServer"; + + uses callhome_EmailServer-group; + description "Tranport email mail server node list"; + } + description "Tranport email mail server node"; + } + } + + grouping callhome_EmailServer-group { + description "Tranport email mail server node"; + + leaf emailServer { + + type callhome_ServerType; + description "SMTP server name or IP address"; + } + leaf mailServerPort { + type uint32 { + range "1..65535"; + } + default "25"; + description "Configure SMTP server port"; + } + leaf mailServerPriority { + type uint32 { + range "0..100"; + } + default "50"; + description "Configure SMTP server priority"; + } + leaf mailServerUseVrf { + type string { + length "1..32"; + } + default "default"; + description "Configure SMTP mail server VRF name"; + } + } + + grouping cap_LogLevel-group { + description "Config Capability logging level"; + + // logging level + leaf loggingLevel { + + type cap_LoggingLevel; + description "Logging Level"; + } + + // logging type + leaf loggingType { + config "false"; + + type cap_LoggingType; + description "Logging type"; + } + } + + grouping datetime_Clock-group { + description "Clock Manager"; + + leaf protocol { + + type datetime_ClockProtocol; + description "Protocol Type"; + } + + leaf vdcId { + + type datetime_VdcId; + description "Vdc"; + } + + leaf format { + + type datetime_ClockFormat; + description "Clock Format"; + } + leaf formatDebug { + type boolean; + description "enable/disable Clock Format for debug"; + } + leaf formatSyslog { + type boolean; + description "enable/disable Clock Format for syslog"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf adminSt { + + type datetime_AdminState; + default "enabled"; + description "Admin State"; + } + + leaf authSt { + + type datetime_AdminState; + description "Authentication State"; + } + + container set-items { + + uses datetime_ClockSet-group; + description "Clock Set"; + } + + container timezone-items { + + uses datetime_Timezone-group; + description "Clock Timezone"; + } + + container summertime-items { + + uses datetime_SummerT-group; + description "Clock Summer-time"; + } + + container ttag-items { + + uses datetime_TTag-group; + description "ttag configuration"; + } + } + + grouping datetime_ClockSet-group { + description "Clock Set"; + leaf time { + type string; + description "HH:MM:SS Current Time"; + } + + leaf date { + + type datetime_Date; + description "Day of the month"; + } + + leaf month { + + type datetime_Month; + description "Month of the year"; + } + + leaf year { + + type datetime_Year; + description "Year"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping datetime_Timezone-group { + description "Clock Timezone"; + + leaf hours { + + type datetime_HourOffset; + description "Hours offset from UTC"; + } + + leaf minutes { + + type datetime_MinuteOffsetTz; + description "Minutes offset from UTC"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf nameT { + type string; + description "Name of timezone"; + } + } + + grouping datetime_SummerT-group { + description "Clock Summer-time"; + + leaf startWeek { + + type datetime_WeekNum; + description "Week number to start"; + } + leaf startDay { + type string; + default "Sun"; + description "Weekday to start"; + } + leaf startMon { + type string; + default "Mar"; + description "Month to start"; + } + leaf startTime { + type string; + default "02:00"; + description "HH:MM Time to start"; + } + + leaf endWeek { + + type datetime_WeekNum; + description "Week number to end"; + } + leaf endDay { + type string; + default "Sun"; + description "Weekday to end"; + } + leaf endMon { + type string; + default "Nov"; + description "Month to end"; + } + leaf endTime { + type string; + default "02:00"; + description "HH:MM Time to end"; + } + + leaf offsetMin { + + type datetime_MinuteOffsetSt; + description "Offset to add in minutes"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf nameT { + type string; + description "Name of timezone in summer"; + } + } + + grouping datetime_TTag-group { + description "ttag configuration"; + leaf ethtype { + type uint32 { + range "0..35077"; + } + default "0"; + description "Ethernet header type"; + } + leaf ttagMarkerInterval { + type uint32 { + range "1..4"; + } + default "1"; + description "PTP ttag marker interval in seconds"; + } + container if-items { + list ClkIf-list { + key "id"; + + uses datetime_ClkIf-group; + description "Interface configuration and management list"; + } + description "Interface configuration and management"; + } + } + + grouping datetime_ClkIf-group { + description "Interface configuration and management"; + + // interface id + leaf id { + + type nw_IfId; + description "Interface id"; + } + leaf ttag { + type boolean; + default "false"; + description "Ingress packet with ttag on interface"; + } + leaf ttagMarker { + type boolean; + default "false"; + description "ttag marker packet on interface"; + } + } + + grouping datetime_ClkPol-group { + description "Date Time Policy"; + + leaf flags { + config "false"; + + type datetime_SysStatusFlags; + description "System Status Flags (time sync status)"; + } + + leaf leap { + config "false"; + + type datetime_NTPLeapIndicator; + description "Leap Indicator"; + } + + leaf stratum { + config "false"; + + type datetime_NTPStratum; + description "Clock Stratum"; + } + leaf precision { + config "false"; + type int32; + description "Clock Precision"; + } + + leaf rootDelay { + config "false"; + + type datetime_NTPSignedTimeValue; + description "RootDelay"; + } + + leaf rootDispersion { + config "false"; + + type datetime_NTPUnsignedTimeValue; + description "RootDispersion"; + } + + leaf refId { + config "false"; + + type datetime_NTPRefId; + description "RefId"; + } + leaf refTime { + config "false"; + type union { + type string; + type uint64; + } + description "Reference Time"; + } + leaf refTimeRaw { + config "false"; + type uint64; + description "Raw Reference Time"; + } + + leaf poll { + config "false"; + + type datetime_NTPPollInterval; + description "Polling Interval"; + } + + leaf peer { + config "false"; + + type datetime_NTPAssocIdentifier; + description "The Current Synchronization Source/Peer"; + } + leaf clock { + config "false"; + type union { + type string; + type uint64; + } + description "Clock"; + } + leaf clockRaw { + config "false"; + type uint64; + description "Clock Raw [Raw NTPD format]"; + } + + leaf srvStatus { + config "false"; + + type datetime_NtpSrvStatus; + description "NTP Daemon State"; + } + + leaf logging { + + type datetime_AdminState; + description "NTP Logging Status"; + } + + leaf loggingLevel { + + type datetime_LoggingLevel; + description "NTP Logging Level"; + } + + leaf master { + + type datetime_AdminState; + description "NTP Master Configuration"; + } + + leaf masterStratum { + + type datetime_Stratum; + description "NTP Master Stratum Level"; + } + + leaf passive { + + type datetime_AdminState; + description "Enable/Disable Passive NTP Associations"; + } + + leaf allowPrivate { + + type datetime_AdminState; + description "Allow Private Mode NTP Packets"; + } + + leaf allowControl { + + type datetime_AdminState; + description "Allow Control Mode NTP Packets"; + } + + leaf rateLimit { + + type datetime_allowCtrlRateLimit; + description "Rate-Limit NTP Control Mode Packets"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf adminSt { + + type datetime_AdminState; + default "enabled"; + description "Admin State"; + } + + leaf authSt { + + type datetime_AdminState; + description "Authentication State"; + } + + // NTP Client Autentication @@@ this is not exposed in logical model, we will start + // @@@ using it when the logical model is enabled after all + // @@@ the bug fixes + container auth-items { + list NtpAuth-list { + key "id"; + + uses datetime_NtpAuth-group; + description "Authentication Key list"; + } + description "Authentication Key"; + } + + // NTP Providers + container prov-items { + list NtpProvider-list { + key "name"; + + uses datetime_NtpProvider-group; + description "NTP Server Or Peer list"; + } + description "NTP Server Or Peer"; + } + + // CSCvh50485 : removing from model until implemented + // + // + // + // + // + // + // + // + // + // + // + // + // + // NTP Access Group + container accessgroup-items { + + uses datetime_AccessGroup-group; + description "NTP Access Group"; + } + + // This is used to store IP address of source of NTP packets + container srcIp-items { + + uses datetime_NtpSrcIp-group; + description "NTP source IP address"; + } + + // This is used to store interface sending NTP packets + container srcIf-items { + + uses datetime_NtpSrcIf-group; + description "NTP source interface"; + } + } + + grouping datetime_NtpAuth-group { + description "Authentication Key"; + + // encrypted key + leaf encryptedKey { + + type datetime_Key; + description "Encrypted Key"; + } + + leaf isEncrypt { + + type datetime_Encrypt; + description "Is Encrypted Flag"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf key { + + type datetime_Key; + description "Key"; + } + + leaf id { + + type datetime_AuthKeyId; + description "Auth Key Id"; + } + leaf trusted { + type boolean; + description "Trusted State"; + } + } + + grouping datetime_NtpProvider-group { + description "NTP Server Or Peer"; + + // This property tells if the configured provider is NTP server Or peer + leaf provT { + + type datetime_ProvT; + description "NTP Server Or Peer"; + } + + // vrf name + leaf vrf { + + type l3_VrfName; + description "VRF"; + } + + leaf name { + + type pol_ObjName { + + // Restriction copied from aaa:NtpHostname type NXOS has max limit of 80 chars, limiting to 64 here + length "0..64"; + pattern ".*[a-zA-Z0-9][a-zA-Z0-9_\\.:-]{0,63}.*"; + } + description "NTP Server/Peer Name Or Address"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf preferred { + type boolean; + description "Preferred State"; + } + + leaf minPoll { + + type datetime_Poll; + description "Min Poll"; + } + + leaf maxPoll { + + type datetime_Poll; + description "Max Poll"; + } + + leaf keyId { + + type datetime_KeyId; + description "Key Id"; + } + + // Status for NTP Providers + container status-items { + + uses datetime_NtpProviderStatus-group; + description "NTP Provider Status"; + } + + container rsntpProviderToNtpAuth-items { + + list RsNtpProviderToNtpAuth-list { + config "false"; + key "tDn"; + + uses datetime_RsNtpProviderToNtpAuth_source-group; + description "Ntp Authentication Attachment list"; + } + description "Ntp Authentication Attachment"; + } + } + + grouping datetime_NtpProviderStatus-group { + description "NTP Provider Status"; + + leaf flags { + config "false"; + + type datetime_PeerStatusFlags; + description "Peer Specific Flags"; + } + + leaf mode { + config "false"; + + type datetime_NTPPeerMode; + description "The Association Mode Of NTP Server"; + } + + leaf stratum { + config "false"; + + type datetime_NTPStratum; + description "Stratum"; + } + + leaf peerPoll { + config "false"; + + type datetime_NTPPollInterval; + description "PeerPoll"; + } + + leaf hostPoll { + config "false"; + + type datetime_NTPPollInterval; + description "HostPoll"; + } + leaf reach { + config "false"; + type uint8; + description "Reach"; + } + leaf delay { + config "false"; + type string; + description "Delay"; + } + leaf delayRaw { + config "false"; + type int32; + description "DelayRaw"; + } + + leaf dispersion { + config "false"; + + type datetime_NTPUnsignedTimeValue; + description "Dispersion"; + } + } + + grouping datetime_AccessGroup-group { + description "NTP Access Group"; + leaf peer { + type string; + description "NTP Peer Access Group Name (max 63 characters)"; + } + leaf serveOnly { + type string; + description "NTP ServeOnly Access Group Name (max 63 characters)"; + } + leaf serve { + type string; + description "NTP Serve Access Group Name (max 63 characters)"; + } + leaf queryOnly { + type string; + description "NTP QueryOnly Access Group Name (max 63 characters)"; + } + + leaf matchAll { + + type datetime_AdminState; + description "Scan All NTP Access-Group Options"; + } + } + + grouping datetime_NtpSrcIp-group { + description "NTP source IP address"; + leaf srcIp { + type address_Ipv4; + description "Source IP Address"; + } + leaf srcIpv6 { + type address_Ipv6; + description "Source IPv6 Address"; + } + } + + grouping datetime_NtpSrcIf-group { + description "NTP source interface"; + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + } + + grouping datetime_Ntpq-group { + description "Ntp Concrete Details"; + leaf tally { + config "false"; + type string; + description "Tally"; + } + leaf remote { + config "false"; + type string; + description "Remote"; + } + leaf refid { + config "false"; + type string; + description "RefId"; + } + leaf stratum { + config "false"; + type string; + description "Stratum"; + } + leaf t { + config "false"; + type string; + description "Type"; + } + leaf when { + config "false"; + type string; + description "When"; + } + leaf poll { + config "false"; + type string; + description "Poll Interval"; + } + leaf reach { + config "false"; + type string; + description "Reach"; + } + leaf delay { + config "false"; + type string; + description "Delay"; + } + leaf offset { + config "false"; + type string; + description "Offset"; + } + leaf jitter { + config "false"; + type string; + description "Jitter"; + } + } + + grouping span_Entity-group { + description "SPAN Entity"; + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + container monitor-items { + list Monitor-list { + key "id"; + + uses span_Monitor-group; + description "Monitor MO for each SPAN session identified by session id list"; + } + description "Monitor MO for each SPAN session identified by session id"; + } + } + + grouping span_Monitor-group { + description "Monitor MO for each SPAN session identified by session id"; + + // scalar:Enum8 Value Types + leaf type { + + type span_Type; + description "Type of the current monitor session"; + } + + leaf operState { + config "false"; + + type span_OperStQual; + description "Actual State of the current session updated by SPAN process"; + } + + leaf configState { + + type span_State; + description "State of the current session as configured by the user"; + } + + // string:Basic Value Types + leaf description { + + type span_Description; + description "Description for the current monitor session"; + } + + leaf vrfName { + + type l3_VrfName; + description "VRF name for the erspan-source session.(user specified name / default / manangement)"; + } + + leaf aclName { + + type span_AclName; + description "Name of the Access Control List applied on the current monitor session"; + } + + // Uint Value Types + leaf id { + + type span_SsnId; + description "Session identification number for current monitor session."; + } + + leaf mtu { + + type span_MtuValue; + description "Value of Maximum transmission unit truncation size for SPAN packets"; + } + leaf allowSharing { + type boolean; + default "false"; + description "Denotes whether sharing is enabled for the given filter ACL"; + } + + leaf headerType { + + type span_HeaderVer; + description "Denotes header type ver is enabled for the given erspan session"; + } + leaf isMarkerPacket { + type boolean; + default "false"; + description "Denotes whether marker packet is enabled for the given erspan-source session"; + } + leaf isMarkerMilliSeconds { + type boolean; + default "false"; + description "Denotes whether marker value given in millis seconds"; + } + leaf isFwdDropsRx { + type boolean; + default "false"; + description "Denotes whether source forwarding drops rx is enabled for the given erspan-source session"; + } + leaf isFwdDropsRxLowPriority { + type boolean; + default "false"; + description "Denotes whether source forwarding drops rx has low priority for the given erspan-source session"; + } + + leaf erspanId { + + type span_ErspanId; + description "ERSPAN identification number"; + } + + leaf ipTtl { + + type span_IpTtl; + description "ERSPAN IP time-to-live value"; + } + + leaf ipDscp { + + type span_IpDscp; + description "ERSPAN IP DSCP value"; + } + + leaf markerPktInt { + + type span_MarkerPktInt; + description "ERSPAN session send marker packet interval value"; + } + + // Interface types + leaf destinationPorts { + + type nw_IfId; + description "Destination ports for the current session"; + } + leaf destinationIp { + type address_Ip; + description "Destination IP address for the current erspan session"; + } + leaf sourceIp { + type address_Ip; + description "Source IP address for the current erspan destination session"; + } + + leaf shutError { + config "false"; + + type span_ErrorInt; + description "failure code for raising a config fault during shut operation"; + } + container srcintf-items { + list SourceIntf-list { + key "id"; + + uses span_SourceIntf-group; + description "Source interface configuration MO. list"; + } + description "Source interface configuration MO."; + } + container filter-items { + list FilterVlan-list { + key "vlan"; + + uses span_FilterVlan-group; + description "Range of Filter VLANs specified for the current monitor sesion list"; + } + description "Range of Filter VLANs specified for the current monitor sesion"; + } + container src-items { + list SourceVlan-list { + key "vlan"; + + uses span_SourceVlan-group; + description "Source configuration MO. list"; + } + description "Source configuration MO."; + } + container srcvsan-items { + list SourceVsan-list { + key "vsan"; + + uses span_SourceVsan-group; + description "Source vsan configuration MO. list"; + } + description "Source vsan configuration MO."; + } + } + + grouping span_SourceIntf-group { + description "Source interface configuration MO."; + + leaf direction { + + type span_SrcDirection; + description "The direction of the source interface - Rx, Tx, Both"; + } + + leaf id { + + type nw_IfId; + description "The interface id for the session"; + } + + leaf error { + config "false"; + + type span_ErrorInt; + description "failure code for raising a config fault during applying source interface"; + } + leaf allowPfc { + type boolean; + default "false"; + description "Denotes whether allow-pfc is enabled for the given source"; + } + } + + grouping span_FilterVlan-group { + description "Range of Filter VLANs specified for the current monitor sesion"; + leaf vlan { + type string; + description "VLAN id for Filter VLAN"; + } + } + + grouping span_SourceVlan-group { + description "Source configuration MO."; + leaf vlan { + type string; + description "VLAN id for Source VLAN"; + } + + leaf direction { + + type span_SrcDirection; + description "The direction of the source VLAN - Rx, Tx, Both"; + } + } + + grouping span_SourceVsan-group { + description "Source vsan configuration MO."; + leaf vsan { + type string; + description "VSAN id for Source VSAN"; + } + + leaf direction { + + type span_SrcDirection; + description "The direction of the source VSAN - Rx, Tx, Both"; + } + } + + grouping span_ErspanOriginIp-group { + description "Global MO of origin Ip address for every Erspan session"; + leaf originIp { + type address_Ip; + description "Global origin IP address for all erspan sessions"; + } + leaf isGlobal { + type boolean; + default "false"; + description "Denotes whether origin ip is global across all erspan sessions"; + } + } + + grouping dhcp_Entity-group { + description "DHCP Entity"; + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // This objects hold per dhcp instance information. There is only + // one instance of dhcp relay running in the system today + container inst-items { + + uses dhcp_Inst-group; + description "DHCP Instance"; + } + } + + grouping dhcp_Inst-group { + description "DHCP Instance"; + leaf v4RelayEnabled { + type boolean; + description "DHCPv4 Enabled"; + } + leaf v6RelayEnabled { + type boolean; + description "DHCPv6 Enabled"; + } + leaf SnoopingEnabled { + type boolean; + description "Snooping Enabled"; + } + leaf SnoopingVerifyMacAddressEnabled { + type boolean; + default "true"; + description "Snooping Verify Mac Address Enabled"; + } + leaf SnoopingInformationOptionEnabled { + type boolean; + description "Snooping Information Option Enabled"; + } + leaf RelayInformationOptionEnabled { + type boolean; + description "Relay Information Option Enabled"; + } + leaf RelayInformationOptionVpnEnabled { + type boolean; + description "Relay Information Option Vpn Enabled"; + } + leaf relayInformationOptionServerIdOverrideDisableEnabled { + type uint32 { + range "0..1"; + } + default "0"; + description "Relay Information Option Server-id-override-disable Enabled"; + } + leaf RelayInformationOptionTrustEnabled { + type boolean; + description "Relay Information Option Trust Enabled"; + } + leaf RelayInformationTrustAllEnabled { + type boolean; + description "Relay Information Trust All Enabled"; + } + leaf RelaySubOptionCircuitIdCustomizedEnabled { + type boolean; + description "Relay Sub-Option Circuit-id Customized Enabled"; + } + leaf RelaySubOptionCircuitIdFormatString { + type string; + description "Relay Sub-Option Circuit-id Format String"; + } + leaf RelaySubOptionTypeCiscoEnabled { + type boolean; + description "Relay Sub-Option Type Cisco Enabled"; + } + leaf SmartRelayGlobalEnabled { + type boolean; + description "Smart Relay Global Enabled"; + } + leaf Ipv6RelayInformationOptionVpnEnabled { + type boolean; + description "IPv6 Relay Information Option Vpn Enabled"; + } + leaf Ipv6RelayOptionTypeCiscoEnabled { + type boolean; + description "IPv6 Relay Sub-Option Type Cisco Enabled"; + } + leaf ipv6RelayOption79Enabled { + type boolean; + description "IPv6 Relay Option79 Enabled"; + } + leaf daiValidateSrc { + type boolean; + description "DAI Validate Type: src-mac"; + } + leaf daiValidateDst { + type boolean; + description "DAI Validate Type: dst-mac"; + } + leaf daiValidateIp { + type boolean; + description "DAI Validate Type: ip"; + } + + // Set DAI Log Buffer Entries + leaf daiLogBufEntries { + + type dhcp_NumLogBuffers; + description "DAI Log Buffer Entries"; + } + leaf pktStrictVal { + type boolean; + description "Pkt Strict Validation"; + } + leaf snoopSubOptionCircuitIdFormatString { + type string; + description "Snoop Sub-Option Circuit-id Format String"; + } + + // IP ARP inspection on vlan, used for enabling ARP inspection on Vlan + container daivlan-items { + list DAIVlan-list { + key "daiVlanNum"; + + uses dhcp_DAIVlan-group; + description "DAI on Vlan list"; + } + description "DAI on Vlan"; + } + + // DHCP DAI interface, + // used for representing DAI functionality on + // the interface + container daiif-items { + list DAIIf-list { + key "id"; + + uses dhcp_DAIIf-group; + description "DHCP DAI Interface list"; + } + description "DHCP DAI Interface"; + } + + // DHCP client-if, used for representing client functionality on + // the interface + container clientif-items { + list ClientIf-list { + key "id"; + + uses dhcp_ClientIf-group; + description "DHCP Client Interface list"; + } + description "DHCP Client Interface"; + } + + // DHCP relay-if, used for representing relay functionality on + // the interface + container relayif-items { + list RelayIf-list { + key "id"; + + uses dhcp_RelayIf-group; + description "DHCP Relay Interface list"; + } + description "DHCP Relay Interface"; + } + + // Global Ipv4 Source Interface Config + container srcif-items { + + uses dhcp_SourceIf-group; + description "IPv4 Global DHCP Source Interface"; + } + + // Global Ipv6 Source Interface Config + container v6srcif-items { + + uses dhcp_V6SourceIf-group; + description "IPv6 Global DHCP Source Interface"; + } + + // DHCP IP source binding, + // (ip source binding vlan interface + // + // + // + container vlan-items { + list MacVlan-list { + key "id"; + + uses l2_MacVlan-group; + description "Per-VLAN MAC address configuration and management list"; + } + description "Per-VLAN MAC address configuration and management"; + } + + // DN: sys/mac/if- + container if-items { + list MacIf-list { + key "id"; + + uses l2_MacIf-group; + description "Per-Interface MAC address configuration and management list"; + } + description "Per-Interface MAC address configuration and management"; + } + } + + grouping l2_Static-group { + description "Static Mac Addresses"; + + // DN: sys/mac/static/vlan-[]-mac- + container vlan-items { + list StaticEntry-list { + key "vlan staticMacAddress"; + + uses l2_StaticEntry-group; + description "Static Mac Address Entry list"; + } + description "Static Mac Address Entry"; + } + + // DN: sys/mac/static/vni--mac- + container vni-items { + list StaticEntryVni-list { + key "vni staticMacAddress"; + + uses l2_StaticEntryVni-group; + description "Static Mac Address Entry for vni interface list"; + } + description "Static Mac Address Entry for vni interface"; + } + } + + grouping l2_StaticEntry-group { + description "Static Mac Address Entry"; + leaf staticMacAddress { + type address_Mac; + description "MAC"; + } + leaf vlan { + type string; + description "Vlan"; + } + leaf dropAction { + type boolean; + default "true"; + description "Drop"; + } + + leaf interface { + + type nw_IfId; + description "Interface"; + } + } + + grouping l2_StaticEntryVni-group { + description "Static Mac Address Entry for vni interface"; + leaf staticMacAddress { + type address_Mac; + description "MAC address for vni interface"; + } + leaf vni { + type uint32 { + range "1..16777215"; + } + description "Virtual Network Identifier"; + } + leaf peerIpv4 { + type address_Ipv4; + description "IPv4 Address of the Peer"; + } + } + + grouping l2_MacAddressTable-group { + description "MAC Address Table"; + + // MacAddress DN: sys/mac/table/vlan-[vlan-x]-mac- + container vlan-items { + list MacAddressEntry-list { + config "false"; + key "vlan macAddress"; + + uses l2_MacAddressEntry-group; + description "MAC Address Entry list"; + } + description "MAC Address Entry"; + } + } + + grouping l2_MacAddressEntry-group { + description "MAC Address Entry"; + leaf macAddress { + config "false"; + type address_Mac; + description "MAC"; + } + + // Primary, Gateway... + leaf type { + config "false"; + + type l2_MacType; + description "Type"; + } + leaf vlan { + config "false"; + type string; + description "Vlan"; + } + leaf static { + config "false"; + type boolean; + description "Static"; + } + leaf secure { + config "false"; + type boolean; + description "Secure"; + } + leaf ntfy { + config "false"; + type boolean; + description "NTFY"; + } + leaf routed { + config "false"; + type boolean; + description "Routed"; + } + leaf age { + config "false"; + type uint32; + description "Age - seconds since last seen"; + } + + leaf port { + config "false"; + + type nw_IfId; + description "Port"; + } + + leaf macInfo { + config "false"; + + type l2_MacInfo; + description "Additional Information on the MAC"; + } + } + + grouping l2_MacVlan-group { + description "Per-VLAN MAC address configuration and management"; + leaf id { + type string; + description "Vlan ID for per-VLAN configuration and management"; + } + leaf vlanLimit { + type uint32 { + range "100..384000"; + } + default "196000"; + description "Per-VLAN limit for learnt MAC addresses"; + } + } + + grouping l2_MacIf-group { + description "Per-Interface MAC address configuration and management"; + + // naming property + leaf id { + + type nw_IfId; + description "Interface ID for per-interface configuration and management"; + } + leaf ifLimit { + type uint32 { + range "100..384000"; + } + default "196000"; + description "Per-interface limit for learnt MAC addresses"; + } + } + + grouping cdp_Entity-group { + description "CDP Entity"; + + // This objects hold per cdp instance information. There is + // only one instance of cdp running in the system today + container inst-items { + + uses cdp_Inst-group; + description "CDP Instance"; + } + } + + grouping cdp_Inst-group { + description "CDP Instance"; + + // CDP version supported by the device + leaf ver { + + type cdp_Ver; + description "Version"; + } + + // What to advertise in the device id to the peer? + // This will be the identifier of the local switch + // to the remote peer + leaf devIdType { + + type cdp_DevIdT; + description "Device ID Type"; + } + + // Sets the time that cdp holds onto neighbor + // information before aging it out + leaf holdIntvl { + + type cdp_HoldIntvl; + description "Hold Interval"; + } + + // Sets the transmission frequency of cdp + // advertisements in seconds + leaf txFreq { + + type cdp_TxFreq; + description "Transmit Frequency"; + } + + // System Name + leaf sysName { + config "false"; + + type cdp_SysName; + description "System Name"; + } + leaf pnpStartVlan { + type uint16 { + range "1..4094"; + } + default "1"; + description "pnp startup-vlan configuration"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This object holds cdp information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses cdp_If-group; + description "CDP Interface list"; + } + description "CDP Interface"; + } + } + + grouping cdp_If-group { + description "CDP Interface"; + + // Port description + leaf portDesc { + + type naming_Descr; + description "Port Description"; + } + + // Operational state + leaf operSt { + config "false"; + + type cdp_OperSt; + description "Operational State"; + } + + // Operational state qualifier + leaf operStQual { + config "false"; + + type cdp_OperStQual; + description "Operational State Qualifier"; + } + + // Native vlan + leaf nativeVlan { + config "false"; + + type cdp_VlanId; + description "Native Vlan"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + // This object holds cdp neighbor information + container adj-items { + list AdjEp-list { + config "false"; + key "index"; + + uses cdp_AdjEp-group; + description "CDP Adjacency list"; + } + description "CDP Adjacency"; + } + + // This object holds cdp intf statistics operational information. + // This is a singleton within an intferace + container ifstats-items { + + uses cdp_IfStats-group; + description "Interface Statistics"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + } + + grouping cdp_AdjEp-group { + description "CDP Adjacency"; + + // A unique value for each device from which CDP + // messages are being received + leaf index { + config "false"; + + type cdp_DevIndex; + description "Index"; + } + + // Remote version + leaf ver { + config "false"; + + type cdp_NbrVer; + description "Version"; + } + + // Remote device ID + leaf devId { + config "false"; + + type cdp_DevId; + description "Device ID"; + } + + // Remote Port ID + leaf portId { + config "false"; + + type cdp_PortId; + description "Port ID"; + } + + // Remote Platform ID + leaf platId { + config "false"; + + type cdp_PlatId; + description "Platform ID"; + } + + // Capabilities + leaf cap { + config "false"; + + type cdp_CapT; + description "Capabilities"; + } + + // Duplex advertised by neighbor + leaf duplex { + config "false"; + + type cdp_Duplex; + description "Duplex"; + } + + // Native vlan advertised by neighbor + leaf nativeVlan { + config "false"; + + type cdp_VlanId; + description "Native Vlan"; + } + + // MTU advertised by neighbor + leaf mtu { + config "false"; + + type cdp_MTU; + description "MTU"; + } + + // System name advertised by neighbor + leaf sysName { + config "false"; + + type cdp_SysName; + description "System Name"; + } + + // System location advertised by neighbor + leaf sysLoc { + config "false"; + + type cdp_SysLoc; + description "System Location"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Management address received from cdp neighbor + container mgmt-items { + list MgmtAddr-list { + config "false"; + key "addr"; + + uses cdp_MgmtAddr-group; + description "Management Address list"; + } + description "Management Address"; + } + + // Interface address received from cdp neighbor + container intf-items { + list IntfAddr-list { + config "false"; + key "addr"; + + uses cdp_IntfAddr-group; + description "Interface Address list"; + } + description "Interface Address"; + } + + // This object holds cdp adj statistics operational information. + // This is a singleton within an adjacency + container adjstats-items { + + uses cdp_AdjStats-group; + description "Adjacency Statistics"; + } + } + + grouping cdp_MgmtAddr-group { + description "Management Address"; + leaf addr { + config "false"; + type address_Ip; + description "Address"; + } + } + + grouping cdp_IntfAddr-group { + description "Interface Address"; + leaf addr { + config "false"; + type address_Ip; + description "Address"; + } + } + + grouping cdp_AdjStats-group { + description "Adjacency Statistics"; + leaf adjExpTs { + config "false"; + type union { + type string; + type uint64; + } + description "Adjacency Expiration Timestamp"; + } + } + + grouping cdp_IfStats-group { + description "Interface Statistics"; + + // CDP Interface Stats Number of v1 packets sent + leaf v1Sent { + config "false"; + + type nw_Counter32; + description "Number of V1 Packets Sent"; + } + + // Number of v2 packets sent + leaf v2Sent { + config "false"; + + type nw_Counter32; + description "Number of V2 Packets Sent"; + } + + // Number of packets failed to send + leaf failedSent { + config "false"; + + type nw_Counter32; + description "Number of Packets Failed to Send"; + } + + // Number of valid v1 packets received + leaf validV1Rcvd { + config "false"; + + type nw_Counter32; + description "Number of Valid V1 Packets Received"; + } + + // Number of v2 packets received + leaf validV2Rcvd { + config "false"; + + type nw_Counter32; + description "Number of Valid V2 Packets Received"; + } + + // Number of unsupported version packets received + leaf unSupVerRcvd { + config "false"; + + type nw_Counter32; + description "Number of Unsupported Version Packets Received"; + } + + // Number of checksum error packets received + leaf cksumErrRcvd { + config "false"; + + type nw_Counter32; + description "Number of Checksum Error Packets Received"; + } + + // Number of malformed packets received + leaf malformRcvd { + config "false"; + + type nw_Counter32; + description "Number of Malform Packets Received"; + } + } + + grouping lldp_Entity-group { + description "LLDP Entity"; + + // This objects hold per lldp instance information. There is + // only one instance of lldp running in the system today + container inst-items { + + uses lldp_Inst-group; + description "LLDP Instance"; + } + } + + grouping lldp_Inst-group { + description "LLDP Instance"; + + // Amount of time in seconds that a receiving device + // should hold the information sent by your device + // before discarding it + leaf holdTime { + + type lldp_HoldTime; + description "Hold Time"; + } + + // Delay time in seconds for lldp to initialize on any + // interface + leaf initDelayTime { + + type lldp_InitDelayTime; + description "Init Delay Time"; + } + + // Transmission frequency of lldp updates in seconds + leaf txFreq { + + type lldp_TxFreq; + description "Transmission Frequency"; + } + + // Some tlvs are optional as per LLDP protocol (802.1AB) + // specifications. Use these selectors to turn on/off + leaf optTlvSel { + + type lldp_OptTlvSel; + description "Optional TLV Selector"; + } + + // System description + leaf sysDesc { + + type naming_Descr; + description "System Description"; + } + + // PortId Subtype + leaf portIdSubType { + + type lldp_PortIdSubType; + description "PortId SubType"; + } + + // Configuration to enable LLDP on Portchannel + leaf pcEnable { + + type lldp_AdminSt; + default "disabled"; + description "LLDP enabled on PortChannel"; + } + + // Configuration to enable multiple LLDP neighbors + leaf multiPeerEnable { + + type lldp_AdminSt; + default "disabled"; + description "LLDP multi-neighbor configuration"; + } + + // Local management address + container mgmt-items { + list MgmtAddr-list { + config "false"; + key "addr"; + + uses lldp_MgmtAddr-group; + description "Management Address list"; + } + description "Management Address"; + } + + // This object holds lldp information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses lldp_If-group; + description "LLDP Interface list"; + } + description "LLDP Interface"; + } + + // This object holds lldp inst statistics operational information. + // This is a singleton within lldp + container inststats-items { + + uses lldp_InstStats-group; + description "LLDP Statistics"; + } + + container rslldpInstPolCons-items { + + uses lldp_RsLldpInstPolCons_source-group; + description "Lldp Instance Policy Consumption"; + } + } + + grouping lldp_MgmtAddr-group { + description "Management Address"; + leaf addr { + config "false"; + type address_Ip; + description "Address"; + } + } + + grouping lldp_If-group { + description "LLDP Interface"; + + // Receive admin state + leaf adminRxSt { + + type lldp_AdminSt; + description "Admin Receive State"; + } + + // Transmit admin state + leaf adminTxSt { + + type lldp_AdminSt; + description "Admin Transmit State"; + } + + // System description + leaf sysDesc { + + type naming_Descr; + description "System Description"; + } + + leaf tlvSetVlan { + + type lldp_MgmtVlanId; + description "Tlv vlan"; + } + leaf tlvSetMgmtIpv4 { + type address_Ip; + description "Tlv ipv4"; + } + leaf tlvSetMgmtIpv6 { + type address_Ip; + description "Tlv ipv6"; + } + + // Port description + leaf portDesc { + + type naming_Descr; + description "Port Description"; + } + + leaf portDCBXPVer { + + type lldp_DCBXPVerType; + description "DCBXP Version"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + config "false"; + + type nw_IfAdminSt; + description "Admin State"; + } + + // This object holds lldp neighbor information + container adj-items { + list AdjEp-list { + config "false"; + key "id"; + + uses lldp_AdjEp-group; + description "LLDP Adjacency Endpoint list"; + } + description "LLDP Adjacency Endpoint"; + } + + // This object holds lldp intf statistics operational information. + // This is a singleton within an interface + container ifstats-items { + + uses lldp_IfStats-group; + description "Interface Statistics"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping lldp_AdjEp-group { + description "LLDP Adjacency Endpoint"; + + // Neighbor ID + leaf id { + config "false"; + + type lldp_AdjId; + description "ID"; + } + + // Neighbor chassis id type + leaf chassisIdT { + config "false"; + + type lldp_ChassisIdT; + description "Chassis ID Type"; + } + + // Neighbor chassis id value + leaf chassisIdV { + config "false"; + + type lldp_ChassisIdV; + description "Chassis ID Value"; + } + + // Neighbor port type + leaf portIdT { + config "false"; + + type lldp_PortIdT; + description "Port ID Type"; + } + + // Neighbor port value + leaf portIdV { + config "false"; + + type lldp_PortIdV; + description "Port ID Value"; + } + + // Neighbor system name + leaf sysName { + config "false"; + + type lldp_SysName; + description "System Name"; + } + + // Neighbor system description + leaf sysDesc { + config "false"; + + type lldp_NbrSysDesc; + description "System Description"; + } + + // Neighbor port description + leaf portDesc { + config "false"; + + type naming_Descr; + description "Port Description"; + } + + // Neighbor System Capability + leaf capability { + config "false"; + + type lldp_Capability; + description "Capability"; + } + + // Neighbor Enabled Capability + leaf enCap { + config "false"; + + type lldp_Capability; + description "Enabled Capability"; + } + + // Neighbor Management Address + leaf mgmtIp { + config "false"; + + type lldp_MgmtIp; + description "Management Address"; + } + + leaf mgmtPortMac { + config "false"; + + type lldp_MgmtPortMac; + description "Management Port MAC"; + } + + // Org tlv, Neighbor port vlan + leaf portVlan { + config "false"; + + type lldp_PortVlan; + description "Port Vlan"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // This object holds lldp adj statistics operational information. + // This is a singleton within an adjacency + container adjstats-items { + + uses lldp_AdjStats-group; + description "Adjacency Statistics"; + } + } + + grouping lldp_AdjStats-group { + description "Adjacency Statistics"; + } + + grouping lldp_IfStats-group { + description "Interface Statistics"; + + // LLDP Interface Stats Number of packets sent + leaf pktSent { + config "false"; + + type nw_Counter64; + description "Number of Packets Sent"; + } + + // Number of packets received + leaf pktRcvd { + config "false"; + + type nw_Counter64; + description "Number of Packets Received"; + } + + // Number of entries aged + leaf entriesAged { + config "false"; + + type nw_Counter64; + description "Number of Entries Aged"; + } + + // Number of packets received in error + leaf errPktRcvd { + config "false"; + + type nw_Counter64; + description "Number of Packets Received in Error"; + } + + // Number of packets discarded + leaf pktDiscarded { + config "false"; + + type nw_Counter64; + description "Number of Packets Discarded"; + } + + // Number of unrecognized TLVs + leaf unrecogTLV { + config "false"; + + type nw_Counter64; + description "Number of Unrecognized TLVs"; + } + + // Number of neighborship flaps + leaf flapCnt { + config "false"; + + type nw_Counter64; + description "Number of Neighborship flaps"; + } + } + + grouping lldp_InstStats-group { + description "LLDP Statistics"; + + // LLDP Inst Stats Number of packets sent + leaf pktSent { + config "false"; + + type nw_Counter64; + description "Number of Packets Sent"; + } + + // Number of packets received + leaf pktRcvd { + config "false"; + + type nw_Counter64; + description "Number of Packets Received"; + } + + // Number of entries aged + leaf entriesAged { + config "false"; + + type nw_Counter64; + description "Number of Entries Aged"; + } + + // Number of packets received in error + leaf errPktRcvd { + config "false"; + + type nw_Counter64; + description "Number of Packets Received in Error"; + } + + // Number of packets discarded + leaf pktDiscarded { + config "false"; + + type nw_Counter64; + description "Number of Packets Discarded"; + } + + // Number of unrecognized TLVs + leaf unrecogTLV { + config "false"; + + type nw_Counter64; + description "Number of Unrecognized TLVs"; + } + + // Number of neighborship flaps + leaf flapCnt { + config "false"; + + type nw_Counter64; + description "Number of Neighborship flaps"; + } + } + + grouping vpc_Entity-group { + description "VPC Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This objects hold per vpc instance information. There is only + // one instance of vpcm running in the system today + container inst-items { + + uses vpc_Inst-group; + description "VPC Instance"; + } + } + + grouping vpc_Inst-group { + description "VPC Instance"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // configure orphan ports to be brought down on Secondary peerlink failure + container orphan-items { + list OrphanPort-list { + key "id"; + + uses vpc_OrphanPort-group; + description "Orphan Port Suspend list"; + } + description "Orphan Port Suspend"; + } + + // This objects hold per vpc domain information. There is only + // one vpc domain that is configurable in the system + container dom-items { + + uses vpc_Dom-group; + description "VPC Domain"; + } + } + + grouping vpc_OrphanPort-group { + description "Orphan Port Suspend"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping vpc_Dom-group { + description "VPC Domain"; + + // Domain id @@@ This property is internally set by PE + leaf id { + + type vpc_DomId; + description "Domain ID"; + } + leaf peerIp { + type address_Ip; + description "Peer IP"; + } + leaf virtualIp { + type address_Ip; + description "Virtual IP"; + } + + // MCTless vPC DSCP value + leaf dscp { + + type vpc_Dscp; + description "DSCP"; + } + + // system priority @@@ This comes from the lacp policy + leaf sysPrio { + + type vpc_SysPrio; + description "System Priority"; + } + leaf sysMac { + type address_Mac; + description "System MAC"; + } + + // role priority @@@ This comes from the vpc policy + leaf rolePrio { + + type vpc_RolePrio; + description "Role Priority"; + } + + // Interface vlans to exclude for peer gateway + leaf peerGWExcludeVLAN { + + type vpc_ExcludeVLAN; + description "Exclude VLAN List"; + } + + // Enable L3 forwarding for packets destined to peer's gateway + // mac-address. + leaf peerGw { + + type nw_AdminSt; + default "disabled"; + description "Peer Gateway"; + } + + // Enable graceful type-1 consistency check + leaf grcflCnstncyChck { + + type nw_AdminSt; + description "Graceful Type-1 Consistency Check"; + } + + // Tracking object to suspend vPC if object goes down + leaf track { + + type vpc_Track; + description "Tracking object to suspend vPC if object goes down"; + } + + // Enable auto recovery if peer is presumed non-operational + leaf autoRecovery { + + type nw_AdminSt; + default "disabled"; + description "Auto Recovery"; + } + + // Duration to wait before assuming peer dead and restoring vpcs + leaf autoRecoveryIntvl { + + type vpc_AutoRecoveryIntvl; + description "Auto Recovery interval"; + } + + // Enable peer switch on vPC pair switches + leaf peerSwitch { + + type nw_AdminSt; + default "disabled"; + description "vPC pair switches"; + } + + // Delay in bringing up the vPC links + leaf delayRestoreVPC { + + type vpc_DelayRestoreVPC; + description "Delay restore for vPC links"; + } + + // Delay in bringing-up interface-vlan + leaf delayRestoreSVI { + + type vpc_DelayRestoreSVI; + description "Delay restore for SVI"; + } + + // Delay in bringing-up the peer-link + leaf delayPeerLinkBringup { + + type vpc_DelayPeerLinkBringup; + description "Peer link delay timer"; + } + + // Delay restore: Orphan Port + leaf delayRestoreOrphanPort { + + type vpc_DelayRestoreOrphanPort; + description "Delay restore for orphan ports"; + } + leaf macBpduSrcVer2 { + type boolean; + default "false"; + description "Version 2 bpdu source mac-address"; + } + + // Interface vlans to exclude from suspension when dual-active + leaf excludeSVI { + + type vpc_ExcludeSVI; + description "SVI List excluded from suspension when dual-active"; + } + + // Suspend vPC locally + leaf adminSt { + + type nw_AdminSt; + description "vPC suspend locally"; + } + + // Enable auto recovery if peer is presumed non-operational + leaf fastConvergence { + + type nw_AdminSt; + default "disabled"; + description "Fast Convergence"; + } + + // Layer 3 Peer Router status + leaf l3PeerRouter { + + type nw_AdminSt; + default "disabled"; + description "L3 Peer Router"; + } + + // Layer 3 Peer Router Syslog Status + leaf l3PeerRouterSyslog { + + type nw_AdminSt; + default "disabled"; + description "L3 Peer Router Syslog"; + } + + // Layer 3 Peer Router Syslog Interval + leaf l3PeerRouterSyslogInterval { + + type vpc_L3PeerRouterSyslogInterval; + description "L3 Peer Router Syslog Interval"; + } + + // role + leaf operRole { + config "false"; + + type vpc_Role; + description "Operational Role"; + } + + // old role + leaf oldRole { + config "false"; + + type vpc_Role; + description "Old Role"; + } + + // lacp role + leaf lacpRole { + config "false"; + + type vpc_Role; + description "Lacp Role"; + } + + // summarized role + leaf summOperRole { + config "false"; + + type vpc_SummRole; + description "Summarized Oper Role"; + } + + // local system priority + leaf localPrio { + config "false"; + + type vpc_SysPrio; + description "Local System Priority"; + } + + // peer system priority + leaf peerPrio { + config "false"; + + type vpc_SysPrio; + description "Peer System Priority"; + } + + // vpc system priority + leaf vpcPrio { + config "false"; + + type vpc_SysPrio; + description "Vpc System Priority"; + } + leaf localMAC { + config "false"; + type address_Mac; + description "Local System MAC"; + } + leaf peerMAC { + config "false"; + type address_Mac; + description "Peer System MAC"; + } + leaf vpcMAC { + config "false"; + type address_Mac; + description "Vpc System MAC"; + } + + // various operational state + leaf operSt { + config "false"; + + type vpc_DomOperSt; + description "Operational State"; + } + + // peer version + leaf peerVersion { + config "false"; + + type vpc_PeerVersion; + description "Peer Version"; + } + + // batched vpc inventory + leaf batchedVpcInv { + config "false"; + + type vpc_BatchedVpcInv; + description "Batched Vpc Inventory"; + } + leaf issuFromVer { + config "false"; + type string; + description "Issu from Version"; + } + leaf issuToVer { + config "false"; + type string; + description "Issu to Version"; + } + + // Peer state + leaf peerSt { + config "false"; + + type vpc_PeerSt; + description "Peer State"; + } + + // Peer status reason code + leaf peerStQual { + config "false"; + + type vpc_PeerStQual; + description "Peer Status Qualifier"; + } + + // Dual active status + leaf dualActiveSt { + config "false"; + + type vpc_DualActiveSt; + description "Dual Active Status"; + } + + // Compatibility status + leaf compatSt { + config "false"; + + type vpc_CompatSt; + description "Compatibility Status"; + } + + // Compatibility reason code + leaf compatQual { + config "false"; + + type vpc_CompatQual; + description "Compatibility Qualifier"; + } + leaf compatQualStr { + config "false"; + type string; + description "Compatibility Qualifier String"; + } + + // Type-2 compatibility status + leaf type2CompatSt { + config "false"; + + type vpc_CompatSt; + description "Type-2 Compatibility Status"; + } + + // Type-2 compatibility reason code + leaf type2CompatQual { + config "false"; + + type vpc_CompatQual; + description "Type-2 Compatibility Qualifier"; + } + leaf type2CompatQualStr { + config "false"; + type string; + description "Type-2 Compatibility Qualifier String"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + container if-items { + list If-list { + key "id"; + + uses vpc_If-group; + description "VPC Interface list"; + } + description "VPC Interface"; + } + + // vpc keepalive definitions + container keepalive-items { + + uses vpc_Keepalive-group; + description "VPC Keepalive Policy"; + } + + // This object holds parameters information for an app. + container params-items { + list AppParams-list { + config "false"; + key "appId"; + + uses vpc_AppParams-group; + description "Application Parameters list"; + } + description "Application Parameters"; + } + + container rsvpcInstPolCons-items { + + uses vpc_RsVpcInstPolCons_source-group; + description "Vpc Instance Policy Attachment"; + } + } + + grouping vpc_If-group { + description "VPC Interface"; + + // vpc id + leaf id { + + type vpc_Id; + description "VPC ID"; + } + + // local operational status + leaf localOperSt { + config "false"; + + type vpc_OperSt; + description "Local Operational State"; + } + + // remote operational status + leaf remoteOperSt { + config "false"; + + type vpc_OperSt; + description "Remote Operational State"; + } + + // Compatibility status + leaf compatSt { + config "false"; + + type vpc_CompatSt; + description "Compatibility Status"; + } + + // Compatibility reason code + leaf compatQual { + config "false"; + + type vpc_CompatQual; + description "Compatibility Qualifier"; + } + leaf compatQualStr { + config "false"; + type string; + description "Compatibility Qualifier String"; + } + + // Configured vlans + leaf cfgdVlans { + config "false"; + + type l2_VlanBitmap; + description "Configured Vlans"; + } + + // Configured trunk vlans + leaf cfgdTrunkVlans { + config "false"; + + type l2_VlanBitmap; + description "Configured Trunk Vlans"; + } + leaf cfgdAccessVlan { + config "false"; + type string; + description "Configured Access Vlan"; + } + + // Up vlans + leaf upVlans { + config "false"; + + type l2_VlanBitmap; + description "Up Vlans"; + } + + // Suspended vlans + leaf suspVlans { + config "false"; + + type l2_VlanBitmap; + description "Suspended Vlans"; + } + + // Configured vlans on peer + leaf peerCfgdVlans { + config "false"; + + type l2_VlanBitmap; + description "Peer Configured Vlans"; + } + + // Up vlans on peer + leaf peerUpVlans { + config "false"; + + type l2_VlanBitmap; + description "Peer Up Vlans"; + } + + // This object holds parameters information for an app. + container params-items { + list AppParams-list { + config "false"; + key "appId"; + + uses vpc_AppParams-group; + description "Application Parameters list"; + } + description "Application Parameters"; + } + + container rsvpcConf-items { + + uses vpc_RsVpcConf_source-group; + description "Port Channel Attachment"; + } + } + + grouping vpc_AppParams-group { + description "Application Parameters"; + + // Application Sap Id + leaf appId { + config "false"; + + type vpc_AppId; + description "Application SAP ID"; + } + + // Local Reason Code + leaf locRsnCode { + config "false"; + + type vpc_CompatQual; + description "Local Reason Code"; + } + + // Local Param Length + leaf locParamLen { + config "false"; + + type vpc_ParamLen; + description "Local Param Length"; + } + + // Local Param Value + leaf locParamVal { + config "false"; + + type vpc_ParamVal; + description "Local Param Value"; + } + + // Remote Reason Code + leaf remRsnCode { + config "false"; + + type vpc_CompatQual; + description "Remoe Reason Code"; + } + + // Remote Param Length + leaf remParamLen { + config "false"; + + type vpc_ParamLen; + description "Remote Param Length"; + } + + // Remote Param Value + leaf remParamVal { + config "false"; + + type vpc_ParamVal; + description "Remote Param Value"; + } + + // This object holds per app per param information . + container param-items { + list AppParamInfo-list { + config "false"; + key "paramName"; + + uses vpc_AppParamInfo-group; + description "Application Parameter Information list"; + } + description "Application Parameter Information"; + } + } + + grouping vpc_AppParamInfo-group { + description "Application Parameter Information"; + leaf paramName { + config "false"; + type string; + description "Parameter Name"; + } + + // Param Type + leaf paramType { + config "false"; + + type vpc_ParamType; + description "Parameter Type"; + } + leaf locParamVal { + config "false"; + type string; + description "Local Parameter Value"; + } + leaf remParamVal { + config "false"; + type string; + description "Remote Parameter Value"; + } + } + + grouping vpc_Keepalive-group { + description "VPC Keepalive Policy"; + + // vrf name + leaf vrf { + + type l3_VrfName; + description "VRF"; + } + leaf srcIp { + type address_Ip; + description "Source IP"; + } + leaf destIp { + type address_Ip; + description "Destination IP"; + } + + // port number + leaf udpPort { + + type comm_Port; + description "UDP Port"; + } + + // interval + leaf interval { + + type vpc_KeepaliveInterval; + description "Interval"; + } + + // timeout + leaf timeout { + + type vpc_KeepaliveTout; + description "Timeout"; + } + + // tos config type + leaf tosCfgType { + + type vpc_TosCfgType; + description "TOS Type"; + } + + // tos byte + leaf tosByte { + + type vpc_TosByte; + description "TOS Byte"; + } + + // tos value + leaf tosValue { + + type vpc_TosValue; + description "TOS Value"; + } + + // tos type + leaf tosType { + + type vpc_TosType; + description "TOS Type"; + } + + // precedence value + leaf precValue { + + type vpc_PrecValue; + description "Precedence Value"; + } + + // precedence type + leaf precType { + + type vpc_PrecType; + description "Precedence Type"; + } + + // flush timeout + leaf flushTout { + + type vpc_FlushTout; + description "Flush Timeout"; + } + + // operational state + leaf operSt { + config "false"; + + type vpc_KeepaliveOperSt; + description "Operational State"; + } + + // send interface + leaf sendIf { + config "false"; + + type nw_IfId; + description "Send Interface"; + } + + // recv interface + leaf recvIf { + config "false"; + + type nw_IfId; + description "Received Interface"; + } + + // last send time + leaf sendTime { + config "false"; + + type vpc_Time; + description "Last Send Time"; + } + + // last recv time + leaf recvTime { + config "false"; + + type vpc_Time; + description "Last Received Time"; + } + + // first recv time + leaf firstRecvTime { + config "false"; + + type vpc_Time; + description "First Received Time"; + } + + leaf name { + + type naming_Name; + description "Name"; + } + + // Specify link used for peer communication + container peerlink-items { + + uses vpc_PeerLink-group; + description "Peer Link"; + } + } + + grouping vpc_PeerLink-group { + description "Peer Link"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping xbar_LogLevel-group { + description "Config Xbar logging level"; + + // logging level + leaf loggingLevel { + + type xbar_LoggingLevel; + description "Logging Level"; + } + + // logging type + leaf loggingType { + config "false"; + + type xbar_LoggingType; + description "Logging type"; + } + } + + grouping gold_Entity-group { + description "Gold Entity"; + + // Diagnostic Bootup Level + leaf diagBootLevel { + + type gold_bootLevel; + description "Module Diagnostic Bootup Level"; + } + + // Config for Gold + container config-items { + + uses gold_Config-group; + description "Gold Health monitoring configurations"; + } + + // Module + container module-items { + list Module-list { + key "id"; + + uses gold_Module-group; + description "Gold Module list"; + } + description "Gold Module"; + } + } + + grouping gold_Config-group { + description "Gold Health monitoring configurations"; + + // Diagnostic monitor module all + leaf diagMonitorModuleAll { + + type gold_AdminSt; + description "Diagnostic Monitor Module All Diagnostic All"; + } + + // Test name + leaf monitorTestName { + + type gold_Name; + description "GOLD Health Monitoring Specific Test on All Modules"; + } + + // Test monitor + leaf monitorTestStatus { + + type gold_AdminSt; + description "Health Monitor All Modules Specific Test Status"; + } + + // Module Configuration + container module-items { + list ModuleConfig-list { + key "modId"; + + uses gold_ModuleConfig-group; + description " GOLD Module level health monitor configuration list"; + } + description " GOLD Module level health monitor configuration "; + } + } + + grouping gold_ModuleConfig-group { + description " GOLD Module level health monitor configuration "; + + // Module id + leaf modId { + + type gold_Id; + description "GOLD helath monitoring Module Id Property has READ-Create access."; + } + + // Test monitor + leaf testMonitorAll { + + type gold_AdminSt; + description "Health Monitor Module level Status"; + } + + // Test Interval + leaf testModuleInterval { + + type gold_TestTime; + description "Health Monitor Test Module Interval"; + } + + // Test monitor + container test-items { + list TestMonitor-list { + key "id"; + + uses gold_TestMonitor-group; + description "Test monitor status list"; + } + description "Test monitor status"; + } + } + + grouping gold_TestMonitor-group { + description "Test monitor status"; + + // Test id + leaf id { + + type gold_Id; + description "GOLD Health Monitoring Test Id Property has READ-Create access."; + } + + // Test name + leaf monitorTestName { + + type gold_Name; + description "GOLD Health Monitoring Test Name"; + } + + // Test monitor + leaf monitorStatus { + + type gold_AdminSt; + description "Health Monitor Status"; + } + + // Test Interval + leaf testInterval { + + type gold_TestTime; + description "Health Monitor Test Interval"; + } + } + + grouping gold_Module-group { + description "Gold Module"; + + // Module id + leaf id { + + type gold_Id; + description "Module Id Property has READ-Create access."; + } + + // Module name + leaf description { + config "false"; + + type gold_Name; + description "Module Description"; + } + + // Module Diag Status + leaf diagStatus { + config "false"; + + type gold_moduleDiagStatus; + description "Module Diagnostic Status"; + } + + // Test + container test-items { + list Test-list { + key "id"; + + uses gold_Test-group; + description "Test case list"; + } + description "Test case"; + } + } + + grouping gold_Test-group { + description "Test case"; + + // Test id + leaf id { + + type gold_Id; + description "Test Id"; + } + + // Test name + leaf monitorTestName { + config "false"; + + type gold_Name; + description "Monitor Test Id to Test Name Mapping"; + } + + // Test status + container teststatus-items { + + uses gold_TestStatus-group; + description "Test running status"; + } + } + + grouping gold_TestStatus-group { + description "Test running status"; + + // Test name + leaf name { + config "false"; + + type gold_Name; + description "Test Name"; + } + + // Test first fail time + leaf firstFailTime { + config "false"; + + type gold_TestTime; + description "Test First Failure Time"; + } + + // Test last fail time + leaf lastFailTime { + config "false"; + + type gold_TestTime; + description "Test Last Failure Time"; + } + + // Test last execution time + leaf lastExecutionTime { + config "false"; + + type gold_TestTime; + description "Test Last Execution Time"; + } + + // Test last pass time + leaf lastPassTime { + config "false"; + + type gold_TestTime; + description "Test Last Pass Time"; + } + + // Test next execution time + leaf nextExecutionTime { + config "false"; + + type gold_TestTime; + description "Test Next Execution Time"; + } + + // Test result + leaf result { + config "false"; + + type gold_Result; + description "Test Result"; + } + + // Test failure reason + leaf resultReason { + config "false"; + + type gold_TestFailReason; + description "Test Failure Reason"; + } + leaf runCount { + config "false"; + type uint32; + description "Test Run Count"; + } + leaf failCount { + config "false"; + type uint32; + description "Test Fail Count"; + } + leaf consecutiveFailCount { + config "false"; + type uint32; + description "Test Consecutive Fail Count"; + } + + // Aborted Ports + leaf portsAborted { + config "false"; + + type gold_PortList; + description "List of Aborted Ports"; + } + + // Error Disabled Ports + leaf portsErrorDisabled { + config "false"; + + type gold_PortList; + description "List of Error Disabled Ports"; + } + + // Failed Ports + leaf portsFailing { + config "false"; + + type gold_PortList; + description "List of Failing Ports"; + } + + // Incomplete Ports + leaf portsIncomplete { + config "false"; + + type gold_PortList; + description "List of Incomplete Ports"; + } + + // Passed Ports + leaf portsPassing { + config "false"; + + type gold_PortList; + description "List of Passing Ports"; + } + + // Untested Ports + leaf portsUntested { + config "false"; + + type gold_PortList; + description "List of Untested Ports"; + } + leaf testAttributes { + config "false"; + type string; + description "Test Attributes"; + } + + // Test Interval + leaf testInterval { + config "false"; + + type gold_TestTime; + description "Runtime Health Monitor Test Interval"; + } + + // lowest allowed Test Interval + leaf lowestAllowedTestInterval { + config "false"; + + type gold_TestTime; + description "Lowest Allowed Test Interval in Seconds"; + } + + // Test Interval + leaf runtimeMonitorStatus { + config "false"; + + type gold_AdminSt; + description "Runtime Health Monitor Test monitor status"; + } + } + + grouping igmp_Entity-group { + description "IGMP Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This object holds igmp if db information + // Ephemeral data + container igmpifdb-items { + + // Ephemeral data + list IgmpIfdb-list { + config "false"; + key "ifdbtype"; + + uses igmp_IgmpIfdb-group; + description "Holds IGMP IF db information list"; + } + description "Holds IGMP IF db information"; + } + + // This objects hold per igmp instance information. There is only + // one instance of igmp running in the system today + container inst-items { + + uses igmp_Inst-group; + description "IGMP Instance"; + } + } + + grouping igmp_IgmpIfdb-group { + description "Holds IGMP IF db information"; + + // Type of the repository + // Ephemeral data + leaf ifdbtype { + config "false"; + + type igmp_ifdbT; + description "represents repository type"; + } + + // This objects hold per igmp domain (vrf) information + // Ephemeral data + container igmpdom-items { + + // Ephemeral data + list IgmpDom-list { + config "false"; + key "name"; + + uses igmp_IgmpDom-group; + description "Holds per PIM domain (vrf) information list"; + } + description "Holds per PIM domain (vrf) information"; + } + } + + grouping igmp_IgmpDom-group { + description "Holds per PIM domain (vrf) information"; + + // Vrf name + // Ephemeral data + leaf name { + config "false"; + + type l3_VrfName; + description "Virtual Routing and Forwarding Name"; + } + + // This object holds igmp information that is operated at a + // interface level + // Ephemeral data + container igmpif-items { + + // Ephemeral data + list IgmpIf-list { + config "false"; + key "id"; + + uses igmp_IgmpIf-group; + description "Holds igmp information that is operated at a interface level list"; + } + description "Holds igmp information that is operated at a interface level"; + } + } + + grouping igmp_IgmpIf-group { + description "Holds igmp information that is operated at a interface level"; + + // Ephemeral data + leaf id { + config "false"; + + type igmp_IfId; + description "Interface Identifier of this endpoint"; + } + + // This object holds the igmp interface related statistics + // Ephemeral data + container igmpifprop-items { + + uses igmp_IgmpIfProp-group; + description "This object holds the IGMP interface related statistics"; + } + + // IGMP Interface Stats Oper MO + // Ephemeral data + container igmpifstats-items { + + uses igmp_IgmpIfStats-group; + description "Holds IGMP interface statistics"; + } + } + + grouping igmp_IgmpIfProp-group { + description "This object holds the IGMP interface related statistics"; + + // Ephemeral data + leaf ifName { + config "false"; + type string; + description "IGMP enabled interface name"; + } + + // Ephemeral data + leaf ifStatus { + config "false"; + type string; + description "IGMP enabled interface status"; + } + + // Ephemeral data + leaf addrSummary { + config "false"; + type string; + description "IGMP enabled address summary"; + } + + // Ephemeral data + leaf querier { + config "false"; + type string; + description "IGMP Querier address on interface"; + } + + // Ephemeral data + leaf querierVersion { + config "false"; + type string; + description "IGMP Querier version on interface"; + } + + // Ephemeral data + leaf nextQuery { + config "false"; + type string; + description "IGMP next Query on interface"; + } + + // Ephemeral data + leaf memembershipCount { + config "false"; + type uint32; + description "IGMP Membership count on interface"; + } + + // Ephemeral data + leaf igmpVer { + config "false"; + type uint32; + description "IGMP version on interface"; + } + + // Ephemeral data + leaf hostVer { + config "false"; + type uint32; + description "IGMP host version on interface"; + } + + // Ephemeral data + leaf queryIntrvl { + config "false"; + type uint32; + description "IGMP query Interval on interface"; + } + + // Ephemeral data + leaf cfgQueryIntrvl { + config "false"; + type uint32; + description "IGMP Configured query Interval on interface"; + } + + // Ephemeral data + leaf maxRespTime { + config "false"; + type uint32; + description "IGMP MAX RESPONSE TIME on interface"; + } + + // Ephemeral data + leaf cfgmaxRespTime { + config "false"; + type uint32; + description "IGMP Configured MAX RESPONSE TIME on interface"; + } + + // Ephemeral data + leaf startUpQueryIntvl { + config "false"; + type uint32; + description "IGMP startup query interval on interface"; + } + + // Ephemeral data + leaf startupQueryCnt { + config "false"; + type uint32; + description "IGMP startup query count on interface"; + } + + // Ephemeral data + leaf cfgStartupQueryCnt { + config "false"; + type uint32; + description "IGMP configured startup query count on interface"; + } + + // Ephemeral data + leaf lastMemMTR { + config "false"; + type uint32; + description "IGMP last member mrt on interface"; + } + + // Ephemeral data + leaf lastMemQueryCnt { + config "false"; + type uint32; + description "IGMP last member query Cnt on interface"; + } + + // Ephemeral data + leaf groupTimeOut { + config "false"; + type uint32; + description "IGMP Group member timeout in secs"; + } + + // Ephemeral data + leaf cfgGrpTimeOut { + config "false"; + type uint32; + description "IGMP configured grp member timeout on interface"; + } + + // Ephemeral data + leaf querierTimeOut { + config "false"; + type uint32; + description "IGMP querier timeout on interface"; + } + + // Ephemeral data + leaf cfgquerierTimeOut { + config "false"; + type uint32; + description "IGMP configured querier timeout on interface"; + } + + // Ephemeral data + leaf unsolicitedRprtIntvl { + config "false"; + type uint32; + description "IGMP unsolicited report interval on interface"; + } + + // Ephemeral data + leaf robustness { + config "false"; + type uint32; + description "IGMP robustness on interface"; + } + + // Ephemeral data + leaf cfgRobustness { + config "false"; + type uint32; + description "IGMP configured robustness on interface"; + } + + // Ephemeral data + leaf reportingForLinkLocal { + config "false"; + type boolean; + description "IGMP robustness on interface"; + } + + // Ephemeral data + leaf refCnt { + config "false"; + type uint32; + description "IGMP reference count on interface"; + } + + // Ephemeral data + leaf igmpImmedLeave { + config "false"; + type boolean; + description "IGMP immediate leave on interface"; + } + + // Ephemeral data + leaf rprtPolicy { + config "false"; + type string; + description "IGMP Report policy on interface"; + } + } + + grouping igmp_IgmpIfStats-group { + description "Holds IGMP interface statistics"; + + // Ephemeral data + leaf v1RecvRprt { + config "false"; + type uint32; + description "Number of IGMP v1 receiver report"; + } + + // Ephemeral data + leaf v2querSent { + config "false"; + type uint32; + description "Number of IGMP v2 queries sent"; + } + + // Ephemeral data + leaf v2querRcvd { + config "false"; + type uint32; + description "Number of IGMP v2 queries received"; + } + + // Ephemeral data + leaf v2rprtSent { + config "false"; + type uint32; + description "Number of IGMP v2 reports sent"; + } + + // Ephemeral data + leaf v2leaveSent { + config "false"; + type uint32; + description "Number of IGMP v2 leave sent"; + } + + // Ephemeral data + leaf v2leaveRcvd { + config "false"; + type uint32; + description "Number of IGMP v2 leave received"; + } + + // Ephemeral data + leaf v2rprtRcvd { + config "false"; + type uint32; + description "Number of IGMP v2 reports received"; + } + + // Ephemeral data + leaf v3querSent { + config "false"; + type uint32; + description "Number of IGMP v3 queries sent"; + } + + // Ephemeral data + leaf v3querRcvd { + config "false"; + type uint32; + description "Number of IGMP v3 queries received"; + } + + // Ephemeral data + leaf v3rprtSent { + config "false"; + type uint32; + description "Number of IGMP v3 reports sent"; + } + + // Ephemeral data + leaf v3rprtRcvd { + config "false"; + type uint32; + description "Number of IGMP v3 reports received"; + } + + // Ephemeral data + leaf v2gqDestFailures { + config "false"; + type uint32; + description "Number of IGMP v2 Destinatation failures"; + } + + // Ephemeral data + leaf v3gqDestFailures { + config "false"; + type uint32; + description "Number of IGMP v3 Destinatation failures"; + } + + // Ephemeral data + leaf checkSumErrors { + config "false"; + type uint32; + description "Number of IGMP checksum errors"; + } + + // Ephemeral data + leaf pktlengtherrors { + config "false"; + type uint32; + description "Number of IGMP packet length errors"; + } + + // Ephemeral data + leaf localsrcipPkts { + config "false"; + type uint32; + description "Number of IGMP local source ip packets"; + } + + // Ephemeral data + leaf subnetChkFailures { + config "false"; + type uint32; + description "Number of IGMP subnet check failures"; + } + + // Ephemeral data + leaf queryFromNonQuerier { + config "false"; + type uint32; + description "Number of IGMP queries from non querier"; + } + + // Ephemeral data + leaf rprtVersionMismatch { + config "false"; + type uint32; + description "IGMP report version mismatch stats"; + } + + // Ephemeral data + leaf queryVersionMismatch { + config "false"; + type uint32; + description "IGMP query version mismatch stats"; + } + + // Ephemeral data + leaf unknownIgmpType { + config "false"; + type uint32; + description "Number of unknown IGMP types"; + } + + // Ephemeral data + leaf v1GrpDestAddrMismatch { + config "false"; + type uint32; + description "IGMP v1 group destination address mismatch stats"; + } + + // Ephemeral data + leaf v2GrpDestAddrMismatch { + config "false"; + type uint32; + description "IGMP v2 group destination address mismatch stats"; + } + + // Ephemeral data + leaf v3DestInvalid { + config "false"; + type uint32; + description "Number of IGMP v3 invalid destination addresses"; + } + + // Ephemeral data + leaf rapktDrop { + config "false"; + type uint32; + description "Number of RApacket drops"; + } + } + + grouping igmp_Inst-group { + description "IGMP Instance"; + leaf heavyTemplate { + type boolean; + description "Enabling/Disabling IGMP Heavy Template"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Control + leaf instCtrl { + + type ipmc_InstCtrl; + description "Inst Controls"; + } + + // Bootup route add delay to RIB + leaf bootupDelay { + + type ipmc_BootupDelay; + description "Bootup Route Add Delay"; + } + leaf flushRoute { + type boolean; + description "Flush Routes on Restart"; + } + leaf rtrAlert { + type boolean; + description "Enforce Router Alert"; + } + leaf anyQueryDest { + type boolean; + description "Allow any destination-IP for General Queries "; + } + + // syslog-Threshold + leaf syslogThreshold { + + type ipmc_SyslogThresT; + description "IGMP table syslog threshold percentage"; + } + leaf spoofCheck { + type boolean; + description "Enable spoof check for IGMP"; + } + leaf strictQuerElect { + type boolean; + description "Consider subnet check for L3 igmp querier election"; + } + + // This objects hold per igmp external domain information + container extdom-items { + list ExtDom-list { + key "id"; + + uses igmp_ExtDom-group; + description "This object holds IGMP external domain information list"; + } + description "This object holds IGMP external domain information"; + } + + // This objects hold per igmp domain information + container dom-items { + list Dom-list { + key "name"; + + uses igmp_Dom-group; + description "This object holds IGMP domain information list"; + } + description "This object holds IGMP domain information"; + } + + container loglevel-items { + + uses igmp_LogLevel-group; + description "Configure logging level"; + } + + // IGMP database for show commands - needs to be ephemeral + // Ephemeral data + container routedb-items { + + uses igmp_RouteDb-group; + description "IGMP database for show commands"; + } + } + + grouping igmp_ExtDom-group { + description "This object holds IGMP external domain information"; + + // Id for this domain @@@ This comes from the Network id assigned by the + // PE for the external domain + leaf id { + + type top_RemoteNetworkId; + description "Domain Identifier"; + } + + // Igmp Version + leaf ver { + + type mcast_Ver; + description "IGMP Version"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // This objects hold per igmp external interface information + container extif-items { + list ExtIf-list { + key "id"; + + uses igmp_ExtIf-group; + description "This object holds IGMP external interface information list"; + } + description "This object holds IGMP external interface information"; + } + } + + grouping igmp_ExtIf-group { + description "This object holds IGMP external interface information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping igmp_Dom-group { + description "This object holds IGMP domain information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // IGMP databases + container db-items { + list Db-list { + config "false"; + key "type"; + + uses igmp_Db-group; + description "IGMP Database list"; + } + description "IGMP Database"; + } + container eventHist-items { + list EventHistory-list { + key "type"; + + uses igmp_EventHistory-group; + description "This object holds configuration details of event-history buffers list"; + } + description "This object holds configuration details of event-history buffers"; + } + + // This objects hold per igmp interface information + container if-items { + list If-list { + key "id"; + + uses igmp_If-group; + description "This object holds per IGMP interface information list"; + } + description "This object holds per IGMP interface information"; + } + + // This objects hold per igmp external interface information that + // supports mvr configs + container mvrif-items { + list MvrIf-list { + key "id"; + + uses igmp_MvrIf-group; + description + "This objects hold per igmp external interface + information that supports mvr configs list"; + } + description + "This objects hold per igmp external interface + information that supports mvr configs"; + } + + // This objects holds multicast vlan registration state + container mvr-items { + + uses igmp_Mvr-group; + description "This objects holds multicast vlan registration state"; + } + + // This objects hold per igmp domain information + container ssmxlate-items { + list SSMXlate-list { + key "srcAddr grpPfx"; + + uses igmp_SSMXlate-group; + description "Holds Source Specific Multicast (SSM) translation information list"; + } + description "Holds Source Specific Multicast (SSM) translation information"; + } + } + + grouping igmp_Db-group { + description "IGMP Database"; + + // Type of the repository + leaf type { + config "false"; + + type igmp_DbT; + description "Database type for different show commands"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // IGMP Group/Src MOs + container src-items { + list Route-list { + config "false"; + key "src grp"; + + uses igmp_Route-group; + description "Holds IGMP Route Information list"; + } + description "Holds IGMP Route Information"; + } + } + + grouping igmp_Route-group { + description "Holds IGMP Route Information"; + leaf src { + config "false"; + type address_Ip; + description "Source Address"; + } + leaf grp { + config "false"; + type address_Ip; + description "Group Address"; + } + + // IGMP Oif MOs. We create one object per interface in the oif list + container oif-items { + list Oif-list { + config "false"; + key "oif"; + + uses igmp_Oif-group; + description "Holds Outgoing Interface Information. Supported Interfaces Include Ethernet-like, Port/Channel, Vlan, Loopback Interfaces. list"; + } + description "Holds Outgoing Interface Information. Supported Interfaces Include Ethernet-like, Port/Channel, Vlan, Loopback Interfaces."; + } + } + + grouping igmp_Oif-group { + description "Holds Outgoing Interface Information. Supported Interfaces Include Ethernet-like, Port/Channel, Vlan, Loopback Interfaces."; + + leaf oif { + config "false"; + + type nw_IfId; + description "Outgoing interface"; + } + } + + grouping igmp_EventHistory-group { + description "This object holds configuration details of event-history buffers"; + + leaf type { + + type igmp_EhType; + description "Configures type of event history"; + } + + leaf size { + + type igmp_Size; + description "Configures buffer size in text per kb"; + } + } + + grouping igmp_If-group { + description "This object holds per IGMP interface information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + // Interface Control + leaf ifCtrl { + + type ipmc_IfCtrl; + description "Controls"; + } + + // Interface version + leaf ver { + + type mcast_Ver; + description "Version"; + } + + // Group Timeout + leaf grpTimeout { + + type ipmc_GrpTimeout; + description "Group Membership Timeout"; + } + leaf actQuer { + config "false"; + type address_Ip; + description "IGMP active querier IP"; + } + leaf nextQuerTime { + config "false"; + type union { + type string; + type uint64; + } + description "IGMP next query time"; + } + + // Flags + leaf flags { + config "false"; + + type ipmc_IfFlags; + description "Flags"; + } + leaf entryCount { + type uint32; + description "Dynamic entry count"; + } + leaf stEntryCount { + type uint32; + description "Static Entry count"; + } + leaf querExpiry { + config "false"; + type union { + type string; + type uint64; + } + description "Querier expiry time"; + } + leaf reportLl { + type boolean; + description "Report link local"; + } + leaf immediateLeave { + type boolean; + description "Fast leave"; + } + + // Allow v3 ASM + leaf allowv3Asm { + + type ipmc_Allowv3AsmType; + description "Allow v3 ASM"; + } + leaf suppressv3Gsq { + type boolean; + description "Suppress v3 GSQ"; + } + + // IGMP Interface Stats Oper MO + container IfStats-items { + + uses igmp_IfStats-group; + description "Holds IGMP interface statistics"; + } + + // This objects hold IP Multicast Group JoinType information + container jointype-items { + list JoinType-list { + key "type"; + + uses igmp_JoinType-group; + description "This Object Holds IP Multicast Group JoinType Information list"; + } + description "This Object Holds IP Multicast Group JoinType Information"; + } + + // This object holds resource (router state) limit policy + // to limit amount of multicast routing state on the router + container limit-items { + + uses igmp_ResP-group; + description "Holds Resource policy to limit amount of multicast routing state on the router"; + } + + // This object holds igmp reports policy state per Interface + container reppol-items { + + uses igmp_RepP-group; + description "This object holds igmp reports policy state per Interface"; + } + + // This object holds static igmp reports policy state per Interface + container streppol-items { + list StRepP-list { + key "joinType"; + + uses igmp_StRepP-group; + description "Holds Static IGMP report policy list"; + } + description "Holds Static IGMP report policy"; + } + + // This object holds IGMP Host-proxy report policy state per Interface + container hostproxy-items { + + uses igmp_HostProxyP-group; + description "Holds IGMP Host-proxy properties"; + } + + // This object holds querier information per interface + container querierp-items { + + uses igmp_QuerierP-group; + description "Holds IGMP querier information"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping igmp_IfStats-group { + description "Holds IGMP interface statistics"; + leaf v2querSent { + config "false"; + type uint32; + description "Number of IGMP v2 queries sent"; + } + leaf v2querRcvd { + config "false"; + type uint32; + description "Number of IGMP v2 queries received"; + } + leaf v3querSent { + config "false"; + type uint32; + description "Number of IGMP v3 queries sent"; + } + leaf v3querRcvd { + config "false"; + type uint32; + description "Number of IGMP v3 queries received"; + } + leaf v2rprtSent { + config "false"; + type uint32; + description "Number of IGMP v2 reports sent"; + } + leaf v2rprtRcvd { + config "false"; + type uint32; + description "Number of IGMP v2 reports received"; + } + leaf v3rprtSent { + config "false"; + type uint32; + description "Number of IGMP v3 reports sent"; + } + leaf v3rprtRcvd { + config "false"; + type uint32; + description "Number of IGMP v3 reports received"; + } + leaf v2leaveSent { + config "false"; + type uint32; + description "Number of IGMP v2 leave sent"; + } + leaf v2leaveRcvd { + config "false"; + type uint32; + description "Number of IGMP v2 leave received"; + } + } + + grouping igmp_JoinType-group { + description "This Object Holds IP Multicast Group JoinType Information"; + + // Join Type of the groups + leaf type { + + type ipmc_JoinType; + description "Join Type of the Groups. Supported Types Include Static or Join."; + } + + // This objects hold IP Multicast Group version information + container ver-items { + list Version-list { + key "version"; + + uses igmp_Version-group; + description "This Object Holds IP Multicast Group Version Information list"; + } + description "This Object Holds IP Multicast Group Version Information"; + } + } + + grouping igmp_Version-group { + description "This Object Holds IP Multicast Group Version Information"; + + // IGMP version + leaf version { + + type ipmc_Ver; + description "IGMP Group Version"; + } + + // This object holds igmp group configuration per Interface + container group-items { + list Group-list { + key "grp"; + + uses igmp_Group-group; + description "IGMP Group Information per Interface list"; + } + description "IGMP Group Information per Interface"; + } + } + + grouping igmp_Group-group { + description "IGMP Group Information per Interface"; + leaf grp { + type address_Ip; + description "Route IP Address for Choosing Groups"; + } + leaf useStaticOif { + type boolean; + default "true"; + description "Indicates if Static Outgoing Interace is Being Used"; + } + + // This object holds static igmp source per group + container source-items { + list Source-list { + key "src"; + + uses igmp_Source-group; + description "This Object Holds Static IGMP Source per Group list"; + } + description "This Object Holds Static IGMP Source per Group"; + } + } + + grouping igmp_Source-group { + description "This Object Holds Static IGMP Source per Group"; + leaf src { + type address_Ip; + description "IGMP Source IP Address"; + } + leaf useStaticOif { + type boolean; + default "true"; + description "Indicates if Static Outgoing Interface is being used"; + } + } + + grouping igmp_ResP-group { + description "Holds Resource policy to limit amount of multicast routing state on the router"; + + // Reserved entry Limit Status + leaf rsvdEntries { + config "false"; + + type igmp_LimitSt; + description "Reserved entries availability status"; + } + + // Regular entry Limit Status + leaf regEntries { + config "false"; + + type igmp_LimitSt; + description "Regular entries availability status"; + } + leaf availRsvdEntries { + config "false"; + type uint32; + description "Availble reserved entries"; + } + leaf availRegEntries { + config "false"; + type uint32; + description "Available regular entries"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Maximum Multicast Entries + leaf max { + + type mcast_NumEntries; + description "Maximum Multicast Entries"; + } + + // Reserved Multicast Entries + leaf rsvd { + + type mcast_NumEntries; + description "Reserved Multicast Entries"; + } + leaf rtMap { + type string; + description "Reserved Entries Route Map"; + } + } + + grouping igmp_RepP-group { + description "This object holds igmp reports policy state per Interface"; + leaf rtMap { + type string; + description "Route Map"; + } + leaf pfxList { + type string; + description "Prefix List"; + } + leaf useAccessGrpCommand { + type boolean; + description "Flag to use access-group"; + } + } + + grouping igmp_StRepP-group { + description "Holds Static IGMP report policy"; + leaf rtMap { + type string; + description "Route Map"; + } + leaf pfxList { + type string; + description "Prefix List"; + } + leaf useAccessGrpCommand { + type boolean; + description "Flag to use access-group"; + } + + // Join Type of the groups + leaf joinType { + + type ipmc_JoinType; + description "Join Type of Groups"; + } + } + + grouping igmp_HostProxyP-group { + description "Holds IGMP Host-proxy properties"; + leaf enabled { + type boolean; + description "Host Proxy enabled or disabled"; + } + leaf rtMap { + type string; + description "Route Map"; + } + leaf pfxList { + type string; + description "Prefix List"; + } + + // Unsolicited report time interval + leaf unsolicited { + + type igmp_HostProxyUnsolicitTime; + description "Unsolicited Join interval in seconds"; + } + } + + grouping igmp_QuerierP-group { + description "Holds IGMP querier information"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Querier version + leaf ver { + + type mcast_Ver; + description "Version"; + } + + // Querier IP address + leaf addr { + + type mcast_QuerierIp; + description "Address"; + } + + // Query interval + leaf queryIntvl { + + type mcast_QueryIntvl; + description "Query Interval"; + } + + // Query response interval + leaf rspIntvl { + + type mcast_QueryRspIntvl { + range "1..25"; + } + description "Response Interval of Querier"; + } + + // Robustness factor + leaf robustFac { + + type mcast_RobustFactor; + description "Robustness Factor"; + } + + // Startup query interval + leaf startQueryIntvl { + + type mcast_StartQueryIntvl; + description "Startup Query Interval"; + } + + // Startup query count + leaf startQueryCnt { + + type mcast_QueryCnt; + description "Startup Query Count"; + } + + // Querier timeout + leaf querierTimeout { + + type mcast_QuerierTimeout; + description "Querier Timeout"; + } + + // Last member query count + leaf lastMbrCnt { + + type mcast_LastMbrQueryCnt; + description "Last Member Query Count"; + } + + // Last member response time + leaf lastMbrRespTime { + + type mcast_LastMbrRespTime; + description "Last Member Response Time"; + } + } + + grouping igmp_MvrIf-group { + description + "This objects hold per igmp external interface + information that supports mvr configs"; + leaf mvrRcvr { + type boolean; + description "Enable/disable MVR Receiver Port"; + } + leaf mvrSrc { + type boolean; + description "Enable/disable MVR Source Port"; + } + + leaf vlan { + + type igmp_VlanIdT; + description "Interface default multicast vlan configuration"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // This objects holds multicast vlan registration group + // information + container mvrgrp-items { + list MvrGrp-list { + key "ip"; + + uses igmp_MvrGrp-group; + description + "This objects holds multicast vlan registration + group information list"; + } + description + "This objects holds multicast vlan registration + group information"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping igmp_MvrGrp-group { + description + "This objects holds multicast vlan registration + group information"; + leaf ip { + type address_Ip; + description "Multicast Group IP Address"; + } + + leaf vlan { + + type igmp_VlanIdT; + description "Global default MVR vlan identifier"; + } + leaf ipMask { + type address_Ip; + description "IP network mask in format m.m.m.m"; + } + leaf count { + type uint32 { + range "1..64"; + } + description "Number of contiguous groups"; + } + } + + grouping igmp_Mvr-group { + description "This objects holds multicast vlan registration state"; + + leaf adminSt { + + type igmp_mvrAdminSt; + description + "Enable/disable multicast vlan registration + capability"; + } + + leaf vlan { + + type igmp_VlanIdT; + description "Global default MVR vlan identifier"; + } + + leaf suppressQuery { + + type l2_VlanBitmap; + description + "Suppress IGMP General query forwarding from + vlans"; + } + + // This objects holds multicast vlan registration group + // information + container mvrgrp-items { + list MvrGrp-list { + key "ip"; + + uses igmp_MvrGrp-group; + description + "This objects holds multicast vlan registration + group information list"; + } + description + "This objects holds multicast vlan registration + group information"; + } + } + + grouping igmp_SSMXlate-group { + description "Holds Source Specific Multicast (SSM) translation information"; + + // Group IP Prefix address + leaf grpPfx { + + type mcast_GrpIp; + description "Address"; + } + leaf srcAddr { + type address_Ip; + description "Address"; + } + } + + grouping igmp_LogLevel-group { + description "Configure logging level"; + + leaf type { + + type igmp_LogType; + description "Configures logging type"; + } + + leaf level { + + type igmp_LvlType; + description "Configures log level"; + } + } + + grouping igmp_RouteDb-group { + description "IGMP database for show commands"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type of the repository + // Ephemeral data + leaf type { + config "false"; + + type rtdmc_DbT; + description "Type"; + } + + // This objects hold per igmp domain (vrf) information + // Ephemeral data + container vrf-items { + + // Ephemeral data + list Vrf-list { + config "false"; + key "name"; + + uses igmp_Vrf-group; + description "This Objects holds per IGMP Virtual Routing and Forwarding (VRF) Information list"; + } + description "This Objects holds per IGMP Virtual Routing and Forwarding (VRF) Information"; + } + } + + grouping igmp_Vrf-group { + description "This Objects holds per IGMP Virtual Routing and Forwarding (VRF) Information"; + + // Vrf name + // Ephemeral data + leaf name { + config "false"; + + type l3_VrfName; + description "Virtual Routing and Forwarding Name"; + } + + // This object holds igmp route group information + // Ephemeral data + container group-items { + + // Ephemeral data + list RouteGroup-list { + config "false"; + key "grpAddr"; + + uses igmp_RouteGroup-group; + description "This Object holds IGMP Route Group Information list"; + } + description "This Object holds IGMP Route Group Information"; + } + } + + grouping igmp_RouteGroup-group { + description "This Object holds IGMP Route Group Information"; + + // Ephemeral data + leaf grpAddr { + config "false"; + type address_Ip; + description "Group IP Address"; + } + + // This object holds igmp route source information + // Ephemeral data + container source-items { + + // Ephemeral data + list RouteSource-list { + config "false"; + key "srcAddr"; + + uses igmp_RouteSource-group; + description "This Object holds IGMP Route Source Information list"; + } + description "This Object holds IGMP Route Source Information"; + } + } + + grouping igmp_RouteSource-group { + description "This Object holds IGMP Route Source Information"; + + // Ephemeral data + leaf srcAddr { + config "false"; + type address_Ip; + description "IGMP Route Source IP Address"; + } + + // IGMP Route Oif MOs. We create one object per interface in the oif list + // Ephemeral data + container oif-items { + + // Ephemeral data + list RouteOif-list { + config "false"; + key "oif"; + + uses igmp_RouteOif-group; + description "Holds Route Outgoing Interface(OIF) Details list"; + } + description "Holds Route Outgoing Interface(OIF) Details"; + } + } + + grouping igmp_RouteOif-group { + description "Holds Route Outgoing Interface(OIF) Details"; + + // Ephemeral data + leaf local { + config "false"; + type boolean; + description "Indicates if the Route is Local"; + } + + // Ephemeral data + leaf static { + config "false"; + type boolean; + description "Indicates if the Route is Static"; + } + + // Ephemeral data + leaf hostProxy { + config "false"; + type boolean; + description "Indicates if Host is Proxy"; + } + + // Ephemeral data + leaf uptime { + config "false"; + type union { + type string; + type uint64; + } + description "Route OIF Uptime Timestamp"; + } + + // Ephemeral data + leaf expiryTime { + config "false"; + type string; + description "Route OIF Expiry Timestamp"; + } + leaf oifUptime { + config "false"; + type string; + description "Route OIF Uptime Timestamp"; + } + + // Ephemeral data + leaf rprtAddr { + config "false"; + type string; + description "IGMP Route Source IP Address"; + } + + // Ephemeral data + leaf oif { + config "false"; + + type nw_IfId; + description "Outgoing interface"; + } + } + + grouping isis_Entity-group { + description "Holds ISIS Control Plane Entity Information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per isis instance information. + container inst-items { + list Inst-list { + key "name"; + + uses isis_Inst-group; + description "Holds ISIS per Instance Information list"; + } + description "Holds ISIS per Instance Information"; + } + + // This object holds isis logging information + container syslog-items { + + uses isis_SysLog-group; + description "Holds ISIS logging Information"; + } + + // This object holds isis information that is operated at a + // interface level + container if-items { + list InternalIf-list { + key "id"; + + uses isis_InternalIf-group; + description "Internal Model for ISIS Interface list"; + } + description "Internal Model for ISIS Interface"; + } + } + + grouping isis_Inst-group { + description "Holds ISIS per Instance Information"; + + // Operational state + leaf operSt { + config "false"; + + type isis_OperSt; + description "Holds ISIS Instance Operational State"; + } + leaf flushRoutes { + type boolean; + description "Flush ISIS Routes on non graceful controlled restart"; + } + leaf isolate { + type boolean; + description "Isolate ISIS Instance from other process tags"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern ".*[a-zA-Z0-9_-]{1,20}.*"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // This objects hold per isis domain (vrf) information + container dom-items { + list Dom-list { + key "name"; + + uses isis_Dom-group; + description "IS-IS Domain list"; + } + description "IS-IS Domain"; + } + + // This object holds event-history buffers information for ISIS + container evthstry-items { + list EvtHstry-list { + key "type"; + + uses isis_EvtHstry-group; + description "Holds ISIS event-history buffers Information for ISIS list"; + } + description "Holds ISIS event-history buffers Information for ISIS"; + } + } + + grouping isis_Dom-group { + description "IS-IS Domain"; + + leaf net { + + type isis_Net; + description "Holds ISIS Domain Net value"; + } + + // LSP MTU + leaf mtu { + + type isis_Mtu; + description "Holds ISIS Domain Maximum Transmission Unit"; + } + + // Bandwidth Reference + leaf bwRef { + + type isis_BwRef; + description "Holds ISIS Domain Bandwidth Reference"; + } + + // Bandwidth Reference Unit + leaf bwRefUnit { + + type isis_BwRefUnit; + description "Holds ISIS Domain Bandwidth Reference Unit (Mbps or Gbps)"; + } + + // Narrow/Wide Metric Style + leaf metricStyle { + + type isis_MetricStyle; + description "Holds ISIS Domain Metric Style"; + } + + // IS Type + leaf isType { + + type isis_IsT; + description "Holds ISIS Domain IS[Level] Type"; + } + + // Max LSP Lifetime + leaf lspLifetime { + + type isis_MaxLSPLife; + description "Holds ISIS Domain LSP Lifetime"; + } + + // Shutdown VRF context in ISIS + leaf adminSt { + + type nw_AdminSt; + description "Holds ISIS Domain Administative state"; + } + + // Dom controls + leaf ctrl { + + type isis_DomControl; + description "Holds ISIS Domain Control messages"; + } + leaf authCheckLvl1 { + type boolean; + default "true"; + description "Authentication Check for ISIS DOM on Level-1"; + } + leaf authCheckLvl2 { + type boolean; + default "true"; + description "Authentication Check for ISIS DOM on Level-2"; + } + + // ISIS DOM Authentication Type for Level-1 + leaf authTypeLvl1 { + + type isis_AuthT; + description "Holds ISIS DOM Authentication-Type for Level-1"; + } + + // ISIS DOM Authentication Type for Level-2 + leaf authTypeLvl2 { + + type isis_AuthT; + description "Holds ISIS DOM Authentication-Type for Level-2"; + } + + // ISIS DOM Authentication Key for Level-1 + leaf authKeyLvl1 { + + type isis_AuthKeyN; + description "Holds Authentication Key for ISIS DOM on Level-1"; + } + + // ISIS DOM Authentication Key for Level-2 + leaf authKeyLvl2 { + + type isis_AuthKeyN; + description "Holds Authentication Key for ISIS DOM on Level-2"; + } + + // Passive Interface default level + leaf passiveDflt { + + type isis_PassiveT; + description "Holds ISIS Domain passive-interface default level"; + } + + // Queue-limit retransmit + leaf queueLimit { + + type isis_QueueLimitType; + description "Holds the ISIS queue limit retransmit value"; + } + + // Operational state + leaf operSt { + config "false"; + + type isis_OperSt; + description "Operational State"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // ISIS databases + container db-items { + list Db-list { + config "false"; + key "type"; + + uses isis_Db-group; + description "IS-IS Database list"; + } + description "IS-IS Database"; + } + + // This object holds overload information + container overload-items { + + uses isis_Overload-group; + description "Holds ISIS Domain Overload Policy"; + } + + // This object holds per level isis vrf information + container lvl-items { + list DomLvl-list { + key "type"; + + uses isis_DomLvl-group; + description "Holds ISIS Domain Level Properties list"; + } + description "Holds ISIS Domain Level Properties"; + } + + // This object holds per address family isis vrf information + container af-items { + list DomAf-list { + key "type"; + + uses isis_DomAf-group; + description "Holds ISIS Domain Address Family Domain related properties list"; + } + description "Holds ISIS Domain Address Family Domain related properties"; + } + + // ISIS Distribute link-state + container distrls-items { + + uses isis_DistrLs-group; + description "Holds ISIS Distribute link-state information"; + } + + // Fabric multicast (ftag) tree element + container fmtree-items { + list FmcastTree-list { + config "false"; + key "id"; + + uses isis_FmcastTree-group; + description "IS-IS Fabric Multicast Tree list"; + } + description "IS-IS Fabric Multicast Tree"; + } + + // This objects hold per graceful restart information + container gr-items { + + uses isis_Gr-group; + description "Graceful Restart Policy"; + } + + // This object holds ospf information that is operated at an + // interface level + container if-items { + list If-list { + key "id"; + + uses isis_If-group; + description "ISIS Interface list"; + } + description "ISIS Interface"; + } + + // This object holds the isis operational information + container oper-items { + + uses isis_OperIsis-group; + description + "Top-level container to hold ISIS + operational data"; + } + + // This objects holds default route leak policy + container defrtleak-items { + + uses isis_DefRtLeakP-group; + description "Default Route Leak Policy"; + } + } + + grouping isis_Db-group { + description "IS-IS Database"; + + // Type of the repository + leaf type { + config "false"; + + type isis_DbT; + description "Type"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Database of fabric multicast group elements + container grp-items { + list GrpRec-list { + config "false"; + key "addr"; + + uses isis_GrpRec-group; + description "Group Record list"; + } + description "Group Record"; + } + + // Node records + container node-items { + list NodeRec-list { + config "false"; + key "sysId"; + + uses isis_NodeRec-group; + description "Node Record list"; + } + description "Node Record"; + } + + // LSP records + container lsp-items { + list LspRec-list { + config "false"; + key "sysId lanId frag"; + + uses isis_LspRec-group; + description "LSP Record list"; + } + description "LSP Record"; + } + + // This object holds the isis nexthop information + container nh-items { + list Nexthop-list { + config "false"; + key "nhIf addr"; + + uses isis_Nexthop-group; + description "IS-IS Nexthop list"; + } + description "IS-IS Nexthop"; + } + + // This object holds the isis route information + container rt-items { + list Route-list { + config "false"; + key "pfx"; + + uses isis_Route-group; + description "IS-IS Route list"; + } + description "IS-IS Route"; + } + + // Tunnel endpoints discovered through isis + container dtep-items { + list DTEp-list { + config "false"; + key "id"; + + uses isis_DTEp-group; + description "Discovered Tunnel Endpoint list"; + } + description "Discovered Tunnel Endpoint"; + } + } + + grouping isis_GrpRec-group { + description "Group Record"; + + // Group address + leaf addr { + config "false"; + + type mcast_GrpIp; + description "Address"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Per FTAG OIF List Record + container ftagoif-items { + list FtagOifRec-list { + config "false"; + key "id"; + + uses isis_FtagOifRec-group; + description "FTAG OIF Record list"; + } + description "FTAG OIF Record"; + } + + // BD records active for this multicast group element + container bd-items { + list BdIdRec-list { + config "false"; + key "encap"; + + uses isis_BdIdRec-group; + description "Bridge Domain ID Record list"; + } + description "Bridge Domain ID Record"; + } + + // Fabric nodes active for this multicast group element + container node-items { + list NodeIdRec-list { + config "false"; + key "addr"; + + uses isis_NodeIdRec-group; + description "Node ID Record list"; + } + description "Node ID Record"; + } + + // Outgoing interface List on Leaf + container oifleaf-items { + list OifListLeaf-list { + config "false"; + key "idx"; + + uses isis_OifListLeaf-group; + description "OIF List list"; + } + description "OIF List"; + } + + // Outgoing interface List on Spine + container oifspine-items { + list OifListSpine-list { + config "false"; + key "idx"; + + uses isis_OifListSpine-group; + description "OIF List list"; + } + description "OIF List"; + } + } + + grouping isis_FtagOifRec-group { + description "FTAG OIF Record"; + + // Ftag ID + leaf id { + config "false"; + + type fmcast_Id; + description "Ftag ID"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Outgoing interface List on Leaf + container oifleaf-items { + list OifListLeaf-list { + config "false"; + key "idx"; + + uses isis_OifListLeaf-group; + description "OIF List list"; + } + description "OIF List"; + } + + // Outgoing interface List on Spine + container oifspine-items { + list OifListSpine-list { + config "false"; + key "idx"; + + uses isis_OifListSpine-group; + description "OIF List list"; + } + description "OIF List"; + } + } + + grouping isis_OifListLeaf-group { + description "OIF List"; + + // Index + leaf idx { + config "false"; + + type fmcast_Id; + description "Index"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping isis_OifListSpine-group { + description "OIF List"; + + // Index + leaf idx { + config "false"; + + type fmcast_Id; + description "Index"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping isis_BdIdRec-group { + description "Bridge Domain ID Record"; + leaf encap { + config "false"; + type string; + description "Encapsulation"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping isis_NodeIdRec-group { + description "Node ID Record"; + leaf addr { + config "false"; + type address_Ip; + description "Address"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping isis_NodeRec-group { + description "Node Record"; + leaf addr { + config "false"; + type address_Ip; + description "Address"; + } + leaf sysId { + config "false"; + type address_Mac; + description "System ID"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Multicast groups identifier record + container grp-items { + list GrpIdRec-list { + config "false"; + key "addr"; + + uses isis_GrpIdRec-group; + description "Group IP Record list"; + } + description "Group IP Record"; + } + } + + grouping isis_GrpIdRec-group { + description "Group IP Record"; + + // Group address + leaf addr { + config "false"; + + type mcast_GrpIp; + description "Address"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping isis_LspRec-group { + description "LSP Record"; + leaf sysId { + config "false"; + type address_Mac; + description "System ID"; + } + + // LAN id + leaf lanId { + config "false"; + + type isis_LanId; + description "LAN ID"; + } + + // Fragment number + leaf frag { + config "false"; + + type isis_FragNum; + description "Fragment Number"; + } + + // Level type + leaf type { + config "false"; + + type isis_LvlT; + description "Level Type"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Extended IS Record + container extisrec-items { + list ExtIsRec-list { + config "false"; + key "name"; + + uses isis_ExtIsRec-group; + description "Extended IS Record list"; + } + description "Extended IS Record"; + } + + // Generic TLV Record + container tlvRec-items { + list TlvRec-list { + config "false"; + key "type"; + + uses isis_TlvRec-group; + description "Generic TLV Record list"; + } + description "Generic TLV Record"; + } + + // IP Prefix record + container iprec-items { + list IpRec-list { + config "false"; + key "pfx"; + + uses isis_IpRec-group; + description "IP Prefix Record list"; + } + description "IP Prefix Record"; + } + } + + grouping isis_ExtIsRec-group { + description "Extended IS Record"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping isis_TlvRec-group { + description "Generic TLV Record"; + + // TLV Type + leaf type { + config "false"; + + type isis_TlvType; + description "TLV"; + } + + // TLV Value + leaf value { + config "false"; + + type isis_TlvVal; + description "Value"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping isis_IpRec-group { + description "IP Prefix Record"; + leaf pfx { + config "false"; + type address_Ip; + description "Prefix"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping isis_Nexthop-group { + description "IS-IS Nexthop"; + + // Nexhop interface [Deprecated] + leaf if { + config "false"; + + type nw_Iod; + description "Interface (IOD Internal)"; + } + + // Nexhop interface + leaf nhIf { + config "false"; + + type nw_IfId; + description "Interface"; + } + leaf addr { + config "false"; + type address_Ip; + description "Address"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping isis_Route-group { + description "IS-IS Route"; + leaf pfx { + config "false"; + type address_Ip; + description "Prefix"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + container rsnhAtt-items { + + list RsNhAtt-list { + key "tDn"; + + uses isis_RsNhAtt_source-group; + description "IS-IS Nexthop Attachment list"; + } + description "IS-IS Nexthop Attachment"; + } + } + + grouping isis_DTEp-group { + description "Discovered Tunnel Endpoint"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Endpoint identifier + leaf id { + config "false"; + + type tunnel_EpId; + description "ID"; + } + + // Endpoint encapsulation type + leaf encapt { + config "false"; + + type tunnel_EncapT; + description "Encapsulation Type"; + } + + // Endpoint type + leaf type { + config "false"; + + type tunnel_EpT; + description "Type"; + } + + // Role of the remote endpoint + leaf role { + config "false"; + + type top_NodeRole; + description "Role"; + } + } + + grouping isis_Overload-group { + description "Holds ISIS Domain Overload Policy"; + + // Adminstrative state + leaf adminSt { + + type isis_OverloadAdminSt; + description "Admin State"; + } + + // On at startup till the following duration + leaf startupTime { + + type isis_StartupTime; + description "Startup Time"; + } + leaf bgpAsNum { + type uint16; + description "BGP ASN"; + } + + // Suppress information + leaf suppress { + + type isis_SuppressControl; + description "Suppress Internal/External"; + } + } + + grouping isis_DomLvl-group { + description "Holds ISIS Domain Level Properties"; + + // Per level controls + leaf ctrl { + + type isis_DomLvlControl; + description "Controls"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type + leaf type { + + type isis_LvlT; + description "Type"; + } + + // ISIS databases + container db-items { + list Db-list { + config "false"; + key "type"; + + uses isis_Db-group; + description "IS-IS Database list"; + } + description "IS-IS Database"; + } + + // This object holds lsp generation interval controls + container lspgen-items { + + uses isis_LspGen-group; + description "LSP Generation Controls"; + } + + // This object holds spf computation frequency controls + container spfcomp-items { + + uses isis_SpfComp-group; + description "SPF Computation Controls"; + } + } + + grouping isis_LspGen-group { + description "LSP Generation Controls"; + + // Initial wait interval + leaf initIntvl { + + type isis_LspGenInitIntvl; + description "Initial Wait Interval"; + } + + // Second wait interval + leaf secIntvl { + + type isis_LspGenSecIntvl; + description "Second Wait Interval"; + } + + // Maximum wait interval + leaf maxIntvl { + + type isis_LspGenMaxIntvl; + description "Maximum Wait Interval"; + } + } + + grouping isis_SpfComp-group { + description "SPF Computation Controls"; + + // Initial wait inerval + leaf initIntvl { + + type isis_SpfCompInitIntvl; + description "Initial Wait Interval"; + } + + // Second wait interval + leaf secIntvl { + + type isis_SpfCompSecIntvl; + description "Second Wait Interval"; + } + + // Maximum wait interval + leaf maxIntvl { + + type isis_SpfCompMaxIntvl; + description "Maximum Wait Interval"; + } + } + + grouping isis_DomAf-group { + description "Holds ISIS Domain Address Family Domain related properties"; + + // Per address family controls + leaf ctrl { + + type isis_DomAfControl; + description "Controls"; + } + + // ISIS Multi-topology information + leaf mtType { + + type isis_TopoT; + description "Holds ISIS Domain address family Multi-topology information"; + } + + leaf dist { + + type isis_Dist; + description "Holds ISIS Domain address family Administrative Distance"; + } + + // MAX ECMP + leaf maxEcmp { + + type isis_Ecmp; + description "Holds ISIS Domain address family Max ECMP value"; + } + + // default-information originate command + leaf defInfOrig { + + type isis_DefInfOrigSt; + description "Holds ISIS Domain address family default-information originate state for Route"; + } + leaf defInfOrigRtMap { + type string; + description "Holds Route-map name for ISIS Domain address family default-information originate"; + } + leaf enableBfd { + type boolean; + description "Enabling BFD on all ISIS domain interfaces"; + } + leaf tblMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Holds Route-map name to filter routes downloaded"; + } + + // Configure table-map for Selective route download + leaf tblMapFltr { + + type isis_AdminSt; + description "Enables table-map for Selective route"; + } + leaf rtrIdIpAddr { + type address_Ip; + description "Holds ip address to become router id"; + } + + // Router interface + leaf rtrIdIf { + + type nw_IfId; + description "Holds interface"; + } + leaf srMpls { + type boolean; + default "true"; + description "Segment routing for MPLS"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type + leaf type { + + type isis_AfT; + description "Type"; + } + + // Distribute policy defines distribution of routes from one level to another level + container distribute-items { + list Distribute-list { + key "source"; + + uses isis_Distribute-group; + description "Holds ISIS Instance Distribution policy which distributes router from one level to another level list"; + } + description "Holds ISIS Instance Distribution policy which distributes router from one level to another level"; + } + + // Advertise interface + container advertiseint-items { + list AdvertiseInt-list { + key "advtIf"; + + uses isis_AdvertiseInt-group; + description "Holds Advertise Interface medialist Level list"; + } + description "Holds Advertise Interface medialist Level"; + } + + // Inter protocol route leak policy. This defines distribution + // of routes from other protocols to isis + container interleak-items { + list InterLeakP-list { + key "proto inst asn"; + + uses isis_InterLeakP-group; + description "Inter Protocol Route Leak Policy list"; + } + description "Inter Protocol Route Leak Policy"; + } + + // Leak controls related to the number of routes leaked + container leakctrl-items { + + uses isis_LeakCtrlP-group; + description "Leak Control Policy"; + } + + // This objects hold summarization address. Any address + // that maps to this prefix will be summarized through + // this address + container rtsum-items { + list RtSum-list { + key "addr"; + + uses isis_RtSum-group; + description "Route Summarization Policy list"; + } + description "Route Summarization Policy"; + } + + // This object holds ISIS Segment Routing configurations + container segrt-items { + list SgmRtg-list { + key "sr"; + + uses isis_SgmRtg-group; + description "Object to hold isis Segment Routing configurations list"; + } + description "Object to hold isis Segment Routing configurations"; + } + } + + grouping isis_Distribute-group { + description "Holds ISIS Instance Distribution policy which distributes router from one level to another level"; + + // Source domain, level from which the routes are leaked + leaf source { + + type isis_LvlT; + description "Holds Source Domain for Routes Distribute Policy"; + } + + // Destination domain, level to which the routes are leaked + leaf destination { + + type isis_LvlT; + description "Holds Destination Domain for Routes Distribute Policy"; + } + leaf all { + type boolean; + default "true"; + description "Holds Distribution of all level-n routes"; + } + leaf rmap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Holds Route-map name for Distribute Policy"; + } + } + + grouping isis_AdvertiseInt-group { + description "Holds Advertise Interface medialist Level"; + + // Interface + leaf advtIf { + + type nw_IfId; + description "Holds Advertise interface"; + } + + // Level + leaf advtLevel { + + type isis_AdvtLvl; + description "Holds Advertise interface level"; + } + } + + grouping isis_InterLeakP-group { + description "Inter Protocol Route Leak Policy"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Scope of the policy (intra protocol, inter protcol, + // default route) + leaf scope { + + type rtleak_Scope; + default "inter"; + description "Scope"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{1,63}.*"; + } + description "Route Map"; + } + + // Protocol from where the routes are leaked + leaf proto { + + type rtleak_Proto; + description "Protocol"; + } + + // Routing protocol instance, the routing instance of the + // protocol from where the routes are being leaked + leaf inst { + + type rtleak_Inst; + description "Instance"; + } + + // Leak BGP routes from this Autonomous System (AS) <1-4294967295>|<1-65535>[.<0-65535>] Autonomous system number + leaf asn { + + type rtleak_Asn { + pattern "((none)|([1-9]{1}[0-9]{0,8}|[1-3]{1}[0-9]{1,9}|4{1}[0-1]{1}[0-9]{8}|4{1}2{1}[0-8]{1}[0-9]{7}|4{1}2{1}9{1}[0-3]{1}[0-9]{6}|4{1}2{1}9{1}4{1}[0-8]{1}[0-9]{5}|4{1}2{1}9{1}4{1}9{1}[0-5]{1}[0-9]{4}|4{1}2{1}9{1}4{1}9{1}6{1}[0-6]{1}[0-9]{3}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}[0-1]{1}[0-9]{2}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}2{1}[0-8]{1}[0-9]{1}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}2{1}9{1}[0-5]{1})|(([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\\.([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])))"; + } + description "Autonomous System Number"; + } + + // SRv6 Prefix Type which is being leaked + leaf srv6PrefixType { + + type rtleak_Srv6PrefixType; + description "SRv6 Prefix Type; Valid only when proto is srv6"; + } + } + + grouping isis_LeakCtrlP-group { + description "Leak Control Policy"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Controls on what to do when the number of routes cross + // the maximum route/prefix limit + leaf ctrl { + + type rtleak_Ctrl; + description "Controls"; + } + + // Maximum limit on routes leaked + leaf max { + + type rtleak_MaxPfx; + description "Maximum Limit"; + } + + // Threshold at which warning is issued when number of + // routes crosses the threshold + leaf thresh { + + type rtleak_Thresh; + description "Threshold"; + } + + // Maximum number of retries to retrieve the leaked routes, + // this is applicable only when the routes are withdrawn + leaf retries { + + type rtleak_Retries; + description "Retries"; + } + + // Duration between the retries + leaf duration { + + type rtleak_Duration; + description "Duration"; + } + } + + grouping isis_RtSum-group { + description "Route Summarization Policy"; + + // Summary Level + leaf sumLevel { + + type isis_SumLvl; + description "Holds summary address level"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf addr { + type address_Ip; + description "Address"; + } + } + + grouping isis_SgmRtg-group { + description "Object to hold isis Segment Routing configurations"; + + leaf sr { + + type isis_SgmntRtg; + description "Support Segment-Routing options in ISIS"; + } + + // This object holds ISIS Segment Routing Locator configuration + container loc-items { + list Locator-list { + key "name"; + + uses isis_Locator-group; + description "Object to hold ISIS Segment Routing SRv6 Locator configurations list"; + } + description "Object to hold ISIS Segment Routing SRv6 Locator configurations"; + } + } + + grouping isis_Locator-group { + description "Object to hold ISIS Segment Routing SRv6 Locator configurations"; + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern ".*[!-~]{1,58}.*"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Indicates whether locator state is operational"; + } + } + + grouping isis_DistrLs-group { + description "Holds ISIS Distribute link-state information"; + leaf state { + type boolean; + default "true"; + description "Holds State of ISIS Distribute Link-state"; + } + + // Instance id of ISIS Distribute Link-state + leaf instId { + + type isis_InstId; + description "Holds Instance id of ISIS Distribute Link-state"; + } + + // Level of ISIS Distribute Link-state + leaf level { + + type isis_DistrLvl; + description "Holds Level of ISIS Distribute Link-state"; + } + + // Throttle timer of ISIS Distribute Link-state + leaf throt { + + type isis_Throttle; + description "Holds Throttle timer of ISIS Distribute Link-state"; + } + } + + grouping isis_FmcastTree-group { + description "IS-IS Fabric Multicast Tree"; + + // Id + leaf id { + config "false"; + + type fmcast_Id; + description "Tree ID"; + } + + // Operational state + leaf operSt { + config "false"; + + type fmcast_OperSt; + description "Operational State"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Fabric nodes active for this multicast group element + container node-items { + list NodeIdRec-list { + config "false"; + key "addr"; + + uses isis_NodeIdRec-group; + description "Node ID Record list"; + } + description "Node ID Record"; + } + + // Outgoing interface List on Leaf + container oifleaf-items { + list OifListLeaf-list { + config "false"; + key "idx"; + + uses isis_OifListLeaf-group; + description "OIF List list"; + } + description "OIF List"; + } + + // Outgoing interface List on Spine + container oifspine-items { + list OifListSpine-list { + config "false"; + key "idx"; + + uses isis_OifListSpine-group; + description "OIF List list"; + } + description "OIF List"; + } + } + + grouping isis_Gr-group { + description "Graceful Restart Policy"; + + // Graceful Restart + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // T3 timer for graceful restart + leaf grT3Intvl { + + type isis_GrT3Intvl; + description "T3 Interval"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping isis_If-group { + description "ISIS Interface"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + // Circuit type + leaf cktT { + + type isis_IsT; + description "Holds ISIS interface Circuit Type"; + } + + // Metric level-1 + leaf metricLvl1 { + + type isis_Metric; + description "Holds ISIS interface Metric level-1"; + } + + // Metric level-2 + leaf metricLvl2 { + + type isis_Metric; + description "Holds ISIS interface Metric level-2"; + } + + // Interface controls + leaf ctrl { + + type isis_IfControl; + description "Holds ISIS interface Control messages"; + } + leaf v4enable { + type boolean; + default "true"; + description "Enabling ISIS router tag on Interface's IPV4 family"; + } + leaf v6enable { + type boolean; + default "true"; + description "Enabling ISIS router tag on Interface's IPV6 family"; + } + leaf authCheckLvl1 { + type boolean; + default "true"; + description "Enabling Authentication check for ISIS interface at Level1"; + } + leaf authCheckLvl2 { + type boolean; + default "true"; + description "Enabling Authentication check for ISIS interface at Level2"; + } + leaf authCheck { + type boolean; + default "true"; + description "Enabling Authentication check for ISIS interface without specific Level"; + } + + // Enable P2P Interface + leaf networkTypeP2P { + + type isis_NetworkTypeP2PSt; + description "Enabling Point-to-Point Network Type on ISIS Interface"; + } + + // LSP refresh Interval + leaf lspRefreshIntvl { + + type isis_LspRefreshIntvl; + description "Holds ISIS Interface LSP Refresh Interval"; + } + + // LSP Retransmit Interval + leaf retransInterval { + + type isis_RetransInterval; + description "Holds ISIS Interface Retransmit Interval"; + } + + // LSP Retransmit Throttle Interval + leaf retransThrottleInterval { + + type isis_RetransThrottleInterval; + description "Holds ISIS Interface Retransmit Throttle Interval"; + } + + // IPv4 BFD + leaf v4Bfd { + + type isis_BfdT; + description "Holds ISIS Interface BFD Configruation"; + } + + // IPv6 BFD + leaf v6Bfd { + + type isis_BfdT; + description "Holds Interface BFD Configruation for IPV6 family"; + } + + // Passive-interface Info + leaf passive { + + type isis_PassiveIntfT; + description "Holds ISIS Passive Interface Info"; + } + + // Interface Hello padding Info + leaf helloPad { + + type isis_HelloPadT; + description "Holds ISIS Interface Hello Padding Info"; + } + + // Interface Hello Interval Info + leaf helloIntvl { + + type isis_HelloIntvl; + description "Holds Interface Hello Interval value"; + } + + // ISIS Hello Interval for Level-1 + leaf helloIntvlLvl1 { + + type isis_HelloIntvl; + description "Holds ISIS interface Hello Interval Level-1 value"; + } + + // ISIS Hello Interval for Level-2 + leaf helloIntvlLvl2 { + + type isis_HelloIntvl; + description "Holds ISIS interface Hello Interval Level-2 value"; + } + + // Hello Multiplier + leaf helloMult { + + type isis_HelloMult; + description "Holds Interface Hello Multiplier value"; + } + + // ISIS Hello Multiplier for Level-1 + leaf helloMultLvl1 { + + type isis_HelloMult; + description "Holds ISIS interface Hello Multiplier Level-1 value"; + } + + // ISIS Hello Multiplier for Level-2 + leaf helloMultLvl2 { + + type isis_HelloMult; + description "Holds ISIS interface Hello Multiplier Level-2 value"; + } + + // ISIS Priority for Level-1 + leaf priorityLvl1 { + + type isis_CktPrio; + description "Holds ISIS Interface Level-1 Circuit Priority"; + } + + // ISIS Priority for Level-2 + leaf priorityLvl2 { + + type isis_CktPrio; + description "Holds ISIS Interface Level-2 Circuit Priority"; + } + + // ISIS Wide Metric MT2[IPV6] topology for Level-1 + leaf mt2MetricLvl1 { + + type isis_WideMetric; + description "Holds ISIS interface IPV6 wide metric value for Level-1"; + } + + // ISIS Wide Metric MT2[IPV6] topology for Level-2 + leaf mt2MetricLvl2 { + + type isis_WideMetric; + description "Holds ISIS interface IPV6 wide metric value for Level-2"; + } + + // ISIS CSNP Interval for Level-1 + leaf csnpIntvlLvl1 { + + type isis_CsnpIntvl; + description "Holds ISIS Interface Level-1 CSNP Interval"; + } + + // ISIS CSNP Interval for Level-2 + leaf csnpIntvlLvl2 { + + type isis_CsnpIntvl; + description "Holds ISIS Interface Level-2 CSNP Interval"; + } + + leaf authType { + + type isis_AuthT; + description "Holds Authentication Type value for ISIS Interface"; + } + + // Authentication Type for Level-1 + leaf authTypeLvl1 { + + type isis_AuthT; + description "Holds ISIS Level-1 Authentication Type value for Interface"; + } + + // Authentication Type for Level-2 + leaf authTypeLvl2 { + + type isis_AuthT; + description "Holds ISIS Level-2 Authentication Type value for Interface"; + } + + // Authentication Key for ISIS Interface + leaf authKey { + + type isis_AuthKeyN; + description "Holds Authentication Key for ISIS Interface"; + } + + // Authentication Key for ISIS Interface on Level-1 + leaf authKeyLvl1 { + + type isis_AuthKeyN; + description "Holds Authentication Key for ISIS Interface on Level-1"; + } + + // Authentication Key for ISIS Interface on Level-2 + leaf authKeyLvl2 { + + type isis_AuthKeyN; + description "Holds Authentication Key for ISIS Interface on Level-2"; + } + leaf mtuCheckLvl1 { + type boolean; + default "true"; + description "Enabling Mtu check for ISIS interface at Level1"; + } + leaf mtuCheckLvl2 { + type boolean; + default "true"; + description "Enabling Mtu check for ISIS interface at Level2"; + } + leaf mtuCheck { + type boolean; + default "true"; + description "Enabling Mtu check for ISIS interface without specific Level"; + } + leaf nFlagClear { + type boolean; + default "true"; + description "Enabling N flag clear for ISIS interface"; + } + leaf meshGroupBlocked { + type boolean; + default "true"; + description "Mesh group blocked value"; + } + + // Mesh group ID + leaf meshGroupId { + + type isis_MeshGroupType; + description "Holds the ISIS mesh group ID value"; + } + + // This object holds isis neighbor information + container adj-items { + list AdjEp-list { + config "false"; + key "type sysId"; + + uses isis_AdjEp-group; + description "Adjacency list"; + } + description "Adjacency"; + } + + // This object holds mesh group information per interface + container meshgrp-items { + + uses isis_MeshGrp-group; + description "Holds ISIS interface Mesh Group Policy"; + } + + // This object holds per level isis interface information + container lvl-items { + list IfLvl-list { + key "type"; + + uses isis_IfLvl-group; + description "IS-IS Interface Policy Per Level list"; + } + description "IS-IS Interface Policy Per Level"; + } + + // This object holds per IF States information + container traffic-items { + + uses isis_IfTraffic-group; + description "Interface Traffic Statistics"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping isis_AdjEp-group { + description "Adjacency"; + + // Adjacency type + leaf type { + config "false"; + + type isis_LvlT; + description "Level Type"; + } + leaf sysId { + config "false"; + type address_Mac; + description "System ID"; + } + + // Operational state of the adjacency + leaf operSt { + config "false"; + + type isis_AdjOperSt; + description "Operational State"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + container addr-items { + list PeerIpAddr-list { + config "false"; + key "addr"; + + uses isis_PeerIpAddr-group; + description "Peer IP Address list"; + } + description "Peer IP Address"; + } + } + + grouping isis_PeerIpAddr-group { + description "Peer IP Address"; + leaf addr { + config "false"; + type address_Ip; + description "Address"; + } + } + + grouping isis_MeshGrp-group { + description "Holds ISIS interface Mesh Group Policy"; + + // Mesh Group Id + leaf id { + + type isis_MeshGrpId; + description "Holds ISIS Mesh Group ID per Interface"; + } + + // Mesh group controls + leaf ctrl { + + type isis_MeshGrpControl; + description "Holds ISIS Mesh Group Control Info per Interface"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping isis_IfLvl-group { + description "IS-IS Interface Policy Per Level"; + + // ISIS Wide Metric MT0[IPV4] topology for Level-1 + leaf mt0MetricLvl1 { + + type isis_WideMetric; + description "Holds ISIS interface IPV4 wide metric value for Level-1"; + } + + // ISIS Wide Metric MT0[IPV4] topology for Level-2 + leaf mt0MetricLvl2 { + + type isis_WideMetric; + description "Holds ISIS interface IPV4 wide metric value for Level-2"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type + leaf type { + + type isis_LvlT; + description "Type"; + } + } + + grouping isis_IfTraffic-group { + description "Interface Traffic Statistics"; + } + + grouping isis_OperIsis-group { + description + "Top-level container to hold ISIS + operational data"; + + // This object holds isis neighbor information + container adj-items { + + uses isis_Adj-group; + description "Adjacency mo to display all details for all interfaces"; + } + } + + grouping isis_Adj-group { + description "Adjacency mo to display all details for all interfaces"; + + // This object holds the level information + container level-items { + list Level-list { + config "false"; + key "cktType"; + + uses isis_Level-group; + description "Holds the ISIS level list"; + } + description "Holds the ISIS level"; + } + } + + grouping isis_Level-group { + description "Holds the ISIS level"; + + leaf cktType { + config "false"; + + type isis_IsT; + description "Level"; + } + container adjif-items { + list AdjIf-list { + config "false"; + key "id"; + + uses isis_AdjIf-group; + description "Adjacency details per interface list"; + } + description "Adjacency details per interface"; + } + } + + grouping isis_AdjIf-group { + description "Adjacency details per interface"; + leaf sysName { + config "false"; + type string; + description "System name of the neighbor"; + } + + // Adjacency type + leaf level { + config "false"; + + type isis_IsT; + description "Level Type"; + } + + // Operational state of the adjacency + leaf operSt { + config "false"; + + type isis_AdjOperSt; + description "Operational State for adjacency"; + } + leaf holdTimer { + config "false"; + type string; + description "Hold Timer timestamp"; + } + leaf id { + config "false"; + type string; + description "Adjacency interface name"; + } + leaf snpa { + config "false"; + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "SNPA holder"; + } + leaf cktId { + config "false"; + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Circuit Type"; + } + leaf peerIpv4 { + config "false"; + type string; + description "Adjacency peer IP address"; + } + leaf peerIpv6 { + config "false"; + type string; + description "Adjacency peer IPv6 Address"; + } + leaf priority { + config "false"; + type uint32; + description "Priority value"; + } + } + + grouping isis_DefRtLeakP-group { + description "Default Route Leak Policy"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Scope of the policy (intra protocol, inter protcol, + // default route) + leaf scope { + config "false"; + + type rtleak_Scope; + default "defrt"; + description "Scope"; + } + leaf rtMap { + config "false"; + type string; + description "Route Map"; + } + } + + grouping isis_EvtHstry-group { + description "Holds ISIS event-history buffers Information for ISIS"; + + // Holds type of event history + leaf type { + + type isis_EhType; + description "configures type of event history"; + } + + leaf size { + + type isis_EhSize; + description "configures buffer size in text/kb"; + } + } + + grouping isis_SysLog-group { + description "Holds ISIS logging Information"; + + // Logging level for IS-IS + leaf logLevel { + + type isis_LogL; + description "Holds ISIS Logging Level"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping isis_InternalIf-group { + description "Internal Model for ISIS Interface"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + // Circuit type + leaf cktT { + + type isis_IsT; + description "Holds ISIS interface Circuit Type"; + } + + // Metric level-1 + leaf metricLvl1 { + + type isis_Metric; + description "Holds ISIS interface Metric level-1"; + } + + // Metric level-2 + leaf metricLvl2 { + + type isis_Metric; + description "Holds ISIS interface Metric level-2"; + } + + // Interface controls + leaf ctrl { + + type isis_IfControl; + description "Holds ISIS interface Control messages"; + } + leaf v4enable { + type boolean; + default "true"; + description "Enabling ISIS router tag on Interface's IPV4 family"; + } + leaf v6enable { + type boolean; + default "true"; + description "Enabling ISIS router tag on Interface's IPV6 family"; + } + leaf authCheckLvl1 { + type boolean; + default "true"; + description "Enabling Authentication check for ISIS interface at Level1"; + } + leaf authCheckLvl2 { + type boolean; + default "true"; + description "Enabling Authentication check for ISIS interface at Level2"; + } + leaf authCheck { + type boolean; + default "true"; + description "Enabling Authentication check for ISIS interface without specific Level"; + } + + // Enable P2P Interface + leaf networkTypeP2P { + + type isis_NetworkTypeP2PSt; + description "Enabling Point-to-Point Network Type on ISIS Interface"; + } + + // LSP refresh Interval + leaf lspRefreshIntvl { + + type isis_LspRefreshIntvl; + description "Holds ISIS Interface LSP Refresh Interval"; + } + + // LSP Retransmit Interval + leaf retransInterval { + + type isis_RetransInterval; + description "Holds ISIS Interface Retransmit Interval"; + } + + // LSP Retransmit Throttle Interval + leaf retransThrottleInterval { + + type isis_RetransThrottleInterval; + description "Holds ISIS Interface Retransmit Throttle Interval"; + } + + // IPv4 BFD + leaf v4Bfd { + + type isis_BfdT; + description "Holds ISIS Interface BFD Configruation"; + } + + // IPv6 BFD + leaf v6Bfd { + + type isis_BfdT; + description "Holds Interface BFD Configruation for IPV6 family"; + } + + // Passive-interface Info + leaf passive { + + type isis_PassiveIntfT; + description "Holds ISIS Passive Interface Info"; + } + + // Interface Hello padding Info + leaf helloPad { + + type isis_HelloPadT; + description "Holds ISIS Interface Hello Padding Info"; + } + + // Interface Hello Interval Info + leaf helloIntvl { + + type isis_HelloIntvl; + description "Holds Interface Hello Interval value"; + } + + // ISIS Hello Interval for Level-1 + leaf helloIntvlLvl1 { + + type isis_HelloIntvl; + description "Holds ISIS interface Hello Interval Level-1 value"; + } + + // ISIS Hello Interval for Level-2 + leaf helloIntvlLvl2 { + + type isis_HelloIntvl; + description "Holds ISIS interface Hello Interval Level-2 value"; + } + + // Hello Multiplier + leaf helloMult { + + type isis_HelloMult; + description "Holds Interface Hello Multiplier value"; + } + + // ISIS Hello Multiplier for Level-1 + leaf helloMultLvl1 { + + type isis_HelloMult; + description "Holds ISIS interface Hello Multiplier Level-1 value"; + } + + // ISIS Hello Multiplier for Level-2 + leaf helloMultLvl2 { + + type isis_HelloMult; + description "Holds ISIS interface Hello Multiplier Level-2 value"; + } + + // ISIS Priority for Level-1 + leaf priorityLvl1 { + + type isis_CktPrio; + description "Holds ISIS Interface Level-1 Circuit Priority"; + } + + // ISIS Priority for Level-2 + leaf priorityLvl2 { + + type isis_CktPrio; + description "Holds ISIS Interface Level-2 Circuit Priority"; + } + + // ISIS Wide Metric MT2[IPV6] topology for Level-1 + leaf mt2MetricLvl1 { + + type isis_WideMetric; + description "Holds ISIS interface IPV6 wide metric value for Level-1"; + } + + // ISIS Wide Metric MT2[IPV6] topology for Level-2 + leaf mt2MetricLvl2 { + + type isis_WideMetric; + description "Holds ISIS interface IPV6 wide metric value for Level-2"; + } + + // ISIS CSNP Interval for Level-1 + leaf csnpIntvlLvl1 { + + type isis_CsnpIntvl; + description "Holds ISIS Interface Level-1 CSNP Interval"; + } + + // ISIS CSNP Interval for Level-2 + leaf csnpIntvlLvl2 { + + type isis_CsnpIntvl; + description "Holds ISIS Interface Level-2 CSNP Interval"; + } + + leaf authType { + + type isis_AuthT; + description "Holds Authentication Type value for ISIS Interface"; + } + + // Authentication Type for Level-1 + leaf authTypeLvl1 { + + type isis_AuthT; + description "Holds ISIS Level-1 Authentication Type value for Interface"; + } + + // Authentication Type for Level-2 + leaf authTypeLvl2 { + + type isis_AuthT; + description "Holds ISIS Level-2 Authentication Type value for Interface"; + } + + // Authentication Key for ISIS Interface + leaf authKey { + + type isis_AuthKeyN; + description "Holds Authentication Key for ISIS Interface"; + } + + // Authentication Key for ISIS Interface on Level-1 + leaf authKeyLvl1 { + + type isis_AuthKeyN; + description "Holds Authentication Key for ISIS Interface on Level-1"; + } + + // Authentication Key for ISIS Interface on Level-2 + leaf authKeyLvl2 { + + type isis_AuthKeyN; + description "Holds Authentication Key for ISIS Interface on Level-2"; + } + leaf mtuCheckLvl1 { + type boolean; + default "true"; + description "Enabling Mtu check for ISIS interface at Level1"; + } + leaf mtuCheckLvl2 { + type boolean; + default "true"; + description "Enabling Mtu check for ISIS interface at Level2"; + } + leaf mtuCheck { + type boolean; + default "true"; + description "Enabling Mtu check for ISIS interface without specific Level"; + } + leaf nFlagClear { + type boolean; + default "true"; + description "Enabling N flag clear for ISIS interface"; + } + leaf meshGroupBlocked { + type boolean; + default "true"; + description "Mesh group blocked value"; + } + + // Mesh group ID + leaf meshGroupId { + + type isis_MeshGroupType; + description "Holds the ISIS mesh group ID value"; + } + + // Instance name + leaf instance { + + type isis_InstanceName; + description "Instance to which the interface belongs to"; + } + + // Dom name + leaf dom { + + type isis_DomName; + description "Dom to which the interface belongs to"; + } + + // This object holds mesh group information per interface + container meshgrp-items { + + uses isis_MeshGrp-group; + description "Holds ISIS interface Mesh Group Policy"; + } + + // This object holds per level isis interface information + container lvl-items { + list IfLvl-list { + key "type"; + + uses isis_IfLvl-group; + description "IS-IS Interface Policy Per Level list"; + } + description "IS-IS Interface Policy Per Level"; + } + + // This object holds per IF States information + container traffic-items { + + uses isis_IfTraffic-group; + description "Interface Traffic Statistics"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping itd_Entity-group { + description "ITD Entity"; + + container inst-items { + + uses itd_Inst-group; + description "ITD Instance"; + } + } + + grouping itd_Inst-group { + description "ITD Instance"; + container devgrp-items { + list DeviceGroup-list { + key "dgName"; + + uses itd_DeviceGroup-group; + } + } + container prtgrp-items { + list PortGroup-list { + key "pgName"; + + uses itd_PortGroup-group; + } + } + container service-items { + list Service-list { + key "name"; + + uses itd_Service-group; + } + } + container sessiondevgrp-items { + list SessionDevGrp-list { + key "devGroupName"; + + uses itd_SessionDevGrp-group; + } + } + container refreshacl-items { + list AclAction-list { + key "aclName"; + + uses itd_AclAction-group; + } + } + container stats-items { + list StatsAction-list { + key "svcName"; + + uses itd_StatsAction-group; + } + } + } + + grouping itd_DeviceGroup-group { + + leaf dgName { + + type itd_DevGrpNameType; + description "TBD"; + } + + leaf propFaultBitmap { + config "false"; + + type itd_dgFaultBitmapT; + description "Error state for the device-group."; + } + container nodev4-items { + list Nodev4-list { + key "ip"; + + uses itd_Nodev4-group; + } + } + container nodev6-items { + list Nodev6-list { + key "ip"; + + uses itd_Nodev6-group; + } + } + + container probe-items { + + uses itd_Probe-group; + } + } + + grouping itd_Nodev4-group { + leaf ip { + type address_Ipv4; + } + leaf weight { + type uint32; + } + + leaf mode { + + type itd_nodeModeType; + description "TBD"; + } + + leaf propFaultBitmap { + config "false"; + + type itd_nodeFaultBitmapT; + description "Error state for the IPV4 nodes."; + } + + leaf port { + + type address_PortNumber { + range "0..65535"; + } + description "TBD"; + } + container stbynodev4-items { + list StandbyNodev4-list { + key "ip"; + + uses itd_StandbyNodev4-group; + } + } + + container probe-items { + + uses itd_Probe-group; + } + } + + grouping itd_StandbyNodev4-group { + leaf ip { + type address_Ipv4; + } + + leaf propFaultBitmap { + config "false"; + + type itd_standbyNodeFaultBitmapT; + description "Error state for the standby IPV4 nodes."; + } + + container probe-items { + + uses itd_Probe-group; + } + } + + grouping itd_Probe-group { + + leaf protocol { + + type itd_protocolType; + description "TBD"; + } + + leaf port { + + type address_PortNumber { + range "0..65535"; + } + description "TBD"; + } + leaf frequency { + type uint32 { + range "0..604800"; + } + default "0"; + } + leaf retryDownCount { + type uint32 { + range "0..5"; + } + default "0"; + } + leaf retryUpCount { + type uint32 { + range "0..5"; + } + default "0"; + } + leaf timeout { + type uint32 { + range "0..604800"; + } + default "0"; + } + + leaf dnshost { + + type itd_DnsHostType; + description "TBD"; + } + leaf probeIp { + type address_Ipv4; + } + + leaf httpGetStr { + + type itd_HttpStringType; + description "TBD"; + } + + leaf ctrlStatusEnable { + + type itd_ctrlType; + description "TBD"; + } + + leaf propFaultBitmap { + config "false"; + + type itd_probeFaultBitmapT; + description "Error state for probes."; + } + leaf trackID { + type uint32 { + range "0..512"; + } + default "0"; + } + } + + grouping itd_Nodev6-group { + leaf ip { + type address_Ipv6; + } + leaf weight { + type uint32; + } + + leaf mode { + + type itd_nodeModeType; + description "TBD"; + } + + leaf propFaultBitmap { + config "false"; + + type itd_nodeFaultBitmapT; + description "Error state for the IPV6 nodes."; + } + container stbynodev6-items { + list StandbyNodev6-list { + key "ip"; + + uses itd_StandbyNodev6-group; + } + } + + container probe-items { + + uses itd_Probe-group; + } + } + + grouping itd_StandbyNodev6-group { + leaf ip { + type address_Ipv6; + } + + leaf propFaultBitmap { + config "false"; + + type itd_standbyNodeFaultBitmapT; + description "Error state for the standby IPV6 nodes."; + } + + container probe-items { + + uses itd_Probe-group; + } + } + + grouping itd_PortGroup-group { + + leaf pgName { + + type itd_PortGrpNameType; + description "TBD"; + } + container if-items { + list L2If-list { + key "name"; + + uses itd_L2If-group; + } + } + } + + grouping itd_L2If-group { + + leaf name { + + type nw_IfId; + description "TBD"; + } + } + + grouping itd_Service-group { + + leaf name { + + type itd_SvcNameType; + description "TBD"; + } + + leaf adminSt { + + type itd_AdminSt; + description "TBD"; + } + + leaf defaultDevGroup { + + type itd_DevGrpNameType; + description "TBD"; + } + + leaf defaultPortGroup { + + type itd_PortGrpNameType; + description "TBD"; + } + + leaf excludeACL { + + type itd_AclNameType; + description "TBD"; + } + + leaf vrf { + + type itd_vrfName; + description "TBD"; + } + + leaf failactionMode { + + type itd_failactionType; + description "TBD"; + } + + leaf lbMethod { + + type itd_LBMethod; + description "TBD"; + } + + leaf lbProtocol { + + type itd_protocolType; + description "TBD"; + } + + leaf rangeX { + + type address_PortNumber { + range "0..65535"; + } + description "TBD"; + } + + leaf rangeY { + + type address_PortNumber { + range "0..65535"; + } + description "TBD"; + } + + leaf bucket { + + type itd_BucketNumType; + description "TBD"; + } + + leaf maskPosition { + + type itd_MaskPosType; + description "TBD"; + } + + leaf natDestination { + + type itd_ctrlType; + description "TBD"; + } + + leaf peerLocalServiceName { + + type itd_SvcNameType; + description "TBD"; + } + + leaf sourceIntf { + + type nw_IfId; + description "Source interface for probe generation."; + } + leaf leastBit { + type boolean; + } + + leaf propFaultBitmap { + config "false"; + + type itd_serviceFaultBitmapT; + description "Error state for service."; + } + container if-items { + list IngressIf-list { + key "name"; + + uses itd_IngressIf-group; + } + } + container vlan-items { + list SourceVlan-list { + key "name"; + + uses itd_SourceVlan-group; + } + } + container acl-items { + list Accesslist-list { + key "name"; + + uses itd_Accesslist-group; + } + } + container vipv4-items { + list VirtualIPv4-list { + key "ip subnet protocol port"; + + uses itd_VirtualIPv4-group; + } + } + container vipv6-items { + list VirtualIPv6-list { + key "ip prefix protocol port"; + + uses itd_VirtualIPv6-group; + } + } + } + + grouping itd_IngressIf-group { + + leaf name { + + type nw_IfId; + description "TBD"; + } + + leaf propFaultBitmap { + config "false"; + + type itd_ingressIfFaultBitmapT; + description "Error state for the ingress interface."; + } + } + + grouping itd_SourceVlan-group { + + leaf name { + + type l2_DomId; + description "TBD"; + } + } + + grouping itd_Accesslist-group { + + leaf name { + + type itd_AclNameType; + description "TBD"; + } + + leaf deviceGroup { + + type itd_DevGrpNameType; + description "TBD"; + } + leaf isIPv6 { + type boolean; + } + } + + grouping itd_VirtualIPv4-group { + leaf ip { + type address_Ipv4; + } + leaf subnet { + type address_Ipv4; + } + leaf advertise { + type boolean; + } + leaf active { + type boolean; + } + + leaf deviceGroup { + + type itd_DevGrpNameType; + description "TBD"; + } + + leaf protocol { + + type itd_protocolType; + description "TBD"; + } + + leaf port { + + type address_PortNumber; + description "TBD"; + } + } + + grouping itd_VirtualIPv6-group { + leaf ip { + type address_Ipv6; + } + + leaf prefix { + + type itd_Prefix; + description "TBD"; + } + leaf advertise { + type boolean; + } + leaf active { + type boolean; + } + + leaf deviceGroup { + + type itd_DevGrpNameType; + description "TBD"; + } + + leaf protocol { + + type itd_protocolType; + description "TBD"; + } + + leaf port { + + type address_PortNumber; + description "TBD"; + } + } + + grouping itd_SessionDevGrp-group { + + leaf devGroupName { + + type itd_DevGrpNameType; + description "TBD"; + } + + leaf sessAction { + + type itd_sessActionType; + description "TBD"; + } + leaf actionSet { + config "false"; + type boolean; + } + container nodev4-items { + list SessNodev4-list { + key "ip"; + + uses itd_SessNodev4-group; + } + } + container nodev6-items { + list SessNodev6-list { + key "ip"; + + uses itd_SessNodev6-group; + } + } + } + + grouping itd_SessNodev4-group { + leaf ip { + type address_Ipv4; + } + + leaf action { + + type itd_sessNodeActionType; + description "TBD"; + } + + container probe-items { + + uses itd_Probe-group; + } + } + + grouping itd_SessNodev6-group { + leaf ip { + type address_Ipv6; + } + + leaf action { + + type itd_sessNodeActionType; + description "TBD"; + } + + container probe-items { + + uses itd_Probe-group; + } + } + + grouping itd_AclAction-group { + + leaf aclName { + + type itd_AclNameType; + description "TBD"; + } + leaf refreshSet { + config "false"; + type boolean; + } + } + + grouping itd_StatsAction-group { + + leaf svcName { + + type itd_SvcNameType; + description "TBD"; + } + + leaf startStats { + + type itd_statsActionType; + description "TBD"; + } + leaf clearStats { + type boolean; + } + leaf statsSet { + config "false"; + type boolean; + } + } + + grouping lacp_Entity-group { + description "LACP Entity"; + + // This objects hold per lacp instance information. There is only + // one instance of lacp running in the system today + container inst-items { + + uses lacp_Inst-group; + description "LACP Instance"; + } + } + + grouping lacp_Inst-group { + description "LACP Instance"; + + // Administrative system priority + leaf adminPrio { + + type lacp_SysPrio; + description "LACP instance adminstrative priority"; + } + + // Administrative System mac + leaf adminSysMac { + + type lacp_SysMac; + description "System MAC"; + } + + // Administrative Role + leaf adminRole { + + type lacp_SysRole; + description "System Role"; + } + + // Instance Control Fields + leaf lacpctrl { + + type lacp_LACPInstCtrl; + description "Instance Control"; + } + + // Operational system priority + leaf operPrio { + config "false"; + + type lacp_SysPrio; + description "Specifies the LACP instance operational system priority"; + } + + // System mac + leaf sysMac { + config "false"; + + type lacp_SysMac; + description "System MAC"; + } + + // Operational Role + leaf operRole { + config "false"; + + type lacp_SysRole; + description "System Role"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This object holds lacp information that is operated at a + // interface (member port of the port channel) level + container if-items { + list If-list { + key "id"; + + uses lacp_If-group; + description "LACP Interface list"; + } + description "LACP Interface"; + } + } + + grouping lacp_If-group { + description "LACP Interface"; + + // Port priority - LACP uses the port priority to decide + // which ports should be put in standby mode when there + // is a limitation that prevents all compatible ports + // from aggregating and which ports should be put into + // active mode. A higher port priority value means a + // lower priority for LACP + leaf prio { + + type lacp_PortPrio; + description "Specifies the LACP Interface Port Priority"; + } + + // Transmit rate, the rate at which the packets are + // transmitted + leaf txRate { + + type lacp_TxRate; + description "Specifies the rate at which the LACP Packets are transmitted"; + } + + // Activity flags + leaf activityFlags { + config "false"; + + type lacp_ActivityFlags; + description "Specifies the LACP interface activity flags"; + } + leaf lastActive { + config "false"; + type union { + type string; + type uint64; + } + description "Indicates the last operationally active timestamp on the LACP interface"; + } + + // Local port num + leaf port { + config "false"; + + type lacp_PortNum; + description "Specifies the LACP interface local port number"; + } + + // Operational port priority + leaf operPrio { + config "false"; + + type lacp_PortPrio; + description "Specifies the LACP Interface Operational Port Priority"; + } + + // Operational key + leaf key { + config "false"; + + type lacp_Key; + description "Specifies the LACP Interface Operational Key"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // This object holds lacp neighbor information + container adj-items { + + uses lacp_AdjEp-group; + description "Adjacency"; + } + + // This object holds lacp intf statistics operational information. + // This is a singleton within an intferace + container ifstats-items { + + uses lacp_IfStats-group; + description "Interface Statistics"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + } + + grouping lacp_AdjEp-group { + description "Adjacency"; + + // Neighbor system priority + leaf sysPrio { + config "false"; + + type lacp_SysPrio; + description "Specifies the Adjacency Neighbor System Priority"; + } + + // Neighbor system id + leaf sysId { + config "false"; + + type lacp_SysMac; + description "Specifies the Adjacency Neighbor System ID"; + } + + // Neighbor Port number + leaf port { + config "false"; + + type lacp_PortNum; + description "Specifies the Adjacency Neighbor Port Number"; + } + + // Neighbor port priority + leaf portPrio { + config "false"; + + type lacp_PortPrio; + description "Neighbor Port Priority"; + } + + // Neighbor activity flags + leaf activityFlags { + config "false"; + + type lacp_ActivityFlags; + description "Specifies the LACP Adjacency Neighbor Activity Flags"; + } + + // Neighbor oper key + leaf key { + config "false"; + + type lacp_Key; + description "Specifies the Adjacency Neighbor Operational Key"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping lacp_IfStats-group { + description "Interface Statistics"; + + // LACP Interface Stats Number of LACP pdus sent + leaf pduSent { + config "false"; + + type nw_Counter64; + description "Number of PDUs Sent"; + } + + // Number of LACP pdus received + leaf pduRcvd { + config "false"; + + type nw_Counter64; + description "Number of PDUs Received"; + } + + // Number of marker sent + leaf markerSent { + config "false"; + + type nw_Counter64; + description "Number of Markers Sent"; + } + + // Number of marker received + leaf markerRcvd { + config "false"; + + type nw_Counter64; + description "Number of Markers Received"; + } + + // Number of marker response sent + leaf markerRspSent { + config "false"; + + type nw_Counter64; + description "Number of Marker Responses Sent"; + } + + // Number of marker reponse received + leaf markerRspRcvd { + config "false"; + + type nw_Counter64; + description "Number of Marker Responses Received"; + } + + // Number of error packets received + leaf errPktRcvd { + config "false"; + + type nw_Counter64; + description "Number of Error Packets Received"; + } + + // Number of PDU timeout count + leaf pduTimeoutCount { + config "false"; + + type nw_Counter64; + description "Number of PDU timeout received"; + } + + // Number of flaps + leaf flapCount { + config "false"; + + type nw_Counter64; + description "Number of flaps on this port"; + } + } + + grouping mgmt_MgmtIf-group { + description "Management Interface"; + leaf mediaType { + type enumeration { + enum sfp { + value 7; + } + enum rj45 { + value 8; + } + enum auto { + value 9; + } + } + default "auto"; + description "Configuring the interface media-type"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024 { + length "0..254"; + } + description "descr"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative port state @@@ Comes from port out-of-service policy + leaf adminSt { + + type l1_AdminSt; + description "Administrative Port State"; + } + + // Administrative port speed @@@ This comes from the host interface + // @@@ configuration policy + leaf speed { + + type l1_Speed; + description "Administrative Port Speed"; + } + + // Administrative port duplex @@@ This comes from the host interface + // @@@ configuration policy + leaf duplex { + + type l1_Duplex; + description "Duplex"; + } + + // Administrative port auto-negotiation @@@ It comes from the host interface configuration + // @@@ policy. It is used for automatically negotiating + // @@@ the speed + leaf autoNeg { + + type l1_AutoNeg; + description "Administrative Port Auto-Negotiation"; + } + + // Administrative port mtu @@@ This comes from QOS Policy + leaf mtu { + + type l1_Mtu; + description "Administrative port MTU"; + } + + // Administrative port snmp trap state @@@ This is a port level config. but it could go in + // @@@ SNMP policy in IFC + leaf snmpTrapSt { + + type l1_SnmpTrapSt; + description "Administrative Port Snmp Trap State"; + } + + // Mgmt interface + container mgmt-items { + + uses im_MgmtIf-group; + description "Managment Interface"; + } + + // Mgmt0 interface capabilities + container portcap-items { + + uses im_PortCap-group; + description "Port Capability"; + } + + container rtrtdMgmtConf-items { + + uses mgmt_RtRtdMgmtConf_target-group; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container dbgIfIn-items { + + uses rmon_IfIn-group; + description "Interface Input Counters"; + } + + container dbgIfOut-items { + + uses rmon_IfOut-group; + description "Interface Output Counters"; + } + + container dbgIpIn-items { + + uses rmon_IpIn-group; + description "IPV4 Input Counters"; + } + + container dbgDot1d-items { + + uses rmon_Dot1d-group; + description "Dot1d Counters"; + } + + container dbgEtherStats-items { + + uses rmon_EtherStats-group; + description "Ethernet Statistic Counters"; + } + + container dbgDot3Stats-items { + + uses rmon_Dot3Stats-group; + description "Dot3 Statistics Counters"; + } + + container dbgIfHCIn-items { + + uses rmon_IfHCIn-group; + description "Interface HC Input Counters"; + } + + container dbgIfHCOut-items { + + uses rmon_IfHCOut-group; + description "Interface HC Output Counters"; + } + + container dbgIpv6IfStats-items { + + uses rmon_Ipv6IfStats-group; + description "Ipv6 Interface Statistics Counters"; + } + + container dbgIfStorm-items { + + uses rmon_IfStorm-group; + description "Interface Storm Drop Counters"; + } + } + + grouping im_MgmtIf-group { + description "Managment Interface"; + + // Operational port state + leaf operSt { + config "false"; + + type l1_OperSt; + description "Runtime state of the object or policy"; + } + + // Operational port status reason + leaf operStQual { + config "false"; + + type l1_OperStQual; + description "Chassis Operational Port Status Qualifier"; + } + + // Operational port speed + leaf operSpeed { + config "false"; + + type l1_Speed; + description "Operational Port Speed"; + } + + // Operational duplex + leaf operDuplex { + config "false"; + + type l1_Duplex; + description "Operational Duplex"; + } + + // Operational physical port layer + leaf operPhyLayer { + config "false"; + + type l1_PhyLayer; + description "Operational Physical Port Layer"; + } + leaf backplaneMac { + config "false"; + type address_Mac; + description "Port Backplane Mac"; + } + leaf operRouterMac { + config "false"; + type address_Mac; + description "Operational Port Router Mac"; + } + leaf portInitEvalFlag { + config "false"; + type uint8; + description "Port Initialize Evaluation Flag"; + } + + // Operational Mtu + leaf operMtu { + config "false"; + + type l1_Mtu; + description "Operational Mtu"; + } + leaf iod { + config "false"; + type uint64; + description "Specifies the IOD"; + } + + // Vdc id + leaf vdcId { + config "false"; + + type l2_VdcId; + description "Vdc Id"; + } + leaf lastLinkStChg { + config "false"; + type union { + type string; + type uint64; + } + description "Holds the Last Link State Change"; + } + } + + grouping im_PortCap-group { + description "Port Capability"; + leaf portCap { + config "false"; + type uint32; + description "Port Capability Flags"; + } + } + + grouping logging_Logging-group { + description "Logging root node for logging operations"; + + container loglevel-items { + + uses logging_LogLevel-group; + description "Logging level root node for all facilities"; + } + } + + grouping logging_LogLevel-group { + description "Logging level root node for all facilities"; + + leaf all { + + type logging_LoggingEnableAll; + default "unspecified"; + description "Logging level all state disabled/enabled"; + } + + leaf severityLevel { + + type syslog_Severity; + description "Logging severity level for all the facilites"; + } + container facility-items { + list Facility-list { + key "facilityName"; + + uses logging_Facility-group; + description "Syslog Logging Levels For Individual Facilities list"; + } + description "Syslog Logging Levels For Individual Facilities"; + } + } + + grouping logging_Facility-group { + description "Syslog Logging Levels For Individual Facilities"; + + leaf facilityName { + + type comp_DelimitedString; + description "Facility Name of individual processes subscribed for logging level"; + } + + leaf severityLevel { + + type syslog_Severity; + description "Logging severity level for individual facility name"; + } + } + + grouping snmp_Entity-group { + description "SNMP Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This objects hold per snmp instance information + container inst-items { + + uses snmp_Inst-group; + description "SNMP Instance"; + } + + // Snmp server system shutdown control MO + container servershutdown-items { + + uses snmp_ServerShutdown-group; + description "SNMP server system shutdown"; + } + } + + grouping snmp_Inst-group { + description "SNMP Instance"; + + // Logging Level + leaf loggingLevel { + + type snmp_SnmpLogLevel; + description "Set level for SNMP syslog messages"; + } + + // Engine Id + leaf engId { + + type snmp_EngId; + description "Engine Id"; + } + + leaf unknownEngId { + + type snmp_Boolean; + default "no"; + description "Indicates the Unknown Engine Id MO thats needs to be created"; + } + + leaf unknownUser { + + type snmp_Boolean; + default "no"; + description "Indicates the Unknown User MO thats needs to be created"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf adminSt { + + type nw_AdminSt; + default "disabled"; + description "Admin State"; + } + + // Access control based on ip addresses and communities. + // This is valid only with v1/v2c security Client group + container clgrp-items { + list ClientGrp-list { + key "name"; + + uses snmp_ClientGrp-group; + description "Client Group list"; + } + description "Client Group"; + } + + container globals-items { + + uses snmp_Globals-group; + description "The global info maintained by SNMP"; + } + container host-items { + list Host-list { + key "hostName udpPortID"; + + uses snmp_Host-group; + description "Snmp Host Configuration MO list"; + } + description "Snmp Host Configuration MO"; + } + + container rmon-items { + + uses snmp_Rmon-group; + description "Snmp RMON configurations"; + } + + // Security policy using communities. Uses a community + // string match for authentication + container community-items { + list CommSecP-list { + key "name"; + + uses snmp_CommSecP-group; + description "Community Security Policy list"; + } + description "Community Security Policy"; + } + + // Authentication policy using user names + container user-items { + list UserSecP-list { + key "name"; + + uses snmp_UserSecP-group; + description "User Security Policy list"; + } + description "User Security Policy"; + } + + // This objects holds snmp context information + container ctx-items { + list Ctx-list { + key "name"; + + uses snmp_Ctx-group; + description "Context list"; + } + description "Context"; + } + + // This object is used to create kstack sockets for the respective vrf/namespace + container lvrf-items { + list LUseVrf-list { + key "vrfName"; + + uses snmp_LUseVrf-group; + description "Used for Kstack support list"; + } + description "Used for Kstack support"; + } + + container sysinfo-items { + + uses snmp_SysInfo-group; + description "The System Info maintained by SNMP"; + } + + container traps-items { + + uses snmp_Traps-group; + description "Snmp Trap COnfiguration"; + } + container rmtUser-items { + list RemoteUser-list { + key "userName usrengineId"; + + uses snmp_RemoteUser-group; + description "Snmp remote user notification target list"; + } + description "Snmp remote user notification target"; + } + container lclUser-items { + list LocalUser-list { + key "userName"; + + uses snmp_LocalUser-group; + description "Snmp local user list"; + } + description "Snmp local user"; + } + } + + grouping snmp_ClientGrp-group { + description "Client Group"; + + // The vrf that this client group belongs to + leaf vrf { + + type l3_VrfName; + description "VRF"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_OSSum; + description "Operational State"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf epgDn { + config "false"; + type string; + } + container client-items { + list Client-list { + key "addr"; + + uses snmp_Client-group; + description "Client Entry list"; + } + description "Client Entry"; + } + + container rscommSecPClientGrpAtt-items { + + list RsCommSecPClientGrpAtt-list { + config "false"; + key "tDn"; + + uses snmp_RsCommSecPClientGrpAtt_source-group; + description "Community Security Policy Attachment list"; + } + description "Community Security Policy Attachment"; + } + } + + grouping snmp_Client-group { + description "Client Entry"; + + // Operational state + leaf operSt { + config "false"; + + type nw_OSSum; + description "Operational State"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + leaf addr { + type address_Ip; + description "Client Address"; + } + } + + grouping snmp_Globals-group { + description "The global info maintained by SNMP"; + + leaf aaaUserCacheTimeout { + + type snmp_AaaUserCacheTimeout; + description "Timeout for AAA Cache"; + } + + leaf protocolEnable { + + type snmp_Boolean; + description "Enable/Disable snmp protocol operations"; + } + + leaf counterCacheEnable { + + type snmp_Boolean; + description "Enable port stats cache"; + } + + leaf counterCacheTimeout { + + type snmp_CounterCacheTimeout; + description "Timeout for port stats cache"; + } + + // If-mib Ifalias long setting + leaf enableIfAliasLong { + + type snmp_Boolean; + default "no"; + description "Enable long description upto 256 characters for interface alias"; + } + + // SNMP SERVER enforce privacy protocol + leaf enforcePrivacy { + + type snmp_Boolean; + default "no"; + description "Globally enforce privacy for all the users"; + } + + // SNMP SERVER Packet Size + leaf pktSize { + + type snmp_PktSizeT; + description "Packet size config"; + } + + // tcp-session auth config + leaf tcpSessionAuth { + + type snmp_tcpSessionAuthT; + description "tcp-session auth config"; + } + + container srcInterfaceTraps-items { + + uses snmp_SourceInterfaceTraps-group; + description "SNMP source interface for traps"; + } + + container srcInterfaceInforms-items { + + uses snmp_SourceInterfaceInforms-group; + description "SNMP source interface for informs"; + } + } + + grouping snmp_SourceInterfaceTraps-group { + description "SNMP source interface for traps"; + + leaf ifname { + + type nw_IfId; + description "Source interface name for Traps"; + } + } + + grouping snmp_SourceInterfaceInforms-group { + description "SNMP source interface for informs"; + + leaf ifname { + + type nw_IfId; + description "Source interface name for informs"; + } + } + + grouping snmp_Host-group { + description "Snmp Host Configuration MO"; + + // Host name + leaf hostName { + + type snmp_hostNameT; + description "snmp-server host name"; + } + + // Community name + leaf commName { + + type snmp_commNameT; + description "community to be associated to the host"; + } + + // Ctrl bits to decide Traps / Informs + leaf notifType { + + type snmp_NotificationType; + description "Ctrl bits indicating traps/informs config"; + } + + // Ctrl bits to decide version + leaf version { + + type snmp_Version; + description "Ctrl bits indicating version"; + } + + // Control bitmask for deciding auth/ priv/ noauth for v3 + leaf secLevel { + + type snmp_V3SecLvl; + description "Ctrl bits indicating auth/ priv/ noauth for v3"; + } + + // udp-port ID + leaf udpPortID { + + type snmp_PortIdT; + description "snmp-server host udp-port"; + } + + // Source interface setting for hosts + container hostsourceinterface-items { + + uses snmp_HostSrcInterface-group; + description "SNMP source interface for host"; + } + container usevrf-items { + list UseVrf-list { + key "vrfname"; + + uses snmp_UseVrf-group; + description "SNMP VRF for host list"; + } + description "SNMP VRF for host"; + } + + // Filter VRF setting + container filtervrf-items { + list FilterVrf-list { + key "vrfName"; + + uses snmp_FilterVrf-group; + description "Filter notifications to host receiver based on the configured VRF list"; + } + description "Filter notifications to host receiver based on the configured VRF"; + } + } + + grouping snmp_HostSrcInterface-group { + description "SNMP source interface for host"; + + // If Name of the interface + leaf ifName { + + type nw_IfId; + description "Source interface name for host"; + } + } + + grouping snmp_UseVrf-group { + description "SNMP VRF for host"; + + leaf vrfname { + + type l3_VrfName; + description "vrfname to be used by host"; + } + } + + grouping snmp_FilterVrf-group { + description "Filter notifications to host receiver based on the configured VRF"; + + // VRF name property + leaf vrfName { + + type l3_VrfName; + description "VRF name to be used by host"; + } + } + + grouping snmp_Rmon-group { + description "Snmp RMON configurations"; + container event-items { + list Event-list { + key "num"; + + uses snmp_Event-group; + description "Snmp RMON Event configurations list"; + } + description "Snmp RMON Event configurations"; + } + container alarm-items { + list Alarm-list { + key "num"; + + uses snmp_Alarm-group; + description "Snmp RMON Alarm configurations list"; + } + description "Snmp RMON Alarm configurations"; + } + container hcalarm-items { + list HcAlarm-list { + key "num"; + + uses snmp_HcAlarm-group; + description "Configure high capacity RMON alarm list"; + } + description "Configure high capacity RMON alarm"; + } + } + + grouping snmp_Event-group { + description "Snmp RMON Event configurations"; + + // Event Number + leaf num { + + type snmp_EventNum; + description "rmon event number"; + } + + // To generate / not log when alarm event is fired + leaf log { + + type snmp_LogEnableType; + description "Whether to generate / not log when alarm event is fired"; + } + + leaf owner { + + type snmp_OwnerType; + description "rmon event owner"; + } + + leaf description { + + type snmp_DescType; + description "rmon event description"; + } + + leaf trap { + + type snmp_TrapCommType; + description "rmon event description"; + } + } + + grouping snmp_Alarm-group { + description "Snmp RMON Alarm configurations"; + + // Alarm Number + leaf num { + + type snmp_EventNum; + description "rmon alarm number"; + } + leaf oid { + type string; + description "rmon alarm oid"; + } + + // Sample Interval + leaf sampleInterval { + + type snmp_smplIntvl; + description "rmon alarm sample interval"; + } + + // Sample Type + leaf sampleType { + + type snmp_smplType; + description "rmon alarm sample interval type"; + } + + // Rising Threshold + leaf risingThr { + + type snmp_thrshld; + description "rmon alarm rising threshold"; + } + + // Rising Threshold Event Index + leaf risingEvntIndx { + + type snmp_EventIndx; + description "rmon alarm rising threshold event index"; + } + + // Falling Threshold + leaf fallingThr { + + type snmp_thrshld; + description "rmon alarm falling threshold"; + } + + // Falling Threshold Event Index + leaf fallingEvntIndx { + + type snmp_EventIndx; + description "rmon alarm falling threshold event index"; + } + + // Owner Name + leaf owner { + + type snmp_OwnerType; + description "rmon alarm owner"; + } + } + + grouping snmp_HcAlarm-group { + description "Configure high capacity RMON alarm"; + + // Alarm Number + leaf num { + + type snmp_EventNum; + description "RMON alarm number"; + } + leaf oid { + type string { + pattern ".*[0-9\\.]+.*"; + } + description "MIB object to monitor"; + } + + // Sample Interval + leaf sampleInterval { + + type snmp_smplIntvl; + description "RMON alarm sample interval"; + } + + // Sample Type + leaf sampleType { + + type snmp_smplType; + description "RMON sample interval type"; + } + + // Startup alarm + leaf startupAlarm { + + type snmp_startupAlarmType; + description "RMON startup alarm"; + } + + // Rising Threshold + leaf risingThr { + + type snmp_HcThrshld; + description "Alarm rising threshold value"; + } + + // Rising Threshold Event Index + leaf risingEvntIndx { + + type snmp_EventIndx; + description "RMON alarm rising threshold event crossing"; + } + + // Falling Threshold + leaf fallingThr { + + type snmp_HcThrshld; + description "RMON alarm falling threshold"; + } + + // Falling Threshold Event Index + leaf fallingEvntIndx { + + type snmp_EventIndx; + description "RMON alarm falling threshold event crossing"; + } + + // Owner Name + leaf owner { + + type snmp_OwnerType; + description "RMON alarm owner"; + } + } + + grouping snmp_CommSecP-group { + description "Community Security Policy"; + + // Group to which community belongs to + leaf grpName { + + type snmp_GrpNameT; + description "SNMP community group"; + } + leaf contextName { + type string; + description "Name of the SNMP context"; + } + + // Community Access + leaf commAcess { + + type snmp_CommAcessT; + description "SNMP community group"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_OSSum; + description "Operational State"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern "[^\\s@]{1,32}"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // This object hold the ACl informations + container acl-items { + + uses snmp_Acl-group; + description "snmp community acl"; + } + + container rscommToCtxAtt-items { + + uses snmp_RsCommToCtxAtt_source-group; + } + } + + grouping snmp_Acl-group { + description "snmp community acl"; + + // SNMP ACL name + leaf useAclName { + + type snmp_AclNameT; + description "SNMP community acl name"; + } + + // SNMP ACL name + leaf useIpv4AclName { + + type snmp_AclNameT; + description "SNMP community acl name"; + } + + // SNMP ACL name + leaf useIpv6AclName { + + type snmp_AclNameT; + description "SNMP community acl name"; + } + } + + grouping snmp_UserSecP-group { + description "User Security Policy"; + + // Operational state + leaf operSt { + config "false"; + + type nw_OSSum; + description "Operational State"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z][a-zA-Z0-9_\\.@-]{0,31}.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Authentication type + leaf authType { + + type snmp_AuthType; + description "Authentication Type"; + } + + // Authentication key + leaf authKey { + + type snmp_AuthKey; + description "Authentication Key"; + } + + // Privacy (encryption) type + leaf privType { + + type snmp_PrivType; + description "Privacy"; + } + + // Privacy key + leaf privKey { + + type snmp_PrivKey; + description "Privacy Key"; + } + } + + grouping snmp_Ctx-group { + description "Context"; + leaf ctxInstance { + type string; + description "Protocol instance associated with the SNMP context"; + } + leaf ctxTopology { + type string; + description "Topology associated with the SNMP context"; + } + leaf vrf { + type string; + description "VRF associated with the SNMP context"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_OSSum; + description "Operational State"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping snmp_LUseVrf-group { + description "Used for Kstack support"; + leaf vrfName { + type string; + description "Vrf name in which local SNMP polling is enabled"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping snmp_SysInfo-group { + description "The System Info maintained by SNMP"; + + leaf sysLocation { + + type snmp_SnmpSysLoc; + description "System Location"; + } + + leaf sysContact { + + type snmp_SnmpSysContact; + description "System Contact"; + } + + leaf sysDescription { + + type snmp_SnmpSysDescr; + description "System Description"; + } + } + + grouping snmp_Traps-group { + description "Snmp Trap COnfiguration"; + + leaf enableAllViaCLI { + + type snmp_AllTrapsType; + description "Enable/Disable all traps"; + } + + // Default traps List Starts From Here StormControl trap + container stormcontrol-items { + + uses snmp_TstormControl-group; + description "StormControl Traps"; + } + + // Default traps List Starts From Here AAA trap + container aaa-items { + + uses snmp_Taaa-group; + description "AAA Traps"; + } + + // Bfd trap + container bfd-items { + + uses snmp_Tbfd-group; + description "Bfd Traps"; + } + + // Bridge trap + container bridge-items { + + uses snmp_Tbridge-group; + description "Bridge Traps"; + } + + // Callhome trap + container callhome-items { + + uses snmp_Tcallhome-group; + description "Callhome Traps"; + } + + // Syslog trap + container syslog-items { + + uses snmp_Tsyslog-group; + description "Syslog Traps"; + } + + // CFS trap + container cfs-items { + + uses snmp_Tcfs-group; + description "CFS Traps"; + } + + // Config trap + container config-items { + + uses snmp_Tconfig-group; + description "Entity Traps"; + } + + // Entity trap + container entity-items { + + uses snmp_Tentity-group; + description "Entity Traps"; + } + + // Feature-control trap + container featurecontrol-items { + + uses snmp_Tfeaturecontrol-group; + description "Feature-control Traps"; + } + + // hsrp trap + container hsrp-items { + + uses snmp_Thsrp-group; + description "Hsrp Traps"; + } + + // generic trap + container generic-items { + + uses snmp_Tgeneric-group; + description "Generic Traps"; + } + + // ip trap + container ip-items { + + uses snmp_Tip-group; + description "Ip Traps"; + } + + // license trap + container license-items { + + uses snmp_Tlicense-group; + description "license Traps"; + } + + // poe trap + container poe-items { + + uses snmp_Tpoe-group; + description "poe Traps"; + } + + // link trap + container link-items { + + uses snmp_Tlink-group; + description "link Traps"; + } + + // lldp trap + container lldp-items { + + uses snmp_Tlldp-group; + description "lldp Traps"; + } + + // msdp trap + container msdp-items { + + uses snmp_Tmsdp-group; + description "msdp Traps"; + } + + // mmode trap + container mmode-items { + + uses snmp_Tmmode-group; + description "mmode Traps"; + } + + // pim trap + container pim-items { + + uses snmp_Tpim-group; + description "pim Traps"; + } + + // rf trap + container rf-items { + + uses snmp_Trf-group; + description "rf Traps"; + } + + // rmon trap + container rmon-items { + + uses snmp_Trmon-group; + description "rmon Traps"; + } + + // snmp trap + container snmp-items { + + uses snmp_Tsnmp-group; + description "snmp Traps"; + } + + // stpx trap + container stpx-items { + + uses snmp_Tstpx-group; + description "lldp Traps"; + } + + // sysmgr trap + container sysmgr-items { + + uses snmp_Tsysmgr-group; + description "sysmgr Traps"; + } + + // system trap + container system-items { + + uses snmp_Tsystem-group; + description "system Traps"; + } + + // upgrade trap + container upgrade-items { + + uses snmp_Tupgrade-group; + description "upgrade Traps"; + } + + // vsan trap + container vsan-items { + + uses snmp_Tvsan-group; + description "vsan Traps"; + } + + // vtp trap + container vtp-items { + + uses snmp_Tvtp-group; + description "vtp Traps"; + } + + // port-security trap + container portsecurity-items { + + uses snmp_Tportsecurity-group; + description "port-security Traps"; + } + + // mpls trap + container mpls-items { + + uses snmp_Tmpls-group; + description "mpls Traps"; + } + } + + grouping snmp_TstormControl-group { + description "StormControl Traps"; + + // SNMP trap-rate + leaf traprate { + + type snmp_TrapRateT; + description "Number of traps per minute"; + } + + // snmp authentication trap + container cpscEventRev1-items { + + uses snmp_CpscEventRev1-group; + description "storm-control cpscEventRev1 Traps"; + } + } + + grouping snmp_CpscEventRev1-group { + description "storm-control cpscEventRev1 Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Taaa-group { + description "AAA Traps"; + + // AAA server-state-change trap + container serverstatechange-items { + + uses snmp_ServerStateChange-group; + description "AAA server-state-change Traps"; + } + } + + grouping snmp_ServerStateChange-group { + description "AAA server-state-change Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tbfd-group { + description "Bfd Traps"; + + // Bfd session-down trap + container sessiondown-items { + + uses snmp_SessionDown-group; + description "Bfd session-down Traps"; + } + + // Bfd session-up trap + container sessionup-items { + + uses snmp_SessionUp-group; + description "Bfd session-up Traps"; + } + } + + grouping snmp_SessionDown-group { + description "Bfd session-down Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_SessionUp-group { + description "Bfd session-up Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tbridge-group { + description "Bridge Traps"; + + // Bridge newroot trap + container newroot-items { + + uses snmp_NewRoot-group; + description "Bridge Newroot"; + } + + // Bridge topologychange trap + container topologychange-items { + + uses snmp_TopologyChange-group; + description "Bridge Newroot"; + } + } + + grouping snmp_NewRoot-group { + description "Bridge Newroot"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_TopologyChange-group { + description "Bridge Newroot"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tcallhome-group { + description "Callhome Traps"; + + // callhome event-notify trap + container eventnotify-items { + + uses snmp_EventNotify-group; + description "Callhome event-notify Traps"; + } + + // callhome smtp-send-fail trap + container smtpsendfail-items { + + uses snmp_SmtpSendFail-group; + description "Callhome smtp-send-fail Traps"; + } + } + + grouping snmp_EventNotify-group { + description "Callhome event-notify Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_SmtpSendFail-group { + description "Callhome smtp-send-fail Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tsyslog-group { + description "Syslog Traps"; + + // syslog message-generated trap + container messagegenerated-items { + + uses snmp_MessageGenerated-group; + description "Syslog message-generated Traps"; + } + } + + grouping snmp_MessageGenerated-group { + description "Syslog message-generated Traps"; + leaf toggleState { + config "false"; + type uint16; + description "1 for enable / 2 for disable"; + } + leaf toggleStateCount { + config "false"; + type uint16; + description "Incremental counter for triggering BI"; + } + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tcfs-group { + description "CFS Traps"; + + // cfs state-change-notif trap + container statechangenotif-items { + + uses snmp_StateChangeNotif-group; + description "cfs state-change-notif Traps"; + } + + // cfs merge-failure trap + container mergefailure-items { + + uses snmp_MergeFailure-group; + description "cfs merge-failure Traps"; + } + } + + grouping snmp_StateChangeNotif-group { + description "cfs state-change-notif Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_MergeFailure-group { + description "cfs merge-failure Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tconfig-group { + description "Entity Traps"; + + // config CLIRunningConfigChange trap + container ccmCLIRunningConfigChanged-items { + + uses snmp_CLIRunningConfigChange-group; + description "config CLIRunningConfigChange Traps"; + } + } + + grouping snmp_CLIRunningConfigChange-group { + description "config CLIRunningConfigChange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tentity-group { + description "Entity Traps"; + + // entity entitymibchange trap + container entitymibchange-items { + + uses snmp_EntityMIBChange-group; + description "entity entitymibchange Traps"; + } + + // entity entitymodulestatuschange trap + container entitymodulestatuschange-items { + + uses snmp_EntityModuleStatusChange-group; + description "entity entitymodulestatuschange Traps"; + } + + // entity entitypowerstatuschange trap + container entitypowerstatuschange-items { + + uses snmp_EntityPowerStatusChange-group; + description "entity entitypowerstatuschange Traps"; + } + + // entity entitymoduleinserted trap + container entitymoduleinserted-items { + + uses snmp_EntityModuleInserted-group; + description "entity entitymoduleinserted Traps"; + } + + // entity entitymoduleremoved trap + container entitymoduleremoved-items { + + uses snmp_EntityModuleRemoved-group; + description "entity entitymoduleremoved Traps"; + } + + // entity entityunrecognisedmodule trap + container entityunrecognisedmodule-items { + + uses snmp_EntityUnrecognisedModule-group; + description "entity entityunrecognisedmodule Traps"; + } + + // entity entityfanstatuschange trap + container entityfanstatuschange-items { + + uses snmp_EntityFanStatusChange-group; + description "entity entityfanstatuschange Traps"; + } + + // entity entitypoweroutchange trap + container entitypoweroutchange-items { + + uses snmp_EntityPowerOutChange-group; + description "entity entitypoweroutchange Traps"; + } + + // entity entitysensor trap + container entitysensor-items { + + uses snmp_EntitySensor-group; + description "entity entitysensor Traps"; + } + + // entity entitymibenablestatusnotification trap + container cefcMIBEnableStatusNotification-items { + + uses snmp_EntityMIBEnableStatusNotification-group; + description "entity entitymibenablestatusnotification Traps"; + } + } + + grouping snmp_EntityMIBChange-group { + description "entity entitymibchange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_EntityModuleStatusChange-group { + description "entity entitymodulestatuschange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_EntityPowerStatusChange-group { + description "entity entitypowerstatuschange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_EntityModuleInserted-group { + description "entity entitymoduleinserted Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_EntityModuleRemoved-group { + description "entity entitymoduleremoved Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_EntityUnrecognisedModule-group { + description "entity entityunrecognisedmodule Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_EntityFanStatusChange-group { + description "entity entityfanstatuschange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_EntityPowerOutChange-group { + description "entity entitypoweroutchange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_EntitySensor-group { + description "entity entitysensor Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_EntityMIBEnableStatusNotification-group { + description "entity entitymibenablestatusnotification Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tfeaturecontrol-group { + description "Feature-control Traps"; + + // feature-control FeatureOpStatusChange trap + container FeatureOpStatusChange-items { + + uses snmp_FeatureOpStatusChange-group; + description "feature-control FeatureOpStatusChange Traps"; + } + + // feature-control CiscoFeatOpStatusChange trap + container ciscoFeatOpStatusChange-items { + + uses snmp_CiscoFeatOpStatusChange-group; + description "feature-control ciscoFeatOpStatusChange Traps"; + } + } + + grouping snmp_FeatureOpStatusChange-group { + description "feature-control FeatureOpStatusChange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_CiscoFeatOpStatusChange-group { + description "feature-control ciscoFeatOpStatusChange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Thsrp-group { + description "Hsrp Traps"; + + // hsrp statechange trap + container statechange-items { + + uses snmp_StateChange-group; + description "hsrp statechange Traps"; + } + } + + grouping snmp_StateChange-group { + description "hsrp statechange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tgeneric-group { + description "Generic Traps"; + + // generic coldstart trap + container coldStart-items { + + uses snmp_ColdStart-group; + description "generic coldstart Traps"; + } + + // generic warmstart trap + container warmStart-items { + + uses snmp_WarmStart-group; + description "generic warmstart Traps"; + } + } + + grouping snmp_ColdStart-group { + description "generic coldstart Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_WarmStart-group { + description "generic warmstart Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tip-group { + description "Ip Traps"; + + // ip sla trap + container sla-items { + + uses snmp_Sla-group; + description "ip sla Traps"; + } + } + + grouping snmp_Sla-group { + description "ip sla Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tlicense-group { + description "license Traps"; + + // license Notify licenseexpiry trap + container notifylicenseexpiry-items { + + uses snmp_NotifyLicenseExpiry-group; + description "Notify license LicenseExpiry Traps"; + } + + // license Notify LicenseExpiryWarning trap + container notifylicenseexpirywarning-items { + + uses snmp_NotifyLicenseExpiryWarning-group; + description "license Notify LicenseExpiryWarning Traps"; + } + + // license Notify licensefilemissing trap + container notifylicensefilemissing-items { + + uses snmp_NotifyLicenseFileMissing-group; + description "license Notify licensefilemissing Traps"; + } + + // license Notifynolicenceforfeature trap + container notifynolicenseforfeature-items { + + uses snmp_NotifyNoLicenceForFeature-group; + description "license Notify nolicenceforfeature Traps"; + } + } + + grouping snmp_NotifyLicenseExpiry-group { + description "Notify license LicenseExpiry Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_NotifyLicenseExpiryWarning-group { + description "license Notify LicenseExpiryWarning Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_NotifyLicenseFileMissing-group { + description "license Notify licensefilemissing Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_NotifyNoLicenceForFeature-group { + description "license Notify nolicenceforfeature Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tpoe-group { + description "poe Traps"; + + // POE police notify trap + container policenotify-items { + + uses snmp_PoliceNotify-group; + description "POE police notify Traps"; + } + + // POE control enable notify trap + container controlenable-items { + + uses snmp_ControlEnable-group; + description "POE control enable notify Traps"; + } + } + + grouping snmp_PoliceNotify-group { + description "POE police notify Traps"; + leaf toggleState { + config "false"; + type uint16; + description "1 for enable / 2 for disable"; + } + leaf toggleStateCount { + config "false"; + type uint16; + description "Incremental counter for triggering BI"; + } + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_ControlEnable-group { + description "POE control enable notify Traps"; + leaf toggleState { + config "false"; + type uint16; + description "1 for enable / 2 for disable"; + } + leaf toggleStateCount { + config "false"; + type uint16; + description "Incremental counter for triggering BI"; + } + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tlink-group { + description "link Traps"; + + // link Ciscoxcvrmonstatuschange trap + container ciscoxcvrmonstatuschg-items { + + uses snmp_CiscoXcvrMonStatusChange-group; + description "link Ciscoxcvrmonstatuschange Traps"; + } + + // link linkdown trap + container linkDown-items { + + uses snmp_LinkDown-group; + description "link linkdown Traps"; + } + + // link linkup trap + container linkUp-items { + + uses snmp_LinkUp-group; + description "link linkup Traps"; + } + + // link extended linkdown trap + container extendedlinkDown-items { + + uses snmp_ExtendedLinkDown-group; + description "link Extended linkdown Traps"; + } + + // link extended linkup trap + container extendedlinkUp-items { + + uses snmp_ExtendedLinkUp-group; + description "link extended linkup Traps"; + } + + // link cielinkdown trap + container cieLinkDown-items { + + uses snmp_CieLinkDown-group; + description "link Cie linkdown Traps"; + } + + // link Cie linkup trap + container cieLinkUp-items { + + uses snmp_CieLinkUp-group; + description "link Cie linkup Traps"; + } + + // link delayedlinkstatechange trap + container delayedlinkstatechange-items { + + uses snmp_DelayedLinkStateChange-group; + description "link DelayedLinkStateChange Traps"; + } + + // link cErrDisableInterfaceEventRev1 trap + container cerrdisableinterfaceeventrev1-items { + + uses snmp_CErrDisableInterfaceEventRev1-group; + description "link cErrDisableInterfaceEventRev1 Traps"; + } + + // link cmnMacMoveNotification trap + container cmnmacmovenotification-items { + + uses snmp_CmnMacMoveNotification-group; + description "link cmnMacMoveNotification Traps"; + } + } + + grouping snmp_CiscoXcvrMonStatusChange-group { + description "link Ciscoxcvrmonstatuschange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_LinkDown-group { + description "link linkdown Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_LinkUp-group { + description "link linkup Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_ExtendedLinkDown-group { + description "link Extended linkdown Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_ExtendedLinkUp-group { + description "link extended linkup Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_CieLinkDown-group { + description "link Cie linkdown Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_CieLinkUp-group { + description "link Cie linkup Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_DelayedLinkStateChange-group { + description "link DelayedLinkStateChange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_CErrDisableInterfaceEventRev1-group { + description "link cErrDisableInterfaceEventRev1 Traps"; + leaf toggleState { + config "false"; + type uint16; + description "1 for enable / 2 for disable"; + } + leaf toggleStateCount { + config "false"; + type uint16; + description "Incremental counter for triggering BI"; + } + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_CmnMacMoveNotification-group { + description "link cmnMacMoveNotification Traps"; + leaf toggleState { + config "false"; + type uint16; + description "1 for enable / 2 for disable"; + } + leaf toggleStateCount { + config "false"; + type uint16; + description "Incremental counter for triggering BI"; + } + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tlldp-group { + description "lldp Traps"; + + // lldp RemTablesChange trap + container lldpRemTablesChange-items { + + uses snmp_LldpRemTablesChange-group; + description "lldp LldpRemTablesChange Traps"; + } + } + + grouping snmp_LldpRemTablesChange-group { + description "lldp LldpRemTablesChange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tmsdp-group { + description "msdp Traps"; + + // msdp BackwardTransition trap + container msdpBackwardTransition-items { + + uses snmp_MsdpBackwardTransition-group; + description "msdp BackwardTransition Traps"; + } + } + + grouping snmp_MsdpBackwardTransition-group { + description "msdp BackwardTransition Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tmmode-group { + description "mmode Traps"; + + // mmode CseMaintModeChangeNotify trap + container cseMaintModeChangeNotify-items { + + uses snmp_CseMaintModeChangeNotify-group; + description "mmode CseMaintModeChangeNotify Traps"; + } + + // mmode CseNormalModeChangeNotify trap + container cseNormalModeChangeNotify-items { + + uses snmp_CseNormalModeChangeNotify-group; + description "mmode CseNormalModeChangeNotify Traps"; + } + } + + grouping snmp_CseMaintModeChangeNotify-group { + description "mmode CseMaintModeChangeNotify Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_CseNormalModeChangeNotify-group { + description "mmode CseNormalModeChangeNotify Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tpim-group { + description "pim Traps"; + + // pim PimNeighborloss trap + container pimNeighborLoss-items { + + uses snmp_PimNeighborLoss-group; + description "pim PimNeighborloss Traps"; + } + } + + grouping snmp_PimNeighborLoss-group { + description "pim PimNeighborloss Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Trf-group { + description "rf Traps"; + + // rf redundancyframework trap + container redundancyframework-items { + + uses snmp_RedundancyFramework-group; + description "rf redundancyframework Traps"; + } + } + + grouping snmp_RedundancyFramework-group { + description "rf redundancyframework Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Trmon-group { + description "rmon Traps"; + + // rmon RisingAlarm trap + container risingAlarm-items { + + uses snmp_RisingAlarm-group; + description "rmon RisingAlarm Traps"; + } + + // rmon FallingAlarm trap + container fallingAlarm-items { + + uses snmp_FallingAlarm-group; + description "rmon FallingAlarm Traps"; + } + + // rmon HcRisingAlarm trap + container hcRisingAlarm-items { + + uses snmp_HcRisingAlarm-group; + description "rmon HcRisingAlarm Traps"; + } + + // rmon HcFallingAlarm trap + container hcFallingAlarm-items { + + uses snmp_HcFallingAlarm-group; + description "rmon HcFallingAlarm Traps"; + } + } + + grouping snmp_RisingAlarm-group { + description "rmon RisingAlarm Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_FallingAlarm-group { + description "rmon FallingAlarm Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_HcRisingAlarm-group { + description "rmon HcRisingAlarm Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_HcFallingAlarm-group { + description "rmon HcFallingAlarm Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tsnmp-group { + description "snmp Traps"; + + // snmp authentication trap + container authentication-items { + + uses snmp_Authentication-group; + description "snmp authentication Traps"; + } + } + + grouping snmp_Authentication-group { + description "snmp authentication Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tstpx-group { + description "lldp Traps"; + + // stpx inconsistency trap + container inconsistency-items { + + uses snmp_Inconsistency-group; + description "stpx inconsistency Traps"; + } + + // stpx rootinconsistency trap + container rootinconsistency-items { + + uses snmp_RootInconsistency-group; + description "stpx root inconsistency Traps"; + } + + // stpx Loopinconsistency trap + container loopinconsistency-items { + + uses snmp_LoopInconsistency-group; + description "stpx loop inconsistency Traps"; + } + } + + grouping snmp_Inconsistency-group { + description "stpx inconsistency Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_RootInconsistency-group { + description "stpx root inconsistency Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_LoopInconsistency-group { + description "stpx loop inconsistency Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tsysmgr-group { + description "sysmgr Traps"; + + // sysmgr CseFailSwCoreNotifyExtended trap + container cseFailSwCoreNotifyExtended-items { + + uses snmp_CseFailSwCoreNotifyExtended-group; + description "sysmgr CseFailSwCoreNotifyExtended Traps"; + } + } + + grouping snmp_CseFailSwCoreNotifyExtended-group { + description "sysmgr CseFailSwCoreNotifyExtended Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tsystem-group { + description "system Traps"; + + // system ClockChangeNotification trap + container Clockchangenotification-items { + + uses snmp_ClockChangeNotification-group; + description "system ClockChangeNotification Traps"; + } + } + + grouping snmp_ClockChangeNotification-group { + description "system ClockChangeNotification Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tupgrade-group { + description "upgrade Traps"; + + // upgrade UpgradeJobStatusNotify trap + container UpgradeJobStatusNotify-items { + + uses snmp_UpgradeJobStatusNotify-group; + description "upgrade UpgradeJobStatusNotify Traps"; + } + } + + grouping snmp_UpgradeJobStatusNotify-group { + description "upgrade UpgradeJobStatusNotify Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tvsan-group { + description "vsan Traps"; + + // vsan PortMembershipChange trap + container vsanPortMembershipChange-items { + + uses snmp_VsanPortMembershipChange-group; + description "vsan PortMembershipChange Traps"; + } + + // vsan vsanStatusChange trap + container vsanStatusChange-items { + + uses snmp_VsanStatusChange-group; + description "vsan vsanStatusChange Traps"; + } + } + + grouping snmp_VsanPortMembershipChange-group { + description "vsan PortMembershipChange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_VsanStatusChange-group { + description "vsan vsanStatusChange Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tvtp-group { + description "vtp Traps"; + + // vtp notifs trap + container notifs-items { + + uses snmp_Notifs-group; + description "vtp notifs Traps"; + } + + // vtp vlancreate trap + container vlancreate-items { + + uses snmp_Vlancreate-group; + description "vtp vlancreate Traps"; + } + + // vtp vlandelete trap + container vlandelete-items { + + uses snmp_Vlandelete-group; + description "vtp vlandelete Traps"; + } + } + + grouping snmp_Notifs-group { + description "vtp notifs Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Vlancreate-group { + description "vtp vlancreate Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Vlandelete-group { + description "vtp vlandelete Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tportsecurity-group { + description "port-security Traps"; + + // port-security access-secure-mac-violation + container accesssecuremacviolation-items { + + uses snmp_AccessSecureMacViolation-group; + description "port-security access-secure-mac-violation Traps"; + } + + // port-security trunk-secure-mac-violation + container trunksecuremacviolation-items { + + uses snmp_TrunkSecureMacViolation-group; + description "port-security trunk-secure-mac-violation Traps"; + } + } + + grouping snmp_AccessSecureMacViolation-group { + description "port-security access-secure-mac-violation Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_TrunkSecureMacViolation-group { + description "port-security trunk-secure-mac-violation Traps"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Tmpls-group { + description "mpls Traps"; + + // ldp trap + container ldp-items { + + uses snmp_Ldp-group; + description "Enable LDP notifications"; + } + + // vpn trap + container vpn-items { + + uses snmp_Vpn-group; + description "Enable VPN notifications"; + } + } + + grouping snmp_Ldp-group { + description "Enable LDP notifications"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + + // ldp session-down trap + container ldpsessiondown-items { + + uses snmp_LdpSessiondown-group; + description "MPLS LDP Session Down Notification"; + } + + // ldp session-up trap + container ldpsessionup-items { + + uses snmp_LdpSessionup-group; + description "MPLS LDP Session Up Notification"; + } + } + + grouping snmp_LdpSessiondown-group { + description "MPLS LDP Session Down Notification"; + leaf toggleState { + config "false"; + type uint16; + description "1 for enable / 2 for disable"; + } + leaf toggleStateCount { + config "false"; + type uint16; + description "Incremental counter for triggering BI"; + } + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_LdpSessionup-group { + description "MPLS LDP Session Up Notification"; + leaf toggleState { + config "false"; + type uint16; + description "1 for enable / 2 for disable"; + } + leaf toggleStateCount { + config "false"; + type uint16; + description "Incremental counter for triggering BI"; + } + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_Vpn-group { + description "Enable VPN notifications"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + + // vpn vrf-down trap + container vpnvrfdown-items { + + uses snmp_VpnVrfdown-group; + description "MPLS VPN VRF Down Notification"; + } + + // Vpn vrf-up trap + container vpnvrfup-items { + + uses snmp_VpnVrfup-group; + description "MPLS VPN VRF Up Notification"; + } + + // vpn max-thresh-cleared trap + container vpnmaxthreshcleared-items { + + uses snmp_VpnMaxThreshcleared-group; + description "MPLS VPN max thresh cleared notification"; + } + + // vpn max-thresh-exceeded trap + container vpnmaxthreshexceeded-items { + + uses snmp_VpnMaxThreshexceeded-group; + description "MPLS VPN max thresh exceeded notification"; + } + + // vpn mid-thresh-exceeded trap + container vpnmidthreshexceeded-items { + + uses snmp_VpnMidThreshexceeded-group; + description "MPLS VPN mid thresh exceeded notification"; + } + } + + grouping snmp_VpnVrfdown-group { + description "MPLS VPN VRF Down Notification"; + leaf toggleState { + config "false"; + type uint16; + description "1 for enable / 2 for disable"; + } + leaf toggleStateCount { + config "false"; + type uint16; + description "Incremental counter for triggering BI"; + } + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_VpnVrfup-group { + description "MPLS VPN VRF Up Notification"; + leaf toggleState { + config "false"; + type uint16; + description "1 for enable / 2 for disable"; + } + leaf toggleStateCount { + config "false"; + type uint16; + description "Incremental counter for triggering BI"; + } + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_VpnMaxThreshcleared-group { + description "MPLS VPN max thresh cleared notification"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_VpnMaxThreshexceeded-group { + description "MPLS VPN max thresh exceeded notification"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_VpnMidThreshexceeded-group { + description "MPLS VPN mid thresh exceeded notification"; + + leaf trapstatus { + + type snmp_SnmpTrapSt; + description "Status to show enabled/disable trap"; + } + leaf isToggleAction { + config "false"; + type uint16; + description "whether it is default config"; + } + } + + grouping snmp_RemoteUser-group { + description "Snmp remote user notification target"; + + leaf hashedauthpwd { + config "false"; + + type snmp_AuthPasswd; + description "Hashed Auth Password"; + } + + leaf encrptprivpwd { + config "false"; + + type snmp_AuthPasswd; + description "Encrypted Priv Password"; + } + + leaf ishashmode { + config "false"; + + type snmp_EncrypModeT; + description "To set localizedV1/V2"; + } + + // User name + leaf userName { + + type snmp_userNameT; + description "snmp-server user name"; + } + + leaf authpwd { + + type snmp_AuthPasswd; + description "Auth Password"; + } + + leaf authtype { + + type snmp_AuthTypeT; + description "Auth Protocol Type"; + } + + leaf privpwd { + + type snmp_PrivPasswd; + description "Priv Password"; + } + + leaf privtype { + + type snmp_PrivTypeT; + description "Priv Protocol Type"; + } + leaf islocalizedkey { + type boolean; + description "whether localized key configured"; + } + leaf isenforcepriv { + type boolean; + description "whether enforce priv con"; + } + + leaf usrengineId { + + type snmp_EngId; + description "Configured Engine Id"; + } + + leaf usrengineIdlen { + + type snmp_EngIdLen; + description "Configured Engine Id len"; + } + leaf islocalizedV2key { + type boolean; + description "whether localized V2 key configured"; + } + } + + grouping snmp_LocalUser-group { + description "Snmp local user"; + leaf ipv4AclName { + type string; + description "IPv4 ACL name to filter SNMP requests"; + } + leaf ipv6AclName { + type string; + description "IPv6 ACL name to filter SNMP requests"; + } + + leaf hashedauthpwd { + config "false"; + + type snmp_AuthPasswd; + description "Hashed Auth Password"; + } + + leaf encrptprivpwd { + config "false"; + + type snmp_AuthPasswd; + description "Encrypted Priv Password"; + } + + leaf ishashmode { + config "false"; + + type snmp_EncrypModeT; + description "To set localizedV1/V2"; + } + + // User name + leaf userName { + + type snmp_userNameT; + description "snmp-server user name"; + } + + leaf authpwd { + + type snmp_AuthPasswd; + description "Auth Password"; + } + + leaf authtype { + + type snmp_AuthTypeT; + description "Auth Protocol Type"; + } + + leaf privpwd { + + type snmp_PrivPasswd; + description "Priv Password"; + } + + leaf privtype { + + type snmp_PrivTypeT; + description "Priv Protocol Type"; + } + leaf islocalizedkey { + type boolean; + description "whether localized key configured"; + } + leaf isenforcepriv { + type boolean; + description "whether enforce priv con"; + } + + leaf usrengineId { + + type snmp_EngId; + description "Configured Engine Id"; + } + + leaf usrengineIdlen { + + type snmp_EngIdLen; + description "Configured Engine Id len"; + } + leaf islocalizedV2key { + type boolean; + description "whether localized V2 key configured"; + } + container group-items { + list UserGroup-list { + key "groupName"; + + uses snmp_UserGroup-group; + description "Snmp user group configuration MO list"; + } + description "Snmp user group configuration MO"; + } + } + + grouping snmp_UserGroup-group { + description "Snmp user group configuration MO"; + + // Group name + leaf groupName { + + type snmp_userNameT; + description "snmp-server user name"; + } + } + + grouping snmp_ServerShutdown-group { + description "SNMP server system shutdown"; + + leaf sysShutdown { + + type snmp_Boolean; + default "no"; + description "SNMP server system shutdown control"; + } + } + + grouping syslog_Acct-group { + description "Syslog Accounting"; + leaf timerTick { + config "false"; + type uint32; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + } + + grouping syslog_Syslog-group { + description "syslog root node"; + + container timestamp-items { + + uses syslog_TimeStamp-group; + description "Syslog TimeStamp Format"; + } + + // MO for Rfc Strict support for syslog formats + container rfcstrict-items { + + uses syslog_RfcStrict-group; + description + "RFC Logging Format, with this option set to a supported syslog RFC number, + all syslogs from the device will follow configured RFC format"; + } + container level-items { + list Level-list { + key "facility"; + + uses syslog_Level-group; + description "Level list"; + } + description "Level"; + } + + container monitor-items { + + uses syslog_TermMonitor-group; + description "Terminal Monitor"; + } + + container console-items { + + uses syslog_Console-group; + description "Console"; + } + + container originid-items { + + uses syslog_Originid-group; + description "Hostname,IP address,or string to append to syslog msgs"; + } + + // dns-refresh-interval + container dnsinterval-items { + + uses syslog_DnsInterval-group; + description "Specifies the server dns-refresh-interval"; + } + + // logging rate-limit + container loggingratelimit-items { + + uses syslog_LoggingRateLimit-group; + description "Specifies the Logging Rate limit"; + } + container rdst-items { + list RemoteDest-list { + key "host"; + + uses syslog_RemoteDest-group; + description "Syslog Remote Destination list"; + } + description "Syslog Remote Destination"; + } + + container source-items { + + uses syslog_SourceInterface-group; + description "Source Interface"; + } + + container file-items { + + uses syslog_File-group; + description "File"; + } + + container inst-items { + + uses syslog_Inst-group; + description "Logging Instances"; + } + } + + grouping syslog_TimeStamp-group { + description "Syslog TimeStamp Format"; + + leaf format { + + type syslog_TimeStampFormat; + description "Format"; + } + } + + grouping syslog_RfcStrict-group { + description + "RFC Logging Format, with this option set to a supported syslog RFC number, + all syslogs from the device will follow configured RFC format"; + + // Syslogs will be complaint to the RFC number specifie for this below property + leaf format { + + type syslog_RfcStrictFormat; + description "Rfc number to which syslogs are compliant"; + } + } + + grouping syslog_Level-group { + description "Level"; + + leaf facility { + + type syslog_Facility; + description "Facility Name"; + } + + // Default value handled in local MO type + leaf severity { + + // Type is a Local-MO-Defined-Type + type syslog_Severity_Level_severity; + description "Severity"; + } + } + + grouping syslog_TermMonitor-group { + description "Terminal Monitor"; + + leaf adminState { + + type mon_AdminState; + description "TBD"; + } + + leaf severity { + + type syslog_Severity; + description "Severity"; + } + } + + grouping syslog_Originid-group { + description "Hostname,IP address,or string to append to syslog msgs"; + + leaf idtype { + + type syslog_OriginIdType; + description "OriginId type for Hostname, IP or String"; + } + + leaf idvalue { + + type syslog_OriginIdValue; + description "OriginId value for Hostname, IP or String"; + } + } + + grouping syslog_DnsInterval-group { + description "Specifies the server dns-refresh-interval"; + leaf dnsRefreshInterval { + type uint32 { + range "10..1440"; + } + default "60"; + description "DNS refresh interval for remote syslog server hostnames"; + } + } + + grouping syslog_LoggingRateLimit-group { + description "Specifies the Logging Rate limit"; + + leaf ratelimit { + + type callhome_Boolean; + default "enabled"; + description "rate-limit of syslog messages"; + } + } + + grouping syslog_SourceInterface-group { + description "Source Interface"; + + leaf adminState { + + type mon_AdminState; + description "TBD"; + } + + leaf ifName { + + type nw_IfId; + description "Interface"; + } + + leaf operState { + config "false"; + + type syslog_OperState; + description "TBD"; + } + } + + grouping syslog_Inst-group { + description "Logging Instances"; + + leaf modAdminState { + + type mon_AdminState; + description "TBD"; + } + + leaf modSeverity { + + type syslog_Severity; + description "Severity level"; + } + } + + grouping mts_Mts-group { + description "MTS stats"; + + container topsaps-items { + + uses mts_TopSaps-group; + description "Top saps based on their usuage"; + } + + container qfullsaps-items { + + uses mts_QfullSaps-group; + description "MTS Q full saps based on their queue limit"; + } + } + + grouping mts_TopSaps-group { + description "Top saps based on their usuage"; + leaf memUsed { + config "false"; + type uint32; + description "% of memory used by all apps"; + } + container tsap-items { + list TSap-list { + config "false"; + key "index"; + + uses mts_TSap-group; + description "Top saps list"; + } + description "Top saps"; + } + } + + grouping mts_TSap-group { + description "Top saps"; + leaf sapId { + config "false"; + type uint32; + description "sap num"; + } + leaf desc { + config "false"; + type string; + description "sap description"; + } + leaf process { + config "false"; + type string; + description "Process owns sap"; + } + leaf timestamp { + config "false"; + type string; + description "Exact time at which this condition happened"; + } + leaf msgCount { + config "false"; + type uint32; + description "Num of messages consumed by the sap"; + } + leaf bytesCount { + config "false"; + type uint32; + description "Num of bytes consumed by the sap"; + } + leaf memUsedInTotalMem { + config "false"; + type uint32; + description "% of memory used from the global mts memory"; + } + leaf memUsedInSapShare { + config "false"; + type uint32; + description "% of memory used from the memory limit assigned to sap"; + } + leaf index { + config "false"; + type uint32; + description "Index of the sap"; + } + leaf nodeId { + config "false"; + type uint32; + description "Node id of the sap"; + } + } + + grouping mts_QfullSaps-group { + description "MTS Q full saps based on their queue limit"; + container qsap-items { + list QSap-list { + config "false"; + key "sapId"; + + uses mts_QSap-group; + description "Top saps list"; + } + description "Top saps"; + } + } + + grouping mts_QSap-group { + description "Top saps"; + leaf qstate { + config "false"; + type string; + description "Queue state of the sap"; + } + leaf sapId { + config "false"; + type uint32; + description "sap num"; + } + leaf desc { + config "false"; + type string; + description "sap description"; + } + leaf process { + config "false"; + type string; + description "Process owns sap"; + } + leaf timestamp { + config "false"; + type string; + description "Exact time at which this condition happened"; + } + leaf msgCount { + config "false"; + type uint32; + description "Num of messages consumed by the sap"; + } + leaf bytesCount { + config "false"; + type uint32; + description "Num of bytes consumed by the sap"; + } + leaf memUsedInTotalMem { + config "false"; + type uint32; + description "% of memory used from the global mts memory"; + } + leaf memUsedInSapShare { + config "false"; + type uint32; + description "% of memory used from the memory limit assigned to sap"; + } + leaf index { + config "false"; + type uint32; + description "Index of the sap"; + } + leaf nodeId { + config "false"; + type uint32; + description "Node id of the sap"; + } + } + + grouping nat_Entity-group { + description "NAT entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + container inst-items { + + uses nat_Inst-group; + description "NAT instance"; + } + } + + grouping nat_Inst-group { + description "NAT instance"; + + // Holds TCP Time-Out values + leaf tcpTimeout { + + type nat_NatTimeout; + description "NAT tcp timeout values "; + } + + // Holds UDP Time-Out values + leaf udpTimeout { + + type nat_NatTimeout; + description "NAT udp timeout value"; + } + + // Holds ICMP Time-out values + leaf icmpTimeout { + + type nat_NatTimeout; + description "NAT icmp timeout value"; + } + + // Holds DYN Time-out value + leaf timeout { + + type nat_NatTimeout; + description "NAT timeout value"; + } + + // Holds Sampling Timeout value + leaf samplingTimeout { + + type nat_SamplingTimeout; + description "Sampling Timeout value"; + } + + // Holds FINRST Timeout value + leaf finRstTimeout { + + type nat_FinSynTimeout; + description "FIN or RST wait timeout"; + } + + // Holds SYN Timeout value + leaf synTimeout { + + type nat_FinSynTimeout; + description "SYN wait timeout value"; + } + + leaf configError { + config "false"; + + type nat_ConfigErrNat; + default "noerror"; + description "Config error for FIN/RST SYN timers"; + } + + leaf loggingLevel { + + type arp_LoggingLevel; + default "warning"; + description "Logging level information for NAT"; + } + + leaf creationDelay { + + type nat_BatchTimeout; + description "Creation delay timeout for NAT"; + } + + leaf maxTranslation { + + type nat_NatMaxTranslation; + description "NAT max translations"; + } + + leaf allHost { + + type nat_NatMaxTranslationAllHost; + description "NAT max translations all host"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Holds NAT global statistics information + // Ephemeral data + container globalstats-items { + + uses nat_GlobalStats-group; + description "NAT global statistics info"; + } + container dom-items { + list Dom-list { + key "name"; + + uses nat_Dom-group; + description "This Object Holds Per Domain (vrf) Information list"; + } + description "This Object Holds Per Domain (vrf) Information"; + } + container pool-items { + list Pool-list { + key "poolname"; + + uses nat_Pool-group; + description "Pool instance to define pool-addresses list"; + } + description "Pool instance to define pool-addresses"; + } + } + + grouping nat_GlobalStats-group { + description "NAT global statistics info"; + + // Holds max permitted and presently active NAT tranlslation infromation + // Ephemeral data + container nattransstats-items { + + uses nat_NatTransStats-group; + description "Max and present active translation stats"; + } + + // Ephemeral data + container nattransexpiredstats-items { + + uses nat_NatTransExpiredStats-group; + description "Nat translation expired statistics"; + } + + // Ephemeral data + container natpacketstats-items { + + uses nat_NatPacketStats-group; + description "Packets statistics hits/misses,software translation/drops"; + } + + // TCP session statistics + // Ephemeral data + container nattcpstats-items { + + uses nat_NatTcpStats-group; + description " Total TCP session statistics"; + } + + // NAT packet drops statistics + // Ephemeral data + container natpktdrops-items { + + uses nat_NatPktDrops-group; + description "Dynamic nat Address pool usage statistics"; + } + + // NAT address pool statistics + // Ephemeral data + container acl-items { + + // Ephemeral data + list NatAclPooldb-list { + config "false"; + key "aclName"; + + uses nat_NatAclPooldb-group; + description "Dynamic nat address pool usage statistics list"; + } + description "Dynamic nat address pool usage statistics"; + } + + // NAT interface statistics + // Ephemeral data + container natifstats-items { + + uses nat_NatIfStats-group; + description " NAT Inside/outside interfaces stats"; + } + } + + grouping nat_NatTransStats-group { + description "Max and present active translation stats"; + + // Ephemeral data + leaf maxDynTransAllowed { + config "false"; + type uint64; + description "Maximum number of dynamic translation allowed"; + } + + // Ephemeral data + leaf maxPerHostTransAllowed { + config "false"; + type uint64; + description "Maximum number of translation allowed per host IP"; + } + + // Ephemeral data + leaf noOfActiveStatic { + config "false"; + type uint64; + description "Present number of active static translation"; + } + + // Ephemeral data + leaf noOfActiveDyanamic { + config "false"; + type uint64; + description "Present number of active dyanamic translation"; + } + + // Ephemeral data + leaf noOfActiveICMP { + config "false"; + type uint64; + description "Present number of active ICMP translation"; + } + } + + grouping nat_NatTransExpiredStats-group { + description "Nat translation expired statistics"; + + // Ephemeral data + leaf totalNoOfExpiredTranslations { + config "false"; + type uint64; + description "Total number of expired translations"; + } + + // Ephemeral data + leaf noOfSynTimerExpired { + config "false"; + type uint64; + description "No of translations exired due to SYN timer expiry"; + } + + // Ephemeral data + leaf noOfFinRstTimerExpired { + config "false"; + type uint64; + description "No of translations exired due to FIN-RST timer expiry"; + } + + // Ephemeral data + leaf noOfInactiveTimerExpired { + config "false"; + type uint64; + description "No of translations exired due to inactive timer expiry"; + } + } + + grouping nat_NatPacketStats-group { + description "Packets statistics hits/misses,software translation/drops"; + + // Ephemeral data + leaf totalHits { + config "false"; + type uint64; + description "Total number packet hit count"; + } + + // Ephemeral data + leaf hitInToOut { + config "false"; + type uint64; + description "Total number packet hit count in to out flow"; + } + + // Ephemeral data + leaf hitOutToIn { + config "false"; + type uint64; + description "Total number packet hit count out to In flow"; + } + + // Ephemeral data + leaf totalMisses { + config "false"; + type uint64; + description "Total number packet miss count"; + } + + // Ephemeral data + leaf missInToOut { + config "false"; + type uint64; + description "Total number packet miss count in to out flow"; + } + + // Ephemeral data + leaf missOutToIn { + config "false"; + type uint64; + description "Total number packet miss count out to in flow"; + } + + // Ephemeral data + leaf totalSwTranslation { + config "false"; + type uint64; + description "Total number packet software translation"; + } + + // Ephemeral data + leaf swTranslationInToOut { + config "false"; + type uint64; + description "Total number packet software translation in to out flow"; + } + + // Ephemeral data + leaf swTranslationOutToIn { + config "false"; + type uint64; + description "Total number packet software translation out to in flow"; + } + } + + grouping nat_NatTcpStats-group { + description " Total TCP session statistics"; + + // Ephemeral data + leaf tcpEstablished { + config "false"; + type uint64; + description "Total TCP session established"; + } + + // Ephemeral data + leaf tcpClosed { + config "false"; + type uint64; + description "Total TCP session closed"; + } + } + + grouping nat_NatPktDrops-group { + description "Dynamic nat Address pool usage statistics"; + + // Ephemeral data + leaf addrAllocDrops { + config "false"; + type uint64; + description "Address allocation failure drops"; + } + + // Ephemeral data + leaf portAllocDrops { + config "false"; + type uint64; + description "Port allocation failure drops"; + } + + // Ephemeral data + leaf maxLimitDrops { + config "false"; + type uint64; + description "Dynamic translation max limit drops"; + } + + // Ephemeral data + leaf icmpMaxLimitDrops { + config "false"; + type uint64; + description "ICMP Translation max limit drops"; + } + + // Ephemeral data + leaf allowedHostLimitDrops { + config "false"; + type uint64; + description "Allowed host per max limit drops"; + } + + // Ephemeral data + leaf totalSwDrops { + config "false"; + type uint64; + description "Total number packet software drops"; + } + + // Ephemeral data + leaf swDropInToOut { + config "false"; + type uint64; + description "Total number packet software drops in to out flow"; + } + + // Ephemeral data + leaf swDropOutToIn { + config "false"; + type uint64; + description "Total number packet software drops out to in flow"; + } + } + + grouping nat_NatAclPooldb-group { + description "Dynamic nat address pool usage statistics"; + + // nat acl name + // Ephemeral data + leaf aclName { + config "false"; + + type nat_stringtype; + description "Nat ACL name"; + } + + // nat oveload + leaf overload { + config "false"; + + type nat_stringtype; + description "Overload ip address,PAT"; + } + + // nat pool name + // Ephemeral data + leaf poolName { + config "false"; + + type nat_stringtype; + description "Nat pool name"; + } + + // Nat rule type inside/outside + // Ephemeral data + leaf ruleType { + config "false"; + + type nat_stringtype; + description "Inside/outside rule"; + } + + // Ephemeral data + leaf noOfAddrInPool { + config "false"; + type uint64; + description "Total number of Addresses in pool"; + } + + // Ephemeral data + leaf noOfAllocated { + config "false"; + type uint64; + description "Pool address allocated in percentage"; + } + + // Ephemeral data + leaf noOfMissed { + config "false"; + type uint64; + description "Pool address missed in percentage"; + } + + // Ephemeral data + leaf ifOverloadName { + config "false"; + + type nat_stringtype; + description "Interface overloaded"; + } + + // Ephemeral data + leaf ifOverloadAddr { + config "false"; + type address_Ip; + description "Overloaded interface IP address"; + } + + // Ephemeral data + leaf ifOverloadState { + config "false"; + + type nat_stringtype; + description "Interface status"; + } + } + + grouping nat_NatIfStats-group { + description " NAT Inside/outside interfaces stats"; + + // Ephemeral data + leaf noOfInsideInterface { + config "false"; + type uint64; + description "Number of nat inside interface"; + } + + // Ephemeral data + leaf noOfOutsideInterface { + config "false"; + type uint64; + description "Number of nat outside interface"; + } + } + + grouping nat_Dom-group { + description "This Object Holds Per Domain (vrf) Information"; + leaf encap { + config "false"; + type string; + description "Encapsulation"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // NAT Interface config MO + container if-items { + list If-list { + key "id"; + + uses nat_If-group; + description "NAT interface config inside/outside list"; + } + description "NAT interface config inside/outside"; + } + container xlate-items { + list IpNat-list { + key "xlateType"; + + uses nat_IpNat-group; + description "IP NAT instance for config list"; + } + description "IP NAT instance for config"; + } + + // ip nat alias MO + // Ephemeral data + container natalias-items { + + // Ephemeral data + list IpNatAlias-list { + config "false"; + key "ipAddr"; + + uses nat_IpNatAlias-group; + description "Ip nat alias information list"; + } + description "Ip nat alias information"; + } + + // Holds NAT translation information + // Ephemeral data + container proto-items { + + // Ephemeral data + list TranslationDb-list { + config "false"; + key "protocol insideGlobalAddress insideGlobalPort insideLocalAddress insideLocalPort outsideLocalAddress outsideLocalPort outsideGlobalAddress outsideGlobalPort"; + + uses nat_TranslationDb-group; + description "Nat Translation Database list"; + } + description "Nat Translation Database"; + } + } + + grouping nat_If-group { + description "NAT interface config inside/outside"; + + leaf natIf { + + type nat_NatTrafficDir; + description "NAT interface config inside/outside"; + } + + leaf configErrIf { + config "false"; + + type nat_ConfigErrNat; + default "noerror"; + description "Config error in nat interface. "; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping nat_IpNat-group { + description "IP NAT instance for config"; + + // Properties Starts here + leaf xlateType { + + type nat_InterfaceType; + description "Xlate type to define translation"; + } + + // static mo starts here + container protocol-items { + list StaticNat-list { + key "protocol localIp localPort globalIp globalPort"; + + uses nat_StaticNat-group; + description "Static NAT config mo list"; + } + description "Static NAT config mo"; + } + + // dynamicnat mo starts here + container list-items { + list DynamicNat-list { + key "aclName"; + + uses nat_DynamicNat-group; + description "Dynamic NAT MO for config list"; + } + description "Dynamic NAT MO for config"; + } + } + + grouping nat_StaticNat-group { + description "Static NAT config mo"; + + leaf protocol { + + type nat_ProtocolType; + description "Specifies tcp/udp/any protocol"; + } + leaf localIp { + type address_Ip; + description "Local ip address of a network"; + } + leaf globalIp { + type address_Ip; + description "Global ip address of a network"; + } + + leaf localPort { + + type nat_port; + description "Port number for localip "; + } + + leaf globalPort { + + type nat_port; + description "Port number for global ip"; + } + + leaf noAlias { + + type nat_booltype; + description "no-alias flag disables addition of alias"; + } + + leaf configErrStaticNat { + config "false"; + + type nat_ConfigErrNat; + default "noerror"; + description "Config error in static nat."; + } + + leaf groupId { + + type nat_twicenatgroup; + description "Group id for Twice-Nat"; + } + + leaf dynamic { + + type nat_booltype; + description "Dynamic flag for Twice-Nat"; + } + + leaf matchInVrf { + + type nat_booltype; + description "Match in vrf, flag used in vrf-aware Nat"; + } + + leaf addRoute { + + type nat_booltype; + description "Adds route for translations"; + } + } + + grouping nat_DynamicNat-group { + description "Dynamic NAT MO for config"; + + leaf aclName { + + type nat_stringtype; + description "To define ACL allowing set of addresses Property has READ-Create access."; + } + + leaf interface { + + type nw_IfId; + description "Interface name for overload case"; + } + + leaf poolName { + + type nat_NatPoolname; + description "Defines set of address-range"; + } + + leaf overload { + + type nat_booltype; + description "Allows usage of same ip , with different port numbers"; + } + + leaf configErrDynamicNat { + config "false"; + + type nat_ConfigErrNat; + default "noerror"; + description "Config error in Dynamic nat"; + } + + leaf groupId { + + type nat_twicenatgroup; + description "Group id for Twice-Nat"; + } + + leaf dynamic { + + type nat_booltype; + description "Dynamic flag for Twice-Nat"; + } + + leaf matchInVrf { + + type nat_booltype; + description "Match in vrf, flag used in vrf-aware Nat"; + } + + leaf addRoute { + + type nat_booltype; + description "Adds route for translations"; + } + } + + grouping nat_IpNatAlias-group { + description "Ip nat alias information"; + + // Ephemeral data + leaf ipAddr { + config "false"; + type address_Ip; + description "Nat alias ip address"; + } + + // Ephemeral data + leaf interfaceName { + config "false"; + type string; + description "Nat alias interface name"; + } + } + + grouping nat_TranslationDb-group { + description "Nat Translation Database"; + + // Ephemeral data + leaf protocol { + config "false"; + type string; + description "Protocol , tcp/udp/any"; + } + + // Ephemeral data + leaf insideGlobalAddress { + config "false"; + type address_Ip; + description "Inside global address"; + } + + // Ephemeral data + leaf insideGlobalPort { + config "false"; + type uint32; + description "Inside global port"; + } + + // Ephemeral data + leaf insideLocalAddress { + config "false"; + type address_Ip; + description "Inside local address"; + } + + // Ephemeral data + leaf insideLocalPort { + config "false"; + type uint32; + description "Inside local port"; + } + + // Ephemeral data + leaf outsideLocalAddress { + config "false"; + type address_Ip; + description "Outside local address"; + } + + // Ephemeral data + leaf outsideLocalPort { + config "false"; + type uint32; + description "Outside local port"; + } + + // Ephemeral data + leaf outsideGlobalAddress { + config "false"; + type address_Ip; + description "Outside global address"; + } + + // Ephemeral data + leaf outsideGlobalPort { + config "false"; + type uint32; + description "Outside global port"; + } + + // Ephemeral data + leaf groupId { + config "false"; + type uint32; + description "Group ID for Twice-Nat"; + } + + // Ephemeral data + leaf entryId { + config "false"; + type uint32; + description "Entry ID to identify unique translation."; + } + + // Ephemeral data + leaf inStats { + config "false"; + type uint32; + description "In statistics count"; + } + + // Ephemeral data + leaf outStats { + config "false"; + type uint32; + description "Out statistics count"; + } + + // Ephemeral data + leaf timeLeft { + config "false"; + + type nat_NatTimeLeft; + description "Inactive time left"; + } + + // Ephemeral data + leaf synTimer { + config "false"; + + type nat_NatTimeLeft; + description "TCP syn timer left"; + } + + // Ephemeral data + leaf finTimer { + config "false"; + + type nat_NatTimeLeft; + description "TCP fin timer left"; + } + } + + grouping nat_Pool-group { + description "Pool instance to define pool-addresses"; + + // Properties Starts here + leaf poolname { + + type nat_NatPoolname; + description + "Defines set of address + "; + } + leaf mask { + type address_Ip; + description "NAT netmask for pool-range "; + } + + leaf prefixlen { + + type nat_NatPrefixType; + description "NAT prefix len for pool-range"; + } + + leaf noalias { + + type nat_booltype; + description "no-alias flag disables addition of alias"; + } + container startip-items { + list PoolAddress-list { + key "startip endip"; + + uses nat_PoolAddress-group; + description "NAT pool address instance list"; + } + description "NAT pool address instance"; + } + } + + grouping nat_PoolAddress-group { + description "NAT pool address instance"; + leaf startip { + type address_Ip; + description "NAT start ip address for pool-range"; + } + leaf endip { + type address_Ip; + description "NAT end ip address for pool-range"; + } + + leaf configErr { + config "false"; + + type nat_ConfigErrNat; + default "noerror"; + description "Config error pool address"; + } + + leaf poolAddrDeleted { + config "false"; + + type nat_booltype; + description "Pool address deleted"; + } + } + + grouping ospf_Entity-group { + description "Holds OSPF control plane entity information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per OSPF instance information + container inst-items { + list Inst-list { + key "name"; + + uses ospf_Inst-group; + description "This object holds per OSPF instance information list"; + } + description "This object holds per OSPF instance information"; + } + } + + grouping ospf_Inst-group { + description "This object holds per OSPF instance information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern "[A-Za-z0-9_][A-Za-z0-9_-]{0,19}"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + // Default value handled in local MO type + leaf ctrl { + + // Type is a Local-MO-Defined-Type + type nw_InstCtrl_Inst_ctrl; + description "Holds OSPF instance controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // Memory alert level + leaf memAlert { + config "false"; + + type nw_MemAlertLevel; + description "Specifies the memory alert level"; + } + + // This objects hold per OSPF domain (vrf) information + container dom-items { + list Dom-list { + key "name"; + + uses ospf_Dom-group; + description "This object holds per OSPF VRF information list"; + } + description "This object holds per OSPF VRF information"; + } + + // This object holds the size of the Logfiles for + // various types of OSPF events + container evtlogs-items { + list EventLogs-list { + key "eventType"; + + uses ospf_EventLogs-group; + description "Object holding the size of the Logfiles for various types of OSPF events list"; + } + description "Object holding the size of the Logfiles for various types of OSPF events "; + } + + // This object holds per domain mpls te information + container mpls-items { + + uses ospf_Mpls-group; + description "OSPF support information for MPLS TE and LDP per Instance"; + } + } + + grouping ospf_Dom-group { + description "This object holds per OSPF VRF information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern "[A-Za-z0-9!@#$\\^\\*=\\+\\{\\}\\.;:_-]{1,32}"; + } + description "This object holds name information"; + } + + // Router id for this domain, if this is not specified + // the router-id is automatically picked up based on the + // first interface that comes up in that domain + leaf rtrId { + + type ip_RtrId; + description "Router identifier for this domain"; + } + + // Dom controls + leaf ctrl { + + type ospf_DomControl; + description "Holds the controls bfd, name-lookup, default-passive and Segment Routing"; + } + leaf defRtNssaPbitClear { + type boolean; + description + "Override RFC 3101 behaviour and add default route on ABR + even if P-bit is clear in received type-7 default route LSA"; + } + + // Admin state + leaf adminSt { + + type nw_AdminSt; + description "Holds the administrative state of domain"; + } + + // Administrative distance preference + leaf dist { + + type ospf_Dist; + description "Administrative distance preference"; + } + + // MAX ECMP + leaf maxEcmp { + + type ospf_Ecmp; + description "Maximum Equal Cost Multi Path(ECMP)"; + } + + // Bandwidth Reference value. If bwRefUnit is mbps, then the + // range is 1 to 4000000 and if bwRefUnit is gbps, then the + // range is 1 to 4000 + leaf bwRef { + + type ospf_BwRef; + description + "Bandwidth reference value, holds the range from 1-4000000 if unit is mbps + and holds range from 1-4000 if unit is gbps"; + } + + // Bandwidth Reference Unit + leaf bwRefUnit { + + type ospf_BwRefUnit; + description "Bandwidth reference unit (Mbps or Gbps)"; + } + + // Default Metric for redistributed routes + leaf defMetric { + + type ospf_Metric; + description "Default metric cost for redistributed routes"; + } + leaf rfc1583Compat { + type boolean; + description "RFC 1583 compatibility for external path preferences"; + } + leaf rfc1583CompatIos { + type boolean; + description "RFC 1583 compatibility to IOS for external path preferences"; + } + + // Adjacency change logging level + leaf adjChangeLogLevel { + + type ospf_AdjChangeLogLevel; + description "Adjacency change logging level"; + } + + // L3VM Operational state + leaf operSt { + config "false"; + + type ospf_OperSt; + description "Operational state of Layer 3 virtualization related commands(l3vm)"; + } + + // Operational Router id for this dom, if it is not specified + // the router-id is automatically picked up based on the + // first interface that comes up in that domain + leaf operRtrId { + config "false"; + + type ip_RtrId; + description "Operational router identifier for this domain"; + } + + // Operational SRGB minimum label + leaf operSrgbStart { + config "false"; + + type ulib_LabelVal; + description "Operational Segment Routing Global Block(SRGB) start index for OSPF"; + } + + // Operational SRGB maximum label + leaf operSrgbEnd { + config "false"; + + type ulib_LabelVal; + description "Operational Segment Routing Global Block(SRGB) end index for OSPF"; + } + + // Operational State of Segment Routing MPLS in OSPF Dom/VRF + leaf operStSgmntRtgMpls { + config "false"; + + type ospf_SgmntRtgMplsOperSt; + description "Operational state of Segment Routing MPLS in OSPF VRF which is Enable/Disable"; + } + + // Discard Route Bits + leaf discardRoute { + + type ospf_DiscardRoute; + description "Control bits for discard-route external and internal"; + } + leaf downbitIgnore { + type boolean; + description "Holds the status of Down-bit ignore"; + } + + // Capability vrf-lite + leaf capVrfLite { + + type ospf_VrfLiteControl; + description "Capability vrf-lite for L3VPN or Ethernet VPN "; + } + + // This object holds OSPF information that is operated at a + // interface level + container area-items { + list Area-list { + key "id"; + + uses ospf_Area-group; + description "This object holds OSPF area properties information list"; + } + description "This object holds OSPF area properties information"; + } + + // OSPF databases + container db-items { + list Db-list { + config "false"; + key "type"; + + uses ospf_Db-group; + description "This object holds OSPF link state databases (LSDB) list"; + } + description "This object holds OSPF link state databases (LSDB)"; + } + + // This object holds spf computation frequency controls, none + // of these need to be exposed to the user + container spfcomp-items { + + uses ospf_SpfComp-group; + description "Shortest Path First(SPF) computation frequency controls"; + } + + // This object holds lsa related frequency controls, none of + // these need to be exposed to the user + container lsactrl-items { + + uses ospf_LsaCtrl-group; + description "Link State Advertisement(LSA) related frequency controls"; + } + + // This object holds L3VPN OSPF Primary domain and domain-tag info + container l3vpndomainpri-items { + + uses ospf_L3vpnDomainPrimary-group; + description "This object holds L3VPN OSPF Primary domain and domain-tag info"; + } + + // This object holds L3VPN OSPF Secondary domain info + container l3vpndomainsec-items { + list L3vpnDomainSecondary-list { + key "domainType domainId"; + + uses ospf_L3vpnDomainSecondary-group; + description "This object holds L3VPN OSPF Secondary domain info list"; + } + description "This object holds L3VPN OSPF Secondary domain info"; + } + + // This object holds the OSPF VRF related statistics + container domstats-items { + + uses ospf_DomStats-group; + description "This object holds the OSPF VRF related statistics"; + } + + // This object holds per OSPF VRF graceful restart information + container gr-items { + + uses ospf_Gr-group; + description "Object holding per OSPF VRF graceful restart information"; + } + + // This object holds OSPF information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses ospf_If-group; + description "Object holds OSPF information that is operated at interface level list"; + } + description "Object holds OSPF information that is operated at interface level"; + } + + // This object holds per domain max-lsa information + container maxlsap-items { + + uses ospf_MaxLsaP-group; + description "Max-LSA(Link State Advertisement) Database overflow for each domain or VRF"; + } + + // This object holds per domain max-lsa information + container maxmetriclsap-items { + + uses ospf_MaxMetricLsaP-group; + description "Max-Metric Link State Advertisement information per Domain/VRF"; + } + + // This objects holds default route leak policy, + // this is not needed for FCS in our solution + container defrtleak-items { + + uses ospf_DefRtLeakP-group; + description "Default Route leak or the distribution policy"; + } + + // Inter protocol route leak policy. This defines distribution + // of routes from other protocols to ospf + container interleak-items { + list InterLeakP-list { + key "proto inst asn"; + + uses ospf_InterLeakP-group; + description "This defines distribution of routes from other protocols to OSPF list"; + } + description "This defines distribution of routes from other protocols to OSPF"; + } + + // Leak controls related to the number of routes leaked + container leakctrl-items { + + uses ospf_LeakCtrlP-group; + description "Leak controls related to the number of routes leaked"; + } + + container ribleak-items { + + uses ospf_RibLeakP-group; + description "OSPF to Route Information Base(RIB) Route Leak/distribution Policy Per Domain or VRF"; + } + + // External route summarization is specific to external + // routes that are injected into OSPF using route leak. + // Configure external route summarization on ASBRs that + // are leaking routes into OSPF + container extrtsum-items { + list ExtRtSum-list { + key "addr"; + + uses ospf_ExtRtSum-group; + description "External Route Summarization on ASBRs that are Leaking Routes into OSPF list"; + } + description "External Route Summarization on ASBRs that are Leaking Routes into OSPF"; + } + + // This object holds the OSPF traffic related information + container trstats-items { + + uses ospf_TrafficStats-group; + description "This object holds the OSPF traffic related information"; + } + } + + grouping ospf_Area-group { + description "This object holds OSPF area properties information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Area id + leaf id { + + type ospf_AreaId; + description "Area identifier to which a network or interface belongs"; + } + + // Area type (stub | nssa | backbone, etc) + leaf type { + + type ospf_AreaT; + description "Area types can be stub, nssa, backbone etc."; + } + + // Area controls + leaf ctrl { + + type ospf_AreaControl; + description "Area controls can be ABRs originate summary LSAs into other areas, redistributed LSAs or suppress forwarding address"; + } + + // Area cost, specifies cost for default summary LSAs. + // Used with nssa/stub area types. Not applicable in + // our fabric solution + leaf cost { + + type ospf_AreaCost; + description "Area cost, specifies cost for default summary LSAs, Used with nssa/stub area types"; + } + + // Segment Routing control + leaf sgmntRtgMpls { + + type ospf_SegRtControl; + description "Segment routing mpls control"; + } + + // NSSA translator role + leaf nssaTransRole { + + type ospf_NssaTransRole; + description "Not-so-stubby area(NSSA) translator role"; + } + + // Border router count + leaf brCnt { + config "false"; + + type ospf_BrCnt; + description "Area border router count"; + } + + // AS Border router count + leaf asbrCnt { + config "false"; + + type ospf_AsbrCnt; + description "Autonomous system border router count"; + } + + // LSA checksum sum + leaf lsaCksumSum { + config "false"; + + type ospf_LsaCksumSum; + description "Link-state advertisement(LSA) checksum sum"; + } + + // NSSA translator state + leaf nssaTransSt { + config "false"; + + type ospf_NssaTransSt; + description "Not-so-stubby area (NSSA) translator state"; + } + + // NSSA translator stability interval + leaf nssaTransStabIntvl { + config "false"; + + type ospf_NssaTransStabIntvl; + description "Not-so-stubby area (NSSA) translator stability interval"; + } + + // Operational State of Segment Routing MPLS in OSPF Area + leaf operStSgmntRtgMpls { + config "false"; + + type ospf_SgmntRtgMplsOperSt; + description "Segment routing MPLS operational state in OSPF area which is Enable/Disable"; + } + + // Authentication type + leaf authType { + + type ospf_AuthT; + description "Authentication type can be simple, none or md5"; + } + + // This object holds the OSPF area related statistics + container areastats-items { + + uses ospf_AreaStats-group; + description "Object holding the OSPF area related statistics"; + } + + // OSPF databases + container db-items { + list Db-list { + config "false"; + key "type"; + + uses ospf_Db-group; + description "This object holds OSPF link state databases (LSDB) list"; + } + description "This object holds OSPF link state databases (LSDB)"; + } + + // This object holds OSPF information about OSPF virtual + // links + container vlink-items { + list VLink-list { + key "nbrRtrId"; + + uses ospf_VLink-group; + description "This object holds information about OSPF virtual links list"; + } + description "This object holds information about OSPF virtual links"; + } + + // This object holds OSPF information about OSPF sham + // links + container slink-items { + list SLink-list { + key "srcAddr dstAddr"; + + uses ospf_SLink-group; + description "This object holds information about OSPF sham links list"; + } + description "This object holds information about OSPF sham links"; + } + container slinksrc-items { + list SlinkNew-list { + key "srcAddr dstAddr"; + + uses ospf_SlinkNew-group; + description "This object holds information about OSPF sham links list"; + } + description "This object holds information about OSPF sham links"; + } + + // Lsa Leak concrete class. + container lsaleakp-items { + + uses ospf_LsaLeakP-group; + description "Thi object holds link-state advertisement(LSA) leak policies"; + } + + // Lsa Leak Control concrete class. + container lsaleakctrlp-items { + list LsaLeakCtrlP-list { + key "dir"; + + uses ospf_LsaLeakCtrlP-group; + description "This object holds link-state advertisement(LSA) leak control policies list"; + } + description "This object holds link-state advertisement(LSA) leak control policies"; + } + + // This objects holds default route leak policy, + // this is not needed for FCS in our solution + container defrtleak-items { + + uses ospf_DefRtLeakP-group; + description "Default Route leak or the distribution policy"; + } + + // Inter-area route summarization. This is configured + // on ABRs, summarizing routes between areas in the + // autonomous system + container iartsum-items { + list InterAreaRtSum-list { + key "addr"; + + uses ospf_InterAreaRtSum-group; + description "Inter-area Route Summarization on ABRs, summarizing routes between areas in the autonomous system list"; + } + description "Inter-area Route Summarization on ABRs, summarizing routes between areas in the autonomous system"; + } + } + + grouping ospf_AreaStats-group { + description "Object holding the OSPF area related statistics"; + leaf areaCreatedTs { + config "false"; + type union { + type string; + type uint64; + } + description "Timestamp of the area created"; + } + + // Number of SPF runs + leaf spfRuns { + config "false"; + + type ospf_Counter32; + description "Number of Shortest Path First (SPF) runs"; + } + + // LSA count + leaf lsaCnt { + config "false"; + + type ospf_Counter32; + description "Count of link-state advertisements(LSA)"; + } + leaf lastSpfDuration { + config "false"; + type uint32; + description "Duration of last Shortest Path First (SPF)"; + } + + // Total number of interfaces + leaf ifCnt { + config "false"; + + type ospf_Counter32; + description "Total number of interfaces"; + } + + // Number of active interfaces + leaf activeIfCnt { + config "false"; + + type ospf_Counter32; + description "Number of active interfaces"; + } + + // Number of passive interfaces + leaf passiveIfCnt { + config "false"; + + type ospf_Counter32; + description "Number of passive interfaces"; + } + + // Number of loopback interfaces + leaf lpbkIfCnt { + config "false"; + + type ospf_Counter32; + description "Number of loopback interfaces"; + } + + // Number of adjacency + leaf adjCnt { + config "false"; + + type ospf_Counter32; + description "Number of adjacencies formed"; + } + + // Number of peers in hitless helper mode + leaf grHelperPeerCnt { + config "false"; + + type ospf_Counter32; + description "Gracefull restart helper peer count"; + } + } + + grouping ospf_Db-group { + description "This object holds OSPF link state databases (LSDB)"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type of the repository + leaf type { + config "false"; + + type ospf_DbT; + description "Type of database repository"; + } + + // LSA records + container lsa-items { + list LsaRec-list { + config "false"; + key "type id advRtr"; + + uses ospf_LsaRec-group; + description "This object holds Link-state advertisement (LSA) database definitions list"; + } + description "This object holds Link-state advertisement (LSA) database definitions"; + } + + // This object holds the OSPF route information + container rt-items { + list Route-list { + config "false"; + key "pfx"; + + uses ospf_Route-group; + description "Open Shortest Path First (OSPF) Route information list"; + } + description "Open Shortest Path First (OSPF) Route information"; + } + } + + grouping ospf_LsaRec-group { + description "This object holds Link-state advertisement (LSA) database definitions"; + + // Lsa type + leaf type { + config "false"; + + type ospf_LsaT; + description "Holds Link-state advertisement (LSA) type"; + } + + // Lsa id + leaf id { + config "false"; + + type ospf_LsaId; + description "Holds Link-state advertisement (LSA) Id"; + } + + // Router id + leaf advRtr { + config "false"; + + type ospf_LsaAdvRtr; + description "Link-state advertisement (LSA) advertising router"; + } + + // Sequence number + leaf seq { + config "false"; + + type ospf_LsaSeq; + description "Holds Link-state advertisement (LSA) sequence number"; + } + + // Age + leaf age { + config "false"; + + type ospf_LsaAge; + description "Holds the age of Link-state advertisement (LSA)"; + } + leaf arrivalTs { + config "false"; + type union { + type string; + type uint64; + } + description "Holds the arrival timestamp of LSA"; + } + + // Checksum + leaf cksum { + config "false"; + + type ospf_LsaCksum; + description "Link-state advertisement (LSA) checksum "; + } + + // Advertisement + leaf advert { + config "false"; + + type ospf_LsaAdvert; + description "Link-state advertisement (LSA) Advertisement"; + } + + // Router Information (RI) LSA records + container ri-items { + + uses ospf_RiLsaRec-group; + description "Router Information LSA Record"; + } + + // Extended Prefix LSA records + container epl-items { + list ExtPfxRec-list { + config "false"; + key "ipPfx"; + + uses ospf_ExtPfxRec-group; + description "Extended Prefix LSA Record list"; + } + description "Extended Prefix LSA Record"; + } + + // Extended Link TLV records + container ell-items { + + uses ospf_ExtLinkRec-group; + description "Extended Link LSA Record"; + } + } + + grouping ospf_RiLsaRec-group { + description "Router Information LSA Record"; + + // Graceful Restart Capability + leaf grRestartCap { + config "false"; + + type ospf_CapFlag; + description "Graceful Restart Capability Flag"; + } + + // Graceful Restart Helper Capability + leaf grRestartHelperCap { + config "false"; + + type ospf_CapFlag; + description "Graceful Restart Helper Capability Flag"; + } + + // Stub Router Support Capability + leaf stubRouterCap { + config "false"; + + type ospf_CapFlag; + description "Stub Router Support Capability Flag"; + } + + // Traffic Engineering Support Capability + leaf teCap { + config "false"; + + type ospf_CapFlag; + description "Traffic Engineering Support Capability Flag"; + } + + // Point to Point over LAN Support Capability + leaf p2pOverLanCap { + config "false"; + + type ospf_CapFlag; + description "Point to Point over LAN Support Capability Flag"; + } + + // Experimental Traffic Engineering Support Capability + leaf expTeCap { + config "false"; + + type ospf_CapFlag; + description "Experimental Traffic Engineering Support Capability Flag"; + } + leaf sgmntRtgGlobalRange { + config "false"; + type uint32; + description "Segment Routing Global Block Range"; + } + leaf sgmntRtgGlobalRangeStart { + config "false"; + type uint32; + description "Segment Routing Global Block Range Start Label"; + } + leaf sgmntRtgLocalRange { + config "false"; + type uint32; + description "Segment Routing Local Block Range"; + } + leaf sgmntRtgLocalRangeStart { + config "false"; + type uint32; + description "Segment Routing Local Block Range Start Label"; + } + } + + grouping ospf_ExtPfxRec-group { + description "Extended Prefix LSA Record"; + leaf ipPfx { + config "false"; + type address_Ip; + description "ip address with mask"; + } + leaf addressFamily { + config "false"; + type uint16; + description "Extended Prefix Address Family - Ipvx"; + } + + // Extended Prefix Route Type, Intra, Inter, External, NSSA + leaf routeType { + config "false"; + + type ospf_PathT; + description "Extended Prefix Route Type, Intra, Inter, External, NSSA"; + } + + // Extended Prefix Flags + leaf pfxFlags { + config "false"; + + type ospf_PfxFlags; + description "Extended Prefix Flags, Attach/Node Flag as in rfc7684"; + } + + // Segment Routing Prefix SID TLV record + container sid-items { + list SgmntRtgPfxSidRec-list { + config "false"; + key "sgmntRtgAlgo"; + + uses ospf_SgmntRtgPfxSidRec-group; + description "Segment Routing Prefix SID TLV Record list"; + } + description "Segment Routing Prefix SID TLV Record"; + } + } + + grouping ospf_SgmntRtgPfxSidRec-group { + description "Segment Routing Prefix SID TLV Record"; + + // Segment Routing MPLS Prefix Sid Flags + leaf sgmntRtgPfxSidFlags { + config "false"; + + type ospf_PfxSidFlags; + description "Segment Routing MPLS Prefix Sid Flags, NP/M/E/V/L"; + } + leaf sgmntRtgMtid { + config "false"; + type uint16; + description "Segment Routing MPLS Multi-Topology ID (as defined in RFC4915)"; + } + leaf sgmntRtgAlgo { + config "false"; + type uint16; + description "Segment Routing Algorithm Type"; + } + leaf sgmntRtgAlgoName { + config "false"; + type string; + description "Segment Routing Algorithm Name ; Name if it's a supported else Unsupported"; + } + + // Segment Routing MPLS SID/Index/Label + leaf sgmntRtgPfxSid { + config "false"; + + type ospf_SidIndex; + description "Segment Routing MPLS SID/Index/Label based on Flag"; + } + } + + grouping ospf_ExtLinkRec-group { + description "Extended Link LSA Record"; + + // Extended Link TLV, Link Type + leaf linkType { + config "false"; + + type ospf_NwT; + description "OSPFv2 Link type as per rfc7684"; + } + leaf linkId { + config "false"; + type address_Ip; + description "OSPFv2 Link ID as per rfc7684"; + } + leaf linkData { + config "false"; + type address_Ip; + description "OSPFv2 Link Data as per rfc7684"; + } + + // Segment Routing Adjacency SID TLV record + container sid-items { + list SgmntRtgAdjSidRec-list { + config "false"; + key "sgmntRtgAdjSidLabel"; + + uses ospf_SgmntRtgAdjSidRec-group; + description "Segment Routing Adjacency SID TLV Record list"; + } + description "Segment Routing Adjacency SID TLV Record"; + } + } + + grouping ospf_SgmntRtgAdjSidRec-group { + description "Segment Routing Adjacency SID TLV Record"; + + // Segment Routing Adjacency SID Type + leaf adjSidTlvType { + config "false"; + + type ospf_AdjSidTlvType; + description "Segment Routing Adjacency SID TLV type"; + } + leaf sgmntRtgMtid { + config "false"; + type uint16; + description "Segment Routing MPLS Multi-Topology ID (as defined in RFC4915)"; + } + leaf sgmntRtgWeight { + config "false"; + type uint16; + description "Segment Routing MPLS Multi-Topology ID (as defined in RFC4915)"; + } + + // Segment Routing Adjacency SID TLV Flags + leaf sgmntRtgAdjSidFlags { + config "false"; + + type ospf_AdjSidFlags; + description "Segment Routing Adjacency SID TLV Flags"; + } + leaf sgmntRtgAdjSidNbrId { + config "false"; + type address_Ip; + description "Segment Routing Adjacency SID TLV Neighbor ID"; + } + + // Segment Routing Adjacency SID TLV SID/Index/Label + leaf sgmntRtgAdjSidLabel { + config "false"; + + type ospf_AdjSidLabel; + description "Segment Routing Adjacency SID TLV SID/Index/Label"; + } + } + + grouping ospf_Route-group { + description "Open Shortest Path First (OSPF) Route information"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf pfx { + config "false"; + type address_Ip; + description "Specifies the prefix IP address"; + } + + // Path type + leaf pathT { + config "false"; + + type ospf_PathT; + description "Specifies the path type of route"; + } + + // Area id + leaf area { + config "false"; + + type ospf_AreaId; + description "Specifies the Area identifier (ID)"; + } + + // Flags + leaf flags { + config "false"; + + type ospf_RtFlags; + description "Specifies the route flags"; + } + + // Unicast cost + leaf ucastCost { + config "false"; + + type ospf_RtCost; + description "Holds the unicast route cost"; + } + + // Multicast cost + leaf mcastCost { + config "false"; + + type ospf_RtCost; + description "Holds the multicast route cost"; + } + + // Route Tag + leaf tag { + config "false"; + + type ospf_RtTag; + description "Specifies the route tag information"; + } + + // Administrative distance preference + leaf dist { + config "false"; + + type ospf_Dist; + description "Administrative distance preference"; + } + + // MPLS Segment ID + leaf sgmntRtgMplsSid { + config "false"; + + type ospf_SgmntRtgMplsLabel; + description "Segment routing MPLS segment ID"; + } + + // Segment Routing MPLS in-label + leaf sgmntRtgMplsInLabel { + config "false"; + + type ospf_SgmntRtgMplsLabel; + description "Segment Routing MPLS in-label"; + } + + // Unicast nexthop + container ucnh-items { + list UcNexthop-list { + config "false"; + key "if addr"; + + uses ospf_UcNexthop-group; + description "Open Shortest Path First (OSPF) Unicast nexthop information list"; + } + description "Open Shortest Path First (OSPF) Unicast nexthop information"; + } + + // Multicast nexthop + container mcnh-items { + list McNexthop-list { + config "false"; + key "if addr"; + + uses ospf_McNexthop-group; + description "Holds OSPF Multicast nexthop information list"; + } + description "Holds OSPF Multicast nexthop information"; + } + } + + grouping ospf_UcNexthop-group { + description "Open Shortest Path First (OSPF) Unicast nexthop information"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Nexhop interface + leaf if { + config "false"; + + type nw_IfId; + description "Specifies the nexhop interface"; + } + leaf addr { + config "false"; + type address_Ip; + description "Specifies the nexhop interface IP address"; + } + + // Flags + leaf flags { + config "false"; + + type ospf_NhFlags; + description "Specifies nexhop interface flags"; + } + + // Segment Routing MPLS out-label + leaf sgmntRtgMplsOutLabel { + config "false"; + + type ospf_SgmntRtgMplsLabel; + description "Segment-routing Multiprotocol Label Switching(MPLS) out-label"; + } + } + + grouping ospf_McNexthop-group { + description "Holds OSPF Multicast nexthop information"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Nexhop interface + leaf if { + config "false"; + + type nw_IfId; + description "Specifies the nexhop interface"; + } + leaf addr { + config "false"; + type address_Ip; + description "Specifies the nexhop interface IP address"; + } + + // Flags + leaf flags { + config "false"; + + type ospf_NhFlags; + description "Specifies nexhop interface flags"; + } + + // Segment Routing MPLS out-label + leaf sgmntRtgMplsOutLabel { + config "false"; + + type ospf_SgmntRtgMplsLabel; + description "Segment-routing Multiprotocol Label Switching(MPLS) out-label"; + } + } + + grouping ospf_VLink-group { + description "This object holds information about OSPF virtual links"; + + // Router id associated with virtual link neighbor + leaf nbrRtrId { + + type ip_RtrId; + description "Router id associated with virtual link neighbor"; + } + + // Hello interval, interval between hello packets that + // OSPF sends on the interface + leaf helloIntvl { + + type ospf_HelloIntvl; + description "Hello interval, interval between hello packets that OSPF sends on the interface"; + } + + // Dead interval, interval during which at least one + // hello packet must be received from a neighbor before + // the router declares that neighbor as down + leaf deadIntvl { + + type ospf_DeadIntvl; + description "Dead interval, interval after which router declares that neighbor as down"; + } + + // Retransmit interval, time between LSA retransmissions. + // When a router sends an LSA to its neighbor, it keeps + // the LSA until it receives an acknowledgement from the + // neighbor. If the router receives no acknowldegement + // within the retransmit interval, the local router + // resends the LSA + leaf rexmitIntvl { + + type ospf_RexmitIntvl; + description "Retransmit interval, time between LSA retransmissions"; + } + + // Transmit delay, estimated time needed to send an LSA + // update packet + leaf xmitDelay { + + type ospf_XmitDelay; + description "Transmit delay, estimated time needed to send an LSA update packet"; + } + + // This object holds OSPF neighbor information + container adj-items { + list AdjEp-list { + config "false"; + key "id"; + + uses ospf_AdjEp-group; + description "This object holds OSPF adjacency information list"; + } + description "This object holds OSPF adjacency information"; + } + + // This object holds authentication new policy information + container authnew-items { + + uses ospf_AuthNewP-group; + description "This object holds authentication new policy information"; + } + } + + grouping ospf_AdjEp-group { + description "This object holds OSPF adjacency information"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Neighbor's router id + leaf id { + config "false"; + + type ospf_AdjId; + description "OSPF adjacency neighbor's router id"; + } + + // Neighbor's interface id + leaf ifId { + config "false"; + + type ospf_AdjIfId; + description "Neighbor's interface id"; + } + + // Adjacency state + leaf operSt { + config "false"; + + type ospf_AdjOperSt; + description "Operational state of OSPF adjacency"; + } + + // BFD state + leaf bfdSt { + config "false"; + + type ospf_BfdOperSt; + description "Operational Bidirectional Forwarding Detection(BFD) State"; + } + + // Area id + leaf area { + config "false"; + + type ospf_AreaId; + description "OSPF adjacency operational area ID"; + } + + // Neighbor priority + leaf prio { + config "false"; + + type ospf_DesigPrio; + description "Operational neighbor priority"; + } + + // Designated router address + leaf dr { + config "false"; + + type ospf_DesigAddr; + description "Designated router address(DR)"; + } + + // Backup designated router address + leaf bdr { + config "false"; + + type ospf_DesigAddr; + description "Backup designated router address(BDR)"; + } + leaf peerIp { + config "false"; + type address_Ip; + description "Adjacency peer IP address"; + } + + // Peer options from hello packet + leaf helloOptions { + config "false"; + + type ospf_Options; + description "Peer options from hello packet"; + } + + // Peer options from DBD packet + leaf dbdOptions { + config "false"; + + type ospf_Options; + description "Peer options from database descriptor(DBD) packet"; + } + + // Flags + leaf flags { + config "false"; + + type ospf_AdjFlags; + description "Adjacency flags can be master-self,all-dbds-sent,all-dbds-acked and peer-gr-helper"; + } + leaf peerName { + config "false"; + type string; + description "OSPf adjacency Neighbor name"; + } + + // Segment Routing Adjacency sid label + leaf sgmntRtgMplsAdjSidLabel { + config "false"; + + type ospf_AdjSidLabel; + description "Segment routing adjacency label absolute value"; + } + + // Segment Routing Adjacency sid flags + leaf sgmntRtgMplsAdjSidFlags { + config "false"; + + type ospf_AdjSidFlags; + description "Segment routing adjacency sid flags"; + } + + // This object holds the OSPF neighbor related statistics + container adjstats-items { + + uses ospf_AdjStats-group; + description "Object holds OSPF neighbor adjacency related statistics"; + } + + // This object holds OSPF graceful restart operational + // information + container gr-items { + + uses ospf_GrSt-group; + description "Object holds OSPF Graceful Restart operational Information"; + } + } + + grouping ospf_AdjStats-group { + description "Object holds OSPF neighbor adjacency related statistics"; + + // State change count + leaf stChgCnt { + config "false"; + + type ospf_Counter32; + description "Number of states changed during OSPF adjacency"; + } + leaf lastStChgTs { + config "false"; + type union { + type string; + type uint64; + } + description "Timestamp of the latest state change"; + } + leaf lastNonHelloPktTs { + config "false"; + type union { + type string; + type uint64; + } + description "Timestamp of the last non hello packet received"; + } + + // DBD Sequence number + leaf dbdSeqNum { + config "false"; + + type ospf_Counter32; + description "Database descriptor(DBD) sequence number"; + } + + // Number of LSAs on request list + leaf reqLsaCnt { + config "false"; + + type ospf_Counter32; + description "Number of link-state advertisement(LSAs) on request list"; + } + + // Outstanding LSAs from last request + leaf outstandingLsaCnt { + config "false"; + + type ospf_Counter32; + description "Number of outstanding LSAs from last request"; + } + + // Number of retransmissions of LSA request + leaf lsaReqRexmitCnt { + config "false"; + + type ospf_Counter32; + description "Number of retransmissions of LSA request"; + } + leaf deadTimerExpTs { + config "false"; + type union { + type string; + type uint64; + } + description "Timestamp of the dead timer expiry"; + } + } + + grouping ospf_GrSt-group { + description "Object holds OSPF Graceful Restart operational Information"; + + // Peer restart helper Status + leaf helperSt { + config "false"; + + type ospf_HelperSt; + description "Peer restart helper status"; + } + + // Peer restart helper age + leaf helperAge { + config "false"; + + type ospf_HelperAge; + description "Peer restart helper age"; + } + + // Peer restart helper exit qualifier + leaf helperExitQual { + config "false"; + + type ospf_HelperExitQual; + description "Peer restart helper exit qualifier"; + } + } + + grouping ospf_AuthNewP-group { + description "This object holds authentication new policy information"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Authentication type + leaf type { + + type ospf_AuthT; + description "Authentication types can be simple, md5 or none."; + } + + // Authentication key id + leaf keyId { + + type ospf_AuthKeyId; + description "Key id used for authentication"; + } + + // Authentication key + leaf key { + + type ospf_AuthKey; + description "Key used for authenticatoin"; + } + leaf keySecureMode { + type boolean; + default "false"; + description "Encrypted authentication key or plain text key"; + } + + // Authentication md5 key + leaf md5key { + + type ospf_AuthKey; + description "Authentication md5 key"; + } + leaf md5keySecureMode { + type boolean; + default "false"; + description "Encrypted authentication md5 key or plain text key"; + } + leaf keychain { + type string; + description "Authentication keychain"; + } + } + + grouping ospf_SLink-group { + description "This object holds information about OSPF sham links"; + + leaf srcAddr { + type address_Ip; + description "Sham-link source"; + } + + leaf dstAddr { + type address_Ip; + description "Sham-link destination"; + } + leaf demandCkt { + config "false"; + type boolean; + description "Demand Circuit"; + } + + // Hello interval, interval between hello packets that + // OSPF sends on the interface + leaf helloIntvl { + + type ospf_HelloIntvl; + description "Hello interval, interval between hello packets that OSPF sends on the interface"; + } + + // Dead interval, interval during which at least one + // hello packet must be received from a neighbor before + // the router declares that neighbor as down + leaf deadIntvl { + + type ospf_DeadIntvl; + description "Dead interval, interval after which router declares that neighbor as down"; + } + + // Retransmit interval, time between LSA retransmissions. + // When a router sends an LSA to its neighbor, it keeps + // the LSA until it receives an acknowledgement from the + // neighbor. If the router receives no acknowldegement + // within the retransmit interval, the local router + // resends the LSA + leaf rexmitIntvl { + + type ospf_RexmitIntvl; + description "Retransmit interval, time between LSA retransmissions"; + } + + // Transmit delay, estimated time needed to send an LSA + // update packet + leaf xmitDelay { + + type ospf_XmitDelay; + description "Transmit delay, estimated time needed to send an LSA update packet"; + } + + // Cost of the interface + leaf cost { + + type ospf_IfCost; + description "Specifies the cost of interface"; + } + } + + grouping ospf_SlinkNew-group { + description "This object holds information about OSPF sham links"; + leaf srcAddr { + type address_Ipv4; + description "Sham-link source IP address"; + } + leaf dstAddr { + type address_Ipv4; + description "Sham-link destination IP address"; + } + leaf demandCkt { + type boolean; + description "Specifies whether a OSPF sham-link interface is a demand circuit or not"; + } + + // Hello interval, interval between hello packets that + // OSPF sends on the interface + leaf helloIntvl { + + type ospf_HelloIntvl; + description "Hello interval, interval between hello packets that OSPF sends on the interface"; + } + + // Dead interval, interval during which at least one + // hello packet must be received from a neighbor before + // the router declares that neighbor as down + leaf deadIntvl { + + type ospf_DeadIntvl; + description "Dead interval, interval after which router declares that neighbor as down"; + } + + // Retransmit interval, time between LSA retransmissions. + // When a router sends an LSA to its neighbor, it keeps + // the LSA until it receives an acknowledgement from the + // neighbor. If the router receives no acknowldegement + // within the retransmit interval, the local router + // resends the LSA + leaf rexmitIntvl { + + type ospf_RexmitIntvl; + description "Retransmit interval, time between LSA retransmissions"; + } + + // Transmit delay, estimated time needed to send an LSA + // update packet + leaf xmitDelay { + + type ospf_XmitDelay; + description "Transmit delay, estimated time needed to send an LSA update packet"; + } + + // Cost of the interface + leaf cost { + + type ospf_IfCost; + description "Specifies the cost of interface"; + } + + // This object holds authentication new policy information + container authnew-items { + + uses ospf_AuthNewP-group; + description "This object holds authentication new policy information"; + } + } + + grouping ospf_LsaLeakP-group { + description "Thi object holds link-state advertisement(LSA) leak policies"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Scope of the policy (intra protocol, inter protcol, + // default route) + leaf scope { + config "false"; + + type rtleak_Scope; + description "Scope"; + } + leaf rtMap { + config "false"; + type string; + description "Route Map"; + } + + // Operational state + leaf operSt { + config "false"; + + type ospf_LsaLeakOperSt; + description "Operational state of LSA leak"; + } + } + + grouping ospf_LsaLeakCtrlP-group { + description "This object holds link-state advertisement(LSA) leak control policies"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Scope of the policy (intra protocol, inter protcol, + // default route) + leaf scope { + + type rtleak_Scope; + description "Scope"; + } + leaf rtMap { + type string; + description "Route Map"; + } + + leaf dir { + + type rtleak_RtCtrlDir; + description "Holds route control directory information"; + } + + // Operational state + leaf operSt { + config "false"; + + type ospf_LsaLeakOperSt; + description "Operational state of LSA leak"; + } + } + + grouping ospf_DefRtLeakP-group { + description "Default Route leak or the distribution policy"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Scope of the policy (intra protocol, inter protcol, + // default route) + leaf scope { + + type rtleak_Scope; + default "defrt"; + description "Scope"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route map for default-information originate"; + } + + // DefRtLeak always advertise + leaf always { + + type ospf_Always; + description "Always advertise default route leak"; + } + } + + grouping ospf_InterAreaRtSum-group { + description "Inter-area Route Summarization on ABRs, summarizing routes between areas in the autonomous system"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf addr { + type address_Ip; + description "Address"; + } + + // Summary address no Advertise + leaf ctrl { + + type ospf_SumControl; + description "Summary address no advertise"; + } + + // Number of component routes + leaf compRtCnt { + config "false"; + + type nw_Counter32; + description "Number of component routes"; + } + + // Route summary cost + leaf operCost { + config "false"; + + type ospf_SumCost; + description "Route summary operational cost"; + } + + // Area range cost + leaf cost { + + type ospf_SumCost; + description "Area range cost for route summarization"; + } + } + + grouping ospf_SpfComp-group { + description "Shortest Path First(SPF) computation frequency controls"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Initial spf schedule delay interval + leaf initIntvl { + + type ospf_SpfCompInitIntvl; + description "Initial SPF schedule delay interval"; + } + + // Minimum hold time between spf calculations + leaf holdIntvl { + + type ospf_SpfCompHoldIntvl; + description "Minimum hold time interval between SPF calculations"; + } + + // Maximum wait time between spf calculations + leaf maxIntvl { + + type ospf_SpfCompMaxIntvl; + description "Maximum wait time between SPF calculations"; + } + } + + grouping ospf_LsaCtrl-group { + description "Link State Advertisement(LSA) related frequency controls"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // LSA group pacing interval + leaf gpPacingIntvl { + + type ospf_LsaGpPacingIntvl; + description "LSA group pacing interval"; + } + + // Minimum interval between arrival of a LSA + leaf arrivalIntvl { + + type ospf_LsaArrivalIntvl; + description "Minimum interval between arrival of a LSA"; + } + + // LSA generation throttle start wait interval + leaf startIntvl { + + type ospf_LsaThStartIntvl; + description "LSA generation throttle start wait interval"; + } + + // LSA generation throttle hold interval + leaf holdIntvl { + + type ospf_LsaThHoldIntvl; + description "LSA generation throttle hold interval"; + } + + // LSA generation throttle maximum interval + leaf maxIntvl { + + type ospf_LsaThMaxIntvl; + description "LSA generation throttle maximum interval"; + } + } + + grouping ospf_L3vpnDomainPrimary-group { + description "This object holds L3VPN OSPF Primary domain and domain-tag info"; + + // L3VPN OSPF Domain Type + leaf domainType { + + type ospf_DomainType; + description "L3VPN Domain Type 0x0005/0x0105/0x0205/0x8005"; + } + + // L3VPN Domain Identifier + leaf domainId { + + type ospf_DomainId; + description "L3VPN Domain Identifier which can be ipv4 addr or 12 Hex Char or Null"; + } + + // L3VPN Domain Tag (AS number) + leaf domainTag { + + type ospf_DomainTag; + description "L3VPN Domain Tag (AS number) in the range of 0-2147483647"; + } + } + + grouping ospf_L3vpnDomainSecondary-group { + description "This object holds L3VPN OSPF Secondary domain info"; + + // L3VPN OSPF Domain Type + leaf domainType { + + type ospf_DomainType; + description "L3VPN Domain Type 0x0005/0x0105/0x0205/0x8005"; + } + + // L3VPN Domain Identifier + leaf domainId { + + type ospf_DomainId; + description "L3VPN Domain Identifier which can be ipv4 addr or 12 Hex Char or Null"; + } + } + + grouping ospf_DomStats-group { + description "This object holds the OSPF VRF related statistics"; + + // Interface count + leaf ifCnt { + config "false"; + + type ospf_Counter32; + description "Holds the count of interfaces"; + } + + // Area count + leaf areaCnt { + config "false"; + + type ospf_Counter32; + description "Holds the number of area's configured"; + } + + // Stub area count + leaf stubAreaCnt { + config "false"; + + type ospf_Counter32; + description "Holds the count of stub areas"; + } + + // NSSA area count + leaf nssaAreaCnt { + config "false"; + + type ospf_Counter32; + description "Count of not-so-stubby area(NSSA) area"; + } + + // External area count + leaf extAreaCnt { + config "false"; + + type ospf_Counter32; + description "Holds the count of external areas"; + } + + // Active stub area count + leaf activeStubAreaCnt { + config "false"; + + type ospf_Counter32; + description "Holds the count of active stub areas"; + } + + // Active NSSA area count + leaf activeNssaAreaCnt { + config "false"; + + type ospf_Counter32; + description "Active not-so-stubby area(NSSA) area count"; + } + + // Active external area count + leaf activeExtAreaCnt { + config "false"; + + type ospf_Counter32; + description "Holds the active external area count"; + } + + // Active Area count + leaf activeAreaCnt { + config "false"; + + type ospf_Counter32; + description "Holds the count of active areas"; + } + leaf lastStatsClearTs { + config "false"; + type union { + type string; + type uint64; + } + description "Holds the last statistics clear timestamp"; + } + + // Neighbor count + leaf peerCnt { + config "false"; + + type ospf_Counter32; + description "Holds the neighbor/peer count"; + } + + // External LSA count + leaf extLsaCnt { + config "false"; + + type ospf_Counter32; + description "Holds the external link-state advertisement(LSA) count"; + } + + // Opaque AS LSA count + leaf opaqueAsLsaCnt { + config "false"; + + type ospf_Counter32; + description "Holds the count of opaque AS LSAs"; + } + + // Total AS LSA count + leaf totalAsLsaCnt { + config "false"; + + type ospf_Counter32; + description "Holds the total AS link-state advertisement(LSA) count"; + } + + // New LSA Rx count + leaf newLsaRxCnt { + config "false"; + + type ospf_Counter32; + description "Holds the Rx count of new link-state advertisement(LSA)"; + } + + // New LSA Tx count + leaf newLsaTxCnt { + config "false"; + + type ospf_Counter32; + description "Holds the Tx count of new link-state advertisement(LSA)"; + } + + // Area Border Router Status + leaf areaBdrRtr { + config "false"; + + type ospf_AreaBdrRtr; + description "Status of Area Border Router(ABR)"; + } + + // ASBR Router Status + leaf asBdrRtr { + config "false"; + + type ospf_ASBdrRtr; + description "Holds the status of Autonomous System Boundary Router(ASBR)"; + } + } + + grouping ospf_Gr-group { + description "Object holding per OSPF VRF graceful restart information"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Graceful restart controls + leaf ctrl { + + type ospf_GrCtrl; + description "Graceful restart controls like planned, complete and disabled state"; + } + leaf helper { + type boolean; + default "true"; + description "Graceful restart helper mode"; + } + + // Graceful restart period + leaf gracePeriod { + + type ospf_GrPeriod; + description "Graceful restart period in seconds starting from 5 to 1800"; + } + } + + grouping ospf_If-group { + description "Object holds OSPF information that is operated at interface level"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + config "false"; + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + // Interface controls + leaf ctrl { + + type ospf_IfControl; + description "Interface controls can be MTU ignore, Advertise subnet"; + } + + // Passive interface control + leaf passiveCtrl { + + type ospf_PassiveControl; + description "Passive interface control. Interface can be configured as passive or non-passive"; + } + + // BFD control + leaf bfdCtrl { + + type ospf_BfdControl; + description "Bidirectional Forwarding Detection (BFD) control"; + } + + // Network type + leaf nwT { + + type ospf_NwT; + description "Holds the network type as point2point or broadcast"; + } + + // Priority, used in determining the designated router on + // this network + leaf prio { + + type ospf_DesigPrio; + description "Priority, used in determining the designated router on this network"; + } + + // Cost of the interface + leaf cost { + + type ospf_IfCost; + description "Cost of the interface ranging from 0 to 65535"; + } + + // Transmit delay, estimated time needed to send an LSA + // update packet + leaf xmitDelay { + + type ospf_XmitDelay; + description "Transmit delay, estimated time needed to send an LSA update packet"; + } + + // Area to which this interface belongs to + leaf area { + + type ospf_AreaId; + description "Area to which this interface belongs to"; + } + leaf advertiseSecondaries { + type boolean; + default "true"; + description "Advertise secondary IP addresses"; + } + + // Node Flag, determines if prefix attribute + // should have the node flag or not + leaf nodeFlag { + + type ospf_FlagStatus; + description "Node flag, determines if prefix attribute should have the node flag or not"; + } + + // Operational state + leaf operSt { + config "false"; + + type ospf_IfOperSt; + description "Operational state of the interface"; + } + + // Operational failed state qualifier + leaf failStQual { + config "false"; + + type ospf_FailStQual; + description "Operational failed state qualifier"; + } + + // Interface type + leaf type { + config "false"; + + type ospf_IfType; + description "Type of the interface, loopback, p2p, p2mp, nbma, bcast etc."; + } + + // Flags + leaf flags { + config "false"; + + type ospf_IfFlags; + description "Interface flags, Admin up or Proto up"; + } + leaf addr { + config "false"; + type address_Ip; + description "Interface IPv4 address"; + } + leaf dr { + config "false"; + type address_Ip; + description "Designated router(DR) IP address"; + } + leaf bdr { + config "false"; + type address_Ip; + description "Backup designated router(BDR) Ip address"; + } + + // Designated router id + leaf drId { + config "false"; + + type ip_RtrId; + description "Designated router(DR) identifier"; + } + + // Backup designated router id + leaf bdrId { + config "false"; + + type ip_RtrId; + description "Backup designated router (BDR) identifier"; + } + + // LSA checksum sum + leaf lsaCksumSum { + config "false"; + + type ospf_LsaCksumSum; + description " Link-state advertisement(LSA) checksum sum"; + } + + // Operational Cost + leaf operCost { + config "false"; + + type ospf_IfCost; + description "Operational cost of interface"; + } + + // Operational Dead interval + leaf operDeadIntvl { + config "false"; + + type ospf_OperDeadIntvl; + description "Interface operational dead interval"; + } + + // Operational SID value for this interface + leaf operSidIndex { + config "false"; + + type ospf_SidIndex; + description "Operational Segment-Routing prefix SID value. It is relative value to SRBG start."; + } + leaf sgmntRtgMplsEllLsid { + config "false"; + type address_Ip; + description "Segment Routing MPLS Extended Link LSA Link State ID"; + } + + // Explicit-NULL + leaf explicitNull { + config "false"; + + type ospf_Active; + description "Holds the Explicit-NULL state as active or not active"; + } + + // Hello interval, interval between hello packets that + // OSPF sends on the interface + leaf helloIntvl { + + type ospf_HelloIntvl; + description "Hello interval, interval between hello packets that OSPF sends on the interface"; + } + + // Dead interval, interval during which at least one + // hello packet must be received from a neighbor before + // the router declares that neighbor as down + leaf deadIntvl { + + type ospf_DeadIntvl; + description "Dead interval, interval after which router declares that neighbor as down"; + } + + // Retransmit interval, time between LSA retransmissions. + // When a router sends an LSA to its neighbor, it keeps + // the LSA until it receives an acknowledgement from the + // neighbor. If the router receives no acknowldegement + // within the retransmit interval, the local router + // resends the LSA + leaf rexmitIntvl { + + type ospf_RexmitIntvl; + description "Retransmit interval, time between LSA retransmissions"; + } + + // This object holds OSPF neighbor information + container adj-items { + list AdjEp-list { + config "false"; + key "id"; + + uses ospf_AdjEp-group; + description "This object holds OSPF adjacency information list"; + } + description "This object holds OSPF adjacency information"; + } + + // This object holds authentication policy information + container auth-items { + + uses ospf_AuthP-group; + description "This object holds authentication policy information"; + } + + // This object holds authentication new policy information + container authnew-items { + + uses ospf_AuthNewP-group; + description "This object holds authentication new policy information"; + } + + // OSPF databases + container db-items { + list Db-list { + config "false"; + key "type"; + + uses ospf_Db-group; + description "This object holds OSPF link state databases (LSDB) list"; + } + description "This object holds OSPF link state databases (LSDB)"; + } + + // This object holds the OSPF interface related statistics + container ifstats-items { + + uses ospf_IfStats-group; + description "Object holds the OSPF interface related Statistics"; + } + + // This object holds multi-area information + // at a interface level + container multiarea-items { + list MultiArea-list { + key "multiareaid"; + + uses ospf_MultiArea-group; + description "This object holds multi-area information operated at interface level list"; + } + description "This object holds multi-area information operated at interface level"; + } + + // This object holds the OSPF traffic related information + container trstats-items { + + uses ospf_TrafficStats-group; + description "This object holds the OSPF traffic related information"; + } + + container rtospfIfDefToOspfIf-items { + + list RtOspfIfDefToOspfIf-list { + config "false"; + key "tDn"; + + uses ospf_RtOspfIfDefToOspfIf_target-group; + } + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping ospf_AuthP-group { + description "This object holds authentication policy information"; + + // Authentication type + leaf type { + config "false"; + + type ospf_AuthT; + description "Authentication types can be simple, md5 or none."; + } + + // Authentication key id + leaf keyId { + config "false"; + + type ospf_AuthKeyId; + description "Key id used for authentication"; + } + + // Authentication key + leaf key { + config "false"; + + type ospf_AuthKey; + description "Key used for authenticatoin"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping ospf_IfStats-group { + description "Object holds the OSPF interface related Statistics"; + + // If events count + leaf evCnt { + config "false"; + + type ospf_Counter32; + description "Interface events count"; + } + + // LSA count + leaf lsaCnt { + config "false"; + + type ospf_Counter32; + description "Link-state advertisement(LSA) count"; + } + + // Neighbor count + leaf peerCnt { + config "false"; + + type ospf_Counter32; + description "Holds the count of peers/neighbors"; + } + + // Flood to neighbor count + leaf floodToPeerCnt { + config "false"; + + type ospf_Counter32; + description "Flood to neighbor count"; + } + + // Number of adjacency + leaf adjCnt { + config "false"; + + type ospf_Counter32; + description "Holds the count of adjacency"; + } + + // Number of peers in hitless helper mode + leaf grHelperPeerCnt { + config "false"; + + type ospf_Counter32; + description "Number of peers in GR hitless helper mode"; + } + } + + grouping ospf_MultiArea-group { + description "This object holds multi-area information operated at interface level"; + + // Multi Area id + leaf multiareaid { + + type ospf_AreaId; + description "Holds multi area identifier (ID)"; + } + } + + grouping ospf_TrafficStats-group { + description "This object holds the OSPF traffic related information"; + + // Total packets received + leaf totalPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Total number of packets received"; + } + + // Hello packets received + leaf helloPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Total number of hello packets received"; + } + + // Database description packets received + leaf dbdPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Database description packets received"; + } + + // Link-state request packets received + leaf lsReqPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Link-state request packets received"; + } + + // Link-state update packets received + leaf lsUpdPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Link-state update packets received"; + } + + // Link-state ack packets received + leaf lsAckPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Link-state ACK packets received"; + } + + // Received packets dropped + leaf rcvdPktsDropped { + config "false"; + + type ospf_Counter32; + description "Count of received packets dropped"; + } + + // Error packets rcvd + leaf errPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Count of Error packets received"; + } + + // Error hello packets received + leaf errHelloPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Number of Error hello packets received"; + } + + // Error database description packets received + leaf errDbdPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Error database description packets received"; + } + + // Error link-state request packets received + leaf errLsReqPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Error link-state request packets received"; + } + + // Error link-state update packets received + leaf errLsUpdPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Error link-state update packets received"; + } + + // Error link-state ack packets received + leaf errLsAckPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Error LSACK Packets Received"; + } + + // Unknown packets received + leaf unknownPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Count of unknown packets received"; + } + + // Duplicate routerid packets received + leaf dupRtrIdPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Duplicate router-id packets received"; + } + + // Duplicate source addr packets received + leaf dupSrcAddrPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Duplicate source address packets received"; + } + + // Wrong area packets received + leaf wrongAreaPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Wrong Area Packets Received"; + } + + // Invalid source addr packets received + leaf invalidSrcAddrPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Invalid Source Addr Packets Received"; + } + + // Invalid destination addr packets received + leaf invalidDestAddrPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Invalid Destination Addr Packets Received"; + } + + // Bad CRC packets received + leaf badCRCPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Bad CRC Packets Received"; + } + + // Bad version packets received + leaf badVersionPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Bad Version Packets Received"; + } + + // Bad reserved fields packets received + leaf badResvFieldPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Bad Reserved Field Packets Received"; + } + + // Changed neighbor routerId or ip address packets received + leaf peerRtrIdChgdPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Peer RouterId Changed Packets Received"; + } + + // Non hello received packets for which neighbor is not found + leaf peerNotFoundPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Peer Not Found Packets Received"; + } + + // Authentication failed packets received + leaf badAuthPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Bad Authentication Packets Received"; + } + + // Bad length packets received + leaf badLenPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Bad Length Packets Received"; + } + + // Packets received on passive interface + leaf passiveIntfPktsRcvd { + config "false"; + + type ospf_Counter32; + description "Passive Interface Packets Received"; + } + + // Packets received on OSPF not enabled interface + leaf noOspfIntfPktsRcvd { + config "false"; + + type ospf_Counter32; + description "No OSPF Interface Packets Received"; + } + + // Received LSA packets ignored + leaf rcvdLsaPktsIgnored { + config "false"; + + type ospf_Counter32; + description "Received LSA Packets Ignored"; + } + + // Number of LSA packets dropped during SPF run + leaf droppedLsaPktsWhileSPF { + config "false"; + + type ospf_Counter32; + description "LSA Packets Dropped During SPF"; + } + + // Number of LSA packets dropped during graceful restart + leaf droppedLsaPktsWhileGR { + config "false"; + + type ospf_Counter32; + description "LSA Packets Dropped During GR"; + } + + // Total packets sent + leaf totalPktsSent { + config "false"; + + type ospf_Counter32; + description "Total number of packets sent"; + } + + // Hello packets sent + leaf helloPktsSent { + config "false"; + + type ospf_Counter32; + description "Total number of hello packets sent"; + } + + // Database description packets sent + leaf dbdPktsSent { + config "false"; + + type ospf_Counter32; + description "Database description packets sent"; + } + + // Link-state request packets sent + leaf lsReqPktsSent { + config "false"; + + type ospf_Counter32; + description "Link-state request packets sent"; + } + + // Link-state update packets sent + leaf lsUpdPktsSent { + config "false"; + + type ospf_Counter32; + description "Link-state update packets sent"; + } + + // Link-state ack packets sent + leaf lsAckPktsSent { + config "false"; + + type ospf_Counter32; + description "Link-state ACK packets sent"; + } + + // Dropped send packets + leaf droppedSendPkts { + config "false"; + + type ospf_Counter32; + description "Total number of dropped send packets"; + } + + // Error send packets + leaf errSendPkts { + config "false"; + + type ospf_Counter32; + description "Total number of error send packets"; + } + + // Number of first transmission of LSU packets + leaf lsuFirstTxPkts { + config "false"; + + type ospf_Counter32; + description "Number of first transmission of LSU packets"; + } + + // Number of retransmissions of LSU packets + leaf lsuRexmitPkts { + config "false"; + + type ospf_Counter32; + description "Number of retransmissions of LSU packets"; + } + + // Number of LSU packets sent in response to LSREQ packets + leaf lsuForLsreqPkts { + config "false"; + + type ospf_Counter32; + description "Number of LSU packets sent in response to LSREQ packets"; + } + + // Number of LSU packets sent to a neighbor specifically + leaf lsuPeerTxPkts { + config "false"; + + type ospf_Counter32; + description "Number of LSU packets sent to a neighbor specifically"; + } + + // Number of times flooding packets dropped due to IP queue throttling + leaf floodPktSendIpThrottle { + config "false"; + + type ospf_Counter32; + description "Number of times flooding packets dropped due to IP queue throttling"; + } + + // Number of times flooding packets dropped due to token throttling + leaf floodPktSendTokenThrottle { + config "false"; + + type ospf_Counter32; + description "Number of times flooding packets dropped due to token throttling"; + } + leaf lastStatsClearTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last traffic statistics clear timestamp"; + } + } + + grouping ospf_MaxLsaP-group { + description "Max-LSA(Link State Advertisement) Database overflow for each domain or VRF"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // maximum number of non self-generated LSAs + leaf maxLsa { + + type ospf_MaxLsa; + description "Maximum number of non self-generated LSAs"; + } + + // Threshold value (%) at which to generate a warning message + leaf thresh { + + type ospf_MaxLsaThresh; + description "Max LSA threshold value (%) at which to generate a warning message"; + } + + // Specifies the number of times the OSPF process can + // consecutively be placed into the sleep state. + leaf sleepCnt { + + type ospf_SleepCnt; + description "Specifies the number of times the OSPF process can consecutively be placed into the sleep state"; + } + + // Specifies the time (in minutes) to ignore all neighbors after + // the maximum limit of LSAs has been exceeded + leaf sleepIntvl { + + type ospf_SleepIntvl; + description "Specifies time interval(in minutes) to ignore all neighbors after the maximum limit of LSAs has been exceeded"; + } + + // Specifies the time, in minutes, after which the + // sleep count is reset to zero. + leaf resetIntvl { + + type ospf_ResetIntvl; + description "Specifies the time, in minutes, after which the sleep count reset to zero"; + } + + leaf action { + + type ospf_MaxLsaAct; + description "Specifies the Max LSA action"; + } + + leaf operSt { + config "false"; + + type ospf_MaxLsaOperSt; + description "Operational state of max LSA"; + } + + leaf operStQual { + config "false"; + + type ospf_MaxLsaOperStQual; + description "Operational state qualifier for max LSA"; + } + + leaf nonSelfLsaCnt { + config "false"; + + type ospf_NonSelfLsaCnt; + description "Current number of non self-generated LSAs"; + } + + leaf currSleepCnt { + config "false"; + + type ospf_CurrSleepCnt; + description "Current number of sleep LSAs"; + } + } + + grouping ospf_MaxMetricLsaP-group { + description "Max-Metric Link State Advertisement information per Domain/VRF"; + + // Max metric controls - specifies when to send max + // metric LSAs and for which routes/links + leaf ctrl { + + type ospf_MaxMetricControl; + description "Maximum Metric Controls - specifies when to send max-metric LSAs"; + } + + // Max metric value to be used for external LSAs + leaf maxMetricExtLsa { + + type ospf_MaxMetric; + description "Maximum metric value for external LSAs"; + } + + // Max metric value to be used for summary LSAs + leaf maxMetricSummLsa { + + type ospf_MaxMetric; + description "Maximum metric value for summary LSAs"; + } + + // Time (in secs) for which max metric should be advertised + // at startup + leaf startupIntvl { + + type ospf_StartupIntvl; + description "Time (in secs) for which max metric should be advertised at startup"; + } + + // At startup, advertise max metric until convergence of BGP ASN + leaf awaitConvBgpAsn { + + type rtleak_Asn; + description "At startup, advertise max metric until convergence of BGP ASN"; + } + } + + grouping ospf_InterLeakP-group { + description "This defines distribution of routes from other protocols to OSPF"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Scope of the policy (intra protocol, inter protcol, + // default route) + leaf scope { + + type rtleak_Scope; + default "inter"; + description "Scope"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{1,63}.*"; + } + description "Route-map for Inter protocol route leak"; + } + + // Protocol from where the routes are leaked + leaf proto { + + type rtleak_Proto; + description "Protocol"; + } + + // Routing protocol instance, the routing instance of the + // protocol from where the routes are being leaked + leaf inst { + + type rtleak_Inst; + description "Instance"; + } + + // Leak BGP routes from this Autonomous System (AS) <1-4294967295>|<1-65535>[.<0-65535>] Autonomous system number + leaf asn { + + type rtleak_Asn { + pattern "((none)|([1-9]{1}[0-9]{0,8}|[1-3]{1}[0-9]{1,9}|4{1}[0-1]{1}[0-9]{8}|4{1}2{1}[0-8]{1}[0-9]{7}|4{1}2{1}9{1}[0-3]{1}[0-9]{6}|4{1}2{1}9{1}4{1}[0-8]{1}[0-9]{5}|4{1}2{1}9{1}4{1}9{1}[0-5]{1}[0-9]{4}|4{1}2{1}9{1}4{1}9{1}6{1}[0-6]{1}[0-9]{3}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}[0-1]{1}[0-9]{2}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}2{1}[0-8]{1}[0-9]{1}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}2{1}9{1}[0-5]{1})|(([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\\.([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])))"; + } + description "Autonomous System Number"; + } + + // SRv6 Prefix Type which is being leaked + leaf srv6PrefixType { + + type rtleak_Srv6PrefixType; + description "SRv6 Prefix Type; Valid only when proto is srv6"; + } + + // DefRtLeak always advertise + leaf always { + + type ospf_Always; + description "Always advertise default route leak"; + } + } + + grouping ospf_LeakCtrlP-group { + description "Leak controls related to the number of routes leaked"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Controls on what to do when the number of routes cross + // the maximum route/prefix limit + leaf ctrl { + + type rtleak_Ctrl; + description "Controls"; + } + + // Maximum limit on routes leaked + leaf max { + + type rtleak_MaxPfx; + description "Maximum Limit"; + } + + // Threshold at which warning is issued when number of + // routes crosses the threshold + leaf thresh { + + type rtleak_Thresh; + description "Threshold"; + } + + // Maximum number of retries to retrieve the leaked routes, + // this is applicable only when the routes are withdrawn + leaf retries { + + type rtleak_Retries; + description "Retries"; + } + + // Duration between the retries + leaf duration { + + type rtleak_Duration; + description "Duration"; + } + } + + grouping ospf_RibLeakP-group { + description "OSPF to Route Information Base(RIB) Route Leak/distribution Policy Per Domain or VRF"; + leaf rtMap { + type string { + pattern ".*[!-~]{1,63}.*"; + } + description "Route map used in distribution of routes"; + } + + // If always is set to false, only routes that are permitted + // by the route map(rtMap) configuration are downloaded to the + // routing information base (RIB). + leaf always { + + type rtleak_Always; + description "Filter routes into RIB"; + } + } + + grouping ospf_ExtRtSum-group { + description "External Route Summarization on ASBRs that are Leaking Routes into OSPF"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf addr { + type address_Ip; + description "Address"; + } + + // Summary address no Advertise + leaf ctrl { + + type ospf_SumControl; + description "Summary address no advertise"; + } + + // Number of component routes + leaf compRtCnt { + config "false"; + + type nw_Counter32; + description "Number of component routes"; + } + + // Route summary cost + leaf operCost { + config "false"; + + type ospf_SumCost; + description "Route summary operational cost"; + } + + // Summary address tag + leaf tag { + + type ospf_RtTag; + description "Route tag of external route"; + } + } + + grouping ospf_EventLogs-group { + description "Object holding the size of the Logfiles for various types of OSPF events "; + + // Event LogType + leaf eventType { + + type ospf_EventType; + description "Holds the type of event logging"; + } + + // Event LogSize + leaf logSize { + + type ospf_EventLogSize; + description "Holds the size of event logging"; + } + + // Event Log size in bytes + leaf logSizeKBytes { + + type ospf_EventLogSizeKBytes; + description "Event Log Size in KBytes"; + } + } + + grouping ospf_Mpls-group { + description "OSPF support information for MPLS TE and LDP per Instance"; + + // Router ID associated with TE + leaf teRtrId { + + type nw_IfId; + description "Routable Interface ID associated with MPLS TE. Supported interfaces include Ethernet-like, port/channel, loopback and vlan interfaces."; + } + leaf teMcast { + type boolean; + description "MPLS TE multicast support."; + } + leaf ldpSync { + type boolean; + default "false"; + description "MPLS LDP Sync Control."; + } + leaf ldpSend { + type boolean; + default "false"; + description "MPLS LDP Send Control."; + } + + // This object holds per domain mpls te information + container area-items { + list MplsOspfArea-list { + key "id"; + + uses ospf_MplsOspfArea-group; + description "OSPF support Area information for MPLS TE and LDP per Instance list"; + } + description "OSPF support Area information for MPLS TE and LDP per Instance"; + } + } + + grouping ospf_MplsOspfArea-group { + description "OSPF support Area information for MPLS TE and LDP per Instance"; + + // Area id + leaf id { + + type ospf_AreaId; + description "Area identifier to which a network or interface belongs"; + } + leaf teCap { + type boolean; + description "MPLS TE capability flag per Area"; + } + leaf ldp { + type boolean; + default "false"; + description "MPLS LDP support flag per Area"; + } + } + + grouping rtctrl_L2Evpn-group { + description "L2EVPN Entity"; + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This object holds Bridge Domain + // Ethernet VPN instance information + container bdevi-items { + list BDEvi-list { + key "encap"; + + uses rtctrl_BDEvi-group; + description "Bridge Domain Ethernet VPN Instance list"; + } + description "Bridge Domain Ethernet VPN Instance"; + } + + container encap_mpls-items { + + uses nvo_EncapMpls-group; + description "Configuration of MPLS-based segment routing encapsulation"; + } + } + + grouping rtctrl_BDEvi-group { + description "Bridge Domain Ethernet VPN Instance"; + leaf operRd { + config "false"; + type mtx_array_community; + description "Operational Route Distinguisher"; + } + leaf tblMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route-map name for table-map command to filter routes."; + } + leaf tblMapFltr { + type boolean; + description "Filter option used with table-map configuration for selective route download."; + } + leaf operSecondaryRd { + config "false"; + type mtx_array_community; + description "Operational Secondary RD for vxlan multisite border gateway"; + } + leaf rd { + type mtx_array_community; + description "Route Distinguisher"; + } + leaf encap { + type string; + description "Encapsulation"; + } + + // Route policy holds all route policy entries and route controls + container rttp-items { + list RttP-list { + key "type"; + + uses rtctrl_RttP-group; + description "Route Policy list"; + } + description "Route Policy"; + } + } + + grouping rtctrl_RttP-group { + description "Route Policy"; + leaf operRttAuto { + config "false"; + type mtx_array_community; + description "Operational Route Target Import Auto Evpn"; + } + + // Type + leaf type { + + type rtctrl_RttPType; + description "Type"; + } + + // List of route policy entries + container ent-items { + list RttEntry-list { + key "rtt"; + + uses rtctrl_RttEntry-group; + description "Route Entry list"; + } + description "Route Entry"; + } + + // Route control map policy for routes imported/exported + // into an AF. Control is through route maps. + container rtctrlmap-items { + + uses rtctrl_MapP-group; + description "Route Control Map Policy"; + } + + // Route control map policy for routes imported/exported + // into an AF in the default VRF. Control is through route maps. + container rtctrldefmap-items { + + uses rtctrl_DomDefMapP-group; + description "Route Control Map Policy for the default VRF"; + } + + // Route control policy for routes imported/exported + // into an AF in the non-default VRF + container rtctrlnondef-items { + + uses rtctrl_DomNonDefP-group; + description "Route Control Policy for the non-default VRF"; + } + } + + grouping rtctrl_RttEntry-group { + description "Route Entry"; + leaf rtt { + type mtx_array_community; + description "Route Target"; + } + } + + grouping rtctrl_MapP-group { + description "Route Control Map Policy"; + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + } + + grouping rtctrl_DomDefMapP-group { + description "Route Control Map Policy for the default VRF"; + leaf pfxLimit { + type uint32 { + range "0..2147483647"; + } + default "0"; + description "Default Vrf Prefix Limit"; + } + leaf allowVpn { + type boolean; + description "Allow VPN to be considered for route leaking"; + } + leaf advtVpn { + type boolean; + description "Allow leaked routes to be advertised to VPN"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + } + + grouping rtctrl_DomNonDefP-group { + description "Route Control Policy for the non-default VRF"; + leaf allowVpn { + type boolean; + description "Allow VPN to be considered for route leaking"; + } + leaf advtVpn { + type boolean; + description "Allow leaked routes to be advertised to VPN"; + } + } + + grouping nvo_EncapMpls-group { + description "Configuration of MPLS-based segment routing encapsulation"; + leaf encapCfg { + type boolean; + description "Enable/disable segment routing encapsulation"; + } + + leaf sourceIf { + + type nw_IfId; + description "Source interface associated with segment routing encapsulation."; + } + leaf operPrimaryIp { + config "false"; + type address_Ip; + description "Indicates primary IP address of source interface."; + } + leaf operSecondaryIp { + config "false"; + type address_Ip; + description "Indicates secondary IP address of source interface."; + } + leaf operFlags { + config "false"; + type uint32; + description "Indicates internal operational flags set"; + } + + leaf operSmSt { + config "false"; + + type nvo_SrStateT; + description "Indicates operational FSM state"; + } + + leaf operEncapT { + config "false"; + + type nvo_MplsEncapT; + description "Indicates encapsulation type"; + } + leaf operDownReason { + config "false"; + type string; + description "Indicates the reason the encapsulation is down (if applicable)."; + } + } + + grouping comm_Entity-group { + description "Communication Entity"; + + container ssh-items { + + uses comm_Ssh-group; + description "Ssh Service"; + } + + container telnet-items { + + uses comm_Telnet-group; + description "Telnet Service"; + } + } + + grouping comm_Ssh-group { + description "Ssh Service"; + leaf loginAttempts { + type uint32 { + range "1..10"; + } + default "3"; + description "Max number of login attempts allowed before SSH session is reset"; + } + leaf loginGraceTime { + type uint32 { + range "0..3600"; + } + default "120"; + description "Maximum grace time of SSH login"; + } + + leaf enWeakCiphers { + + type aaa_Boolean; + default "no"; + description "Enable or Disable weak Ciphers"; + } + + leaf keyExchangeAlgorithms { + + type aaa_Boolean; + default "no"; + description "Enable Or Disable All Key Exchange methods"; + } + + leaf ciphers { + + type aaa_Boolean; + default "no"; + description "Enable Or Disable All Ciphers"; + } + + leaf messageAuthCodes { + + type aaa_Boolean; + default "no"; + description "Enable Or Disable All Message Authentication Codes"; + } + + leaf keyTypes { + + type aaa_Boolean; + default "no"; + description "Enable Or Disable All Public Key Algorithms"; + } + + // Operational properties + leaf configErrSshPort { + config "false"; + + type comm_SshPortfaultBitmapT; + default "noerror"; + description "Error for SSH port config."; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf port { + + type comm_Port { + range "22..65535"; + } + description "Port"; + } + + leaf adminSt { + + type comm_AdminState; + description "Admin State"; + } + + // need protocol for creating iptable rule + leaf proto { + config "false"; + + type comm_Protocol; + default "tcp"; + description "TBD"; + } + container key-items { + list SshKey-list { + key "type"; + + uses comm_SshKey-group; + description "Ssh Keys list"; + } + description "Ssh Keys"; + } + + container rekey-items { + + uses comm_Rekey-group; + description "SSH rekey container"; + } + + container sshsession-items { + + uses comm_SshSession-group; + description "SSH Session Idle Timeout"; + } + } + + grouping comm_SshKey-group { + description "Ssh Keys"; + + leaf type { + + type comm_SshKeyType; + description "SSH server key type"; + } + leaf keyLen { + type uint32 { + range "0..4096"; + } + default "1024"; + description "Length of the key in bytes"; + } + } + + grouping comm_Rekey-group { + description "SSH rekey container"; + + leaf maxData { + + type comm_RekeyDataType; + description "SSH max-data"; + } + + leaf maxTime { + + type comm_RekeyDataType; + description "SSH max-time"; + } + } + + grouping comm_SshSession-group { + description "SSH Session Idle Timeout"; + leaf idleTimeout { + type uint32 { + range "0..120"; + } + default "0"; + description "Idle Timeout value in Seconds"; + } + leaf keepAliveCount { + type uint32 { + range "0..5"; + } + default "0"; + description "Count of KeepAlive packets to be sent to SSH Client"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf port { + + type comm_Port; + description "Port"; + } + + leaf adminSt { + + type comm_AdminState; + description "Admin State"; + } + + // need protocol for creating iptable rule + leaf proto { + config "false"; + + type comm_Protocol; + default "tcp"; + description "TBD"; + } + } + + grouping comm_Telnet-group { + description "Telnet Service"; + leaf loginAttempts { + type uint32 { + range "1..10"; + } + default "3"; + description "Max number of login attempts allowed before TELNET session is reset"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf port { + + type comm_Port; + description "Port"; + } + + leaf adminSt { + + type comm_AdminState; + default "disabled"; + description "Admin State"; + } + + // need protocol for creating iptable rule + leaf proto { + config "false"; + + type comm_Protocol; + default "tcp"; + description "TBD"; + } + } + + grouping aaa_UserEp-group { + description "User Management"; + + leaf pwdStrengthCheck { + + type aaa_Boolean; + description "Password Strength Check"; + } + + leaf pwdSecureMode { + + type aaa_Boolean; + description "Password secure-mode"; + } + leaf pwdMinLength { + type uint16; + default "8"; + description "Password min length"; + } + leaf pwdMaxLength { + type uint16; + default "127"; + description "Password max length"; + } + + leaf svcPwdRecovery { + + type aaa_Boolean; + description "Service Password Recovery"; + } + leaf maxLogins { + type uint32 { + range "0..7"; + } + default "0"; + description "Maximum Simultaneous Logins"; + } + + leaf pwdLifeTime { + + type aaa_PwdLifeTime; + description "lifetime of user passphrase (in days)"; + } + + leaf pwdWarningTime { + + type aaa_PwdLifeTime; + description "warning time of user passphrase (in days)"; + } + + leaf pwdGraceTime { + + type aaa_PwdLifeTime; + description "grace time of user passphrase (in days)"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + container radiusext-items { + + uses aaa_RadiusEp-group; + description "Default Radius Authentication Settings"; + } + + container ldapext-items { + + uses aaa_LdapEp-group; + description "Default LDAP Authentication Settings"; + } + + container tacacsext-items { + + uses aaa_TacacsPlusEp-group; + description "Default TACACS+ Authentication Settings"; + } + + container authrealm-items { + + uses aaa_AuthRealm-group; + description "AAA Authentication"; + } + + // This MO represents an AAA (accounting/authorization/accounting) + // domain. The AAA configuration can be configured per domain. + container logindomain-items { + list LoginDomain-list { + key "name"; + + uses aaa_LoginDomain-group; + description "Login Domain list"; + } + description "Login Domain"; + } + + // This MO represents System login for block with attempts fail values. + container loginprotection-items { + + uses aaa_LoginProtection-group; + description "Specifies the System login block for attempts and within"; + } + + // Banner presented to the user post login + container postloginbanner-items { + + uses aaa_PostLoginBanner-group; + description "Post Login Banner"; + } + + // Banner presented to the user prior to the console, serial and ssh login prompts + container preloginbanner-items { + + uses aaa_PreLoginBanner-group; + description "Pre Login Banner"; + } + container remoteuser-items { + list RemoteUser-list { + key "name"; + + uses aaa_RemoteUser-group; + description "Remote User list"; + } + description "Remote User"; + } + container user-items { + list User-list { + key "name"; + + uses aaa_User-group; + description "Local User list"; + } + description "Local User"; + } + container role-items { + list Role-list { + key "name"; + + uses aaa_Role-group; + description "Role list"; + } + description "Role"; + } + container factoryrole-items { + list FactoryRole-list { + key "name"; + + uses aaa_FactoryRole-group; + description "Role list"; + } + description "Role"; + } + container domain-items { + list Domain-list { + key "name"; + + uses aaa_Domain-group; + description "Security Domain list"; + } + description "Security Domain"; + } + container privsecret-items { + list PrivSecret-list { + key "privLvl"; + + uses aaa_PrivSecret-group; + description "Enable user to a higher privilege after prompting for secret password list"; + } + description "Enable user to a higher privilege after prompting for secret password"; + } + + // This MO stores information about password constratints + // applicable to all the local users. + container pwdprofile-items { + + uses aaa_PwdProfile-group; + description "Password Change/Expiration Policy"; + } + + // Role feature-group configuration + container rolefeaturegroup-items { + list RoleFeatureGroup-list { + key "groupName"; + + uses aaa_RoleFeatureGroup-group; + description "Create or Modify role feature group list"; + } + description "Create or Modify role feature group"; + } + + // PKI config: keyrings and CA certs + container pkiext-items { + + uses pki_Ep-group; + description "Public Key Management"; + } + + container rtfabricResUserEp-items { + + list RtFabricResUserEp-list { + config "false"; + key "tDn"; + + uses fabric_RtFabricResUserEp_target-group; + } + } + + container rtaaaUserEp-items { + + list RtAaaUserEp-list { + config "false"; + key "tDn"; + + uses aaa_RtAaaUserEp_target-group; + } + } + } + + grouping aaa_RadiusEp-group { + description "Default Radius Authentication Settings"; + + leaf deadtime { + + type aaa_TimeMin; + description "Duration for which non-reachable server is skipped"; + } + + leaf key { + + type aaa_EncKey; + description "Global RADIUS server shared secret"; + } + + leaf keyEnc { + + type aaa_KeyEnc; + description "Default key encryption"; + } + + leaf loggingLevel { + + type aaa_LoggingLevel; + description "Radius Logging level"; + } + + leaf encryptedKeyType { + config "false"; + + type aaa_KeyEnc; + description "encryption type used for key in radius"; + } + + leaf encryptedKey { + config "false"; + + type aaa_EncKey; + description "Stored encrypted key in radiusext from radius"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // add units for timeout. This helps display in CLI + leaf timeout { + + type aaa_TimeSec; + description "Timeout in Seconds"; + } + + leaf retries { + + type aaa_Retries; + description "Retries"; + } + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + container radiusprovider-items { + list RadiusProvider-list { + key "name"; + + uses aaa_RadiusProvider-group; + description "RADIUS Provider list"; + } + description "RADIUS Provider"; + } + + // This MO represents a group of AAA RADIUS servers. + // A member of this group is represented by ProviderRef MO + container radiusprovidergroup-items { + list RadiusProviderGroup-list { + key "name"; + + uses aaa_RadiusProviderGroup-group; + description "RADIUS Provider Group list"; + } + description "RADIUS Provider Group"; + } + + container radiusservermonitor-items { + + uses aaa_RadiusServerMonitor-group; + description "Periodic server monitoring for Radius"; + } + + container dynamicradiusauthserver-items { + + uses aaa_DynamicRadiusAuthServer-group; + description "dynamic authorization local server configuration object"; + } + + container rtfabricResRadiusEp-items { + + list RtFabricResRadiusEp-list { + config "false"; + key "tDn"; + + uses fabric_RtFabricResRadiusEp_target-group; + } + } + } + + grouping aaa_RadiusProvider-group { + description "RADIUS Provider"; + + leaf useType { + + type aaa_RadSrvUseType; + description "Usage for the radius server"; + } + + leaf authPort { + + type aaa_RadPort; + description "authPort"; + } + + leaf acctPort { + + type aaa_RadPort; + description "acctPort"; + } + + leaf authProtocol { + + type aaa_authenticationProtocol; + default "pap"; + description "Authentication Protocol"; + } + + leaf monitoringIdleTime { + + type aaa_IdleTimer; + description "Idle timer to monitor radius server"; + } + + leaf monitoringPasswordType { + + type aaa_LdapPwdEnc; + description "Monitoring password type"; + } + + leaf encryptedKeyType { + config "false"; + + type aaa_KeyEnc; + description "encryption type used for key in radius server"; + } + + leaf encryptedKey { + config "false"; + + type aaa_EncKey; + description "Stored encrypted key for radius server"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(([a-zA-Z]|[a-zA-Z0-9-]*[a-zA-Z0-9])\\.)*([A-Za-z]|[A-Za-z0-9-]*[A-Za-z0-9])|((([0-9a-fA-F]{1,4}:){6}(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|((::([0-9a-fA-F]{1,4}:){5})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|((([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){4})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:)?[0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){3})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,2}[0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){2})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,3}[0-9a-fA-F]{1,4})?::[0-9a-fA-F]{1,4}:)(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,4}[0-9a-fA-F]{1,4})?::)(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,5}[0-9a-fA-F]{1,4})?::)[0-9a-fA-F]{1,4})|((([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4})?::))"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf key { + + type aaa_EncKey; + description "Key"; + } + + // Default value handled in local MO type + leaf keyEnc { + + // Type is a Local-MO-Defined-Type + type aaa_KeyEnc_RadiusProvider_keyEnc; + description "Default key encryption"; + } + + // The following two properties are also defined in Ep MO. + // Here they reperesent per server configuration which would + // take precedence over global configuration defined in Ep MO + // Default value handled in local MO type + leaf timeout { + + // Type is a Local-MO-Defined-Type + type aaa_TimeSec_RadiusProvider_timeout; + description "Timeout in Seconds"; + } + + // Default value handled in local MO type + leaf retries { + + // Type is a Local-MO-Defined-Type + type aaa_Retries_RadiusProvider_retries; + description "Retries"; + } + + leaf monitoringUser { + + type aaa_MonitoringUserType { + length "1..32"; + } + description "Periodic Server Monitoring Username"; + } + + leaf monitoringPassword { + + type aaa_MonitoringPasswordType; + description "Periodic Server Monitoring Password"; + } + leaf epgDn { + config "false"; + type string; + description "Reachability EpG"; + } + + leaf snmpIndex { + config "false"; + + type aaa_ProviderSnmpIndex; + description "Provider SNMP Index"; + } + + container rssecProvToEpg-items { + + uses aaa_RsSecProvToEpg_source-group; + } + } + + grouping aaa_RadiusProviderGroup-group { + description "RADIUS Provider Group"; + + leaf deadtime { + + type aaa_ProviderGroupDeadtime; + description "Duration for which non-reachable server is skipped"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf snmpIndex { + config "false"; + + type aaa_ProviderGroupSnmpIndex; + description "Provider Group SNMP Index"; + } + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + + leaf vrf { + + type l3_VrfName; + description "VRF"; + } + + // The MO represents member of ProviderGroup + container providerref-items { + list ProviderRef-list { + key "name"; + + uses aaa_ProviderRef-group; + description "Provider Group Member list"; + } + description "Provider Group Member"; + } + } + + grouping aaa_ProviderRef-group { + description "Provider Group Member"; + + // This property dicates the order in which the Provider + // referred by this MO will be tried within the ProviderGroup + leaf order { + + type aaa_Order; + description "Order in which Providers are Tried"; + } + + leaf snmpIndex { + config "false"; + + type aaa_ProviderSnmpIndex; + description "Provider SNMP Index"; + } + + leaf name { + + type pol_ObjName { + + // Copied from "ProviderName" type + length "0..64"; + pattern "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(([a-zA-Z]|[a-zA-Z0-9-]*[a-zA-Z0-9])\\.)*([A-Za-z]|[A-Za-z0-9-]*[A-Za-z0-9])|((([0-9a-fA-F]{1,4}:){6}(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|((::([0-9a-fA-F]{1,4}:){5})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|((([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){4})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:)?[0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){3})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,2}[0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){2})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,3}[0-9a-fA-F]{1,4})?::[0-9a-fA-F]{1,4}:)(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,4}[0-9a-fA-F]{1,4})?::)(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,5}[0-9a-fA-F]{1,4})?::)[0-9a-fA-F]{1,4})|((([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4})?::))"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_RadiusServerMonitor-group { + description "Periodic server monitoring for Radius"; + + leaf pwd { + + type aaa_MonitoringPasswordType; + description "Password"; + } + + leaf passwordType { + + type aaa_LdapPwdEnc; + description "Radius Server Monitor Password type"; + } + + leaf idleTime { + + type aaa_IdleTimer; + description "Idle timer to monitor tacacs/radius server"; + } + + leaf name { + + type pol_ObjName { + + // Copied from "aaa:User" type + length "0..64"; + pattern ".*[a-zA-Z0-9][a-zA-Z0-9_\\.-\\\\\\+=$@]{0,31}.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_DynamicRadiusAuthServer-group { + description "dynamic authorization local server configuration object"; + leaf port { + type uint32 { + range "0..65535"; + } + default "1700"; + description "Configuration for port number"; + } + leaf key { + type string { + length "0..63"; + } + description "Configuration for server key"; + } + + leaf keyEnc { + + type aaa_KeyEnc; + description "server key Encription type"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + container dynamicauthclient-items { + list DynamicAuthClient-list { + key "name"; + + uses aaa_DynamicAuthClient-group; + description "dynamic authorization local client configuration object list"; + } + description "dynamic authorization local client configuration object"; + } + } + + grouping aaa_DynamicAuthClient-group { + description "dynamic authorization local client configuration object"; + leaf key { + type string { + length "0..63"; + } + description "serverkey for dynamic-author client"; + } + + leaf keyEnc { + + type aaa_KeyEnc; + description "Default key encryption type"; + } + + leaf vrf { + + type l3_VrfName; + description "vrf name for dynamic-author client"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "just for verifying purpose overriding this"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_LdapEp-group { + description "Default LDAP Authentication Settings"; + + leaf deadtime { + + type aaa_TimeMin { + range "0..60"; + } + description "LDAP Global Deadtime"; + } + + leaf port { + + type aaa_Port; + description "Port"; + } + + leaf attribute { + + type aaa_LdapAttribute; + description "LDAP Attribute"; + } + + leaf basedn { + + type aaa_LdapDn; + description "LDAP Base DN"; + } + + leaf filter { + + type aaa_LdapFilter; + description "LDAP Filter"; + } + + leaf loggingLevel { + + type aaa_LdapLogLevel; + description "LDAP Logging level"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // add units for timeout. This helps display in CLI + leaf timeout { + + type aaa_TimeSec; + description "Timeout in Seconds"; + } + + leaf retries { + + type aaa_Retries; + description "Retries"; + } + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + + // This MO represents a group of AAA LDAP servers. + // A member of this group is represented by ProviderRef MO + container ldapprovidergroup-items { + list LdapProviderGroup-list { + key "name"; + + uses aaa_LdapProviderGroup-group; + description "LDAP Provider Group list"; + } + description "LDAP Provider Group "; + } + container ldapprovider-items { + list LdapProvider-list { + key "name"; + + uses aaa_LdapProvider-group; + description "LDAP Provider list"; + } + description "LDAP Provider"; + } + container searchmap-items { + list LdapSearchMap-list { + key "name"; + + uses aaa_LdapSearchMap-group; + description "Search Map list"; + } + description "Search Map"; + } + + container rtfabricResLdapEp-items { + + list RtFabricResLdapEp-list { + config "false"; + key "tDn"; + + uses fabric_RtFabricResLdapEp_target-group; + } + } + } + + grouping aaa_LdapProviderGroup-group { + description "LDAP Provider Group "; + + leaf deadtime { + + type aaa_ProviderGroupDeadtime; + description "LDAP Provider Group Deadtime"; + } + leaf enAuthCompare { + type boolean; + default "true"; + description "Enable LDAP Compare Operation"; + } + leaf enCertDnMatch { + type boolean; + default "true"; + description "Enable Cert-DN matching"; + } + leaf enUserServerGroup { + type boolean; + default "true"; + description "Enable Group Validation"; + } + leaf enAuthBindFirst { + type boolean; + default "true"; + description "Enable Authentication Bind First"; + } + leaf authBaseDnAppendStr { + type string { + length "0..63"; + } + description "LDAP Append with Base DN String"; + } + leaf authComparePasswdAttribute { + type string { + length "1..63"; + } + default "userPassword"; + description "LDAP password attribute"; + } + + leaf authMechanism { + + type aaa_AuthMechanism; + description "Authentication Mechanism"; + } + leaf searchMap { + type string { + length "0..127"; + } + description "Ldap Search Map"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf snmpIndex { + config "false"; + + type aaa_ProviderGroupSnmpIndex; + description "Provider Group SNMP Index"; + } + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + + leaf vrf { + + type l3_VrfName; + description "VRF"; + } + + // The MO represents member of ProviderGroup + container providerref-items { + list ProviderRef-list { + key "name"; + + uses aaa_ProviderRef-group; + description "Provider Group Member list"; + } + description "Provider Group Member"; + } + } + + grouping aaa_LdapProvider-group { + description "LDAP Provider"; + + leaf rootdn { + + type aaa_LdapDn; + description "Root DN"; + } + + leaf rootdnPwd { + + type aaa_EncKey { + length "0..64"; + pattern ".*"; + } + description "Root DN Password"; + } + + leaf pwdEncryptType { + + type aaa_LdapPwdEnc; + default "0"; + description "Password Encryption Type"; + } + + leaf port { + + type aaa_Port; + description "Port"; + } + leaf enableSSL { + type boolean; + default "true"; + description "Enable SSL"; + } + leaf disableReferral { + type boolean; + default "true"; + description "LDAP Server Disable Referrals"; + } + + leaf SSLValidationLevel { + + type aaa_LdapSSLStrictnessLevel; + description "SSL certificate validation level"; + } + + // This property names the attribute to be downloaded + // which has user's roles and domains information. + // The value of this property takes precendence over the + // value of 'attribute' property in LdapEp MO + leaf attribute { + + type aaa_LdapAttribute; + description "LDAP Attribute"; + } + + // LDAP Base DN to be used while searching for the user. + // The value of this property takes precendence over the value + // of 'basedn' property in LdapEp MO + leaf basedn { + + type aaa_LdapDn; + description "LDAP Base DN"; + } + + // Ldap filter to be used while searching for the user. + // The value of this property takes precendence over the + // value of 'filter' property in LdapEp MO + leaf filter { + + type aaa_LdapFilter; + description "LDAP Filter"; + } + + leaf monitoringPasswordType { + + type aaa_LdapPwdEnc; + description "Monitoring password encryption type"; + } + + leaf monitoringIdleTime { + + type aaa_IdleTimer; + description "Idle timer to monitor ldap server"; + } + + leaf monitoringRootdn { + + type aaa_LdapDn; + description "Root DN"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(([a-zA-Z]|[a-zA-Z0-9-]*[a-zA-Z0-9])\\.)*([A-Za-z]|[A-Za-z0-9-]*[A-Za-z0-9])|((([0-9a-fA-F]{1,4}:){6}(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|((::([0-9a-fA-F]{1,4}:){5})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|((([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){4})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:)?[0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){3})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,2}[0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){2})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,3}[0-9a-fA-F]{1,4})?::[0-9a-fA-F]{1,4}:)(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,4}[0-9a-fA-F]{1,4})?::)(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,5}[0-9a-fA-F]{1,4})?::)[0-9a-fA-F]{1,4})|((([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4})?::))"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf key { + + type aaa_EncKey; + description "Key"; + } + leaf keySet { + config "false"; + type boolean; + description "Key Set"; + } + + // Default value handled in local MO type + leaf keyEnc { + + // Type is a Local-MO-Defined-Type + type aaa_KeyEnc_LdapProvider_keyEnc; + description "Default key encryption"; + } + + // The following two properties are also defined in Ep MO. + // Here they reperesent per server configuration which would + // take precedence over global configuration defined in Ep MO + // Default value handled in local MO type + leaf timeout { + + // Type is a Local-MO-Defined-Type + type aaa_TimeSec_LdapProvider_timeout { + range "0..60"; + } + description "Timeout in Seconds"; + } + + // Default value handled in local MO type + leaf retries { + + // Type is a Local-MO-Defined-Type + type aaa_Retries_LdapProvider_retries; + description "Retries"; + } + + leaf operState { + config "false"; + + type aaa_ProviderState; + description "Provider Operational State"; + } + + leaf monitoringUser { + + type aaa_MonitoringUserType { + length "1..32"; + } + description "Periodic Server Monitoring Username"; + } + + leaf monitoringPassword { + + type aaa_MonitoringPasswordType; + description "Periodic Server Monitoring Password"; + } + leaf epgDn { + config "false"; + type string; + description "Reachability EpG"; + } + + // The vrf that this client group belongs to + leaf vrfName { + config "false"; + + type l3_VrfName; + description "Vrf Name"; + } + + leaf snmpIndex { + config "false"; + + type aaa_ProviderSnmpIndex; + description "Provider SNMP Index"; + } + + container rssecProvToEpg-items { + + uses aaa_RsSecProvToEpg_source-group; + } + } + + grouping aaa_LdapSearchMap-group { + description "Search Map"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + container entry-items { + list LdapSearchMapEntry-list { + key "type"; + + uses aaa_LdapSearchMapEntry-group; + description "Search Map Entry list"; + } + description "Search Map Entry"; + } + } + + grouping aaa_LdapSearchMapEntry-group { + description "Search Map Entry"; + + leaf type { + + type aaa_SearchMapEntryType; + description "Search Map Filter type"; + } + + leaf baseDn { + + type aaa_LdapDn; + description "LDAP Base DN"; + } + + leaf attribute { + + type aaa_LdapAttribute; + description "LDAP Attribute"; + } + + leaf searchFilter { + + type aaa_LdapFilter; + description "LDAP Filter"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_TacacsPlusEp-group { + description "Default TACACS+ Authentication Settings"; + + leaf deadtime { + + type aaa_TimeMin; + description "Duration for which non-reachable server is skipped"; + } + + leaf key { + + type aaa_EncKey; + description "Global TACACS+ server shared secret"; + } + + leaf keyEnc { + + type aaa_KeyEnc; + description "Default key encryption"; + } + + leaf loggingLevel { + + type aaa_LoggingLevel; + description "Tacacs Logging level"; + } + + leaf encryptedKeyType { + config "false"; + + type aaa_KeyEnc; + description "encryption type used for key from tacacs"; + } + + leaf encryptedKey { + config "false"; + + type aaa_EncKey; + description "Stored encrypted key for tacacsprovider in tacacs"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // add units for timeout. This helps display in CLI + leaf timeout { + + type aaa_TimeSec; + description "Timeout in Seconds"; + } + + leaf retries { + + type aaa_Retries; + description "Retries"; + } + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + container tacacsplusprovider-items { + list TacacsPlusProvider-list { + key "name"; + + uses aaa_TacacsPlusProvider-group; + description "TACACS+ Provider list"; + } + description "TACACS+ Provider"; + } + + // This MO represents a group of AAA TACACS+ servers. + container tacacsplusprovidergroup-items { + list TacacsPlusProviderGroup-list { + key "name"; + + uses aaa_TacacsPlusProviderGroup-group; + description "TACACS+ Provider Group list"; + } + description "TACACS+ Provider Group"; + } + + container tacacsservermonitor-items { + + uses aaa_TacacsServerMonitor-group; + description "Periodic server monitoring for Radius/tacacs"; + } + + container rtfabricResTacacsPlusEp-items { + + list RtFabricResTacacsPlusEp-list { + config "false"; + key "tDn"; + + uses fabric_RtFabricResTacacsPlusEp_target-group; + } + } + } + + grouping aaa_TacacsPlusProvider-group { + description "TACACS+ Provider"; + + leaf port { + + type aaa_Port; + description "Port"; + } + + leaf authProtocol { + + type aaa_authenticationProtocol; + default "pap"; + description "TACACS+ Authentication Protocol"; + } + + leaf singleConnection { + + type aaa_Boolean; + default "no"; + description "TACACS+ single connection mode enabled"; + } + + leaf monitoringIdleTime { + + type aaa_IdleTimer; + description "Idle timer to monitor tacacs server"; + } + + leaf monitoringPasswordType { + + type aaa_LdapPwdEnc; + description "Monitoring password type"; + } + + leaf encryptedKeyType { + config "false"; + + type aaa_KeyEnc; + description "encryption type used for key"; + } + + leaf encryptedKey { + config "false"; + + type aaa_EncKey; + description "Stored encrypted key for tacacsplusprovider"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(([a-zA-Z]|[a-zA-Z0-9-]*[a-zA-Z0-9])\\.)*([A-Za-z]|[A-Za-z0-9-]*[A-Za-z0-9])|((([0-9a-fA-F]{1,4}:){6}(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|((::([0-9a-fA-F]{1,4}:){5})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|((([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){4})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:)?[0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){3})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,2}[0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){2})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,3}[0-9a-fA-F]{1,4})?::[0-9a-fA-F]{1,4}:)(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,4}[0-9a-fA-F]{1,4})?::)(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,5}[0-9a-fA-F]{1,4})?::)[0-9a-fA-F]{1,4})|((([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4})?::))"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf key { + + type aaa_EncKey; + description "Key"; + } + + // Default value handled in local MO type + leaf keyEnc { + + // Type is a Local-MO-Defined-Type + type aaa_KeyEnc_TacacsPlusProvider_keyEnc; + description "Default key encryption"; + } + + // The following two properties are also defined in Ep MO. + // Here they reperesent per server configuration which would + // take precedence over global configuration defined in Ep MO + // Default value handled in local MO type + leaf timeout { + + // Type is a Local-MO-Defined-Type + type aaa_TimeSec_TacacsPlusProvider_timeout { + range "0..60"; + } + description "Timeout in Seconds"; + } + + // Default value handled in local MO type + leaf retries { + + // Type is a Local-MO-Defined-Type + type aaa_Retries_TacacsPlusProvider_retries; + description "Retries"; + } + + leaf monitoringUser { + + type aaa_MonitoringUserType { + length "1..32"; + } + description "Periodic Server Monitoring Username"; + } + + leaf monitoringPassword { + + type aaa_MonitoringPasswordType; + description "Periodic Server Monitoring Password"; + } + leaf epgDn { + config "false"; + type string; + description "Reachability EpG"; + } + + leaf snmpIndex { + config "false"; + + type aaa_ProviderSnmpIndex; + description "Provider SNMP Index"; + } + + container rssecProvToEpg-items { + + uses aaa_RsSecProvToEpg_source-group; + } + } + + grouping aaa_TacacsPlusProviderGroup-group { + description "TACACS+ Provider Group"; + + leaf deadtime { + + type aaa_ProviderGroupDeadtime; + description "Duration for which non-reachable server is skipped"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf snmpIndex { + config "false"; + + type aaa_ProviderGroupSnmpIndex; + description "Provider Group SNMP Index"; + } + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + + leaf vrf { + + type l3_VrfName; + description "VRF"; + } + + // The MO represents member of ProviderGroup + container providerref-items { + list ProviderRef-list { + key "name"; + + uses aaa_ProviderRef-group; + description "Provider Group Member list"; + } + description "Provider Group Member"; + } + } + + grouping aaa_TacacsServerMonitor-group { + description "Periodic server monitoring for Radius/tacacs"; + + leaf pwd { + + type aaa_MonitoringPasswordType; + description "Password"; + } + + leaf passwordType { + + type aaa_LdapPwdEnc; + description "Tacacs Server Monitor Password type"; + } + + leaf idleTime { + + type aaa_IdleTimer; + description "Idle timer to monitor tacacs/radius server"; + } + + leaf name { + + type pol_ObjName { + + // Copied from "aaa:User" type + length "0..64"; + pattern ".*[a-zA-Z0-9][a-zA-Z0-9_\\.-\\\\\\+=$@]{0,31}.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_AuthRealm-group { + description "AAA Authentication"; + + // default role policy for remote user + leaf defRolePolicy { + + type aaa_NoRolePolicy; + default "assign-default-role"; + description "Default Role Policy"; + } + + leaf radDirectedReq { + + type aaa_Boolean; + default "no"; + description "Enable direct authentication requests to server"; + } + + leaf tacDirectedReq { + + type aaa_Boolean; + default "no"; + description "Enable direct authentication requests to server"; + } + + // for aaa logging level + leaf loggingLevel { + + type aaa_LoggingLevel; + description "AAA Logging level"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + container aaagroup-items { + list AaaServerGroup-list { + config "false"; + key "name"; + + uses aaa_AaaServerGroup-group; + description "Server groups list"; + } + description "Server groups"; + } + + // MO representing the Default Authentication configuration for + // all logins + container defaultauth-items { + + uses aaa_DefaultAuth-group; + description "Default Authentication Method for all Logins"; + } + container defaultauthor-items { + list DefaultAuthor-list { + key "cmdType"; + + uses aaa_DefaultAuthor-group; + description "Authorization Method for the domain list"; + } + description "Authorization Method for the domain"; + } + container consoleauthor-items { + list ConsoleAuthor-list { + key "cmdType"; + + uses aaa_ConsoleAuthor-group; + description "Console Authorization Method for the domain list"; + } + description "Console Authorization Method for the domain"; + } + + container defaultacc-items { + + uses aaa_DefaultAcc-group; + description "Accounting Method for the domain"; + } + + container pkisshcert-items { + + uses aaa_PkiSSHCertificate-group; + description "Authorization Method for the application"; + } + + container pkisshpubkey-items { + + uses aaa_PkiSSHPublicKey-group; + description "Authorization Method for the application"; + } + + container loginstatuslogging-items { + + uses aaa_LoginStatusLogging-group; + description "Logging options for failed and successful login attempts"; + } + + container authreject-items { + + uses aaa_AuthReject-group; + description "Maximum number of rejected authentication attempts"; + } + container bypassuser-items { + list ByPassUser-list { + key "userName"; + + uses aaa_ByPassUser-group; + description "Option to bypass AAA for user list"; + } + description "Option to bypass AAA for user"; + } + + // MO representing the Authentication configuration for Console + // Login + container consoleauth-items { + + uses aaa_ConsoleAuth-group; + description "Console Authentication Method"; + } + + container rtfabricResAuthRealm-items { + + list RtFabricResAuthRealm-list { + config "false"; + key "tDn"; + + uses fabric_RtFabricResAuthRealm_target-group; + } + } + } + + grouping aaa_AaaServerGroup-group { + description "Server groups"; + + leaf name { + config "false"; + + type aaa_ProviderGroupName; + description "server Group"; + } + + leaf protocol { + config "false"; + + type aaa_ProviderGroupProtocol; + description "server Group protocol"; + } + } + + grouping aaa_DefaultAuth-group { + description "Default Authentication Method for all Logins"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // The realm to be used for processing + // authentication/accounting requests + leaf realm { + + type aaa_Realm; + description "Realm"; + } + + // This property specifies the name of ProviderGroup which + // will be used for for authentication/accounting.The usage + // of this property value depends on the value of 'realm' + // property above. When an value is provided for property, + // this would restrict the servers which will be tried. + // When no value is provided, then all the servers will be + // tried for the protocol realm configured in the 'realm' + // property above. + leaf providerGroup { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup2 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup3 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup4 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup5 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup6 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup7 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup8 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + leaf invalidUserLog { + type boolean; + default "true"; + description "Enable logging for invalid users"; + } + leaf errEn { + type boolean; + default "true"; + description "Enable display of error message on login failures"; + } + + leaf authProtocol { + + type aaa_authenticationProtocol; + default "pap"; + description "Authentication Protocol"; + } + + leaf fallback { + + type aaa_Boolean; + description "Fallback in case all AAA servers configured for remote authentication are unreachable"; + } + + leaf local { + + type aaa_Boolean; + description "Use local username authentication"; + } + + leaf none { + + type aaa_Boolean; + default "no"; + description "No authentication"; + } + } + + grouping aaa_DefaultAuthor-group { + description "Authorization Method for the domain"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // The realm to be used for processing + // authentication/accounting requests + leaf realm { + config "false"; + + type aaa_Realm; + default "tacacs"; + description "Realm"; + } + + // This property specifies the name of ProviderGroup which + // will be used for for authentication/accounting.The usage + // of this property value depends on the value of 'realm' + // property above. When an value is provided for property, + // this would restrict the servers which will be tried. + // When no value is provided, then all the servers will be + // tried for the protocol realm configured in the 'realm' + // property above. + leaf providerGroup { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup2 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup3 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup4 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup5 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup6 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup7 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup8 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + leaf authorMethodNone { + type boolean; + description "No authorization"; + } + leaf localRbac { + type boolean; + default "true"; + description "Use Local RBAC based Authorization"; + } + + leaf cmdType { + + type aaa_CmdType; + description "Type of command for authorization"; + } + } + + grouping aaa_ConsoleAuthor-group { + description "Console Authorization Method for the domain"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // The realm to be used for processing + // authentication/accounting requests + leaf realm { + config "false"; + + type aaa_Realm; + default "tacacs"; + description "Realm"; + } + + // This property specifies the name of ProviderGroup which + // will be used for for authentication/accounting.The usage + // of this property value depends on the value of 'realm' + // property above. When an value is provided for property, + // this would restrict the servers which will be tried. + // When no value is provided, then all the servers will be + // tried for the protocol realm configured in the 'realm' + // property above. + leaf providerGroup { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup2 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup3 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup4 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup5 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup6 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup7 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup8 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + leaf authorMethodNone { + type boolean; + description "No authorization"; + } + leaf localRbac { + type boolean; + default "true"; + description "Use Local RBAC based Authorization"; + } + + leaf cmdType { + + type aaa_CmdType; + description "Type of command for authorization"; + } + } + + grouping aaa_DefaultAcc-group { + description "Accounting Method for the domain"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // The realm to be used for processing + // authentication/accounting requests + leaf realm { + + type aaa_Realm; + description "Realm"; + } + + // This property specifies the name of ProviderGroup which + // will be used for for authentication/accounting.The usage + // of this property value depends on the value of 'realm' + // property above. When an value is provided for property, + // this would restrict the servers which will be tried. + // When no value is provided, then all the servers will be + // tried for the protocol realm configured in the 'realm' + // property above. + leaf providerGroup { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup2 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup3 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup4 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup5 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup6 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup7 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup8 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + leaf accMethodNone { + type boolean; + default "true"; + description "No accounting"; + } + leaf localRbac { + type boolean; + default "true"; + description "Use Local"; + } + } + + grouping aaa_PkiSSHCertificate-group { + description "Authorization Method for the application"; + leaf local { + type boolean; + description "Use Local RBAC based Authorization"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // The realm to be used for processing + // authentication/accounting requests + leaf realm { + + type aaa_Realm; + description "Realm"; + } + + // This property specifies the name of ProviderGroup which + // will be used for for authentication/accounting.The usage + // of this property value depends on the value of 'realm' + // property above. When an value is provided for property, + // this would restrict the servers which will be tried. + // When no value is provided, then all the servers will be + // tried for the protocol realm configured in the 'realm' + // property above. + leaf providerGroup { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup2 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup3 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup4 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup5 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup6 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup7 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup8 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + } + + grouping aaa_PkiSSHPublicKey-group { + description "Authorization Method for the application"; + leaf local { + type boolean; + description "Use Local RBAC based Authorization"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // The realm to be used for processing + // authentication/accounting requests + leaf realm { + + type aaa_Realm; + description "Realm"; + } + + // This property specifies the name of ProviderGroup which + // will be used for for authentication/accounting.The usage + // of this property value depends on the value of 'realm' + // property above. When an value is provided for property, + // this would restrict the servers which will be tried. + // When no value is provided, then all the servers will be + // tried for the protocol realm configured in the 'realm' + // property above. + leaf providerGroup { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup2 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup3 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup4 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup5 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup6 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup7 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup8 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + } + + grouping aaa_LoginStatusLogging-group { + description "Logging options for failed and successful login attempts"; + leaf enableLoginFailureLogging { + type boolean; + default "true"; + description "Syslog message on failed login attempt"; + } + leaf enableLoginSuccessLogging { + type boolean; + default "true"; + description "Syslog message on successful login attempt"; + } + } + + grouping aaa_AuthReject-group { + description "Maximum number of rejected authentication attempts"; + leaf failAttempt { + type uint16 { + range "0..65535"; + } + description "Maximum number of failed attempts"; + } + leaf timeIntervel { + type uint16 { + range "0..65535"; + } + description "Time period for failed attempts"; + } + leaf blockTime { + type uint16 { + range "0..65535"; + } + description "Block time period in seconds"; + } + } + + grouping aaa_ByPassUser-group { + description "Option to bypass AAA for user"; + leaf userName { + type string { + length "1..28"; + } + description "Username to include for bypassing AAA"; + } + leaf accounting { + type boolean; + description "By pass aaa accounting"; + } + leaf authorization { + type boolean; + description "By pass aaa authorization"; + } + } + + grouping aaa_ConsoleAuth-group { + description "Console Authentication Method"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // The realm to be used for processing + // authentication/accounting requests + leaf realm { + + type aaa_Realm; + description "Realm"; + } + + // This property specifies the name of ProviderGroup which + // will be used for for authentication/accounting.The usage + // of this property value depends on the value of 'realm' + // property above. When an value is provided for property, + // this would restrict the servers which will be tried. + // When no value is provided, then all the servers will be + // tried for the protocol realm configured in the 'realm' + // property above. + leaf providerGroup { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup2 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup3 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup4 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup5 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup6 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup7 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup8 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + leaf invalidUserLog { + type boolean; + default "true"; + description "Enable logging for invalid users"; + } + leaf errEn { + type boolean; + default "true"; + description "Enable display of error message on login failures"; + } + + leaf authProtocol { + + type aaa_authenticationProtocol; + default "pap"; + description "Authentication Protocol"; + } + + leaf fallback { + + type aaa_Boolean; + description "Fallback in case all AAA servers configured for remote authentication are unreachable"; + } + + leaf local { + + type aaa_Boolean; + default "no"; + description "Use local username authentication"; + } + + leaf none { + + type aaa_Boolean; + default "no"; + description "No authentication"; + } + } + + grouping aaa_LoginDomain-group { + description "Login Domain"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9][a-zA-Z0-9_]{0,63}.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // MO representing the Authentication configuration for + // a domain login - this is always a child of a LoginDomain object + container domainauth-items { + + uses aaa_DomainAuth-group; + description "Authentication Method for the Domain"; + } + + container rtaaaLoginDomain-items { + + list RtAaaLoginDomain-list { + config "false"; + key "tDn"; + + uses aaa_RtAaaLoginDomain_target-group; + } + } + } + + grouping aaa_DomainAuth-group { + description "Authentication Method for the Domain"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // The realm to be used for processing + // authentication/accounting requests + leaf realm { + + // Type is a Local-MO-Defined-Type + type aaa_Realm_DomainAuth_realm; + description "Realm"; + } + + // This property specifies the name of ProviderGroup which + // will be used for for authentication/accounting.The usage + // of this property value depends on the value of 'realm' + // property above. When an value is provided for property, + // this would restrict the servers which will be tried. + // When no value is provided, then all the servers will be + // tried for the protocol realm configured in the 'realm' + // property above. + leaf providerGroup { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup2 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup3 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup4 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup5 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup6 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup7 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup8 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + leaf invalidUserLog { + type boolean; + default "true"; + description "Enable logging for invalid users"; + } + leaf errEn { + type boolean; + default "true"; + description "Enable display of error message on login failures"; + } + + leaf authProtocol { + + type aaa_authenticationProtocol; + default "pap"; + description "Authentication Protocol"; + } + + leaf fallback { + + type aaa_Boolean; + description "Fallback in case all AAA servers configured for remote authentication are unreachable"; + } + + leaf local { + + type aaa_Boolean; + description "Use local username authentication"; + } + + leaf none { + + type aaa_Boolean; + default "no"; + description "No authentication"; + } + + // MO representing the Default Authentication configuration for + // all logins + container defaultauth-items { + + uses aaa_DefaultAuth-group; + description "Default Authentication Method for all Logins"; + } + + // MO representing the Authentication configuration for Console + // Login + container consoleauth-items { + + uses aaa_ConsoleAuth-group; + description "Console Authentication Method"; + } + } + + grouping aaa_LoginProtection-group { + description "Specifies the System login block for attempts and within"; + leaf loginBlockTimeOnDoSAttack { + type uint32 { + range "0..65535"; + } + description "system login block time in seconds"; + } + leaf loginAttempts { + type uint32 { + range "0..65535"; + } + description "system login fail attempts value"; + } + leaf loginAttemptsFailureThreshold { + type uint32 { + range "0..65535"; + } + description "system login watch period for fail attempts"; + } + leaf loginAccessList { + type string { + length "0..64"; + } + description "configuration for system login access list name"; + } + } + + grouping aaa_PostLoginBanner-group { + description "Post Login Banner"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf message { + + type aaa_BannerMsg; + description "Login Banner Message"; + } + + leaf guiMessage { + + type aaa_BannerMsg; + description "Login GUI Message"; + } + + leaf delimiter { + + type aaa_Delimiter; + description "Delimiter character"; + } + } + + grouping aaa_PreLoginBanner-group { + description "Pre Login Banner"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf message { + + type aaa_BannerMsg; + description "Login Banner Message"; + } + + leaf guiMessage { + + type aaa_BannerMsg; + description "Login GUI Message"; + } + + leaf delimiter { + + type aaa_Delimiter; + description "Delimiter character"; + } + + container rtpreLoginBanner-items { + + uses aaa_RtPreLoginBanner_target-group; + } + } + + grouping aaa_RemoteUser-group { + description "Remote User"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_][a-zA-Z0-9_\\.@-]{0,31}.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + container userdomain-items { + list RemoteUserDomain-list { + config "false"; + key "name"; + + uses aaa_RemoteUserDomain-group; + description "Remote User Domain list"; + } + description "Remote User Domain"; + } + } + + grouping aaa_RemoteUserDomain-group { + description "Remote User Domain"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z][a-zA-Z0-9_\\.-]{0,31}.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + config "false"; + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + config "false"; + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + container role-items { + list RemoteUserRole-list { + config "false"; + key "name"; + + uses aaa_RemoteUserRole-group; + description "Remote User Role list"; + } + description "Remote User Role"; + } + } + + grouping aaa_RemoteUserRole-group { + description "Remote User Role"; + + leaf privType { + config "false"; + + type aaa_UserRolePrivType; + description "Privilege Type"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z][a-zA-Z0-9_\\.-]{0,31}.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + config "false"; + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + config "false"; + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_User-group { + description "Local User"; + + // The user's first name + leaf firstName { + + type naming_Name256 { + length "0..32"; + } + description "First Name"; + } + + // The user's last name + leaf lastName { + + type naming_Name256 { + length "0..32"; + } + description "Last Name"; + } + + // The user's e-mail address + leaf email { + + type aaa_Email; + description "Email Address"; + } + + // The user's phone number + leaf phone { + + type aaa_Phone; + description "Phone Number"; + } + + // The expiration date of this account + // Default value handled in local MO type + leaf expiration { + + // Type is a Local-MO-Defined-Type + type aaa_Date_User_expiration; + description "Account Expiration Date"; + } + + // A boolean value indicating whether this account has an expiration date or not + leaf expires { + + type aaa_Boolean; + default "no"; + description "Expiration Set Status"; + } + + leaf allowExpired { + + type aaa_Boolean; + default "no"; + description "Allow expired user to be configured"; + } + + leaf accountStatus { + + type aaa_AccountStatus; + description "Account Status"; + } + + leaf pwd { + + type aaa_Passwd; + description "Password"; + } + + leaf pwdEncryptType { + + type aaa_KeyEncUserPass; + default "Encrypt"; + description "Password Encryption Type"; + } + + // This is to allow the admin/aaa users to clear + // locally-authenticated users's password history + leaf clearPwdHistory { + + type aaa_Clear; + description "Clear Password History"; + } + + leaf unixUserId { + + type aaa_UnixUID; + description "TBD"; + } + + leaf shelltype { + + type aaa_loginShellType; + description "User Shelltype Access"; + } + + leaf force { + + type aaa_Boolean; + default "no"; + description "Delete user entry forcibly"; + } + + leaf name { + + type pol_ObjName { + + // Copied from "aaa:UserName" type + length "0..64"; + pattern ".*[a-zA-Z0-9_][a-zA-Z0-9_\\.'-\\\\\\+=$@]{0,31}.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + container sshcertauth-items { + + uses aaa_SshCertAuth-group; + description "Certificate Based User Authentication"; + } + container userkey-items { + list UserSshKey-list { + key "type"; + + uses aaa_UserSshKey-group; + description "Ssh Keys list"; + } + description "Ssh Keys"; + } + + container sshauth-items { + + uses aaa_SshAuth-group; + description "SSH Authorization"; + } + container usercert-items { + list UserCert-list { + key "name"; + + uses aaa_UserCert-group; + description "X509 Certificate list"; + } + description "X509 Certificate"; + } + container userdomain-items { + list UserDomain-list { + key "name"; + + uses aaa_UserDomain-group; + description "User Domain list"; + } + description "User Domain"; + } + + container userpassphrase-items { + + uses aaa_UserPassPhrase-group; + description "User Specific Passphrase Expiry"; + } + + // Do not taking backup of this MO, this user data become invalid + // with time + container userdata-items { + + uses aaa_UserData-group; + description "User Password Change History"; + } + } + + grouping aaa_SshCertAuth-group { + description "Certificate Based User Authentication"; + leaf certDn { + type string { + length "0..512"; + } + description "Distinguished Name For SSH X.509 Certificate"; + } + leaf algorithm { + type string { + length "0..4"; + } + description "DSA Or RSA Algorithm"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_UserSshKey-group { + description "Ssh Keys"; + + leaf type { + + type comm_SshKeyType; + description "SSH server key type"; + } + leaf keyLen { + type uint32 { + range "0..4096"; + } + default "1024"; + description "Length of the key in bytes"; + } + } + + grouping aaa_SshAuth-group { + description "SSH Authorization"; + + leaf data { + + type aaa_SshData; + description "Ssh Authorization Data"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_UserCert-group { + description "X509 Certificate"; + + leaf data { + + type aaa_UserCertDataType; + description "User X509 Certificate"; + } + leaf fingerprint { + config "false"; + type string; + } + + // Populated with the output of openssl output of the x509 certificate analysis + leaf certificateDecodeInformation { + config "false"; + + type aaa_UserCertDataType; + description "TBD"; + } + + // Populated with the PEM format public key extracted from the x509 certificate + leaf publicKey { + config "false"; + + type aaa_UserCertDataType; + description "TBD"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_UserDomain-group { + description "User Domain"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z][a-zA-Z0-9_\\.-]{0,31}.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + container role-items { + list UserRole-list { + key "name"; + + uses aaa_UserRole-group; + description "User Role list"; + } + description "User Role"; + } + } + + grouping aaa_UserRole-group { + description "User Role"; + + leaf privType { + + type aaa_UserRolePrivType; + description "Privilege Type"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_UserPassPhrase-group { + description "User Specific Passphrase Expiry"; + + leaf pwdLifeTime { + + type aaa_PwdLifeTime; + description "Password Life Time"; + } + + leaf pwdWarningTime { + + type aaa_PwdLifeTime; + description "warning time of user passphrase (in days)"; + } + + leaf pwdGraceTime { + + type aaa_PwdLifeTime; + description "grace time of user passphrase (in days)"; + } + } + + grouping aaa_UserData-group { + description "User Password Change History"; + leaf pwdChangedDate { + config "false"; + type union { + type string; + type uint64; + } + description "Password Change Date"; + } + + // User password history, stores encrypted passwords + // max of PwdProfile.historyCount recent passwords are stored + leaf pwdHistory { + config "false"; + + type aaa_PwdHistory; + description "Password History"; + } + + // How many times user has changed the password within + // the given time interval + // (pwdChangeIntervalBegin + PwdProfile.changeInterval) + leaf pwdChangeCount { + config "false"; + + type aaa_PwdChangeCount; + description "Password Change Count"; + } + leaf pwdChangeIntervalBegin { + config "false"; + type union { + type string; + type uint64; + } + description "Password Change Interval Begin Date"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_Role-group { + description "Role"; + + leaf denyVRF { + + type aaa_Boolean; + default "no"; + description "Deny all VRF except allowed ones"; + } + + leaf allowedVRF { + + type aaa_RuleEntityType; + description "mention the allowed VRF if denyVRF is set to yes"; + } + + leaf denyVLAN { + + type aaa_Boolean; + default "no"; + description "Deny all VLAN except allowed ones"; + } + + leaf allowedVLAN { + + type aaa_RuleEntityType; + description "mention the allowed VLAN if denyVLAN is set to yes"; + } + + leaf denyIntf { + + type aaa_Boolean; + default "no"; + description "Deny all interfaces except allowed ones"; + } + leaf priv { + type string; + description "Privilege"; + } + + leaf rolePrivType { + + type aaa_UserRolePrivType; + description "Privilege Type"; + } + + leaf resetToFactory { + + type aaa_Boolean; + default "no"; + description "Trigger Reset to Factory settings"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr { + length "0..128"; + pattern ".*"; + } + description "Description of the specified attribute"; + } + container rule-items { + list RoleRule-list { + key "ruleNumber"; + + uses aaa_RoleRule-group; + description "Rules for role list"; + } + description "Rules for role"; + } + container intf-items { + list RoleIntf-list { + key "intfName"; + + uses aaa_RoleIntf-group; + description "Permit specific interface name and deny rest list"; + } + description "Permit specific interface name and deny rest"; + } + container permitintf-items { + list PermitIntf-list { + key "ifName"; + + uses aaa_PermitIntf-group; + description "Enter the range of interfaces accessible the role list"; + } + description "Enter the range of interfaces accessible the role"; + } + container permitvlan-items { + list PermitVlan-list { + key "vlanRange"; + + uses aaa_PermitVlan-group; + description "Enter the range of vlans accessible the role list"; + } + description "Enter the range of vlans accessible the role"; + } + container permitvrf-items { + list PermitVrf-list { + key "vrfName"; + + uses aaa_PermitVrf-group; + description "Enter the range of vrf accessible the role list"; + } + description "Enter the range of vrf accessible the role"; + } + } + + grouping aaa_RoleRule-group { + description "Rules for role"; + + leaf ruleNumber { + + type aaa_RuleNumberType; + description "Role Rule number"; + } + + leaf permission { + + type aaa_RulePermissionType; + description "Permission type permit or deny"; + } + + leaf ruleAccess { + + type aaa_RuleAccessType; + description "Rule access type command or read or read-write"; + } + + leaf ruleScope { + + type aaa_RuleScopeType; + description "Role Rule scope feature or feature-group or OID"; + } + + leaf cmdStr { + + type aaa_RuleCmdStrType; + description "Allowed command string pattern"; + } + + leaf scopeEntity { + + type aaa_RuleEntityType; + description "Allowed scope string"; + } + } + + grouping aaa_RoleIntf-group { + description "Permit specific interface name and deny rest"; + leaf intfName { + type string; + description "interface name which can be allowed and deny rest"; + } + + leaf allowInst { + + type aaa_RuleEntityType; + description "interface instances which can be allowed and deny rest"; + } + } + + grouping aaa_PermitIntf-group { + description "Enter the range of interfaces accessible the role"; + + leaf ifName { + + type nw_IfId; + description "Enter the interface range"; + } + } + + grouping aaa_PermitVlan-group { + description "Enter the range of vlans accessible the role"; + leaf vlanRange { + type string; + description "Enter the vlan range"; + } + } + + grouping aaa_PermitVrf-group { + description "Enter the range of vrf accessible the role"; + + leaf vrfName { + + type aaa_RuleEntityType { + pattern ".*[-a-zA-Z0-9_:;!@#$\\^\\*=\\+\\{\\}\\.]{1,32}.*"; + } + description "Enter the vrf name to access the role"; + } + } + + grouping aaa_FactoryRole-group { + description "Role"; + leaf priv { + config "false"; + type string; + description "Privilege"; + } + + leaf resetToFactory { + + type aaa_Boolean; + default "no"; + description "Trigger Reset to Factory settings"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z][a-zA-Z0-9_\\.-]{0,31}.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_Domain-group { + description "Security Domain"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z][a-zA-Z0-9_\\.-]{0,31}.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_PrivSecret-group { + description "Enable user to a higher privilege after prompting for secret password"; + + leaf pwd { + + type aaa_Passwd; + description "Password for user privilege escalation"; + } + + leaf encType { + + type aaa_SecretEncType; + description "Type of encryption specified"; + } + + leaf privLvl { + + type aaa_PrivLvlType; + description "Privilege level to which the password is set"; + } + } + + grouping aaa_PwdProfile-group { + description "Password Change/Expiration Policy"; + + // Interval used to warn the users whose password is closed + // to expiry date. warn the user before expirationWarnTime + // days of actual password expiration. + leaf expirationWarnTime { + + type aaa_PwdExpWarnTime; + description "Password Expiration Warn Time in Days"; + } + + // How many recent user passwords should be stored in user + // password history. + leaf historyCount { + + type aaa_HistoryDepth; + description "Password History Count"; + } + + // There are two ways of restricting the user from changing + // the password frequently. + // 1. allow no passwd changes within given time interval. + // 2. allow max of n psswd changes within give time interval. + // noChangeInterval holds the 1st policy mentioned above + leaf noChangeInterval { + + type aaa_PwdChangeInterval; + description "No Password Change Interval in Hours"; + } + + // ChangeInterval holds the 2nd policy mentioned above + leaf changeInterval { + + type aaa_PwdChangeInterval; + description "Change Interval in Hours"; + } + + // stores which one of the above two policies is active now + leaf changeDuringInterval { + + type aaa_PwdPolicy; + description "Password Policy"; + } + + // How many password changes allowed within changeInterval + leaf changeCount { + + type aaa_PwdChangeCount; + description "Number of Password Changes in Interval"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping aaa_RoleFeatureGroup-group { + description "Create or Modify role feature group"; + leaf groupName { + type string { + length "1..32"; + } + description "Enter feature-group name"; + } + + // Feature name configuration + container featurename-items { + list FeatureName-list { + key "name"; + + uses aaa_FeatureName-group; + description "Add features to the Feature-group list"; + } + description "Add features to the Feature-group"; + } + } + + grouping aaa_FeatureName-group { + description "Add features to the Feature-group"; + leaf name { + type string { + length "1..32"; + } + description "Enter the feature name"; + } + } + + grouping pki_Ep-group { + description "Public Key Management"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + container webtokendata-items { + + uses pki_WebTokenData-group; + description "Web Token Data"; + } + + // Csync2 Pre Shared Key - used to distribute the key to all IFC nodes + container csyncsharedkey-items { + + uses pki_CsyncSharedKey-group; + description "Csync Shared Key"; + } + + // Csync2 Policy - used to control csync timeout and enable/disable + container csyncpolicy-items { + + uses pki_CsyncPolicy-group; + description "File Synchronization Policy"; + } + + container dbgplgch-items { + + uses pki_DebugPluginChallenge-group; + description "Debug Plugin Challenge Values"; + } + container keyring-items { + list KeyRing-list { + key "name"; + + uses pki_KeyRing-group; + description "Key Ring list"; + } + description "Key Ring"; + } + + // CertificateAuthority object, also called Trust Points in DCOS + container tp-items { + list TP-list { + key "name"; + + uses pki_TP-group; + description "Certificate Authority list"; + } + description "Certificate Authority"; + } + + container calookup-items { + + uses pki_CertstoreLookup-group; + description "Certstore Lookup Configuration for Authentication"; + } + container certificatemap-items { + list CertificateMap-list { + key "name"; + + uses pki_CertificateMap-group; + description "Crypto CertificateMap Filters list"; + } + description "Crypto CertificateMap Filters"; + } + container sshauthcert-items { + list SshAuth-list { + key "certIssuerName"; + + uses pki_SshAuth-group; + description "Configure Mapping Filter for Ssh list"; + } + description "Configure Mapping Filter for Ssh"; + } + + container remotecert-items { + + uses pki_RemoteCertstore-group; + description "Remote CA Certstore Configuration"; + } + + container trustpool-items { + + uses pki_TrustPool-group; + description "CA Trustpool Policy Configuration"; + } + + container rtfabricResPkiEp-items { + + list RtFabricResPkiEp-list { + config "false"; + key "tDn"; + + uses fabric_RtFabricResPkiEp_target-group; + } + } + } + + grouping pki_WebTokenData-group { + description "Web Token Data"; + + // The encryption parameters cannot be modified by a client request + leaf key { + config "false"; + + type pki_AES128Key { + length "24"; + } + description "TBD"; + } + + leaf initializationVector { + config "false"; + + type pki_AES128IV { + length "24"; + } + description "TBD"; + } + + leaf hashSecret { + config "false"; + + type pki_SHA256_SharedSecret16 { + length "24"; + } + description "TBD"; + } + + // Token timeout modifications are allowed + leaf webtokenTimeoutSeconds { + + type pki_WebTokenTimeoutType; + description "Timeout in Seconds"; + } + + // Knob to control absolute maximum validity period for a webtoken beyond which it cannot be refreshed Units are in hours - minimum 4 hours, maximum 24 hours + leaf maximumValidityPeriod { + + type pki_WebTokenValidityPeriodType; + description "Maximum Validity Period in hours"; + } + + leaf uiIdleTimeoutSeconds { + + type pki_GuiIdleTimeoutType; + description "GUI Idle Timeout in Seconds"; + } + + leaf sessionRecordFlags { + + type pki_SessionRecordFlags; + description "Session Recording Options"; + } + leaf siteFingerprint { + config "false"; + type string; + description "Issuing Site Fingerprint"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping pki_CsyncSharedKey-group { + description "Csync Shared Key"; + + // The encryption parameters cannot be modified by any client requests + leaf key { + config "false"; + + type pki_Csync2KeyType; + description "TBD"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping pki_CsyncPolicy-group { + description "File Synchronization Policy"; + + leaf state { + + type pki_CsyncActivationStateType; + description "TBD"; + } + + leaf interval { + + type pki_CsyncRefreshIntervalType; + description "TBD"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Csync2 Element - contains + // a) file pattern + // b) type of pattern (include or exclude) + // c) symbolic name of the pattern + container csyncelem-items { + list CsyncElement-list { + key "name"; + + uses pki_CsyncElement-group; + description "File Pattern for Synchronization list"; + } + description "File Pattern for Synchronization"; + } + } + + grouping pki_CsyncElement-group { + description "File Pattern for Synchronization"; + leaf pattern { + type string; + } + + leaf type { + + type pki_CsyncElementType; + description "TBD"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping pki_DebugPluginChallenge-group { + description "Debug Plugin Challenge Values"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping pki_KeyRing-group { + description "Key Ring"; + + leaf adminState { + + type pki_KeyringState; + description "TBD"; + } + leaf regen { + type boolean; + default "false"; + description "Regenerate"; + } + + leaf key { + + type pki_PrivateKey; + description "TBD"; + } + + leaf modulus { + + type pki_Modulus; + description "Modulus"; + } + leaf exportable { + type boolean; + description "Enable to Make the Keypair Exportable"; + } + + leaf cert { + + type pki_Cert; + description "Certificate"; + } + + leaf certValidUntil { + config "false"; + + type pki_CertValidity; + description "Certificate Validity"; + } + + // Populated with the output of openssl output of the x509 certificate analysis + leaf certificateDecodeInformation { + config "false"; + + type pki_Cert; + description "Certificate Decode Information"; + } + + // trust point (CA) reference + // DN IS IMPLIED AND RESOLVED PROGRAMATICALLY + // refers="pki:TP" + leaf tp { + + type naming_Name; + description "Certificate Authority"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + container certreq-items { + + uses pki_CertReq-group; + description "Certificate Request"; + } + + container rtcommKeyRing-items { + + list RtCommKeyRing-list { + config "false"; + key "tDn"; + + uses comm_RtCommKeyRing_target-group; + description "Key Ring list"; + } + description "Key Ring"; + } + + container rtaaaKeyringRef-items { + + list RtAaaKeyringRef-list { + config "false"; + key "tDn"; + + uses aaa_RtAaaKeyringRef_target-group; + } + } + } + + grouping pki_CertReq-group { + description "Certificate Request"; + leaf pwd { + type string; + description "Password"; + } + + // TODO how to set this value to hostname by default + leaf subjName { + + type naming_Name256 { + length "1..64"; + } + description "Subject Name"; + } + + leaf email { + + type naming_Name256 { + length "0..40"; + pattern ".*[a-zA-Z0-9\\(\\)\\+,-./:@_\\^\\s]+.*"; + } + description "Email Address"; + } + + leaf country { + + type naming_Name { + pattern ".*[A-Z][A-Z].*"; + } + description "Country"; + } + + leaf state { + + type naming_Name256 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\(\\)\\+,-./:@_\\^\\s]+.*"; + } + description "State"; + } + + leaf locality { + + type naming_Name256 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\(\\)\\+,-./:@_\\^\\s]+.*"; + } + description "Locality"; + } + + leaf orgUnitName { + + type naming_Name256 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\(\\)\\+,-./:@_\\^\\s]+.*"; + } + description "Organization Unit Name"; + } + + leaf orgName { + + type naming_Name256 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\(\\)\\+,-./:@_\\^\\s]+.*"; + } + description "Organization Name"; + } + + // PEM encoded certificate request + leaf req { + config "false"; + + type pki_Cert; + description "TBD"; + } + } + + grouping pki_TP-group { + description "Certificate Authority"; + + leaf certChain { + + type pki_Cert; + description "Certificate Chain"; + } + + // Certificate Fingerprint populated by backend + leaf fp { + config "false"; + + type pki_FP; + description "TBD"; + } + leaf numCerts { + config "false"; + type uint32; + default "0"; + } + + leaf enrollmentType { + + type pki_CertEnrollType; + description "Configure Trustpoint Enrollment"; + } + + leaf revokeCheckConf { + + type pki_CertRevokeCheck; + description "Configure Trustpoint Revocation Check Methods"; + } + + leaf keyLabel { + + type pki_KeyLabel; + description "Trustpoint RSA Key-pair Label"; + } + leaf ocspUrl { + type string { + length "0..512"; + } + description "Configure TrustPoint Ocsp Url"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping pki_CertstoreLookup-group { + description "Certstore Lookup Configuration for Authentication"; + + leaf type { + + type pki_CertLookupType; + description "Certstore Type for Lookup"; + } + } + + grouping pki_CertificateMap-group { + description "Crypto CertificateMap Filters"; + + leaf name { + + type pki_FilterName; + description "CertificateMap Filter Name"; + } + + leaf subjectName { + + type pki_FilterName; + description "Subject Name of the Certificate"; + } + + leaf altnameEmail { + + type pki_FilterName; + description "Email Id as an Alternate Name"; + } + + leaf altnameUpn { + + type pki_FilterName; + description "User Principal Name as an Alternate Name"; + } + } + + grouping pki_SshAuth-group { + description "Configure Mapping Filter for Ssh"; + + leaf certIssuerName { + + type pki_FilterName; + description "Issuer Name of the Certificate"; + } + + leaf mapFilter1 { + + type pki_FilterName; + description "Mapping Filter to be Applied"; + } + + leaf mapFilter2 { + + type pki_FilterName; + description "Mapping Filter to be Applied"; + } + } + + grouping pki_RemoteCertstore-group { + description "Remote CA Certstore Configuration"; + + leaf ldapGroupName { + + type pki_ProviderGroupName; + description "Ldap Server Group Containing Remote CA"; + } + + leaf crlTimer { + + type pki_CrlRefreshTime; + description "Refresh Time to Fetch Crl from Remote Certstore"; + } + } + + grouping pki_TrustPool-group { + description "CA Trustpool Policy Configuration"; + leaf sourceUrl { + type string; + description "Configure Cabundle Source HTTP Url"; + } + + leaf vrf { + + type l3_VrfName; + description "Vrf to be Used to Contact HTTP Server"; + } + + leaf srcIf { + + type nw_IfId; + description "Source Interface to Reach HTTP Server"; + } + + container proxyserver-items { + + uses pki_HttpProxy-group; + description "Http Proxy Server Related Parameters"; + } + } + + grouping pki_HttpProxy-group { + description "Http Proxy Server Related Parameters"; + + leaf port { + + type pki_Port; + description "HTTP Proxy Server Port"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(([a-zA-Z]|[a-zA-Z0-9-]*[a-zA-Z0-9])\\.)*([A-Za-z]|[A-Za-z0-9-]*[A-Za-z0-9])|((([0-9a-fA-F]{1,4}:){6}(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|((::([0-9a-fA-F]{1,4}:){5})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|((([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){4})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:)?[0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){3})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,2}[0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:){2})(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,3}[0-9a-fA-F]{1,4})?::[0-9a-fA-F]{1,4}:)(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,4}[0-9a-fA-F]{1,4})?::)(([0-9a-fA-F]{1,4}:[0-9a-fA-F]{1,4})|(((25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9])\\.){3}(25[0-5]|([1-9]|1[0-9]|2[0-4])?[0-9]))))|(((([0-9a-fA-F]{1,4}:){0,5}[0-9a-fA-F]{1,4})?::)[0-9a-fA-F]{1,4})|((([0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4})?::))"; + } + description "IPV4/IPV6 Address or DNS Name of Proxy Server"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping security_Security-group { + description "Security Rules For User And Fips"; + + leaf commonCriteria { + + type aaa_Boolean; + default "no"; + description "Enable or Disable Common Criteria"; + } + + leaf enFipsMode { + + type aaa_Boolean; + default "no"; + description " Enable/Disable FIPS Mode"; + } + + // for security logging level + leaf loggingLevel { + + type arp_LoggingLevel; + description "Security Logging Level"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping smartcard_PasswdEncrypt-group { + description "password encryption aes feature"; + + leaf adminSt { + + type smartcard_AdminState; + description "TBD"; + } + + // Operational properties + leaf configErrMasterKey { + config "false"; + + type smartcard_SksdmasterkeyfaultBitmapT; + default "noerror"; + description "Error for master key unconfigured"; + } + } + + grouping stp_Entity-group { + description "STP Entity"; + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per stp instance information. There is + // only one instance of stp running in the system today + container inst-items { + + uses stp_Inst-group; + description "STP Instance"; + } + } + + grouping stp_Inst-group { + description "STP Instance"; + + // Spanning Tree operating mode + leaf mode { + + type stp_Mode; + description "Protocol Mode"; + } + + // Linecard ISSU type + leaf lcIssu { + + type stp_LcIssu; + description "Linecard ISSU type"; + } + + // pathcost options + leaf pathcostOp { + + type stp_PathcostOp; + description "Spanning tree pathcost options"; + } + + // Enable STP for FCoE VLANs + leaf fcoe { + + type stp_AdminSt; + description "enable spanning tree for fcoe vlan"; + } + + // Enable spanning tree bridge assurance + leaf bridge { + + type stp_AdminSt; + description "enable spanning-tree bridge assurance on all ports"; + } + + // spanning tree loopguard options + leaf loopguard { + + type stp_AdminSt; + default "disabled"; + description "enable loop guard on all ports"; + } + + // spanning tree L2 Gateway domain ID + leaf l2GStpDomId { + + type stp_L2GStpDomId; + description "spanning tree L2 Gateway Domain Id"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + // Default value handled in local MO type + leaf ctrl { + + // Type is a Local-MO-Defined-Type + type nw_InstCtrl_Inst_ctrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This object holds mcp information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses stp_If-group; + description "STP Interface list"; + } + description "STP Interface"; + } + + // Holds mst informaton at switch level + container mstent-items { + + uses stp_MstEntity-group; + description "STP MST Entity"; + } + + // stp pseudo-information, placeholder for future implementation + container pseudo-items { + + uses stp_PseudoInfo-group; + description "STP pseudo information"; + } + + // This object holds stp information that is operated at + // vlan level + container vlan-items { + list Vlan-list { + key "id"; + + uses stp_Vlan-group; + description "Vlan list"; + } + description "Vlan"; + } + } + + grouping stp_If-group { + description "STP Interface"; + + // Port mode + leaf mode { + + type stp_IfMode; + description "Port Mode"; + } + + // Interface controls + leaf ctrl { + + type stp_IfControl; + description "Controls"; + } + + // guard mode + leaf guard { + + type stp_Guard; + description "Guard Mode"; + } + + // bpdufilter mode + leaf bpdufilter { + + type stp_Bpdufilter; + description "bpdufilter mode"; + } + + // bpduguard mode + leaf bpduguard { + + type stp_BPDUGuard; + description "Guard Mode"; + } + + // Link Type + leaf linkType { + + type stp_LinkType; + description "Link Type"; + } + + // Port Priority + leaf priority { + + type stp_PortPriority; + description "Port Priority"; + } + + // Port path cost + leaf cost { + + type stp_Cost; + description "Port Path Cost"; + } + + // Port simulate pvst + leaf simulatePvst { + + type stp_SimulateIf; + description "Port simulate pvst"; + } + + // Port lc issu + leaf lcIssu { + + type stp_LcIssu; + description "Port lc issu"; + } + + // Port mst prestd + leaf prestdCfg { + + type stp_AdminSt; + default "disabled"; + description "Port mst prestd"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + // This object describes interface level config per vlan + container vlan-items { + list VlanCfg-list { + key "vlanId"; + + uses stp_VlanCfg-group; + description "Interface Level Configure per Vlan list"; + } + description "Interface Level Configure per Vlan"; + } + + // This object describes interface level config per mst instance + container mst-items { + list MstCfg-list { + key "mstId"; + + uses stp_MstCfg-group; + description "Interface Level Configure per MST list"; + } + description "Interface Level Configure per MST"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + } + + grouping stp_VlanCfg-group { + description "Interface Level Configure per Vlan"; + + // Vlan Id + leaf vlanId { + + type stp_VlanId; + description "Vlan Id"; + } + + // Port Priority in increments of 32 + leaf priority { + + type stp_PortPriority; + description "Port Priority"; + } + + // Port path cost + leaf cost { + + type stp_Cost; + description "Port Path Cost"; + } + } + + grouping stp_MstCfg-group { + description "Interface Level Configure per MST"; + + // MST Id + leaf mstId { + + type stp_MstId; + description "Mst Instance Id"; + } + + // Port Priority in increments of 32 + leaf priority { + + type stp_PortPriority; + description "Port Priority"; + } + + // Port path cost + leaf cost { + + type stp_Cost; + description "Port Path Cost"; + } + } + + grouping stp_MstEntity-group { + description "STP MST Entity"; + + // spanning tree max hops + leaf maxHops { + + type stp_MaxHops; + description "STP mst max hops"; + } + + // enable spanning tree simulation + leaf simulate { + + type stp_Simulate; + description "spanning tree simulation"; + } + + // operation error + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operation Error Qualifier"; + } + + // Region name + leaf regName { + + type stp_RegName; + description "Region Name"; + } + + // Region revision + leaf rev { + + type stp_RegRev; + description "Region Revision"; + } + + // spanning tree forward delay + leaf fwdTime { + + type stp_FwdTime; + description "STP forward delay"; + } + + // spanning tree hello interval + leaf helloTime { + + type stp_HelloTime; + description "STP Hello interval"; + } + + // spanning tree max age interval + leaf maxAge { + + type stp_MaxAge; + description "STP max age interval"; + } + + // This objects describes an mst instance + container mst-items { + list MstDom-list { + key "id"; + + uses stp_MstDom-group; + description "MST Domain list"; + } + description "MST Domain"; + } + } + + grouping stp_MstDom-group { + description "MST Domain"; + + // MST config state + leaf cfgSt { + + type stp_AdminSt; + default "disabled"; + description "Instance config State"; + } + + // Id + leaf id { + + type stp_MstId; + description "ID Property has READ-Create access."; + } + + // root type + leaf root { + + type stp_Root; + description "Root Options"; + } + + // network diameter + leaf diameter { + + type stp_Diameter; + description "Network Diameter"; + } + + // priority + leaf priority { + + type stp_BridgePriority; + description "Bridge Priority"; + } + + // VlanRange + leaf vlanRange { + + type stp_VlanBitmap; + description "Vlan Range Bitmap"; + } + + // Root type for bridge + leaf rootType { + + type stp_RootType; + description "Bridge Root Type"; + } + + // Root Mode added for root bridge cli, since the cli accepts hello time and updates forward_delay + // and max_Age based on hello time and diameter entered. If hello time is entered in normal mode for + // spanning tree using "spanning tree vlan ", this should not update the values + // of forward_delay and max_age. To differentiate this property has been added. When is + // used with the root mode cli, values will be updated depending on if this property is set or not + leaf rootMode { + + type stp_RootMode; + description "Bridge Root Config mode"; + } + leaf bridgePriority { + config "false"; + type uint16; + description "Bridge ID: Priority with extended system ID"; + } + leaf bridgeAddress { + config "false"; + type address_Mac; + description "Bridge ID: MAC address"; + } + leaf rootPriority { + config "false"; + type uint16; + description "Root ID: Priority"; + } + leaf rootAddress { + config "false"; + type address_Mac; + description "Root ID: MAC address"; + } + leaf rootPortPriority { + config "false"; + type uint16; + description "Root port ID: Priority"; + } + leaf rootPortNumber { + config "false"; + type uint16; + description "Root port ID: Port number"; + } + + // Root port name. The interface name that corresponds to the + // root port. E.g. eth1/1. + leaf rootPort { + config "false"; + + type nw_IfId; + description "Root port name"; + } + leaf rootPathCost { + config "false"; + type uint32; + description "Root path cost"; + } + leaf topologyChange { + config "false"; + type uint32; + description "topology change flag"; + } + leaf tcDetected { + config "false"; + type uint32; + description "topology change detected flag"; + } + leaf tcCount { + config "false"; + type uint32; + description "topology change count"; + } + leaf tcTimeSinceLast { + config "false"; + type union { + type string; + type uint64; + } + description "topology change time since last in seconds"; + } + leaf tcLast { + config "false"; + type union { + type string; + type uint64; + } + description "last topology change seconds"; + } + + // topology change initiator + leaf tcInitiator { + config "false"; + + type nw_IfId; + description "topology change initiator"; + } + leaf tcChangeTimer { + config "false"; + type uint32; + description "topology change timer"; + } + leaf holdTime { + config "false"; + type uint32; + description "hold time for the tree"; + } + + // This objects describes a vlan range + container vlan-items { + list VlanRange-list { + config "false"; + key "start end"; + + uses stp_VlanRange-group; + description "Vlan Range list"; + } + description "Vlan Range"; + } + + // This object holds STP MST interface operational + // information. + container if-items { + list MstIf-list { + config "false"; + key "id"; + + uses stp_MstIf-group; + description "STP MST interface operational list"; + } + description "STP MST interface operational"; + } + } + + grouping stp_VlanRange-group { + description "Vlan Range"; + + // Start of the range + leaf start { + config "false"; + + type stp_VlanId; + description "Start"; + } + + // End of the range + leaf end { + config "false"; + + type stp_VlanId; + description "End"; + } + } + + grouping stp_MstIf-group { + description "STP MST interface operational"; + + // Interface ID. + leaf id { + config "false"; + + type nw_IfId; + description "Interface ID"; + } + leaf designatedRootPriority { + config "false"; + type uint16; + description "Designated root priority"; + } + leaf designatedRootAddress { + config "false"; + type address_Mac; + description "Designated root MAC address"; + } + leaf designatedRootCost { + config "false"; + type uint32; + description "Designated root cost"; + } + leaf designatedBridgePriority { + config "false"; + type uint16; + description "Designated bridge priority"; + } + leaf designatedBridgeAddress { + config "false"; + type address_Mac; + description "Designated bridge MAC address"; + } + leaf designatedPortPriority { + config "false"; + type uint16; + description "Designated Port ID: Priority"; + } + leaf designatedPortNumber { + config "false"; + type uint16; + description "Designated Port ID: Port number"; + } + leaf portPriority { + config "false"; + type uint16; + description "Port ID: Priority"; + } + leaf portNumber { + config "false"; + type uint16; + description "Port ID: Port number"; + } + leaf portPathCost { + config "false"; + type uint32; + description "Port path cost"; + } + + // Port role + leaf portRole { + config "false"; + + type stp_PortRole; + description "Port role"; + } + + // Port state + leaf portState { + config "false"; + + type stp_PortState; + description "Port state"; + } + leaf p2p { + config "false"; + type boolean; + description "Is the oper link-type p2p"; + } + leaf operBpduguard { + config "false"; + type boolean; + description "Is the oper bpduguard"; + } + leaf operBpdufilter { + config "false"; + type boolean; + description "Is the oper bpdufilter"; + } + leaf operPortfast { + config "false"; + type boolean; + description "Is the oper portfast"; + } + leaf operLoopguard { + config "false"; + type boolean; + description "Is the oper loopguard"; + } + + // VpcState + leaf vpcState { + config "false"; + + type stp_VpcState; + description "vPC State"; + } + + // Port mode + leaf mode { + config "false"; + + type stp_ModeType; + description "mode"; + } + leaf dispute { + config "false"; + type boolean; + description "Is the port dispute"; + } + leaf peer { + config "false"; + type boolean; + description "Is the port peer type"; + } + leaf bound { + config "false"; + type boolean; + description "Is the port bound"; + } + leaf inconsistent { + config "false"; + type boolean; + description "Is the port inconsistent"; + } + leaf prestd { + config "false"; + type boolean; + description "Is the port mst prestd"; + } + leaf tcAcknowledge { + config "false"; + type boolean; + description "Topology change is set"; + } + leaf messageAge { + config "false"; + type uint32; + description "Port message age timer"; + } + leaf forwardDelay { + config "false"; + type uint32; + description "Port forward delay timer"; + } + leaf holdTimer { + config "false"; + type uint32; + description "Port oper hold timer"; + } + leaf forwardTc { + config "false"; + type uint32; + description "Port forward transition count"; + } + leaf sentBpdus { + config "false"; + type uint32; + description "count of total Sent BPDUs"; + } + leaf receivedBpdus { + config "false"; + type uint32; + description "count of total Received BPDUs"; + } + } + + grouping stp_PseudoInfo-group { + description "STP pseudo information"; + leaf start { + type uint16 { + range "1..2"; + } + default "1"; + description "start pseudo cfg"; + } + + // stp pseudo-information, mst domain designated and root priority + container mstinst-items { + list MstInst-list { + key "id"; + + uses stp_MstInst-group; + description "MST Domain ID list"; + } + description "MST Domain ID"; + } + + // This object holds stp information that is operated at + // vlan level in pseudo information mode + container vlan-items { + list VlanInst-list { + key "id"; + + uses stp_VlanInst-group; + description "Vlan list"; + } + description "Vlan"; + } + } + + grouping stp_MstInst-group { + description "MST Domain ID"; + + leaf id { + + type stp_MstId; + description "Mst Instance Id"; + } + + // Pseudo mst designated Priority + leaf designatedPriority { + + type stp_BridgePriority; + description "Designated Priority"; + } + + // Pseudo mst root Priority + leaf rootPriority { + + type stp_BridgePriority; + description "Root Priority"; + } + } + + grouping stp_VlanInst-group { + description "Vlan"; + + // vlan id + leaf id { + + type stp_VlanId; + description "Access Encapsulation"; + } + + // designated bridge priority + leaf designatedBridgePriority { + + type stp_Priority; + description "Designated Bridge Priority"; + } + + // root bridge priority + leaf rootBridgePriority { + + type stp_Priority; + description "Root Bridge Priority"; + } + + // Spanning tree protocol + leaf protocol { + config "false"; + + type stp_Protocol; + description "Spanning tree protocol"; + } + + // spanning tree state: enabled or disabled + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // spanning tree forward delay + leaf fwdTime { + + type stp_FwdTime; + description "STP forward delay"; + } + + // spanning tree hello interval + leaf helloTime { + + type stp_HelloTime; + description "STP Hello interval"; + } + + // spanning tree max age interval + leaf maxAge { + + type stp_MaxAge; + description "STP max age interval"; + } + } + + grouping stp_Vlan-group { + description "Vlan"; + + // vlan id + leaf id { + + type stp_VlanId; + description "Access Encapsulation"; + } + + // bridge priority + leaf priority { + + type stp_Priority; + description "Bridge Priority"; + } + + // network diameter of spanning tree + leaf diameter { + + type stp_Diameter; + description "network diameter"; + } + + // Spanning tree protocol + leaf protocol { + config "false"; + + type stp_Protocol; + description "Spanning tree protocol"; + } + + // Root type for bridge + leaf rootType { + + type stp_RootType; + description "Bridge Root Type"; + } + + // Root Mode added for root bridge cli, since the cli accepts hello time and updates forward_delay + // and max_Age based on hello time and diameter entered. If hello time is entered in normal mode for + // spanning tree using "spanning tree vlan ", this should not update the values + // of forward_delay and max_age. To differentiate this property has been added. When is + // used with the root mode cli, values will be updated depending on if this property is set or not + leaf rootMode { + + type stp_RootMode; + description "Bridge Root Config mode"; + } + leaf bridgePriority { + config "false"; + type uint16; + description "Bridge ID: Priority with extended system ID"; + } + leaf bridgeAddress { + config "false"; + type address_Mac; + description "Bridge ID: MAC address"; + } + leaf rootPriority { + config "false"; + type uint16; + description "Root ID: Priority"; + } + leaf rootAddress { + config "false"; + type address_Mac; + description "Root ID: MAC address"; + } + leaf rootPortPriority { + config "false"; + type uint16; + description "Root port ID: Priority"; + } + leaf rootPortNumber { + config "false"; + type uint16; + description "Root port ID: Port number"; + } + + // Root port name. The interface name that corresponds to the + // root port. E.g. eth1/1. + leaf rootPort { + config "false"; + + type nw_IfId; + description "Root port name"; + } + leaf rootPathCost { + config "false"; + type uint32; + description "Root path cost"; + } + leaf topologyChange { + config "false"; + type uint32; + description "topology change flag"; + } + leaf tcDetected { + config "false"; + type uint32; + description "topology change detected flag"; + } + leaf tcCount { + config "false"; + type uint32; + description "topology change count"; + } + leaf tcTimeSinceLast { + config "false"; + type union { + type string; + type uint64; + } + description "topology change time since last in seconds"; + } + leaf tcLast { + config "false"; + type union { + type string; + type uint64; + } + description "last topology change seconds"; + } + + // topology change initiator + leaf tcInitiator { + config "false"; + + type nw_IfId; + description "topology change initiator"; + } + leaf tcChangeTimer { + config "false"; + type uint32; + description "topology change timer"; + } + leaf holdTime { + config "false"; + type uint32; + description "hold time for the tree"; + } + + // spanning tree state: enabled or disabled + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // spanning tree forward delay + leaf fwdTime { + + type stp_FwdTime; + description "STP forward delay"; + } + + // spanning tree hello interval + leaf helloTime { + + type stp_HelloTime; + description "STP Hello interval"; + } + + // spanning tree max age interval + leaf maxAge { + + type stp_MaxAge; + description "STP max age interval"; + } + + // This object holds STP VLAN interface operational + // information. + container if-items { + list VlanIf-list { + config "false"; + key "id"; + + uses stp_VlanIf-group; + description "STP VLAN interface operational list"; + } + description "STP VLAN interface operational"; + } + } + + grouping stp_VlanIf-group { + description "STP VLAN interface operational"; + + // Interface ID. + leaf id { + config "false"; + + type nw_IfId; + description "Interface ID"; + } + leaf designatedRootPriority { + config "false"; + type uint16; + description "Designated root priority"; + } + leaf designatedRootAddress { + config "false"; + type address_Mac; + description "Designated root MAC address"; + } + leaf designatedRootCost { + config "false"; + type uint32; + description "Designated root cost"; + } + leaf designatedBridgePriority { + config "false"; + type uint16; + description "Designated bridge priority"; + } + leaf designatedBridgeAddress { + config "false"; + type address_Mac; + description "Designated bridge MAC address"; + } + leaf designatedPortPriority { + config "false"; + type uint16; + description "Designated Port ID: Priority"; + } + leaf designatedPortNumber { + config "false"; + type uint16; + description "Designated Port ID: Port number"; + } + leaf portPriority { + config "false"; + type uint16; + description "Port ID: Priority"; + } + leaf portNumber { + config "false"; + type uint16; + description "Port ID: Port number"; + } + leaf portPathCost { + config "false"; + type uint32; + description "Port path cost"; + } + + // Port role + leaf portRole { + config "false"; + + type stp_PortRole; + description "Port role"; + } + + // Port state + leaf portState { + config "false"; + + type stp_PortState; + description "Port state"; + } + leaf p2p { + config "false"; + type boolean; + description "Is the oper link-type p2p"; + } + leaf operBpduguard { + config "false"; + type boolean; + description "Is the oper bpduguard"; + } + leaf operBpdufilter { + config "false"; + type boolean; + description "Is the oper bpdufilter"; + } + leaf operPortfast { + config "false"; + type boolean; + description "Is the oper portfast"; + } + leaf operLoopguard { + config "false"; + type boolean; + description "Is the oper loopguard"; + } + + // VpcState + leaf vpcState { + config "false"; + + type stp_VpcState; + description "vPC State"; + } + + // Port mode + leaf mode { + config "false"; + + type stp_ModeType; + description "mode"; + } + leaf dispute { + config "false"; + type boolean; + description "Is the port dispute"; + } + leaf peer { + config "false"; + type boolean; + description "Is the port peer type"; + } + leaf bound { + config "false"; + type boolean; + description "Is the port bound"; + } + leaf inconsistent { + config "false"; + type boolean; + description "Is the port inconsistent"; + } + leaf prestd { + config "false"; + type boolean; + description "Is the port mst prestd"; + } + leaf tcAcknowledge { + config "false"; + type boolean; + description "Topology change is set"; + } + leaf messageAge { + config "false"; + type uint32; + description "Port message age timer"; + } + leaf forwardDelay { + config "false"; + type uint32; + description "Port forward delay timer"; + } + leaf holdTimer { + config "false"; + type uint32; + description "Port oper hold timer"; + } + leaf forwardTc { + config "false"; + type uint32; + description "Port forward transition count"; + } + leaf sentBpdus { + config "false"; + type uint32; + description "count of total Sent BPDUs"; + } + leaf receivedBpdus { + config "false"; + type uint32; + description "count of total Received BPDUs"; + } + } + + grouping aggregate_BdTable-group { + description "Bd Table"; + + // Aggregate BdEntry + container vlan-items { + list BdEntry-list { + key "vlan"; + + uses aggregate_BdEntry-group; + description "Bridged domain vlan vnid configuration in the VXLAN overlay Network list"; + } + description "Bridged domain vlan vnid configuration in the VXLAN overlay Network"; + } + } + + grouping aggregate_BdEntry-group { + description "Bridged domain vlan vnid configuration in the VXLAN overlay Network"; + leaf vlan { + type string; + description "Identity of the Vlan in the bridged domain"; + } + leaf bd { + type uint32; + description "Access Encapsulation"; + } + leaf vnid { + type string; + description "Identity of the Vnid in the bridged domain"; + } + + leaf replicationMode { + + type aggregate_ReplicationModeType; + description "The mode of replication for BUM data packets"; + } + + leaf ingressRepProtocol { + + type aggregate_IngressRepProtocolType; + description "The protocol type used to get the list of replication nodes"; + } + leaf gipo { + type address_Ip; + description "Multicast Address for Replication"; + } + + leaf suppressArp { + + type aggregate_BooleanFlag; + description "Flag to enable or disable the ARP suppression"; + } + + leaf resourceStatus { + + type aggregate_ResourceStatus; + description "Backend Resource Status"; + } + + leaf isL3 { + + type aggregate_BooleanFlag; + description "Is L3 Vlan"; + } + leaf description { + type string; + description "description"; + } + + container floodList-items { + + uses aggregate_FloodList-group; + description "Bd Member Entry"; + } + + // Domain (vrf) information + // + // + // + // + // + // + // + // + // + // List of route types + container af-items { + list DomainAf-list { + key "type"; + + uses aggregate_DomainAf-group; + description "Domain Address Family list"; + } + description "Domain Address Family"; + } + + container rtaggregateVlanMemberAtt-items { + + list RtAggregateVlanMemberAtt-list { + config "false"; + key "tDn"; + + uses aggregate_RtAggregateVlanMemberAtt_target-group; + description "Vlan Membership Attachment list"; + } + description "Vlan Membership Attachment"; + } + } + + grouping aggregate_FloodList-group { + description "Bd Member Entry"; + + container localFloodList-items { + + uses aggregate_LocalFloodList-group; + description "List of local ports configured under the bridged domain"; + } + + container remoteFloodList-items { + + uses aggregate_RemoteFloodList-group; + description "VTEP IP address list of the remote VTEPs within the VNI"; + } + } + + grouping aggregate_LocalFloodList-group { + description "List of local ports configured under the bridged domain"; + container intf-items { + list LocalFloodListEntry-list { + key "intf"; + + uses aggregate_LocalFloodListEntry-group; + description "Interface info of LocalFloodListEntry list"; + } + description "Interface info of LocalFloodListEntry"; + } + } + + grouping aggregate_LocalFloodListEntry-group { + description "Interface info of LocalFloodListEntry"; + + leaf intf { + + type nw_IfId; + description "Interface"; + } + } + + grouping aggregate_RemoteFloodList-group { + description "VTEP IP address list of the remote VTEPs within the VNI"; + container vtep-items { + list RemoteFloodListEntry-list { + key "vtep"; + + uses aggregate_RemoteFloodListEntry-group; + description "VTEP IP address in the list of the remote VTEPs within the VNI list"; + } + description "VTEP IP address in the list of the remote VTEPs within the VNI"; + } + } + + grouping aggregate_RemoteFloodListEntry-group { + description "VTEP IP address in the list of the remote VTEPs within the VNI"; + leaf vtep { + type address_Ip; + description "VTEP IP address"; + } + + container rsvtepAtt-items { + + list RsVtepAtt-list { + config "false"; + key "tDn"; + + uses aggregate_RsVtepAtt_source-group; + description "Link To Tunnel Intf Entry list"; + } + description "Link To Tunnel Intf Entry"; + } + } + + grouping aggregate_DomainAf-group { + description "Domain Address Family"; + + leaf type { + + type aggregate_AfT; + description "Type"; + } + leaf vrf { + type string; + description "VRF"; + } + leaf rd { + type mtx_array_community; + description "Route Distinguisher"; + } + + // Route target policy + container rttp-items { + list RttP-list { + key "type"; + + uses aggregate_RttP-group; + description "Route Target Policy list"; + } + description "Route Target Policy"; + } + + // + // + // + // + // + // + // + // + // + // + // This object holds policy to control vpn af + // information for a given vrf + container ctrl-items { + list AfCtrl-list { + key "type"; + + uses aggregate_AfCtrl-group; + description "Virtual Private Network Control Policy list"; + } + description "Virtual Private Network Control Policy"; + } + } + + grouping aggregate_RttP-group { + description "Route Target Policy"; + + // Type + leaf type { + + type aggregate_RttPType; + description "Type"; + } + + // isL3 VRF + leaf isL3 { + + type aggregate_BooleanFlag; + description "IsL3"; + } + + // List of route types + container ent-items { + list RttEntry-list { + key "rtt"; + + uses aggregate_RttEntry-group; + description "Route Target Entry list"; + } + description "Route Target Entry"; + } + } + + grouping aggregate_RttEntry-group { + description "Route Target Entry"; + leaf rtt { + type mtx_array_community; + description "Route Target"; + } + } + + grouping aggregate_AfCtrl-group { + description "Virtual Private Network Control Policy"; + + // Type + leaf type { + + type aggregate_AfT; + description "Type"; + } + + // Route target policy + container rttp-items { + list RttP-list { + key "type"; + + uses aggregate_RttP-group; + description "Route Target Policy list"; + } + description "Route Target Policy"; + } + } + + grouping aggregate_GlobalConfTable-group { + description "Global Configuration Table"; + + leaf vxLanMC { + + type aggregate_BooleanFlag; + description "VxLan Multicast Flag"; + } + leaf agMac { + type address_Mac; + description "Anycast Gateway mac"; + } + } + + grouping aggregate_IntfTable-group { + description "Interface Table"; + container intf-items { + list IntfEntry-list { + key "name"; + + uses aggregate_IntfEntry-group; + description "Interface Entry list"; + } + description "Interface Entry"; + } + container svi-items { + list Svi-list { + key "intf"; + + uses aggregate_Svi-group; + description "SVI Interface Entry list"; + } + description "SVI Interface Entry"; + } + } + + grouping aggregate_IntfEntry-group { + description "Interface Entry"; + + leaf name { + + type nw_IfId; + description "Name of the interface entry"; + } + + leaf type { + + type aggregate_IntfType; + description "Indicates the type of the interface"; + } + + leaf adminState { + + type aggregate_AdminState; + description "Indicates the adminstration state of interface whether interface is up or down"; + } + + leaf operState { + + type aggregate_OperState; + description "Indicates the operational state of the interface whether up or down"; + } + + leaf trunkVlans { + + type aggregate_IntfTrunkVlans; + description "List of vlans allowed on this interface"; + } + leaf isControllerOwnedIntf { + config "false"; + type boolean; + description "Indicates whether interface is assigned to the controller"; + } + + leaf ownerControllersIdList { + config "false"; + + type aggregate_ControllerIdBitmap; + description "List of the controller owning this interface"; + } + leaf untaggedVlan { + type string; + description "port-acccess-VLAN or native-VLAN for untagged traffic"; + } + leaf untaggedVlanCtrlUse { + type boolean; + description "untagged VLAN is used by Controller"; + } + leaf untaggedVlanExplicitMap { + type boolean; + description "untagged VLAN is also explicitly mapped by Controller"; + } + + container vlanMemberTable-items { + + uses aggregate_VlanMemberTable-group; + description "Vlan Member Table"; + } + + container rtvpcIntfEntryAtt-items { + + uses aggregate_RtVpcIntfEntryAtt_target-group; + description "Vpc Interface Entry Attachment"; + } + } + + grouping aggregate_VlanMemberTable-group { + description "Vlan Member Table"; + container member-items { + list VlanMemberEntry-list { + key "vlan"; + + uses aggregate_VlanMemberEntry-group; + description "Vlan Member Entry list"; + } + description "Vlan Member Entry"; + } + + container rsvlanMemberAtt-items { + + list RsVlanMemberAtt-list { + config "false"; + key "tDn"; + + uses aggregate_RsVlanMemberAtt_source-group; + description "Vlan Membership Attachment list"; + } + description "Vlan Membership Attachment"; + } + } + + grouping aggregate_VlanMemberEntry-group { + description "Vlan Member Entry"; + leaf vlan { + type string; + description "Vlan id of the vlan member entry"; + } + } + + grouping aggregate_Svi-group { + description "SVI Interface Entry"; + leaf intf { + type string; + description "Interface id of the switch virtual interface"; + } + + leaf adminState { + + type aggregate_AdminState; + description "Admin state of the interface whether up or down"; + } + + leaf operState { + + type aggregate_OperState; + description "Operational state of the interface whether up or down"; + } + leaf ip { + type address_Ip; + description "IP addr address assigned to this interface"; + } + + leaf ownerCtrlrsIdList { + config "false"; + + type aggregate_ControllerIdBitmap; + description "List of the controller Ids owning this interface"; + } + + leaf mtu { + + type aggregate_MTU; + description "Size of the MTU this interface is able to transmit"; + } + + leaf bw { + + type aggregate_Bw; + description "Bandwidth Of SVI"; + } + + leaf fwdMode { + + type aggregate_fabFwdMode; + description "Fabric Forwarding Mode"; + } + + leaf vrf { + + type l3_VrfName; + description "VRF context"; + } + } + + grouping aggregate_MacTable-group { + description "MAC Table"; + + container dynamic-items { + + uses aggregate_DynamicMac-group; + description "Dynamic MAC Table"; + } + + container static-items { + + uses aggregate_StaticMac-group; + description "Static MAC Table"; + } + } + + grouping aggregate_DynamicMac-group { + description "Dynamic MAC Table"; + + // Aggregate MacEntry + container mac-items { + list MacEntry-list { + key "mac vlan"; + + uses aggregate_MacEntry-group; + description "MAC Entry list"; + } + description "MAC Entry"; + } + } + + grouping aggregate_MacEntry-group { + description "MAC Entry"; + leaf mac { + type address_Mac; + description "MAC"; + } + leaf vlan { + type string; + description "Vlan"; + } + + leaf intf { + + type nw_IfId; + description "Interface"; + } + leaf tunnelDstIp { + type address_Ip; + description "TunnelDstIp"; + } + leaf isIntf { + type boolean; + description "isIf"; + } + + leaf type { + + type aggregate_MacType; + description "MacType"; + } + leaf pushedMacToBackEnd { + type boolean; + default "false"; + description "pushedMacToBackEnd"; + } + + container rtmac-items { + + uses aggregate_RtMac_target-group; + description "Tunnel Mac Entry"; + } + } + + grouping aggregate_StaticMac-group { + description "Static MAC Table"; + + // Aggregate MacEntry + container mac-items { + list MacEntry-list { + key "mac vlan"; + + uses aggregate_MacEntry-group; + description "MAC Entry list"; + } + description "MAC Entry"; + } + } + + grouping aggregate_SystemTable-group { + description "System or switch level properties for SDN controller interface."; + + leaf stTime { + + type mo_TStamp; + description "System Start Time"; + } + leaf mgmtIp { + config "false"; + type address_Ip; + description "Management IP address of the switch"; + } + leaf switchType { + type string; + description "Switch Type"; + } + + leaf purgeDBRequest { + + type mo_TStamp; + description "Client DB Purge Request"; + } + leaf isControllerConfigured { + type boolean; + description "IsControllerConfigured"; + } + leaf nxdbEnabled { + config "false"; + type boolean; + description "nxdbEnabled"; + } + + container controllerTable-items { + + uses aggregate_ControllerTable-group; + description "Controller Table"; + } + + container cpuTable-items { + + uses aggregate_CPUTable-group; + description "CPU Table"; + } + + container moduleTable-items { + + uses aggregate_ModuleTable-group; + } + + container vxlanTable-items { + + uses aggregate_VxlanTable-group; + description "Vxlan Table"; + } + + container shadowVxlanTable-items { + + uses aggregate_ShadowVxlanTable-group; + description "Shadow Vxlan Table"; + } + } + + grouping aggregate_ControllerTable-group { + description "Controller Table"; + container controller-items { + list ControllerEntry-list { + key "id"; + + uses aggregate_ControllerEntry-group; + description "Configuration properties of the controller instance controlling this switch list"; + } + description "Configuration properties of the controller instance controlling this switch"; + } + } + + grouping aggregate_ControllerEntry-group { + description "Configuration properties of the controller instance controlling this switch"; + leaf id { + type uint32; + description "Unique identity of the controller instance"; + } + leaf readRole { + type string; + description "Name of the read role for get APIs"; + } + leaf writeRole { + type string; + description "Name of the write role for get and set APIs"; + } + leaf controllerType { + type string; + description "Type of the vxlan overlay this controller is controlling"; + } + + leaf configuredVlans { + config "false"; + + type l2_VlanBitmap; + description "Vlans that are assigned under this controller"; + } + + leaf dedicatedVlans { + config "false"; + + type l2_VlanBitmap; + description "Dedicated Vlans"; + } + + leaf publishedVlans { + config "false"; + + type l2_VlanBitmap; + description "Vlans that are published to the controller after VPC consistency checks are completed"; + } + + leaf vlanResourceStatus { + config "false"; + + type aggregate_ResourceStatus; + description "Indicate that at least one Vlan is assigned to the controller"; + } + + leaf intfResourceStatus { + config "false"; + + type aggregate_ResourceStatus; + description "Indicate that at least one interface is assigned to the controller"; + } + + leaf isSystemReadyForController { + + type aggregate_ConfigStatus; + description "Indicate that switch is now ready to acccept the NXAPI requests from the controller"; + } + + leaf type { + + type aggregate_CtrlrType; + description "Type of the Vxlan the controller is controlling"; + } + leaf vrfPrefix { + type string; + description "The string prefix that will be prefixed to all VRFs created by this controller"; + } + leaf numVrf { + type uint32; + description "Maximum number of VRFs that this controller can create on the switch"; + } + leaf publishVrf { + type boolean; + description "Flag indicate if vrfs are tobe published to the controller not not"; + } + leaf publishNumVrf { + type uint32; + description "Numumber of vrfs published to controller after VPC consistency checks are completed"; + } + + container controllerAssignedIntfTable-items { + + uses aggregate_ControllerAssignedIntfTable-group; + description "Controller Assigned Interface Table"; + } + } + + grouping aggregate_ControllerAssignedIntfTable-group { + description "Controller Assigned Interface Table"; + container controllerAssignedIntfEntry-items { + list ControllerAssignedIntfEntry-list { + key "intfName"; + + uses aggregate_ControllerAssignedIntfEntry-group; + description "Properties of an interface assigned to the controller list"; + } + description "Properties of an interface assigned to the controller"; + } + } + + grouping aggregate_ControllerAssignedIntfEntry-group { + description "Properties of an interface assigned to the controller"; + + leaf intfName { + + type nw_IfId; + description "IntfName"; + } + + // Port channel id + leaf pcId { + + type pc_PcId; + description "Identity of the Port channel"; + } + + leaf type { + + type aggregate_IntfType; + description "Type of the interface"; + } + + leaf mode { + + type aggregate_IntfAssignMode; + description "Suggest if interface is dedicated to controller or shared between CLI"; + } + leaf published { + type boolean; + description "Indicates whether interface is published to the controller or not"; + } + } + + grouping aggregate_CPUTable-group { + description "CPU Table"; + container cpuEntry-items { + list CPUEntry-list { + key "type"; + + uses aggregate_CPUEntry-group; + description "CPU Entry list"; + } + description "CPU Entry"; + } + } + + grouping aggregate_CPUEntry-group { + description "CPU Entry"; + + leaf type { + + type aggregate_CpuType; + description "CPU Type"; + } + } + + grouping aggregate_ModuleTable-group { + container moduleEntry-items { + list ModuleEntry-list { + key "type"; + + uses aggregate_ModuleEntry-group; + } + } + } + + grouping aggregate_ModuleEntry-group { + + leaf type { + + type aggregate_ModuleType; + description "Type"; + } + } + + grouping aggregate_VxlanTable-group { + description "Vxlan Table"; + container intf-items { + list VxlanInterfaceEntry-list { + key "name"; + + uses aggregate_VxlanInterfaceEntry-group; + description "Vxlan interface entry represents the properties of the VTEP list"; + } + description "Vxlan interface entry represents the properties of the VTEP"; + } + } + + grouping aggregate_VxlanInterfaceEntry-group { + description "Vxlan interface entry represents the properties of the VTEP"; + leaf name { + type string; + description "Name"; + } + + leaf myTepStatus { + config "false"; + + type aggregate_OperState; + description "MyTepStatus"; + } + + leaf hostReachability { + config "false"; + + type aggregate_HostReachabilityMode; + description "HostReachability"; + } + leaf controllerId { + type uint32; + description "Controller ID"; + } + + leaf configSource { + config "false"; + + type aggregate_ConfigSourceType; + description "configSource"; + } + leaf primaryTunnelIp { + config "false"; + type address_Ip; + description "PrimaryTunnelIp"; + } + leaf secondaryTunnelIp { + config "false"; + type address_Ip; + description "SecondaryTunnelIp"; + } + + container localBfd-items { + + uses aggregate_LocalBfd-group; + description "Configuration properties of the local BFD endpoint of VTEP"; + } + } + + grouping aggregate_LocalBfd-group { + description "Configuration properties of the local BFD endpoint of VTEP"; + leaf mac { + config "false"; + type address_Mac; + description "BFD DMAC"; + } + leaf ip { + config "false"; + type address_Ip; + description "BFD IP"; + } + + leaf minTxIntvl { + config "false"; + + type aggregate_MinTxIntvl; + description "Desired Minimum TX Interval"; + } + + leaf minRxIntvl { + config "false"; + + type aggregate_MinRxIntvl; + description "Desired Minimum RX Interval"; + } + } + + grouping aggregate_ShadowVxlanTable-group { + description "Shadow Vxlan Table"; + container intf-items { + list ShadowVxlanInterfaceEntry-list { + key "name"; + + uses aggregate_ShadowVxlanInterfaceEntry-group; + description "Vxlan Interface Entry list"; + } + description "Vxlan Interface Entry"; + } + } + + grouping aggregate_ShadowVxlanInterfaceEntry-group { + description "Vxlan Interface Entry"; + leaf name { + type string; + description "Name"; + } + + leaf myTepStatus { + config "false"; + + type aggregate_OperState; + description "MyTepStatus"; + } + + leaf hostReachability { + config "false"; + + type aggregate_HostReachabilityMode; + description "HostReachability"; + } + leaf controllerId { + type uint32; + description "Controller ID"; + } + + leaf configSource { + config "false"; + + type aggregate_ConfigSourceType; + description "configSource"; + } + leaf primaryTunnelIp { + config "false"; + type address_Ip; + description "PrimaryTunnelIp"; + } + leaf secondaryTunnelIp { + config "false"; + type address_Ip; + description "SecondaryTunnelIp"; + } + } + + grouping aggregate_TunnelIntfTable-group { + description "Tunnel Interface Table"; + container intf-items { + list TunnelIntfEntry-list { + key "destIp"; + + uses aggregate_TunnelIntfEntry-group; + description "Properties of the remote VTEP tunnel endpoint list"; + } + description "Properties of the remote VTEP tunnel endpoint"; + } + } + + grouping aggregate_TunnelIntfEntry-group { + description "Properties of the remote VTEP tunnel endpoint"; + leaf description { + type string; + description "description"; + } + + leaf ifId { + + type nw_IfId; + description "Unique tunnel interface Id"; + } + + leaf type { + + type aggregate_TunnelType; + description "Indicate if the tunnel is of IPv4 or IPv6 type"; + } + leaf srcIp { + type address_Ip; + description "Source IP address of the tunnel interface"; + } + leaf destIp { + type address_Ip; + description "Destination IP address of the tunnel interface"; + } + + leaf mtu { + + type aggregate_MTU; + description "Size of MTU on the tunnel interface"; + } + + leaf state { + + type aggregate_OperState; + description "Operational state of the tunnel interface"; + } + + leaf vrf { + + type l3_VrfName; + description "The name of the VRF that is supported by this tunnel"; + } + + leaf ipVnidBinding { + + type aggregate_BooleanFlag; + description "Indicates if the L3 VNID binding is established or not"; + } + leaf isTunnelCreated { + config "false"; + type boolean; + default "false"; + description "Indicates if the tunnel is created and initialized for transport of the VTEP traffic"; + } + leaf isTunnelCreatedByController { + config "false"; + type boolean; + default "true"; + description "Indicates if the tunnel is created by the controller"; + } + leaf noOfMacsSeenBeforeTunnelCreatedbyController { + config "false"; + type uint32; + description "The number of MACs that are learned locally before tunnel interface is created by the controller"; + } + + leaf epType { + + type aggregate_EpType; + description "The type of the tunnel endpoint"; + } + + container tunMacTable-items { + + uses aggregate_TunMacTable-group; + description "Tunnel Mac Table"; + } + + container vnidTable-items { + + uses aggregate_VnidTable-group; + description "Vnid Table"; + } + + container remoteBfd-items { + + uses aggregate_RemoteBfd-group; + description "Managed object for configuration properties of the remote BFD endpoint of VTEP"; + } + + container rtaggregateVtepAtt-items { + + list RtAggregateVtepAtt-list { + config "false"; + key "tDn"; + + uses aggregate_RtAggregateVtepAtt_target-group; + description "Link To Tunnel Intf Entry list"; + } + description "Link To Tunnel Intf Entry"; + } + } + + grouping aggregate_TunMacTable-group { + description "Tunnel Mac Table"; + + container rsmac-items { + + list RsMac-list { + config "false"; + key "tDn"; + + uses aggregate_RsMac_source-group; + description "Tunnel Mac Entry list"; + } + description "Tunnel Mac Entry"; + } + } + + grouping aggregate_VnidTable-group { + description "Vnid Table"; + container vnid-items { + list VnidEntry-list { + key "vnid"; + + uses aggregate_VnidEntry-group; + description "A specific vnid Entry in the Vnid table list"; + } + description "A specific vnid Entry in the Vnid table"; + } + } + + grouping aggregate_VnidEntry-group { + description "A specific vnid Entry in the Vnid table"; + leaf vnid { + type string; + description "Vnid"; + } + + leaf groupAddr { + + type aggregate_GroupAddr; + description "GroupAddr"; + } + } + + grouping aggregate_RemoteBfd-group { + description "Managed object for configuration properties of the remote BFD endpoint of VTEP"; + + leaf bfdStatus { + + type aggregate_BfdStatus; + description "Vnid"; + } + leaf mac { + type address_Mac; + description "BFD DMAC"; + } + leaf ip { + type address_Ip; + description "BFD IP"; + } + + leaf minTxIntvl { + + type aggregate_MinTxIntvl; + description "Desired Minimum TX Interval"; + } + + leaf minRxIntvl { + + type aggregate_MinRxIntvl; + description "Desired Minimum RX Interval"; + } + } + + grouping aggregate_VlanTable-group { + description "Vlan Table"; + + // Aggregate VlanEntry + container vlan-items { + list VlanEntry-list { + key "id"; + + uses aggregate_VlanEntry-group; + description "Vlan Entry list"; + } + description "Vlan Entry"; + } + } + + grouping aggregate_VlanEntry-group { + description "Vlan Entry"; + leaf id { + type string; + description "Name"; + } + + leaf adminState { + + type aggregate_AdminState; + description "AdminState"; + } + } + + grouping aggregate_VpcDomTable-group { + description "Vpc Domain Table"; + container vpcDom-items { + list VpcDomEntry-list { + key "domainId"; + + uses aggregate_VpcDomEntry-group; + description "List of properties of a specific VPC domain entry list"; + } + description "List of properties of a specific VPC domain entry"; + } + } + + grouping aggregate_VpcDomEntry-group { + description "List of properties of a specific VPC domain entry"; + + leaf domainId { + + type vpc_DomId; + description "The unique VPC domain Id"; + } + leaf keepaliveDestIp { + type address_Ip; + description "The destination IP address of the keep alive link between VPC pair"; + } + leaf keepaliveSrcIp { + type address_Ip; + description "The source IP address of the keep alive link between VPC pair"; + } + leaf virtualIp { + type address_Ip; + description "The IP address that represent the VPC tunnel endpoint"; + } + leaf peerIp { + type address_Ip; + description "Peer IP"; + } + + leaf keepaliveSts { + config "false"; + + type aggregate_VpcKeepaliveStatus; + description "Keep alive status between the VPC pair switches"; + } + + leaf peerLinkSts { + config "false"; + + type aggregate_VpcPeerLinkStatus; + description "Peer Link Status between the VPC pair switches"; + } + + leaf vpcRole { + config "false"; + + type vpc_Role; + description "Indicates if the switch is primary or secondary in the VPC pair"; + } + leaf peerGW { + type boolean; + description "Gateway where the non-standard layer 2 packets are forwarded in a vPC environment"; + } + leaf dualActive { + type boolean; + description "Indication that both the peer link and the peer keep alive link are disconnected"; + } + + leaf peerLinkIf { + + type nw_IfId; + description "Port channel interface of the peer link"; + } + + // VPCTAB + container vpcTable-items { + + uses aggregate_VpcTable-group; + description "Vpc Table"; + } + } + + grouping aggregate_VpcTable-group { + description "Vpc Table"; + container vpc-items { + list VpcEntry-list { + key "vpcnum"; + + uses aggregate_VpcEntry-group; + description "vpc Entry list"; + } + description "vpc Entry"; + } + } + + grouping aggregate_VpcEntry-group { + description "vpc Entry"; + + leaf vpcnum { + + type vpc_Id; + description "Unique number identifying this Vpc pair"; + } + + leaf ifId { + + type nw_IfId; + description "VPC port channel number"; + } + + leaf operState { + + type aggregate_VpcOperStatus; + description "Operationsl status of the VPC port channel"; + } + + leaf consCheckSts { + config "false"; + + type vpc_CompatSt; + description "Indication of whether consistency checks have passed or failed"; + } + + leaf consCheckReason { + config "false"; + + type vpc_CompatQual; + description "Provides a reason why consistency check have failed"; + } + + container vpcintf-items { + + uses aggregate_VpcIntfEntry-group; + description "VPC Interface Entry"; + } + } + + grouping aggregate_VpcIntfEntry-group { + description "VPC Interface Entry"; + + container rsvpcIntfEntryAtt-items { + + uses aggregate_RsVpcIntfEntryAtt_source-group; + description "Vpc Interface Entry Attachment"; + } + } + + grouping aggregate_VrfTable-group { + container vrf-items { + list VrfEntry-list { + key "name"; + + uses aggregate_VrfEntry-group; + } + } + } + + grouping aggregate_VrfEntry-group { + + leaf name { + + type l3_VrfName; + description "Name of the VRF instance"; + } + + leaf genName { + + type l3_VrfName; + description "Generic name of the VRF instance"; + } + + leaf ctrlrId { + + type aggregate_ControllerID; + description "Id of the controller this VRF is assigned to"; + } + leaf vnid { + type string; + description "Virtual network id this VRF is associated with"; + } + leaf rd { + type mtx_array_community; + description "A unique number prepended to route in VRF to distinguish its belonging to a particular VRF"; + } + leaf genExtraRt { + type boolean; + description "A flag to indicate whether to generate extra route target for VRF"; + } + leaf templateName { + type string; + description "Name of the config template which is executed upon creation of this VRF"; + } + + leaf templateStatus { + config "false"; + + type aggregate_ConfTmplStatus; + description "Indicates the execution status of the config template"; + } + leaf shdwTemplateName { + config "false"; + type string; + description "Name of the shadow template name the config template is associated"; + } + leaf shdwVrfGenName { + config "false"; + type string; + description "Shadow VRF-controller-prefix Name"; + } + + // Domain (vrf) information + // + // + // + // + // + // + // + // + // + // List of route types + container af-items { + list DomainAf-list { + key "type"; + + uses aggregate_DomainAf-group; + description "Domain Address Family list"; + } + description "Domain Address Family"; + } + } + + grouping acl_Entity-group { + description "Entity of the Access Control List"; + + container systemacl-items { + + uses acl_SystemAcl-group; + description "System Acl Management Command"; + } + + // IPv4 and IPv6 port object-group + container oName-items { + list PortGroup-list { + key "name"; + + uses acl_PortGroup-group; + description "IPv4 and IPv6 port object group list"; + } + description "IPv4 and IPv6 port object group"; + } + + // MO: VLAN ACL + container vlan-items { + list VLANACL-list { + key "name"; + + uses acl_VLANACL-group; + description "Defines the VLAN Access Control Lists list"; + } + description "Defines the VLAN Access Control Lists"; + } + + // IPv4 + container mac-items { + + uses macacl_AF-group; + description "mac access control list configuration space"; + } + + // MPLS + container mpls-items { + + uses mplsacl_AF-group; + description "MPLS access control list configuration space"; + } + + // Time Range + container timerange-items { + + uses timerange_Timerange-group; + description "Time-Range configuration space"; + } + + // IPv4 + container ipv4-items { + + uses ipv4acl_AF-group; + description "IPv4 access control list configuration space"; + } + + // IPv6 + container ipv6-items { + + uses ipv6acl_AF-group; + description "IPv6 access control list configuration space"; + } + } + + grouping acl_SystemAcl-group { + description "System Acl Management Command"; + leaf state { + type boolean; + description "Check the status of System ACL"; + } + + // Name of Access-Lists + leaf name { + + type acl_AclName; + description "Name of Access-Lists"; + } + + // Ingress or Egress direction + leaf inout { + + type acl_Direction; + description "Ingress or Egress direction"; + } + } + + grouping acl_PortGroup-group { + description "IPv4 and IPv6 port object group"; + + // object-group name + leaf name { + + type acl_Name; + description "Object-group Name in ACL"; + } + + // IPv4 and IPv6 Port Object Group member + container seq-items { + list PortMember-list { + key "seqNum"; + + uses acl_PortMember-group; + description "IPv4 and IPv6 Port Object Group member list"; + } + description "IPv4 and IPv6 Port Object Group member"; + } + } + + grouping acl_PortMember-group { + description "IPv4 and IPv6 Port Object Group member"; + + // port operator + leaf portOp { + + type acl_Operator; + description "Source port operator"; + } + + // first port + leaf port1 { + + type acl_PortNumber; + description "First source port"; + } + + // second port + leaf port2 { + + type acl_PortNumber; + description "Second source port"; + } + + // configState + leaf configStatus { + + type acl_ConfigState; + description "config status"; + } + + // Object Group Member sequence number + leaf seqNum { + + type acl_SequenceNumber; + description "Sequence number"; + } + } + + grouping acl_VLANACL-group { + description "Defines the VLAN Access Control Lists"; + + // VLAN ACL name + leaf name { + + type acl_Name; + description "Defines the VLAN acl name"; + } + leaf maxseq { + config "false"; + type uint32; + description "Defines the Max sequence number"; + } + + // MO: VLAN sequence number + container seq-items { + list VLANSeq-list { + key "seqNum"; + + uses acl_VLANSeq-group; + description "VLAN ACL sequence number list"; + } + description "VLAN ACL sequence number"; + } + + // ==== MO: VLAN list ==== + // VLANList: + // /sys/acl/vlan-[foo]/vlanlist + // list: given arguments for vlan-list + // operation: indicate apply/remove + // listoper: vlan-list actual in effect. + // listerr: erroneous vlan-list, for fault purpose, updated via + // second trunk by aclmgr. + container vlanlist-items { + + uses acl_VLANList-group; + description "Defines the VLAN list"; + } + } + + grouping acl_VLANSeq-group { + description "VLAN ACL sequence number"; + leaf seqNum { + type uint32; + description "Defines the Sequence number"; + } + + // toggle per-entry statistics + leaf perACEStatistics { + + type acl_ACEStats; + description "Per Access Control Entry statistics"; + } + + // MO: VLAN ACL match + // /sys/acl/vlan-[foo]/seq-30/match-[ip_ipv6_mac]-address-[acl1]/ + container match-items { + list VLANACLMatch-list { + key "acltype aclname"; + + uses acl_VLANACLMatch-group; + description "VLAN Access Control List match list"; + } + description "VLAN Access Control List match"; + } + + // MO: VLAN ACL action + // /sys/acl/vlan-[foo]/seq-30/action.log=[yes_no]/ + // /sys/acl/vlan-[foo]/seq-30/action.actiontype=[forward_redirect_drop]/ + // /sys/acl/vlan-[foo]/seq-30/action.redirectintf=[eth1/31_po1]/ + container action-items { + + uses acl_VLANACLAction-group; + description "VLAN Access Control List Action"; + } + } + + grouping acl_VLANACLMatch-group { + description "VLAN Access Control List match"; + + // Match ACL type: ip_ipv4_mac + leaf acltype { + + type acl_VAclMatchType; + description "match access control list type"; + } + + // Match ACL name + leaf aclname { + + type acl_Name; + description "match access control list name"; + } + } + + grouping acl_VLANACLAction-group { + description "VLAN Access Control List Action"; + + // forward_drop_redirect + leaf actiontype { + + type acl_VAclActionType; + description "VLAN ACL action forward or drop or redirect"; + } + + // toggle log options + leaf log { + + type acl_VAclLog; + description "Defines the Log option"; + } + + leaf redirectintf { + + type acl_IfName; + description "Redirect Interfaces example, eth1/11 or po1"; + } + } + + grouping acl_VLANList-group { + description "Defines the VLAN list"; + + leaf list { + + type acl_VlanListStr; + description "VLAN or a list of VLANS example 1,2 or 2-4"; + } + + leaf operation { + + type acl_operation; + description "Vlan Filter Operation apply or remove"; + } + + leaf listoper { + + type acl_VlanListStr; + description "Vlan List String oper after apply or remove"; + } + + leaf listerr { + config "false"; + + type acl_VlanListStr; + description "Vlan List String error"; + } + leaf timeStamp { + type union { + type string; + type uint64; + } + description "INTERNAL: time stamp"; + } + } + + grouping macacl_AF-group { + description "mac access control list configuration space"; + + container statClear-items { + + uses acl_StatClear-group; + description "clear acl statistics"; + } + + // ACL policies + container policy-items { + + uses acl_Policy-group; + description "Access Control List policy"; + } + + // IPv4 ACL + container name-items { + list ACL-list { + key "name"; + + uses macacl_ACL-group; + description "IPv4 access control list list"; + } + description "IPv4 access control list"; + } + } + + grouping acl_StatClear-group { + description "clear acl statistics"; + + // StatClear ACL name + leaf name { + + type acl_Name; + description "ACL Name to clear the statistics"; + } + leaf timeStamp { + type union { + type string; + type uint64; + } + description "Clear ACL statistics time stamp"; + } + } + + grouping acl_Policy-group { + description "Access Control List policy"; + + // Ingress directions + container ingress-items { + + uses acl_Ingress-group; + description "Ingress direction of packets"; + } + + // Egress directions + container egress-items { + + uses acl_Egress-group; + description "Egress direction of packets"; + } + } + + grouping acl_Ingress-group { + description "Ingress direction of packets"; + + // Target interface + container intf-items { + list If-list { + key "name"; + + uses acl_If-group; + description "Interface to which ACL is applied list"; + } + description "Interface to which ACL is applied"; + } + + container vty-items { + + uses acl_Vty-group; + description "Defines the virtual terminal lines (Vty)"; + } + } + + grouping acl_If-group { + description "Interface to which ACL is applied"; + + // interface name string + leaf name { + + type nw_IfId; + description "Interface to which ACL is applied"; + } + + // ACL instance + container acl-items { + + uses acl_Inst-group; + description "Access Control List instance"; + } + + // port ACL instance + container portacl-items { + + uses acl_PortInst-group; + description "Port Access Control List instance"; + } + + // ACL instance + container macif-items { + + uses macacl_MacIf-group; + description "Mac packet-classify container"; + } + } + + grouping acl_Inst-group { + description "Access Control List instance"; + + leaf name { + + type acl_Name; + description "Access Control List name"; + } + leaf configStatus { + config "false"; + type uint32; + description "config status indicator"; + } + } + + grouping acl_PortInst-group { + description "Port Access Control List instance"; + + leaf name { + + type acl_Name; + description "Access Control List Name"; + } + leaf configStatus { + config "false"; + type uint32; + description "config status indicator"; + } + } + + grouping macacl_MacIf-group { + description "Mac packet-classify container"; + leaf macPacketClassify { + type boolean; + description "Flag for mac packet-classify on L2"; + } + } + + grouping acl_Vty-group { + description "Defines the virtual terminal lines (Vty)"; + + // ACL instance + container acl-items { + + uses acl_Inst-group; + description "Access Control List instance"; + } + } + + grouping acl_Egress-group { + description "Egress direction of packets"; + + // Target interface + container intf-items { + list If-list { + key "name"; + + uses acl_If-group; + description "Interface to which ACL is applied list"; + } + description "Interface to which ACL is applied"; + } + + container vty-items { + + uses acl_Vty-group; + description "Defines the virtual terminal lines (Vty)"; + } + } + + grouping macacl_ACL-group { + description "IPv4 access control list"; + + // ACL name + leaf name { + + type acl_Name; + description "Name of Access lists"; + } + + // toggle per-entry statistics + leaf perACEStatistics { + + type acl_ACEStats; + description "Per Access Control Entries statistics"; + } + + // End of Layer 3 ACE (abstract MO) resequnce MO + container reseq-items { + + uses acl_Resequence-group; + description "resequence access-list"; + } + + // IPv4 ACE + container seq-items { + list SEQ-list { + key "seqNum"; + + uses macacl_SEQ-group; + description "sequence number of MO list"; + } + description "sequence number of MO"; + } + } + + grouping acl_Resequence-group { + description "resequence access-list"; + leaf start { + type uint32; + description "starting sequence number"; + } + leaf step { + type uint32; + description "step to increase the sequence number"; + } + } + + grouping macacl_SEQ-group { + description "sequence number of MO"; + + // ACE sequence number + leaf seqNum { + + type acl_SequenceNumber; + description "Sequence number of ACE"; + } + + // MAC ACE + container ace-items { + + uses macacl_ACE-group; + description "mac access-list entry"; + } + + // Remark ACE + container remark-items { + + uses macacl_Remark-group; + description "Defines the Mac remark entry"; + } + } + + grouping macacl_ACE-group { + description "mac access-list entry"; + + // protocol number + leaf protocol { + + type acl_MACProtocol; + description "protocol number of ACE"; + } + + // cos number + leaf cos { + + type acl_cosType; + description "Cos number of Access Control Entry"; + } + leaf redirect { + type string; + description "redirect to interface"; + } + + // time-range + leaf timeRange { + + type acl_TimeRangeName; + description "Defines the time range name"; + } + + // vlan number + leaf vlan { + + type acl_VlanType; + description "Defines the vlan number"; + } + + // set-erspan-dscp- + leaf erspanDscp { + + type acl_erspanDscpType; + description "Defines the dscp value"; + } + + // erspan gre proto + leaf erspanGre { + + type acl_erspanGreType; + description "Defines the dscp gre protocol"; + } + + // ACE filtering action + leaf action { + + type acl_ActionType; + description "ACE action, permit or deny"; + } + leaf srcPrefix { + type address_Mac; + description "Defines the Source MAC Address"; + } + leaf srcPrefixMask { + type address_Mac; + description "Defines the Source prefix mask"; + } + leaf dstPrefix { + type address_Mac; + description "destination MAC Address"; + } + leaf dstPrefixMask { + type address_Mac; + description "destination MAC address mask"; + } + leaf packets { + config "false"; + type uint64; + description "Number of packets hitting ACE"; + } + + // UDF + container udf-items { + + uses macacl_UDF-group; + description "Defines the MAC UDFs"; + } + } + + grouping macacl_UDF-group { + description "Defines the MAC UDFs"; + + // supports at most 18 UDF udf1 Name + leaf udf1Name { + + type acl_UdfName; + description "User-defined field match 1"; + } + + // udf1 Value + leaf udf1Val { + + type acl_UdfVal; + description "UDF1 value to match"; + } + + // udf1 Mask + leaf udf1Mask { + + type acl_UdfMask; + description "Mask to apply to UDF1 value"; + } + + // udf2 Name + leaf udf2Name { + + type acl_UdfName; + description "User-defined field match 2"; + } + + // udf2 Value + leaf udf2Val { + + type acl_UdfVal; + description "UDF2 value to match"; + } + + // udf2 Mask + leaf udf2Mask { + + type acl_UdfMask; + description "Mask to apply to UDF2 value"; + } + + // udf3 Name + leaf udf3Name { + + type acl_UdfName; + description "User-defined field match 3"; + } + + // udf3 Value + leaf udf3Val { + + type acl_UdfVal; + description "UDF3 value to match"; + } + + // udf3 Mask + leaf udf3Mask { + + type acl_UdfMask; + description "Mask to apply to UDF3 value"; + } + + // udf4 Name + leaf udf4Name { + + type acl_UdfName; + description "User-defined field match 4"; + } + + // udf4 Value + leaf udf4Val { + + type acl_UdfVal; + description "UDF4 value to match"; + } + + // udf4 Mask + leaf udf4Mask { + + type acl_UdfMask; + description "Mask to apply to UDF4 value"; + } + + // udf5 Name + leaf udf5Name { + + type acl_UdfName; + description "User-defined field match 5"; + } + + // udf5 Value + leaf udf5Val { + + type acl_UdfVal; + description "UDF5 value to match"; + } + + // udf5 Mask + leaf udf5Mask { + + type acl_UdfMask; + description "Mask to apply to UDF5 value"; + } + + // udf6 Name + leaf udf6Name { + + type acl_UdfName; + description "User-defined field match 6"; + } + + // udf6 Value + leaf udf6Val { + + type acl_UdfVal; + description "UDF6 value to match"; + } + + // udf6 Mask + leaf udf6Mask { + + type acl_UdfMask; + description "Mask to apply to UDF6 value"; + } + + // udf7 Name + leaf udf7Name { + + type acl_UdfName; + description "User-defined field match 7"; + } + + // udf7 Value + leaf udf7Val { + + type acl_UdfVal; + description "UDF7 value to match"; + } + + // udf7 Mask + leaf udf7Mask { + + type acl_UdfMask; + description "Mask to apply to UDF7 value"; + } + + // udf8 Name + leaf udf8Name { + + type acl_UdfName; + description "User-defined field match 8"; + } + + // udf8 Value + leaf udf8Val { + + type acl_UdfVal; + description "UDF8 value to match"; + } + + // udf8 Mask + leaf udf8Mask { + + type acl_UdfMask; + description "Mask to apply to UDF8 value"; + } + + // udf9 Name + leaf udf9Name { + + type acl_UdfName; + description "User-defined field match 9"; + } + + // udf9 Value + leaf udf9Val { + + type acl_UdfVal; + description "UDF9 value to match"; + } + + // udf9 Mask + leaf udf9Mask { + + type acl_UdfMask; + description "Mask to apply to UDF9 value"; + } + + // udf10 Name + leaf udf10Name { + + type acl_UdfName; + description "User-defined field match 10"; + } + + // udf10 Value + leaf udf10Val { + + type acl_UdfVal; + description "UDF10 value to match"; + } + + // udf10 Mask + leaf udf10Mask { + + type acl_UdfMask; + description "Mask to apply to UDF10 value"; + } + + // udf11 Name + leaf udf11Name { + + type acl_UdfName; + description "User-defined field match 11"; + } + + // udf11 Value + leaf udf11Val { + + type acl_UdfVal; + description "UDF11 value to match"; + } + + // udf11 Mask + leaf udf11Mask { + + type acl_UdfMask; + description "Mask to apply to UDF11 value"; + } + + // udf12 Name + leaf udf12Name { + + type acl_UdfName; + description "User-defined field match 12"; + } + + // udf12 Value + leaf udf12Val { + + type acl_UdfVal; + description "UDF12 value to match"; + } + + // udf12 Mask + leaf udf12Mask { + + type acl_UdfMask; + description "Mask to apply to UDF12 value"; + } + + // udf13 Name + leaf udf13Name { + + type acl_UdfName; + description "User-defined field match 13"; + } + + // udf13 Value + leaf udf13Val { + + type acl_UdfVal; + description "UDF13 value to match"; + } + + // udf13 Mask + leaf udf13Mask { + + type acl_UdfMask; + description "Mask to apply to UDF13 value"; + } + + // udf14 Name + leaf udf14Name { + + type acl_UdfName; + description "User-defined field match 14"; + } + + // udf14 Value + leaf udf14Val { + + type acl_UdfVal; + description "UDF14 value to match"; + } + + // udf14 Mask + leaf udf14Mask { + + type acl_UdfMask; + description "Mask to apply to UDF14 value"; + } + + // udf15 Name + leaf udf15Name { + + type acl_UdfName; + description "User-defined field match 15"; + } + + // udf15 Value + leaf udf15Val { + + type acl_UdfVal; + description "UDF15 value to match"; + } + + // udf15 Mask + leaf udf15Mask { + + type acl_UdfMask; + description "Mask to apply to UDF15 value"; + } + + // udf16 Name + leaf udf16Name { + + type acl_UdfName; + description "User-defined field match 16"; + } + + // udf16 Value + leaf udf16Val { + + type acl_UdfVal; + description "UDF16 value to match"; + } + + // udf16 Mask + leaf udf16Mask { + + type acl_UdfMask; + description "Mask to apply to UDF16 value"; + } + + // udf17 Name + leaf udf17Name { + + type acl_UdfName; + description "User-defined field match 17"; + } + + // udf17 Value + leaf udf17Val { + + type acl_UdfVal; + description "UDF17 value to match"; + } + + // udf17 Mask + leaf udf17Mask { + + type acl_UdfMask; + description "Mask to apply to UDF17 value"; + } + + // udf18 Name + leaf udf18Name { + + type acl_UdfName; + description "User-defined field match 18"; + } + + // udf18 Value + leaf udf18Val { + + type acl_UdfVal; + description "UDF18 value to match"; + } + + // udf18 Mask + leaf udf18Mask { + + type acl_UdfMask; + description "Mask to apply to UDF18 value"; + } + } + + grouping macacl_Remark-group { + description "Defines the Mac remark entry"; + + // ACE sequence number + leaf seqNum { + + type acl_SequenceNumber; + description "Sequence number"; + } + + // remark + leaf remark { + + type acl_RemarkStr; + description "ACL entry commment"; + } + } + + grouping mplsacl_AF-group { + description "MPLS access control list configuration space"; + + // ACL policies + container policy-items { + + uses acl_Policy-group; + description "Access Control List policy"; + } + + // MPLS ACL + container name-items { + list ACL-list { + key "name"; + + uses mplsacl_ACL-group; + description "MPLS access control list list"; + } + description "MPLS access control list"; + } + } + + grouping mplsacl_ACL-group { + description "MPLS access control list"; + + // ACL name + leaf name { + + type acl_Name; + description "Name of Access lists"; + } + + // toggle per-entry statistics + leaf perACEStatistics { + + type acl_ACEStats; + description "Per Access Control Entries statistics"; + } + + // SEQ Number + container seq-items { + list SEQ-list { + key "seqNum"; + + uses mplsacl_SEQ-group; + description "Defines the sequence number list"; + } + description "Defines the sequence number"; + } + } + + grouping mplsacl_SEQ-group { + description "Defines the sequence number"; + + // ACE sequence number + leaf seqNum { + + type acl_SequenceNumber; + description "Defines the Sequence number"; + } + + // MPLS ACE + container ace-items { + + uses mplsacl_ACE-group; + description "MPLS access-list entry"; + } + } + + grouping mplsacl_ACE-group { + description "MPLS access-list entry"; + + // Action permit or deny + leaf action { + + type acl_ActionType; + description "Specify packets to forward or reject"; + } + + // Label 1 + leaf labelOne { + + type acl_LabelRange; + description "Defines Mpls Label One"; + } + + // Label 2 + leaf labelTwo { + + type acl_LabelRange; + description "Defines Mpls Label Two"; + } + + // Label 3 + leaf labelThree { + + type acl_LabelRange; + description "Defines Mpls Label Three"; + } + + // Label 4 + leaf labelFour { + + type acl_LabelRange; + description "Defines Mpls Label Four"; + } + + // Label 1 Mask + leaf labelOneMask { + + type acl_LabelMaskRange; + description "Defines Mpls Label One Mask"; + } + + // Label 2 Mask + leaf labelTwoMask { + + type acl_LabelMaskRange; + description "Defines Mpls Label Two Mask"; + } + + // Label 3 Mask + leaf labelThreeMask { + + type acl_LabelMaskRange; + description "Mpls Label Three Mask"; + } + + // Label 4 Mask + leaf labelFourMask { + + type acl_LabelMaskRange; + description "Mpls Label Four Mask"; + } + leaf redirect { + type string; + description "redirect to interface"; + } + } + + grouping timerange_Timerange-group { + description "Time-Range configuration space"; + + // Time Range specific + container tr-items { + list Tr-list { + key "name"; + + uses timerange_Tr-group; + description "Specifies the time-range list"; + } + description "Specifies the time-range"; + } + } + + grouping timerange_Tr-group { + description "Specifies the time-range"; + + // Time-Range name + leaf name { + + type timerange_Name; + description "Timerange Name configuration"; + } + + // TRE + container seq-items { + list SEQ-list { + key "seqNum"; + + uses timerange_SEQ-group; + description "Defines the time range entry list"; + } + description "Defines the time range entry"; + } + } + + grouping timerange_SEQ-group { + description "Defines the time range entry"; + + // TRE sequence number + leaf seqNum { + + type timerange_SequenceNumber; + description "Sequence number for timerange rule"; + } + + // TRE Absolute + container absolute-items { + + uses timerange_TreAbsolute-group; + description "time range absolute entry"; + } + + // TRE Periodic + container periodic-items { + + uses timerange_TrePeriodic-group; + description "time range periodic entry"; + } + + // TRE Remark + container remark-items { + + uses timerange_TreRemark-group; + description "time range remark"; + } + } + + grouping timerange_TreAbsolute-group { + description "time range absolute entry"; + + // start time + leaf startTime { + + type timerange_HourMinSec; + description "Start Time (hh:mm:ss) for absolute rule of timerange"; + } + + // start day + leaf startDay { + + type timerange_Day; + description "Start Day of the Month (1-31) for absolute rule of timerange"; + } + + // start month + leaf startMonth { + + type timerange_Month; + description "Start Month for absolute rule of timerange"; + } + + // start year + leaf startYear { + + type timerange_Year; + description "Start Year (2000-2037) for absolute rule of timerange"; + } + + // end time + leaf endTime { + + type timerange_HourMinSec; + description "End Time (hh:mm:ss) for absolute rule of timerange"; + } + + // end day + leaf endDay { + + type timerange_Day; + description "End Day of the Month (1-31) for absolute rule of timerange"; + } + + // end month + leaf endMonth { + + type timerange_Month; + description "End Month for absolute rule of timerange"; + } + + // end year + leaf endYear { + + type timerange_Year; + description "End Year (2000-2037) for absolute rule of timerange"; + } + } + + grouping timerange_TrePeriodic-group { + description "time range periodic entry"; + + // period of weekday/weekend/daily + leaf period { + + type timerange_period; + description "Period for periodic rule of timerange"; + } + + // period of strt day + leaf startPeriod { + + type timerange_period; + description "Start Period for periodic rule of timerange"; + } + + // period of end day + leaf endPeriod { + + type timerange_period; + description "End Period for periodic rule of timerange"; + } + + // start time + leaf startTime { + + type timerange_HourMinSec; + description "Start Time for periodic rule of timerange"; + } + + // end time + leaf endTime { + + type timerange_HourMinSec; + description "End Time for periodic rule of timerange"; + } + } + + grouping timerange_TreRemark-group { + description "time range remark"; + + // Remark text + leaf remark { + + type acl_RemarkStr; + description "time range remark"; + } + } + + grouping ipv4acl_AF-group { + description "IPv4 access control list configuration space"; + + container statClear-items { + + uses acl_StatClear-group; + description "clear acl statistics"; + } + + // ACL policies + container policy-items { + + uses acl_Policy-group; + description "Access Control List policy"; + } + + // IPv4 ACL + container name-items { + list ACL-list { + key "name"; + + uses ipv4acl_ACL-group; + description "IPv4 access control list list"; + } + description "IPv4 access control list"; + } + + // IPv4 address object-group + container oName-items { + list AddrGroup-list { + key "name"; + + uses ipv4acl_AddrGroup-group; + description "IPv4 ACL address object group list"; + } + description "IPv4 ACL address object group"; + } + } + + grouping ipv4acl_ACL-group { + description "IPv4 access control list"; + + // ACL name + leaf name { + + type acl_Name; + description "Name of Access lists"; + } + + // fragments + leaf fragments { + + type acl_Fragments; + description "Fragments type for IPv4 and IPv6"; + } + + // toggle per-entry statistics + leaf perACEStatistics { + + type acl_ACEStats; + description "Per Access Control Entries statistics"; + } + leaf ignRoutable { + type boolean; + description "Ignore Multicast Routed ACLs"; + } + leaf configStatus { + config "false"; + type uint32; + description "config success indicator"; + } + + // End of Layer 3 ACE (abstract MO) resequnce MO + container reseq-items { + + uses acl_Resequence-group; + description "resequence access-list"; + } + + // IPv4 ACE + container seq-items { + list ACE-list { + key "seqNum"; + + uses ipv4acl_ACE-group; + description "IPv4 access-list entry list"; + } + description "IPv4 access-list entry"; + } + } + + grouping ipv4acl_ACE-group { + description "IPv4 access-list entry"; + + // protocol to match + leaf protocol { + + type ipv4acl_Protocol; + description "Protocol for access-list entry"; + } + + // Protocol Mask + leaf protocolMask { + + type ipv4acl_Protocol; + description "Defines the Protocol Mask"; + } + + // source prefix + leaf srcPrefix { + + type ipv4acl_IPv4Prefix; + description "Source IPv4 prefix"; + } + + // source prefix wildcard mask + leaf srcPrefixMask { + + type ipv4acl_IPv4PrefixMask; + description "Source IPv4 prefix mask"; + } + + // source prefix length + leaf srcPrefixLength { + + type ipv4acl_IPv4PrefixLen; + description "Source IPv4 prefix length"; + } + + // destination prefix + leaf dstPrefix { + + type ipv4acl_IPv4Prefix; + description "Destination IPv4 prefix"; + } + + // destination prefix wildcard mask + leaf dstPrefixMask { + + type ipv4acl_IPv4PrefixMask; + description "Destination IPv4 prefix mask"; + } + + // destination prefix length + leaf dstPrefixLength { + + type ipv4acl_IPv4PrefixLen; + description "Destination IPv4 prefix length"; + } + + // precedence + leaf precedence { + + type ipv4acl_Precedence; + description "IPv4 precedence"; + } + leaf ttl { + type uint8; + description "TTL Operator"; + } + + // ICMP Str + leaf icmpStr { + + type ipv4acl_ICMPEnum; + description "ICMP type"; + } + + // ICMP type + leaf icmpType { + + type ipv4acl_ICMPType; + description "ICMP type"; + } + + // ICMP code + leaf icmpCode { + + type ipv4acl_ICMPCode; + description "ICMP code"; + } + + // tos + leaf tos { + + type ipv4acl_Tos; + description "capture session"; + } + + // IGMP type + leaf igmpType { + + type ipv4acl_IGMPType; + description "IGMP type"; + } + + // configState + leaf configStatus { + config "false"; + + type acl_ConfigState; + description "config status"; + } + + // remark + leaf remark { + + type acl_RemarkStr; + description "Access-list entry comment"; + } + + // ACE sequence number + leaf seqNum { + + type acl_SequenceNumber; + description "Sequence number"; + } + + // ACE filtering action + leaf action { + + type acl_ActionType; + description "Specify packets to forward or reject"; + } + + // source port operator + leaf srcPortOp { + + type acl_Operator; + description "Source port operator"; + } + + // first source port + leaf srcPort1 { + + type acl_PortNumber; + description "First source port"; + } + + // second source port + leaf srcPort2 { + + type acl_PortNumber; + description "Second source port"; + } + + // Source Port Mask + leaf srcPortMask { + + type acl_PortNumber; + description "Defines the Source Port Mask"; + } + + // destination port operator + leaf dstPortOp { + + type acl_Operator; + description "Destination port operator"; + } + + // first destination port + leaf dstPort1 { + + type acl_PortNumber; + description "First destination port number"; + } + + // second destination port + leaf dstPort2 { + + type acl_PortNumber; + description "Second destination port number"; + } + + // Destination Port Mask + leaf dstPortMask { + + type acl_PortNumber; + description "Destination Port Mask"; + } + leaf logging { + type boolean; + default "false"; + description "Log matches against ACL entry"; + } + leaf dscp { + type uint8 { + range "0..63"; + } + description "dscp"; + } + leaf dscpMask { + type uint8 { + range "0..63"; + } + description "dscpMask"; + } + + // packet-length operator + leaf pktLenOp { + + type acl_Operator; + description "packet length operator"; + } + + // First packet-length + leaf pktLen1 { + + type acl_PktLen; + description "first packet length"; + } + + // second packet-length + leaf pktLen2 { + + type acl_PktLen; + description "second packet length"; + } + leaf urg { + type boolean; + description "tcp urg"; + } + leaf ack { + type boolean; + description "tcp ack"; + } + leaf psh { + type boolean; + description "tcp psh"; + } + leaf rst { + type boolean; + description "tcp rst"; + } + leaf syn { + type boolean; + description "tcp syn"; + } + leaf fin { + type boolean; + description "tcp fin"; + } + leaf est { + type boolean; + description "tcp est"; + } + leaf rev { + type boolean; + description "tcp reversed"; + } + + leaf tcpFlagsMask { + + type acl_TcpFlagsMask; + description "tcp flags mask"; + } + leaf packets { + config "false"; + type uint64; + description "Number of packets hitting ACE"; + } + leaf fragment { + type boolean; + description "Non-initial fragment"; + } + + // capture session + leaf captureSession { + + type acl_CaptureSes; + description "capture session"; + } + + // http option (http-method) + leaf httpOption { + + type acl_HttpOptionType; + description "http option http-method"; + } + + // nve vni ID + leaf vni { + + type acl_VniType; + description "nve vni ID"; + } + + // vlan + leaf vlan { + + type acl_VlanType; + description "vlan"; + } + + // TCP option length + leaf tcpOptionLength { + + type acl_TcpOptionLengthType; + description "TCP options length"; + } + + // time-range + leaf timeRange { + + type acl_Name; + description "time range name"; + } + + // source address group + leaf srcAddrGroup { + + type acl_Name; + description "Source address group"; + } + + // destination address group + leaf dstAddrGroup { + + type acl_Name; + description "Destination address group"; + } + + // source port group + leaf srcPortGroup { + + type acl_Name; + description "Source port group"; + } + + // destination port group + leaf dstPortGroup { + + type acl_Name; + description "Destination port group"; + } + leaf redirect { + type string { + length "0..576"; + } + description "Redirect action"; + } + leaf telemetryQueue { + type boolean; + description "telemetry queue action"; + } + leaf telemetryPath { + type boolean; + description "telemetry path action"; + } + + // UDF + container udf-items { + + uses ipv4acl_UDF-group; + description "Internet Protocol version4 UDF"; + } + } + + grouping ipv4acl_UDF-group { + description "Internet Protocol version4 UDF"; + + // supports at most 18 UDF udf1 Name + leaf udf1Name { + + type acl_UdfName; + description "User-defined field match 1"; + } + + // udf1 Value + leaf udf1Val { + + type acl_UdfVal; + description "UDF1 value to match"; + } + + // udf1 Mask + leaf udf1Mask { + + type acl_UdfMask; + description "Mask to apply to UDF1 value"; + } + + // udf2 Name + leaf udf2Name { + + type acl_UdfName; + description "User-defined field match 2"; + } + + // udf2 Value + leaf udf2Val { + + type acl_UdfVal; + description "UDF2 value to match"; + } + + // udf2 Mask + leaf udf2Mask { + + type acl_UdfMask; + description "Mask to apply to UDF2 value"; + } + + // udf3 Name + leaf udf3Name { + + type acl_UdfName; + description "User-defined field match 3"; + } + + // udf3 Value + leaf udf3Val { + + type acl_UdfVal; + description "UDF3 value to match"; + } + + // udf3 Mask + leaf udf3Mask { + + type acl_UdfMask; + description "Mask to apply to UDF3 value"; + } + + // udf4 Name + leaf udf4Name { + + type acl_UdfName; + description "User-defined field match 4"; + } + + // udf4 Value + leaf udf4Val { + + type acl_UdfVal; + description "UDF4 value to match"; + } + + // udf4 Mask + leaf udf4Mask { + + type acl_UdfMask; + description "Mask to apply to UDF4 value"; + } + + // udf5 Name + leaf udf5Name { + + type acl_UdfName; + description "User-defined field match 5"; + } + + // udf5 Value + leaf udf5Val { + + type acl_UdfVal; + description "UDF5 value to match"; + } + + // udf5 Mask + leaf udf5Mask { + + type acl_UdfMask; + description "Mask to apply to UDF5 value"; + } + + // udf6 Name + leaf udf6Name { + + type acl_UdfName; + description "User-defined field match 6"; + } + + // udf6 Value + leaf udf6Val { + + type acl_UdfVal; + description "UDF6 value to match"; + } + + // udf6 Mask + leaf udf6Mask { + + type acl_UdfMask; + description "Mask to apply to UDF6 value"; + } + + // udf7 Name + leaf udf7Name { + + type acl_UdfName; + description "User-defined field match 7"; + } + + // udf7 Value + leaf udf7Val { + + type acl_UdfVal; + description "UDF7 value to match"; + } + + // udf7 Mask + leaf udf7Mask { + + type acl_UdfMask; + description "Mask to apply to UDF7 value"; + } + + // udf8 Name + leaf udf8Name { + + type acl_UdfName; + description "User-defined field match 8"; + } + + // udf8 Value + leaf udf8Val { + + type acl_UdfVal; + description "UDF8 value to match"; + } + + // udf8 Mask + leaf udf8Mask { + + type acl_UdfMask; + description "Mask to apply to UDF8 value"; + } + + // udf9 Name + leaf udf9Name { + + type acl_UdfName; + description "User-defined field match 9"; + } + + // udf9 Value + leaf udf9Val { + + type acl_UdfVal; + description "UDF9 value to match"; + } + + // udf9 Mask + leaf udf9Mask { + + type acl_UdfMask; + description "Mask to apply to UDF9 value"; + } + + // udf10 Name + leaf udf10Name { + + type acl_UdfName; + description "User-defined field match 10"; + } + + // udf10 Value + leaf udf10Val { + + type acl_UdfVal; + description "UDF10 value to match"; + } + + // udf10 Mask + leaf udf10Mask { + + type acl_UdfMask; + description "Mask to apply to UDF10 value"; + } + + // udf11 Name + leaf udf11Name { + + type acl_UdfName; + description "User-defined field match 11"; + } + + // udf11 Value + leaf udf11Val { + + type acl_UdfVal; + description "UDF11 value to match"; + } + + // udf11 Mask + leaf udf11Mask { + + type acl_UdfMask; + description "Mask to apply to UDF11 value"; + } + + // udf12 Name + leaf udf12Name { + + type acl_UdfName; + description "User-defined field match 12"; + } + + // udf12 Value + leaf udf12Val { + + type acl_UdfVal; + description "UDF12 value to match"; + } + + // udf12 Mask + leaf udf12Mask { + + type acl_UdfMask; + description "Mask to apply to UDF12 value"; + } + + // udf13 Name + leaf udf13Name { + + type acl_UdfName; + description "User-defined field match 13"; + } + + // udf13 Value + leaf udf13Val { + + type acl_UdfVal; + description "UDF13 value to match"; + } + + // udf13 Mask + leaf udf13Mask { + + type acl_UdfMask; + description "Mask to apply to UDF13 value"; + } + + // udf14 Name + leaf udf14Name { + + type acl_UdfName; + description "User-defined field match 14"; + } + + // udf14 Value + leaf udf14Val { + + type acl_UdfVal; + description "UDF14 value to match"; + } + + // udf14 Mask + leaf udf14Mask { + + type acl_UdfMask; + description "Mask to apply to UDF14 value"; + } + + // udf15 Name + leaf udf15Name { + + type acl_UdfName; + description "User-defined field match 15"; + } + + // udf15 Value + leaf udf15Val { + + type acl_UdfVal; + description "UDF15 value to match"; + } + + // udf15 Mask + leaf udf15Mask { + + type acl_UdfMask; + description "Mask to apply to UDF15 value"; + } + + // udf16 Name + leaf udf16Name { + + type acl_UdfName; + description "User-defined field match 16"; + } + + // udf16 Value + leaf udf16Val { + + type acl_UdfVal; + description "UDF16 value to match"; + } + + // udf16 Mask + leaf udf16Mask { + + type acl_UdfMask; + description "Mask to apply to UDF16 value"; + } + + // udf17 Name + leaf udf17Name { + + type acl_UdfName; + description "User-defined field match 17"; + } + + // udf17 Value + leaf udf17Val { + + type acl_UdfVal; + description "UDF17 value to match"; + } + + // udf17 Mask + leaf udf17Mask { + + type acl_UdfMask; + description "Mask to apply to UDF17 value"; + } + + // udf18 Name + leaf udf18Name { + + type acl_UdfName; + description "User-defined field match 18"; + } + + // udf18 Value + leaf udf18Val { + + type acl_UdfVal; + description "UDF18 value to match"; + } + + // udf18 Mask + leaf udf18Mask { + + type acl_UdfMask; + description "Mask to apply to UDF18 value"; + } + } + + grouping ipv4acl_AddrGroup-group { + description "IPv4 ACL address object group"; + + // object-group name + leaf name { + + type acl_Name; + description "Object-group Name in ACL"; + } + + // IPv4 Address Object Group member + container seq-items { + list AddrMember-list { + key "seqNum"; + + uses ipv4acl_AddrMember-group; + description "IPv4 Address Object Group member list"; + } + description "IPv4 Address Object Group member"; + } + } + + grouping ipv4acl_AddrMember-group { + description "IPv4 Address Object Group member"; + + // prefix + leaf prefix { + + type ipv4acl_IPv4Prefix; + description "IPv4 prefix"; + } + + // prefix wildcard mask + leaf prefixMask { + + type ipv4acl_IPv4PrefixMask; + description "IPv4 prefix mask"; + } + + // prefix length + leaf prefixLength { + + type ipv4acl_IPv4PrefixLen; + description "IPv4 prefix length"; + } + + // configState + leaf configStatus { + config "false"; + + type acl_ConfigState; + description "config status"; + } + + // Object Group Member sequence number + leaf seqNum { + + type acl_SequenceNumber; + description "Sequence number"; + } + } + + grouping ipv6acl_AF-group { + description "IPv6 access control list configuration space"; + + container statClear-items { + + uses acl_StatClear-group; + description "clear acl statistics"; + } + + // ACL policies + container policy-items { + + uses acl_Policy-group; + description "Access Control List policy"; + } + + // IPv6 ACL + container name-items { + list ACL-list { + key "name"; + + uses ipv6acl_ACL-group; + description "IPv6 access control list list"; + } + description "IPv6 access control list"; + } + + // IPv6 address object-group + container oName-items { + list AddrGroup-list { + key "name"; + + uses ipv6acl_AddrGroup-group; + description "IPv6 address object group list"; + } + description "IPv6 address object group"; + } + } + + grouping ipv6acl_ACL-group { + description "IPv6 access control list"; + + // extension headers + leaf extnHdr { + + type ipv6acl_ExtnHdr; + description "IPv6 Extension header rule"; + } + + // ACL name + leaf name { + + type acl_Name; + description "Name of Access lists"; + } + + // fragments + leaf fragments { + + type acl_Fragments; + description "Fragments type for IPv4 and IPv6"; + } + + // toggle per-entry statistics + leaf perACEStatistics { + + type acl_ACEStats; + description "Per Access Control Entries statistics"; + } + leaf ignRoutable { + type boolean; + description "Ignore Multicast Routed ACLs"; + } + leaf configStatus { + config "false"; + type uint32; + description "config success indicator"; + } + + // End of Layer 3 ACE (abstract MO) resequnce MO + container reseq-items { + + uses acl_Resequence-group; + description "resequence access-list"; + } + + // IPv6 ACE + container seq-items { + list ACE-list { + key "seqNum"; + + uses ipv6acl_ACE-group; + description "IPv6 access-list entry list"; + } + description "IPv6 access-list entry"; + } + } + + grouping ipv6acl_ACE-group { + description "IPv6 access-list entry"; + + // protocol to match + leaf protocol { + + type ipv6acl_Protocol; + description "Protocol for access-list entry"; + } + + // Protocol Mask + leaf protocolMask { + + type ipv6acl_Protocol; + description "Defines the Protocol Mask"; + } + + // source prefix + leaf srcPrefix { + + type ipv6acl_IPv6Prefix; + description "Source IPv6 prefix"; + } + + // source prefix wildcard mask + leaf srcPrefixMask { + + type ipv6acl_IPv6PrefixMask; + description "Source IPv6 prefix mask"; + } + + // source prefix length + leaf srcPrefixLength { + + type ipv6acl_IPv6PrefixLen; + description "Source IPv6 prefix length"; + } + + // destination prefix + leaf dstPrefix { + + type ipv6acl_IPv6Prefix; + description "Destination IPv6 prefix"; + } + + // destination prefix wildcard mask + leaf dstPrefixMask { + + type ipv6acl_IPv6PrefixMask; + description "Destination IPv6 prefix mask"; + } + + // destination prefix length + leaf dstPrefixLength { + + type ipv6acl_IPv6PrefixLen; + description "Destination IPv6 prefix length"; + } + + // flow-label + leaf flowLabel { + + type ipv6acl_FlowLabel; + description "Flow label"; + } + + // ICMP Str + leaf icmpStr { + + type ipv6acl_ICMPEnum; + description "ICMPv6 Str"; + } + + // ICMP type + leaf icmpType { + + type ipv6acl_ICMPType; + description "ICMPv6 type"; + } + + // ICMP code + leaf icmpCode { + + type ipv6acl_ICMPCode; + description "ICMPv6 code"; + } + + // configState + leaf configStatus { + config "false"; + + type acl_ConfigState; + description "config status"; + } + + // remark + leaf remark { + + type acl_RemarkStr; + description "Access-list entry comment"; + } + + // ACE sequence number + leaf seqNum { + + type acl_SequenceNumber; + description "Sequence number"; + } + + // ACE filtering action + leaf action { + + type acl_ActionType; + description "Specify packets to forward or reject"; + } + + // source port operator + leaf srcPortOp { + + type acl_Operator; + description "Source port operator"; + } + + // first source port + leaf srcPort1 { + + type acl_PortNumber; + description "First source port"; + } + + // second source port + leaf srcPort2 { + + type acl_PortNumber; + description "Second source port"; + } + + // Source Port Mask + leaf srcPortMask { + + type acl_PortNumber; + description "Defines the Source Port Mask"; + } + + // destination port operator + leaf dstPortOp { + + type acl_Operator; + description "Destination port operator"; + } + + // first destination port + leaf dstPort1 { + + type acl_PortNumber; + description "First destination port number"; + } + + // second destination port + leaf dstPort2 { + + type acl_PortNumber; + description "Second destination port number"; + } + + // Destination Port Mask + leaf dstPortMask { + + type acl_PortNumber; + description "Destination Port Mask"; + } + leaf logging { + type boolean; + default "false"; + description "Log matches against ACL entry"; + } + leaf dscp { + type uint8 { + range "0..63"; + } + description "dscp"; + } + leaf dscpMask { + type uint8 { + range "0..63"; + } + description "dscpMask"; + } + + // packet-length operator + leaf pktLenOp { + + type acl_Operator; + description "packet length operator"; + } + + // First packet-length + leaf pktLen1 { + + type acl_PktLen; + description "first packet length"; + } + + // second packet-length + leaf pktLen2 { + + type acl_PktLen; + description "second packet length"; + } + leaf urg { + type boolean; + description "tcp urg"; + } + leaf ack { + type boolean; + description "tcp ack"; + } + leaf psh { + type boolean; + description "tcp psh"; + } + leaf rst { + type boolean; + description "tcp rst"; + } + leaf syn { + type boolean; + description "tcp syn"; + } + leaf fin { + type boolean; + description "tcp fin"; + } + leaf est { + type boolean; + description "tcp est"; + } + leaf rev { + type boolean; + description "tcp reversed"; + } + + leaf tcpFlagsMask { + + type acl_TcpFlagsMask; + description "tcp flags mask"; + } + leaf packets { + config "false"; + type uint64; + description "Number of packets hitting ACE"; + } + leaf fragment { + type boolean; + description "Non-initial fragment"; + } + + // capture session + leaf captureSession { + + type acl_CaptureSes; + description "capture session"; + } + + // http option (http-method) + leaf httpOption { + + type acl_HttpOptionType; + description "http option http-method"; + } + + // nve vni ID + leaf vni { + + type acl_VniType; + description "nve vni ID"; + } + + // vlan + leaf vlan { + + type acl_VlanType; + description "vlan"; + } + + // TCP option length + leaf tcpOptionLength { + + type acl_TcpOptionLengthType; + description "TCP options length"; + } + + // time-range + leaf timeRange { + + type acl_Name; + description "time range name"; + } + + // source address group + leaf srcAddrGroup { + + type acl_Name; + description "Source address group"; + } + + // destination address group + leaf dstAddrGroup { + + type acl_Name; + description "Destination address group"; + } + + // source port group + leaf srcPortGroup { + + type acl_Name; + description "Source port group"; + } + + // destination port group + leaf dstPortGroup { + + type acl_Name; + description "Destination port group"; + } + leaf redirect { + type string { + length "0..576"; + } + description "Redirect action"; + } + leaf telemetryQueue { + type boolean; + description "telemetry queue action"; + } + leaf telemetryPath { + type boolean; + description "telemetry path action"; + } + + // UDF + container udf-items { + + uses ipv6acl_UDF-group; + description "Internet Protocol version4 UDF"; + } + } + + grouping ipv6acl_UDF-group { + description "Internet Protocol version4 UDF"; + + // supports at most 18 UDF udf1 Name + leaf udf1Name { + + type acl_UdfName; + description "User-defined field match 1"; + } + + // udf1 Value + leaf udf1Val { + + type acl_UdfVal; + description "UDF1 value to match"; + } + + // udf1 Mask + leaf udf1Mask { + + type acl_UdfMask; + description "Mask to apply to UDF1 value"; + } + + // udf2 Name + leaf udf2Name { + + type acl_UdfName; + description "User-defined field match 2"; + } + + // udf2 Value + leaf udf2Val { + + type acl_UdfVal; + description "UDF2 value to match"; + } + + // udf2 Mask + leaf udf2Mask { + + type acl_UdfMask; + description "Mask to apply to UDF2 value"; + } + + // udf3 Name + leaf udf3Name { + + type acl_UdfName; + description "User-defined field match 3"; + } + + // udf3 Value + leaf udf3Val { + + type acl_UdfVal; + description "UDF3 value to match"; + } + + // udf3 Mask + leaf udf3Mask { + + type acl_UdfMask; + description "Mask to apply to UDF3 value"; + } + + // udf4 Name + leaf udf4Name { + + type acl_UdfName; + description "User-defined field match 4"; + } + + // udf4 Value + leaf udf4Val { + + type acl_UdfVal; + description "UDF4 value to match"; + } + + // udf4 Mask + leaf udf4Mask { + + type acl_UdfMask; + description "Mask to apply to UDF4 value"; + } + + // udf5 Name + leaf udf5Name { + + type acl_UdfName; + description "User-defined field match 5"; + } + + // udf5 Value + leaf udf5Val { + + type acl_UdfVal; + description "UDF5 value to match"; + } + + // udf5 Mask + leaf udf5Mask { + + type acl_UdfMask; + description "Mask to apply to UDF5 value"; + } + + // udf6 Name + leaf udf6Name { + + type acl_UdfName; + description "User-defined field match 6"; + } + + // udf6 Value + leaf udf6Val { + + type acl_UdfVal; + description "UDF6 value to match"; + } + + // udf6 Mask + leaf udf6Mask { + + type acl_UdfMask; + description "Mask to apply to UDF6 value"; + } + + // udf7 Name + leaf udf7Name { + + type acl_UdfName; + description "User-defined field match 7"; + } + + // udf7 Value + leaf udf7Val { + + type acl_UdfVal; + description "UDF7 value to match"; + } + + // udf7 Mask + leaf udf7Mask { + + type acl_UdfMask; + description "Mask to apply to UDF7 value"; + } + + // udf8 Name + leaf udf8Name { + + type acl_UdfName; + description "User-defined field match 8"; + } + + // udf8 Value + leaf udf8Val { + + type acl_UdfVal; + description "UDF8 value to match"; + } + + // udf8 Mask + leaf udf8Mask { + + type acl_UdfMask; + description "Mask to apply to UDF8 value"; + } + + // udf9 Name + leaf udf9Name { + + type acl_UdfName; + description "User-defined field match 9"; + } + + // udf9 Value + leaf udf9Val { + + type acl_UdfVal; + description "UDF9 value to match"; + } + + // udf9 Mask + leaf udf9Mask { + + type acl_UdfMask; + description "Mask to apply to UDF9 value"; + } + + // udf10 Name + leaf udf10Name { + + type acl_UdfName; + description "User-defined field match 10"; + } + + // udf10 Value + leaf udf10Val { + + type acl_UdfVal; + description "UDF10 value to match"; + } + + // udf10 Mask + leaf udf10Mask { + + type acl_UdfMask; + description "Mask to apply to UDF10 value"; + } + + // udf11 Name + leaf udf11Name { + + type acl_UdfName; + description "User-defined field match 11"; + } + + // udf11 Value + leaf udf11Val { + + type acl_UdfVal; + description "UDF11 value to match"; + } + + // udf11 Mask + leaf udf11Mask { + + type acl_UdfMask; + description "Mask to apply to UDF11 value"; + } + + // udf12 Name + leaf udf12Name { + + type acl_UdfName; + description "User-defined field match 12"; + } + + // udf12 Value + leaf udf12Val { + + type acl_UdfVal; + description "UDF12 value to match"; + } + + // udf12 Mask + leaf udf12Mask { + + type acl_UdfMask; + description "Mask to apply to UDF12 value"; + } + + // udf13 Name + leaf udf13Name { + + type acl_UdfName; + description "User-defined field match 13"; + } + + // udf13 Value + leaf udf13Val { + + type acl_UdfVal; + description "UDF13 value to match"; + } + + // udf13 Mask + leaf udf13Mask { + + type acl_UdfMask; + description "Mask to apply to UDF13 value"; + } + + // udf14 Name + leaf udf14Name { + + type acl_UdfName; + description "User-defined field match 14"; + } + + // udf14 Value + leaf udf14Val { + + type acl_UdfVal; + description "UDF14 value to match"; + } + + // udf14 Mask + leaf udf14Mask { + + type acl_UdfMask; + description "Mask to apply to UDF14 value"; + } + + // udf15 Name + leaf udf15Name { + + type acl_UdfName; + description "User-defined field match 15"; + } + + // udf15 Value + leaf udf15Val { + + type acl_UdfVal; + description "UDF15 value to match"; + } + + // udf15 Mask + leaf udf15Mask { + + type acl_UdfMask; + description "Mask to apply to UDF15 value"; + } + + // udf16 Name + leaf udf16Name { + + type acl_UdfName; + description "User-defined field match 16"; + } + + // udf16 Value + leaf udf16Val { + + type acl_UdfVal; + description "UDF16 value to match"; + } + + // udf16 Mask + leaf udf16Mask { + + type acl_UdfMask; + description "Mask to apply to UDF16 value"; + } + + // udf17 Name + leaf udf17Name { + + type acl_UdfName; + description "User-defined field match 17"; + } + + // udf17 Value + leaf udf17Val { + + type acl_UdfVal; + description "UDF17 value to match"; + } + + // udf17 Mask + leaf udf17Mask { + + type acl_UdfMask; + description "Mask to apply to UDF17 value"; + } + + // udf18 Name + leaf udf18Name { + + type acl_UdfName; + description "User-defined field match 18"; + } + + // udf18 Value + leaf udf18Val { + + type acl_UdfVal; + description "UDF18 value to match"; + } + + // udf18 Mask + leaf udf18Mask { + + type acl_UdfMask; + description "Mask to apply to UDF18 value"; + } + } + + grouping ipv6acl_AddrGroup-group { + description "IPv6 address object group"; + + // object-group name + leaf name { + + type acl_Name; + description "Object-group Name in ACL"; + } + + // IPv6 Address Object Group member + container seq-items { + list AddrMember-list { + key "seqNum"; + + uses ipv6acl_AddrMember-group; + description "IPv6 Address Object Group member list"; + } + description "IPv6 Address Object Group member"; + } + } + + grouping ipv6acl_AddrMember-group { + description "IPv6 Address Object Group member"; + + // prefix + leaf prefix { + + type ipv6acl_IPv6Prefix; + description "IPv6 prefix"; + } + + // prefix wildcard mask + leaf prefixMask { + + type ipv6acl_IPv6PrefixMask; + description "IPv6 prefix mask"; + } + + // prefix length + leaf prefixLength { + + type ipv6acl_IPv6PrefixLen; + description "IPv6 prefix length"; + } + + // configState + leaf configStatus { + config "false"; + + type acl_ConfigState; + description "config status"; + } + + // Object Group Member sequence number + leaf seqNum { + + type acl_SequenceNumber; + description "Sequence number"; + } + } + + grouping analytics_Entity-group { + description "Entity"; + + // Holds netflow and analytics instance information + container inst-items { + list Inst-list { + key "mode"; + + uses analytics_Inst-group; + description "Holds the Analytics instance information list"; + } + description "Holds the Analytics instance information"; + } + } + + grouping analytics_Inst-group { + description "Holds the Analytics instance information"; + + // analytics/netflow mode + leaf mode { + + type analytics_ModeT; + description "Mode Select to represent the feature"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // Platform capability informations + container capability-items { + + uses analytics_Capability-group; + description "Platform Capability Information"; + } + + // Slot info + container slot-items { + list Slot-list { + config "false"; + key "slotid"; + + uses analytics_Slot-group; + description "Module Number for this Capability list"; + } + description "Module Number for this Capability"; + } + + // Controller information for bootstrapping the analytics agent + container controller-items { + list Controller-list { + key "name"; + + uses analytics_Controller-group; + description "Controller Reachability list"; + } + description "Controller Reachability"; + } + + // Flow Record + container recordp-items { + list RecordP-list { + key "name"; + + uses analytics_RecordP-group; + description "Flow Record list"; + } + description "Flow Record"; + } + + // Flow Collector + container collector-items { + list Collector-list { + key "name"; + + uses analytics_Collector-group; + description "Collector entry list"; + } + description "Collector entry"; + } + + // Flow Monitor one monitor can be attached to n records + container monitor-items { + list Monitor-list { + key "name"; + + uses analytics_Monitor-group; + description "Flow Monitor list"; + } + description "Flow Monitor"; + } + + // Analytics profile + container prof-items { + list Profile-list { + key "name"; + + uses analytics_Profile-group; + description "Profile list"; + } + description "Profile"; + } + + // FTE Events + container events-items { + list Events-list { + key "name"; + + uses analytics_Events-group; + description "Configure FTE Events Information list"; + } + description "Configure FTE Events Information"; + } + + // Forwarding instance based target + container fwdinst-items { + list FwdInstTarget-list { + key "id"; + + uses analytics_FwdInstTarget-group; + description "Forward Instance Target list"; + } + description "Forward Instance Target"; + } + + // Policy Container for ACLs + container policy-items { + list Policy-list { + key "name"; + + uses analytics_Policy-group; + description "Policy list"; + } + description "Policy"; + } + } + + grouping analytics_Capability-group { + description "Platform Capability Information"; + + // Mode + leaf fabricMode { + config "false"; + + type analytics_CModeT; + description "Mode to Indicate Platform Type"; + } + + // Collector Bucket Hash Width + leaf bucketHashWidth { + config "false"; + + type analytics_HashWidthT; + description "Bit Width of the Collector Bucket Hash"; + } + + // Number of TCAM entries + leaf numTcamEnt { + config "false"; + + type analytics_numTcamEntT; + description "Number of TCAM Entries"; + } + + // Number of TCAM entries per V4 type + leaf numTcamEntPerV4 { + config "false"; + + type analytics_numTcamEntV4T; + description "Number of TCAM Entries per V4 type"; + } + + // Number of TCAM entries per V6 type + leaf numTcamEntPerV6 { + config "false"; + + type analytics_numTcamEntV6T; + description "Number of TCAM Entries per V6 type"; + } + + // Latency Resolution Factor + leaf configLatencyResFactor { + config "false"; + + type analytics_configLatencyResFactorT; + description "Ability to Configure Resolution Factor"; + } + + // Oport support + leaf oportSupport { + config "false"; + + type analytics_oportSupportT; + description "Ability to expose Oport information"; + } + + // Oclass support + leaf oclassSupport { + config "false"; + + type analytics_oportSupportT; + description "Ability to expose Oclass information"; + } + } + + grouping analytics_Slot-group { + description "Module Number for this Capability"; + + // Slot identifier + leaf slotid { + config "false"; + + type analytics_OclassId; + description "Module Number for this Capability"; + } + + // Oclass info + container oclass-items { + list Oclass-list { + config "false"; + key "id"; + + uses analytics_Oclass-group; + description "Oclass to Priority Mapping list"; + } + description "Oclass to Priority Mapping"; + } + } + + grouping analytics_Oclass-group { + description "Oclass to Priority Mapping"; + + // Oclass identifier + leaf id { + config "false"; + + type analytics_OclassId; + description "Egress Port Class ID"; + } + leaf priorityMapping { + config "false"; + type string; + description "Egree Port Priority Mapping"; + } + } + + grouping analytics_Controller-group { + description "Controller Reachability"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Remote node VRF + leaf vrfName { + + type analytics_VrfName; + description "VRF to connect to the Remote Collector"; + } + leaf dstAddr { + type address_Ip; + description "Destination IP of the Remote Collector"; + } + + // Remote node destination port + leaf dstPort { + + type l4_Port; + description "L4 Port of the Remote Collector"; + } + + // IP dscp value + leaf dscp { + + type qosp_DscpCP; + description "DSCP value of the Remote Collector"; + } + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface that contains the Source IP for Analytics packets"; + } + leaf srcAddr { + type address_Ip; + description "Source IP Address for Analytics packets"; + } + } + + grouping analytics_RecordP-group { + description "Flow Record"; + + // Match parameters for the flow record + leaf match { + + type analytics_MatchParams; + description "Analytics Record profile parameters to match flows on."; + } + + // Collect parameters for the flow record + leaf collect { + + type analytics_CollectParams; + description "Analytics Record parameters to collect in the flows."; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + } + + grouping analytics_Collector-group { + description "Collector entry"; + + // Collector version + leaf ver { + + type analytics_CollVersion; + description "Collector Version Format"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Remote node VRF + leaf vrfName { + + type analytics_VrfName; + description "VRF to connect to the Remote Collector"; + } + leaf dstAddr { + type address_Ip; + description "Destination IP of the Remote Collector"; + } + + // Remote node destination port + leaf dstPort { + + type l4_Port; + description "L4 Port of the Remote Collector"; + } + + // IP dscp value + leaf dscp { + + type qosp_DscpCP; + description "DSCP value of the Remote Collector"; + } + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface that contains the Source IP for Analytics packets"; + } + leaf srcAddr { + type address_Ip; + description "Source IP Address for Analytics packets"; + } + } + + grouping analytics_Monitor-group { + description "Flow Monitor"; + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Collector bucket info + container collectorbucket-items { + list CollectorBucket-list { + key "id"; + + uses analytics_CollectorBucket-group; + description "Flow Collector Bucket Entry list"; + } + description "Flow Collector Bucket Entry"; + } + + container rsrecordPAtt-items { + + uses analytics_RsRecordPAtt_source-group; + description "Record Policy Attachment"; + } + + container rtl3VrfMonitorAtt-items { + + list RtL3VrfMonitorAtt-list { + config "false"; + key "tDn"; + + uses l3_RtL3VrfMonitorAtt_target-group; + description "Vrf Reference to Analytics monitor. list"; + } + description "Vrf Reference to Analytics monitor."; + } + } + + grouping analytics_CollectorBucket-group { + description "Flow Collector Bucket Entry"; + + // Collector bucket identifier + leaf id { + + type analytics_CollBucketId; + description "Flow Collector Bucket Id"; + } + + // HashLo value for this collector bucket + leaf hashLo { + + type analytics_HashT; + description "Collector Bucket Hash Low Value"; + } + + // HashHi value for this collector bucket + leaf hashHi { + + type analytics_HashT; + description "Collector Bucket Hash High Value"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + container rscollectorAtt-items { + + list RsCollectorAtt-list { + key "tDn"; + + uses analytics_RsCollectorAtt_source-group; + description "Reference to Collector list"; + } + description "Reference to Collector"; + } + } + + grouping analytics_Profile-group { + description "Profile"; + + // Collect interval + leaf collectIntvl { + + type analytics_CollIntvl; + description "Collect Interval in Milliseconds"; + } + + // Source port + leaf srcPort { + + type analytics_L4Port; + description "Source L4 Port for the Analytics packets"; + } + + // IP packet id shift + leaf ipPktIdShift { + + type analytics_IpPktIdShift; + description "Analytics IP Packet Id Shift"; + } + + // Burst interval shift + leaf burstIntvlShift { + + type analytics_BurstIntvlShift; + description "Timestamp Shift Value for Burst Interval"; + } + + // Collector export packet MTU + leaf mtu { + + type analytics_Mtu; + description "MTU for the Analytics flow record packets."; + } + + // Sequence number guess threshold low + leaf seqNumGuessThreshLo { + + type analytics_ThresholdT; + description "Sequence Number Guess Threshold Low"; + } + + // Sequence number guess threshold high + leaf seqNumGuessThreshHi { + + type analytics_ThresholdT; + description "Sequence Number Guess Threshold High"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Payload length bin + container payloadlenbin-items { + list PayloadLenBin-list { + key "id"; + + uses analytics_PayloadLenBin-group; + description "Payload length bin entry list"; + } + description "Payload length bin entry"; + } + + // TCP options header length bin + container tcpopthdrlenbin-items { + list TCPOptHdrLenBin-list { + key "id"; + + uses analytics_TCPOptHdrLenBin-group; + description "TCP optional header length bin entry list"; + } + description "TCP optional header length bin entry"; + } + + // Receive window size bin + container rcvwindowszbin-items { + list RcvWindowSzBin-list { + key "id"; + + uses analytics_RcvWindowSzBin-group; + description "Receive window size bin entry list"; + } + description "Receive window size bin entry"; + } + } + + grouping analytics_PayloadLenBin-group { + description "Payload length bin entry"; + + // Identifier + leaf id { + + type analytics_PayloadLenIdT; + description "Payload Length Bin Id"; + } + + // Low value + leaf lo { + + type analytics_PayloadLenT; + description "Analytics payload bin low value"; + } + + // High value + leaf hi { + + type analytics_PayloadLenT; + description "Analytics payload bin high value"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping analytics_TCPOptHdrLenBin-group { + description "TCP optional header length bin entry"; + + // Identifier + leaf id { + + type analytics_TCPOptHdrLenIdT; + description "TCP option header length bin ID"; + } + + // Low value + leaf lo { + + type analytics_TCPOptHdrLenT; + description "Analytics TCP option header bin Low value"; + } + + // High value + leaf hi { + + type analytics_TCPOptHdrLenT; + description "Analytics TCP option header bin high value"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping analytics_RcvWindowSzBin-group { + description "Receive window size bin entry"; + + // Identifier + leaf id { + + type analytics_RcvWindowSzIdT; + description "Receive window size bin ID"; + } + + // Low value + leaf lo { + + type analytics_RcvWindowSzT; + description "Analytics Receive Window Size header bin low value"; + } + + // High value + leaf hi { + + type analytics_RcvWindowSzT; + description "Analytics Receive Window Size header bin high value"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping analytics_Events-group { + description "Configure FTE Events Information"; + leaf groupDropEvents { + type boolean; + description "Configure the group drop events for FTE Event"; + } + leaf groupLatencyEvents { + type boolean; + description "Configure the group latency events for FTE Event"; + } + leaf aclDrops { + type boolean; + description "Configure the capture acl-drops in fte-event-drop-events mode for FTE Event"; + } + leaf bufferDrops { + type boolean; + description "Configure the capture buffer-drops in fte-event-drop-events mode for FTE Record"; + } + leaf fwdDrops { + type boolean; + description "Configure the capture forward-drops in fte-event-drop-events mode for FTE Record"; + } + leaf blackHole { + type boolean; + description "Configure the capture blackhole in fte-event-drop-events mode for FTE Record"; + } + + // Latency under FTE + leaf latencyThreshold { + + type analytics_LatencyValue; + description "Configure FTE Latency Threshold limit"; + } + + // Latency Unit under FTE + leaf latencyThresholdUnit { + + type analytics_LatencyUnit; + description "Configure FTE Latency Threshold Unit"; + } + + // Event Export max + leaf eventExportMax { + + type analytics_EventExportMax; + description "Configure FTE Event Export Max Value"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + } + + grouping analytics_FwdInstTarget-group { + description "Forward Instance Target"; + + // Identifier + leaf id { + + type analytics_FwdInstTargetId; + description "Analytics Target identifier"; + } + + // Collector identifier provided by the analytics controller + leaf collectorId { + + type analytics_CollectorId; + description "Analytics exporter Id to identify the exporting hardware instance."; + } + + // Default filtering policy + leaf DefPolicy { + + type analytics_DefPolicyT; + description "Default Filtering Policy"; + } + + // IPv4 Hit Count + leaf ipv4Hit { + + type analytics_hitCount; + description "Analytics IPv4 Flow Hit Count"; + } + + // IPv6 Hit Count + leaf ipv6Hit { + + type analytics_hitCount; + description "Analytics IPv6 Flow Hit Count"; + } + + // CE Hit Count + leaf ceHit { + + type analytics_hitCount; + description "Analytics CE Flow Hit Count"; + } + + // IPv4 Create Count + leaf ipv4Create { + + type analytics_createCount; + description "Analytics IPv4 Flow Create Count"; + } + + // IPv6 Create Count + leaf ipv6Create { + + type analytics_createCount; + description "Analytics IPv6 Flow Create Count"; + } + + // CE Create Count + leaf ceCreate { + + type analytics_createCount; + description "Analytics CE Flow Create Count"; + } + leaf exportCount { + type uint32; + description "Analytics Flow Export Count"; + } + leaf skipCount { + type uint32; + description "Analytics Flow Skip Count"; + } + + // IP filter type + leaf fltType { + + type analytics_FltType; + description "Analytics Target filter type"; + } + + // Direction + leaf dir { + + type analytics_DirectionT; + description "Analytics profile direction"; + } + + container rsprofAtt-items { + + uses analytics_RsProfAtt_source-group; + description "Reference to profile."; + } + + container rspolicyAtt-items { + + uses analytics_RsPolicyAtt_source-group; + description "Reference to policy."; + } + + container rseventsAtt-items { + + uses analytics_RsEventsAtt_source-group; + description "Reference to FTE Events"; + } + + container rsmonitorAtt-items { + + uses analytics_RsMonitorAtt_source-group; + description "Reference to Monitor"; + } + + container dbgStatistics-items { + + uses analytics_Statistics-group; + description "Analytics Statistics"; + } + } + + grouping analytics_Policy-group { + description "Policy"; + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Match ACL + container acl-items { + list MatchAcl-list { + key "name"; + + uses analytics_MatchAcl-group; + description "Match ACL list"; + } + description "Match ACL"; + } + + container rtl3VrfPolicyAtt-items { + + list RtL3VrfPolicyAtt-list { + config "false"; + key "tDn"; + + uses l3_RtL3VrfPolicyAtt_target-group; + description "Vrf Reference to Analytics policy. list"; + } + description "Vrf Reference to Analytics policy."; + } + } + + grouping analytics_MatchAcl-group { + description "Match ACL"; + leaf aclName { + type string; + description "Match using ACL"; + } + + // Filter type + leaf fltType { + + type analytics_FltType; + description "ACL Filter Type"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + } + + grouping analytics_HwTelemetry-group { + description "Entity for all Hardware Telemetry features"; + + container fte-items { + + uses fte_Fte-group; + description "Configure Flow Table Events"; + } + + // Contains BDC instance info + container visibility-items { + + uses visibility_Visibility-group; + description "Entity MO for all Visibility Features"; + } + + container inbandtelemetry-items { + + uses inbandTelemetry_Int-group; + description "int"; + } + + container netflow-items { + + uses netflow_Netflow-group; + description "Netflow entity"; + } + + container sflow-items { + + uses sflow_Sflow-group; + description "Sflow entity"; + } + + container ssx-items { + + uses ssx_Ssx-group; + description "ssx"; + } + } + + grouping fte_Fte-group { + description "Configure Flow Table Events"; + leaf enable { + type boolean; + description "Enable FTE instance"; + } + + // Holds FTE instance information + container inst-items { + list Inst-list { + key "mode"; + + uses fte_Inst-group; + description "Configure FTE Instance list"; + } + description "Configure FTE Instance"; + } + } + + grouping fte_Inst-group { + description "Configure FTE Instance"; + + // FTE mode + leaf mode { + + type fte_ModeT; + description "Configure the type of FTE instance"; + } + + // FTE Collector info + container collector-items { + list Collector-list { + key "name"; + + uses fte_Collector-group; + description "Configure the FTE Collector Information list"; + } + description "Configure the FTE Collector Information"; + } + + // FTE Record + container record-items { + list Record-list { + key "name"; + + uses fte_Record-group; + description "Configure FTE Record Information list"; + } + description "Configure FTE Record Information"; + } + + // FTE Events + container events-items { + list Events-list { + key "name"; + + uses fte_Events-group; + description "Configure FTE Events Information list"; + } + description "Configure FTE Events Information"; + } + + // FTE Monitor one monitor can be attached to n records + container monitor-items { + list Monitor-list { + key "name"; + + uses fte_Monitor-group; + description "Configure FTE Monitor Information list"; + } + description "Configure FTE Monitor Information"; + } + + // System FTE + container sysfte-items { + list SysFte-list { + key "name"; + + uses fte_SysFte-group; + description "Configure System Flow Table Events list"; + } + description "Configure System Flow Table Events"; + } + } + + grouping fte_Collector-group { + description "Configure the FTE Collector Information"; + + // Collector node VRF + leaf vrfName { + + type fte_VrfName; + description "Configure Collector Entity VRF"; + } + leaf dstAddr { + type address_Ip; + description "Configure Collector Entity IP"; + } + + // Source UDP Port + leaf srcPort { + + type l4_Port; + description "Configure Collector Entity Source L4 Port"; + } + leaf srcAddr { + type address_Ip; + description "Configure Collector Entity Source IP Address"; + } + leaf id { + type uint32; + description "Configure Collector Entity id Value"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + } + + grouping fte_Record-group { + description "Configure FTE Record Information"; + leaf dstIpv4 { + type boolean; + description "Configure the Match ipv4 destination address for FTE Record"; + } + leaf dstIpv6 { + type boolean; + description "Configure the Match ipv6 destination address for FTE Record"; + } + leaf dstMac { + type boolean; + description "Configure the Match datalink mac destination address for FTE Record"; + } + leaf dstPortIpv4 { + type boolean; + description "Configure the Match ipv4 transport destination port for FTE Record"; + } + leaf dstPortIpv6 { + type boolean; + description "Configure the Match ipv6 transport destination port for FTE Record"; + } + leaf etherType { + type boolean; + description "Configure the Match datalink ethertype for FTE Record"; + } + leaf flowLabel { + type boolean; + description "Configure the Match ipv6 flow-label for FTE Record"; + } + leaf protoIpv4 { + type boolean; + description "Configure the Match ipv4 protocol for FTE Record"; + } + leaf protoIpv6 { + type boolean; + description "Configure the Match ipv6 protocol for FTE Record"; + } + leaf srcIpv4 { + type boolean; + description "Configure the Match ipv4 source address for FTE Record"; + } + leaf srcIpv6 { + type boolean; + description "Configure the Match ipv6 source address for FTE Record"; + } + leaf srcMac { + type boolean; + description "Configure the Match datalink mac source address for FTE Record"; + } + leaf srcPortIpv4 { + type boolean; + description "Configure the Match ipv4 transport source-port for FTE Record"; + } + leaf srcPortIpv6 { + type boolean; + description "Configure the Match ipv6 transport source-port for FTE Record"; + } + leaf tosIpv4 { + type boolean; + description "Configure the Match ipv4 tos for FTE Record"; + } + leaf tosIpv6 { + type boolean; + description "Configure the Match ipv6 tos for FTE Record"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + } + + grouping fte_Events-group { + description "Configure FTE Events Information"; + leaf groupDropEvents { + type boolean; + description "Configure the group drop events for FTE Event"; + } + leaf groupLatencyEvents { + type boolean; + description "Configure the group latency events for FTE Event"; + } + leaf aclDrops { + type boolean; + description "Configure the capture acl-drops in fte-event-drop-events mode for FTE Event"; + } + leaf bufferDrops { + type boolean; + description "Configure the capture buffer-drops in fte-event-drop-events mode for FTE Record"; + } + leaf fwdDrops { + type boolean; + description "Configure the capture forward-drops in fte-event-drop-events mode for FTE Record"; + } + leaf blackHole { + type boolean; + description "Configure the capture blackhole in fte-event-drop-events mode for FTE Record"; + } + + // Latency under FTE + leaf latencyThreshold { + + type fte_LatencyValue; + description "Configure FTE Latency Threshold limit"; + } + + // Latency Unit under FTE + leaf latencyThresholdUnit { + + type fte_LatencyUnit; + description "Configure FTE Latency Threshold Unit"; + } + + // Latency events flow count under FTE + leaf latencyFlowCount { + + type fte_FlowCountValue; + description "Configure FTE Latency events flow count"; + } + + // Drop events flow count under FTE + leaf dropFlowCount { + + type fte_FlowCountValue; + description "Configure FTE drop events flow count"; + } + + // Event Export max + leaf eventExportMax { + + type fte_EventExportMax; + description "Configure FTE Event Export Max Value"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + } + + grouping fte_Monitor-group { + description "Configure FTE Monitor Information"; + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + container rsrecordAtt-items { + + list RsRecordAtt-list { + key "tDn"; + + uses fte_RsRecordAtt_source-group; + description "Attach FTE Record to FTE Monitor list"; + } + description "Attach FTE Record to FTE Monitor"; + } + + container rscollectorAtt-items { + + list RsCollectorAtt-list { + key "tDn"; + + uses fte_RsCollectorAtt_source-group; + description "Attach FTE Collector to FTE Monitor list"; + } + description "Attach FTE Collector to FTE Monitor"; + } + + container rseventsAtt-items { + + list RsEventsAtt-list { + key "tDn"; + + uses fte_RsEventsAtt_source-group; + description "Attach FTE Events to FTE Monitor list"; + } + description "Attach FTE Events to FTE Monitor"; + } + } + + grouping fte_SysFte-group { + description "Configure System Flow Table Events"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + container rsmonitorAtt-items { + + list RsMonitorAtt-list { + key "tDn"; + + uses fte_RsMonitorAtt_source-group; + description "Attach FTE Monitor to System FTE list"; + } + description "Attach FTE Monitor to System FTE"; + } + } + + grouping visibility_Visibility-group { + description "Entity MO for all Visibility Features"; + + // Contains Buffer Drop instance info + container bufferdrop-items { + + uses bd_BufferDropInst-group; + description "Instance MO for Buffer Drop"; + } + + // Contains Buffer Latency instance info + container bufferlatency-items { + + uses bl_BufferLatencyInst-group; + description "Instance MO for Buffer Latency"; + } + + // Contains INT Clone MD instance info + container intclonemd-items { + + uses ipt_IntCloneMdInst-group; + description "Instance MO for INT Clone MD"; + } + } + + grouping bd_BufferDropInst-group { + description "Instance MO for Buffer Drop"; + leaf isEnabled { + type boolean; + default "false"; + description "Denotes whether Buffer Drop feature is enabled"; + } + + // Contains Buffer Drop Monitor info + container monitor-items { + list Monitor-list { + key "name"; + + uses bd_Monitor-group; + description "Monitor MO for Buffer Drop Capture list"; + } + description "Monitor MO for Buffer Drop Capture"; + } + + // Buffer Drop Collector info + container collector-items { + list Collector-list { + key "name"; + + uses bd_Collector-group; + description "Configure the Buffer Drop Collector Information list"; + } + description "Configure the Buffer Drop Collector Information"; + } + + // System for Buffer Drop + container system-items { + + uses bd_System-group; + description "Configure System for Buffer Drop Capture"; + } + } + + grouping bd_Monitor-group { + description "Monitor MO for Buffer Drop Capture"; + + leaf name { + + type bd_MonitorName; + description "Identifying name of the monitor"; + } + + leaf description { + + type bd_Description; + description "Description of the specified monitor"; + } + + leaf aclName { + + type bd_AclName; + description "Name of the Access Control List applied on the current monitor session"; + } + + leaf v6AclName { + + type bd_AclName; + description "Name of the IPv6 Access Control List applied on the current monitor session"; + } + + // SAMPLING PROPERTIES Sampling Rate + leaf samplingRate { + + type bd_SamplingRate; + description "Value of the sampling rate for the given queues"; + } + + // Following 2 properties are only for MB Sampling Time intervals + leaf samplingMbRate { + + type bd_SamplingMbRate; + description "Sampling time intervals for the given range of queues"; + } + + // Sampling Packets intervals + leaf samplingMbPackets { + + type bd_SamplingMbPackets; + description "Sampling packet count for the given range of queues"; + } + container queue-items { + list Queue-list { + key "id"; + + uses bd_Queue-group; + description "Queue MOs for Buffer Drop Capture. list"; + } + description "Queue MOs for Buffer Drop Capture."; + } + + container rscollectorAtt-items { + + list RsCollectorAtt-list { + key "tDn"; + + uses bd_RsCollectorAtt_source-group; + description "Attach Buffer Drop Collector to Buffer Drop Monitor list"; + } + description "Attach Buffer Drop Collector to Buffer Drop Monitor"; + } + } + + grouping bd_Queue-group { + description "Queue MOs for Buffer Drop Capture."; + + leaf id { + + type bd_QueueId; + description "Identifying number for the queue (0-7)"; + } + } + + grouping bd_Collector-group { + description "Configure the Buffer Drop Collector Information"; + + leaf description { + + type bd_Description; + description "Description of the specified collector"; + } + + leaf destination { + + type nw_IfId; + description "Destination config under the current collector"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + } + + grouping bd_System-group { + description "Configure System for Buffer Drop Capture"; + + container rsmonitorAttch-items { + + list RsMonitorAttch-list { + key "tDn"; + + uses bd_RsMonitorAttch_source-group; + description "Monitor Attachment to System Buffer Drop list"; + } + description "Monitor Attachment to System Buffer Drop"; + } + } + + grouping bl_BufferLatencyInst-group { + description "Instance MO for Buffer Latency"; + leaf isEnabled { + type boolean; + default "false"; + description "Denotes whether Buffer Latency feature is enabled"; + } + container record-items { + list Record-list { + key "name"; + + uses bl_Record-group; + description "Configure Buffer Latency Record Information list"; + } + description "Configure Buffer Latency Record Information"; + } + + // Contains Buffer Latency Monitor info + container monitor-items { + list Monitor-list { + key "name"; + + uses bl_Monitor-group; + description "Monitor MO for Buffer Latency list"; + } + description "Monitor MO for Buffer Latency"; + } + + // Buffer Latency Collector info + container collector-items { + list Collector-list { + key "name"; + + uses bl_Collector-group; + description "Configure the Buffer Latency Collector Information list"; + } + description "Configure the Buffer Latency Collector Information"; + } + + // Contains Buffer Latency Queue Threshold info + container threshold-items { + list Threshold-list { + key "name"; + + uses bl_Threshold-group; + description "Threshold MO for Buffer Latency Queues list"; + } + description "Threshold MO for Buffer Latency Queues"; + } + + // System Buffer Latency + container system-items { + + uses bl_System-group; + description "Configure System for Buffer Latency"; + } + } + + grouping bl_Record-group { + description "Configure Buffer Latency Record Information"; + + leaf description { + + type bl_Description; + description "Description of the specified record"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + container interface-items { + list Interface-list { + key "id"; + + uses bl_Interface-group; + description "Interface configuration MO for Buffer Latency. list"; + } + description "Interface configuration MO for Buffer Latency."; + } + } + + grouping bl_Interface-group { + description "Interface configuration MO for Buffer Latency."; + + leaf id { + + type nw_IfId; + description "The interface id for the session"; + } + container queue-items { + list Queue-list { + key "id"; + + uses bl_Queue-group; + description "Queue Config MO for Buffer Latency list"; + } + description "Queue Config MO for Buffer Latency"; + } + } + + grouping bl_Queue-group { + description "Queue Config MO for Buffer Latency"; + + leaf id { + + type bl_QueueId; + description "Identifying Queue number for Buffer Latency"; + } + + container rsthresholdAtt-items { + + uses bl_RsThresholdAtt_source-group; + description "Queue Config Attachment to Threshold Values"; + } + } + + grouping bl_Monitor-group { + description "Monitor MO for Buffer Latency"; + + leaf name { + + type bl_Name; + description "Identifying name of the monitor"; + } + + leaf description { + + type bl_Description; + description "Description of the specified monitor"; + } + + leaf aclName { + + type bl_AclName; + description "Name of the Access Control List applied on the current monitor session"; + } + + leaf v6AclName { + + type bl_AclName; + description "Name of the IPv6 Access Control List applied on the current monitor session"; + } + + // Sampling Rate + leaf samplingRate { + + type bl_SamplingRate; + description "Value of the sampling rate for the given queues"; + } + + // Sampling Time intervals + leaf samplingMbRate { + + type bl_SamplingMbRate; + description "Sampling time intervals for the given range of queues"; + } + + // Sampling Packets intervals + leaf samplingMbPackets { + + type bl_SamplingMbPackets; + description "Sampling packet count for the given range of queues"; + } + + container rsrecordAtt-items { + + list RsRecordAtt-list { + key "tDn"; + + uses bl_RsRecordAtt_source-group; + description "Attach Buffer Latency Record to Buffer Latency Monitor list"; + } + description "Attach Buffer Latency Record to Buffer Latency Monitor"; + } + + container rscollectorAtt-items { + + list RsCollectorAtt-list { + key "tDn"; + + uses bl_RsCollectorAtt_source-group; + description "Attach Buffer Latency Collector to Buffer Latency Monitor list"; + } + description "Attach Buffer Latency Collector to Buffer Latency Monitor"; + } + } + + grouping bl_Collector-group { + description "Configure the Buffer Latency Collector Information"; + + leaf description { + + type bl_Description; + description "Description of the specified collector"; + } + + leaf destination { + + type nw_IfId; + description "Destination config under the current collector"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + } + + grouping bl_Threshold-group { + description "Threshold MO for Buffer Latency Queues"; + + leaf name { + + type bl_Name; + description "Name of the threshold for Buffer Latency Queues"; + } + + leaf value { + + type bl_ThresholdValue; + description "Value of the threshold for Buffer Latency queues"; + } + } + + grouping bl_System-group { + description "Configure System for Buffer Latency"; + + container rsmonitorAttch-items { + + list RsMonitorAttch-list { + key "tDn"; + + uses bl_RsMonitorAttch_source-group; + description "Monitor Attachment to System Buffer Latency list"; + } + description "Monitor Attachment to System Buffer Latency"; + } + } + + grouping ipt_IntCloneMdInst-group { + description "Instance MO for INT Clone MD"; + leaf isEnabled { + type boolean; + default "false"; + description "Denotes whether INT Clone MD feature is enabled"; + } + + // Source Record + container sourcerecord-items { + list SourceRecord-list { + key "name"; + + uses ipt_SourceRecord-group; + description "Configure INT Clone MD Source Record Information list"; + } + description "Configure INT Clone MD Source Record Information"; + } + + // Contains Source Monitor info + container sourcemonitor-items { + list SourceMonitor-list { + key "name"; + + uses ipt_SourceMonitor-group; + description "Source Monitor MO for INT Clone MD list"; + } + description "Source Monitor MO for INT Clone MD"; + } + + // INT Clone MD Sink Collector info + container sinkcollector-items { + list SinkCollector-list { + key "name"; + + uses ipt_SinkCollector-group; + description "Configure the INT Clone MD Collector Information list"; + } + description "Configure the INT Clone MD Collector Information"; + } + + // Sink Record + container sinkrecord-items { + list SinkRecord-list { + key "name"; + + uses ipt_SinkRecord-group; + description "Configure INT Clone MD Sink Record Information list"; + } + description "Configure INT Clone MD Sink Record Information"; + } + + // Sink Monitor + container sinkmonitor-items { + list SinkMonitor-list { + key "name"; + + uses ipt_SinkMonitor-group; + description "Configure System Sink Monitor for INT Clone MD list"; + } + description "Configure System Sink Monitor for INT Clone MD"; + } + + // ProbeMarker INT Clone MD + container probemarker-items { + list ProbeMarker-list { + key "value"; + + uses ipt_ProbeMarker-group; + description "Configure ProbeMarker for INT Clone MD list"; + } + description "Configure ProbeMarker for INT Clone MD"; + } + + // System for Source and Sink Monitor + container intclonemdsystem-items { + + uses ipt_IntCloneMdSystem-group; + description "Configure System for Source and Sink Monitor"; + } + } + + grouping ipt_SourceRecord-group { + description "Configure INT Clone MD Source Record Information"; + + leaf name { + + type ipt_Name; + description "Name of the IPT source record"; + } + + // Source Interface + container sourceinterface-items { + list SourceInterface-list { + key "id"; + + uses ipt_SourceInterface-group; + description "Ingress interface configuration MO for INT Clone MD. list"; + } + description "Ingress interface configuration MO for INT Clone MD."; + } + } + + grouping ipt_SourceInterface-group { + description "Ingress interface configuration MO for INT Clone MD."; + + leaf id { + + type nw_IfId; + description "The interface id for the session"; + } + } + + grouping ipt_SourceMonitor-group { + description "Source Monitor MO for INT Clone MD"; + + leaf name { + + type ipt_Name; + description "Identifying name of the source monitor"; + } + + // ACL filter + leaf aclName { + + type ipt_Name; + description "Name of the Access Control List applied on the current monitor session"; + } + + leaf v6AclName { + + type ipt_Name; + description "Name of the IPv6 Access Control List applied on the current monitor session"; + } + + // Sampling Rate + leaf samplingRate { + + type ipt_SamplingRate; + description "Value of the sampling rate for the given interfaces"; + } + + container rssourcerecordAtt-items { + + list RsSourcerecordAtt-list { + key "tDn"; + + uses ipt_RsSourcerecordAtt_source-group; + description "Attach INT Clone MD Source Record to INT Clone MD Source Monitor list"; + } + description "Attach INT Clone MD Source Record to INT Clone MD Source Monitor"; + } + } + + grouping ipt_SinkCollector-group { + description "Configure the INT Clone MD Collector Information"; + leaf dstAddr { + type address_Ip; + description "Remote Entity IP address for INT Clone MD Collector"; + } + leaf srcAddr { + type address_Ip; + description "Source IP address for INT Clone MD Collector"; + } + + // IPT TTL value + leaf ttl { + + type ipt_Ttl; + description "IPT header TTL value for INT Clone MD Collector"; + } + + // IP dscp value + leaf dscp { + + type ipt_Dscp; + description "IPT header DSCP Value for INT Clone MD Collector"; + } + + // Destination interface + leaf destination { + + type nw_IfId; + description "Destination interface for INT Clone MD collector"; + } + + leaf name { + + type ipt_Name; + description "Name of the IPT sink collector"; + } + } + + grouping ipt_SinkRecord-group { + description "Configure INT Clone MD Sink Record Information"; + + leaf name { + + type ipt_Name; + description "Name of the IPT sink record"; + } + + // Sink Interface + container sinkinterface-items { + list SinkInterface-list { + key "id"; + + uses ipt_SinkInterface-group; + description "Sink interface configuration MO for INT Clone MD. list"; + } + description "Sink interface configuration MO for INT Clone MD."; + } + } + + grouping ipt_SinkInterface-group { + description "Sink interface configuration MO for INT Clone MD."; + + leaf id { + + type nw_IfId; + description "The interface id for the data egress path"; + } + } + + grouping ipt_SinkMonitor-group { + description "Configure System Sink Monitor for INT Clone MD"; + + leaf name { + + type ipt_Name; + description "Identifying name of the sink monitor"; + } + + container rssinkcollectorAtt-items { + + list RsSinkcollectorAtt-list { + key "tDn"; + + uses ipt_RsSinkcollectorAtt_source-group; + description "Collector Attachment to System Sink Monitor INT Clone MD list"; + } + description "Collector Attachment to System Sink Monitor INT Clone MD"; + } + + container rssinkrecordAtt-items { + + list RsSinkrecordAtt-list { + key "tDn"; + + uses ipt_RsSinkrecordAtt_source-group; + description "Sink Record Attachment to System Sink Monitor INT Clone MD list"; + } + description "Sink Record Attachment to System Sink Monitor INT Clone MD"; + } + } + + grouping ipt_ProbeMarker-group { + description "Configure ProbeMarker for INT Clone MD"; + leaf value { + type uint64; + description "Denotes the probe marker value to be used for INT Clone MD feature"; + } + } + + grouping ipt_IntCloneMdSystem-group { + description "Configure System for Source and Sink Monitor"; + + container rssourcemonitorAtt-items { + + list RsSourcemonitorAtt-list { + key "tDn"; + + uses ipt_RsSourcemonitorAtt_source-group; + description "Source Monitor Attachment to System list"; + } + description "Source Monitor Attachment to System"; + } + + container rssinkmonitorAtt-items { + + list RsSinkmonitorAtt-list { + key "tDn"; + + uses ipt_RsSinkmonitorAtt_source-group; + description "Sink Monitor Attachment to System list"; + } + description "Sink Monitor Attachment to System"; + } + } + + grouping inbandTelemetry_Int-group { + description "int"; + + // Holds int instance information + container inst-items { + list Inst-list { + key "mode"; + + uses inbandTelemetry_Inst-group; + description "int Instance list"; + } + description "int Instance"; + } + } + + grouping inbandTelemetry_Inst-group { + description "int Instance"; + + // int mode + leaf mode { + + type inbandTelemetry_ModeT; + description "Mode Select"; + } + + // switch profile + leaf profile { + config "false"; + + type inbandTelemetry_Profile; + description "Switch Profile - Transit or End Point"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // INT Watchlist Acl + container watchlist-items { + list WatchlistAcl-list { + key "name"; + + uses inbandTelemetry_WatchlistAcl-group; + description "Watchlist Acl list"; + } + description "Watchlist Acl"; + } + + // INT Droplist Acl + container droplist-items { + list DroplistAcl-list { + key "name"; + + uses inbandTelemetry_DroplistAcl-group; + description "Droplist Acl list"; + } + description "Droplist Acl"; + } + + // int Record + container recordp-items { + list RecordP-list { + key "name"; + + uses inbandTelemetry_RecordP-group; + description "int Record list"; + } + description "int Record"; + } + + // int Collector + container collector-items { + list Collector-list { + key "name"; + + uses inbandTelemetry_Collector-group; + description "Collector entry list"; + } + description "Collector entry"; + } + + // INT Flow Profile + container flowprof-items { + list FlowProfile-list { + key "name"; + + uses inbandTelemetry_FlowProfile-group; + description "Inband Telemetry Flow Profile list"; + } + description "Inband Telemetry Flow Profile"; + } + + // INT Queue Profile + container queueprof-items { + list QueueProfile-list { + key "name"; + + uses inbandTelemetry_QueueProfile-group; + description "Inband Telemetry Queue Profile list"; + } + description "Inband Telemetry Queue Profile"; + } + + // INT Monitor one monitor can be attached to n records + container monitor-items { + list Monitor-list { + key "name"; + + uses inbandTelemetry_Monitor-group; + description "int Monitor list"; + } + description "int Monitor"; + } + + // Forwarding instance based target + container fwdinst-items { + list FwdInstTarget-list { + key "id"; + + uses inbandTelemetry_FwdInstTarget-group; + description "Forward Instance Target list"; + } + description "Forward Instance Target"; + } + } + + grouping inbandTelemetry_WatchlistAcl-group { + description "Watchlist Acl"; + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // ACL name + leaf name { + + type acl_Name; + description "Name of Access lists"; + } + + // fragments + leaf fragments { + + type acl_Fragments; + description "Fragments type for IPv4 and IPv6"; + } + + // toggle per-entry statistics + leaf perACEStatistics { + + type acl_ACEStats; + description "Per Access Control Entries statistics"; + } + leaf ignRoutable { + type boolean; + description "Ignore Multicast Routed ACLs"; + } + leaf configStatus { + config "false"; + type uint32; + description "config success indicator"; + } + + // INT Watchlist Ace + container ace-items { + list WatchlistAce-list { + key "seqNum"; + + uses inbandTelemetry_WatchlistAce-group; + description "Watchlist Ace list"; + } + description "Watchlist Ace"; + } + } + + grouping inbandTelemetry_WatchlistAce-group { + description "Watchlist Ace"; + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // remark + leaf remark { + + type acl_RemarkStr; + description "Access-list entry comment"; + } + + // ACE sequence number + leaf seqNum { + + type acl_SequenceNumber; + description "Sequence number"; + } + + // ACE filtering action + leaf action { + + type acl_ActionType; + description "Specify packets to forward or reject"; + } + + // source port operator + leaf srcPortOp { + + type acl_Operator; + description "Source port operator"; + } + + // first source port + leaf srcPort1 { + + type acl_PortNumber; + description "First source port"; + } + + // second source port + leaf srcPort2 { + + type acl_PortNumber; + description "Second source port"; + } + + // Source Port Mask + leaf srcPortMask { + + type acl_PortNumber; + description "Defines the Source Port Mask"; + } + + // destination port operator + leaf dstPortOp { + + type acl_Operator; + description "Destination port operator"; + } + + // first destination port + leaf dstPort1 { + + type acl_PortNumber; + description "First destination port number"; + } + + // second destination port + leaf dstPort2 { + + type acl_PortNumber; + description "Second destination port number"; + } + + // Destination Port Mask + leaf dstPortMask { + + type acl_PortNumber; + description "Destination Port Mask"; + } + leaf logging { + type boolean; + default "false"; + description "Log matches against ACL entry"; + } + leaf dscp { + type uint8 { + range "0..63"; + } + description "dscp"; + } + leaf dscpMask { + type uint8 { + range "0..63"; + } + description "dscpMask"; + } + + // packet-length operator + leaf pktLenOp { + + type acl_Operator; + description "packet length operator"; + } + + // First packet-length + leaf pktLen1 { + + type acl_PktLen; + description "first packet length"; + } + + // second packet-length + leaf pktLen2 { + + type acl_PktLen; + description "second packet length"; + } + leaf urg { + type boolean; + description "tcp urg"; + } + leaf ack { + type boolean; + description "tcp ack"; + } + leaf psh { + type boolean; + description "tcp psh"; + } + leaf rst { + type boolean; + description "tcp rst"; + } + leaf syn { + type boolean; + description "tcp syn"; + } + leaf fin { + type boolean; + description "tcp fin"; + } + leaf est { + type boolean; + description "tcp est"; + } + leaf rev { + type boolean; + description "tcp reversed"; + } + + leaf tcpFlagsMask { + + type acl_TcpFlagsMask; + description "tcp flags mask"; + } + leaf packets { + config "false"; + type uint64; + description "Number of packets hitting ACE"; + } + leaf fragment { + type boolean; + description "Non-initial fragment"; + } + + // capture session + leaf captureSession { + + type acl_CaptureSes; + description "capture session"; + } + + // http option (http-method) + leaf httpOption { + + type acl_HttpOptionType; + description "http option http-method"; + } + + // nve vni ID + leaf vni { + + type acl_VniType; + description "nve vni ID"; + } + + // vlan + leaf vlan { + + type acl_VlanType; + description "vlan"; + } + + // TCP option length + leaf tcpOptionLength { + + type acl_TcpOptionLengthType; + description "TCP options length"; + } + + // time-range + leaf timeRange { + + type acl_Name; + description "time range name"; + } + + // source address group + leaf srcAddrGroup { + + type acl_Name; + description "Source address group"; + } + + // destination address group + leaf dstAddrGroup { + + type acl_Name; + description "Destination address group"; + } + + // source port group + leaf srcPortGroup { + + type acl_Name; + description "Source port group"; + } + + // destination port group + leaf dstPortGroup { + + type acl_Name; + description "Destination port group"; + } + leaf redirect { + type string { + length "0..576"; + } + description "Redirect action"; + } + leaf telemetryQueue { + type boolean; + description "telemetry queue action"; + } + leaf telemetryPath { + type boolean; + description "telemetry path action"; + } + + // Filter type + leaf fltType { + + type inbandTelemetry_FltType; + description "Acl Filter Type"; + } + + // protocol to match + leaf protocol { + + type ipv4acl_Protocol; + description "Protocol for access-list entry"; + } + + // Protocol Mask + leaf protocolMask { + + type ipv4acl_Protocol; + description "Protocol Mask"; + } + + // source prefix + leaf srcPrefix { + + type ipv4acl_IPv4Prefix; + description "Source IPv4 prefix"; + } + + // source prefix wildcard mask + leaf srcPrefixMask { + + type ipv4acl_IPv4PrefixMask; + description "Source IPv4 prefix mask"; + } + + // source prefix length + leaf srcPrefixLength { + + type ipv4acl_IPv4PrefixLen; + description "Source IPv4 prefix length"; + } + + // destination prefix + leaf dstPrefix { + + type ipv4acl_IPv4Prefix; + description "Destination IPv4 prefix"; + } + + // destination prefix wildcard mask + leaf dstPrefixMask { + + type ipv4acl_IPv4PrefixMask; + description "Destination IPv4 prefix mask"; + } + + // destination prefix length + leaf dstPrefixLength { + + type ipv4acl_IPv4PrefixLen; + description "Destination IPv4 prefix length"; + } + } + + grouping inbandTelemetry_DroplistAcl-group { + description "Droplist Acl"; + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // ACL name + leaf name { + + type acl_Name; + description "Name of Access lists"; + } + + // fragments + leaf fragments { + + type acl_Fragments; + description "Fragments type for IPv4 and IPv6"; + } + + // toggle per-entry statistics + leaf perACEStatistics { + + type acl_ACEStats; + description "Per Access Control Entries statistics"; + } + leaf ignRoutable { + type boolean; + description "Ignore Multicast Routed ACLs"; + } + leaf configStatus { + config "false"; + type uint32; + description "config success indicator"; + } + + // INT Droplist ACE + container ace-items { + list DroplistAce-list { + key "seqNum"; + + uses inbandTelemetry_DroplistAce-group; + description "Droplist Ace list"; + } + description "Droplist Ace"; + } + } + + grouping inbandTelemetry_DroplistAce-group { + description "Droplist Ace"; + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // remark + leaf remark { + + type acl_RemarkStr; + description "Access-list entry comment"; + } + + // ACE sequence number + leaf seqNum { + + type acl_SequenceNumber; + description "Sequence number"; + } + + // ACE filtering action + leaf action { + + type acl_ActionType; + description "Specify packets to forward or reject"; + } + + // source port operator + leaf srcPortOp { + + type acl_Operator; + description "Source port operator"; + } + + // first source port + leaf srcPort1 { + + type acl_PortNumber; + description "First source port"; + } + + // second source port + leaf srcPort2 { + + type acl_PortNumber; + description "Second source port"; + } + + // Source Port Mask + leaf srcPortMask { + + type acl_PortNumber; + description "Defines the Source Port Mask"; + } + + // destination port operator + leaf dstPortOp { + + type acl_Operator; + description "Destination port operator"; + } + + // first destination port + leaf dstPort1 { + + type acl_PortNumber; + description "First destination port number"; + } + + // second destination port + leaf dstPort2 { + + type acl_PortNumber; + description "Second destination port number"; + } + + // Destination Port Mask + leaf dstPortMask { + + type acl_PortNumber; + description "Destination Port Mask"; + } + leaf logging { + type boolean; + default "false"; + description "Log matches against ACL entry"; + } + leaf dscp { + type uint8 { + range "0..63"; + } + description "dscp"; + } + leaf dscpMask { + type uint8 { + range "0..63"; + } + description "dscpMask"; + } + + // packet-length operator + leaf pktLenOp { + + type acl_Operator; + description "packet length operator"; + } + + // First packet-length + leaf pktLen1 { + + type acl_PktLen; + description "first packet length"; + } + + // second packet-length + leaf pktLen2 { + + type acl_PktLen; + description "second packet length"; + } + leaf urg { + type boolean; + description "tcp urg"; + } + leaf ack { + type boolean; + description "tcp ack"; + } + leaf psh { + type boolean; + description "tcp psh"; + } + leaf rst { + type boolean; + description "tcp rst"; + } + leaf syn { + type boolean; + description "tcp syn"; + } + leaf fin { + type boolean; + description "tcp fin"; + } + leaf est { + type boolean; + description "tcp est"; + } + leaf rev { + type boolean; + description "tcp reversed"; + } + + leaf tcpFlagsMask { + + type acl_TcpFlagsMask; + description "tcp flags mask"; + } + leaf packets { + config "false"; + type uint64; + description "Number of packets hitting ACE"; + } + leaf fragment { + type boolean; + description "Non-initial fragment"; + } + + // capture session + leaf captureSession { + + type acl_CaptureSes; + description "capture session"; + } + + // http option (http-method) + leaf httpOption { + + type acl_HttpOptionType; + description "http option http-method"; + } + + // nve vni ID + leaf vni { + + type acl_VniType; + description "nve vni ID"; + } + + // vlan + leaf vlan { + + type acl_VlanType; + description "vlan"; + } + + // TCP option length + leaf tcpOptionLength { + + type acl_TcpOptionLengthType; + description "TCP options length"; + } + + // time-range + leaf timeRange { + + type acl_Name; + description "time range name"; + } + + // source address group + leaf srcAddrGroup { + + type acl_Name; + description "Source address group"; + } + + // destination address group + leaf dstAddrGroup { + + type acl_Name; + description "Destination address group"; + } + + // source port group + leaf srcPortGroup { + + type acl_Name; + description "Source port group"; + } + + // destination port group + leaf dstPortGroup { + + type acl_Name; + description "Destination port group"; + } + leaf redirect { + type string { + length "0..576"; + } + description "Redirect action"; + } + leaf telemetryQueue { + type boolean; + description "telemetry queue action"; + } + leaf telemetryPath { + type boolean; + description "telemetry path action"; + } + + // Filter type + leaf fltType { + + type inbandTelemetry_FltType; + description "Acl Filter Type"; + } + + // protocol to match + leaf protocol { + + type ipv4acl_Protocol; + description "Protocol for access-list entry"; + } + + // Protocol Mask + leaf protocolMask { + + type ipv4acl_Protocol; + description "Protocol Mask"; + } + + // source prefix + leaf srcPrefix { + + type ipv4acl_IPv4Prefix; + description "Source IPv4 prefix"; + } + + // source prefix wildcard mask + leaf srcPrefixMask { + + type ipv4acl_IPv4PrefixMask; + description "Source IPv4 prefix mask"; + } + + // source prefix length + leaf srcPrefixLength { + + type ipv4acl_IPv4PrefixLen; + description "Source IPv4 prefix length"; + } + + // destination prefix + leaf dstPrefix { + + type ipv4acl_IPv4Prefix; + description "Destination IPv4 prefix"; + } + + // destination prefix wildcard mask + leaf dstPrefixMask { + + type ipv4acl_IPv4PrefixMask; + description "Destination IPv4 prefix mask"; + } + + // destination prefix length + leaf dstPrefixLength { + + type ipv4acl_IPv4PrefixLen; + description "Destination IPv4 prefix length"; + } + } + + grouping inbandTelemetry_RecordP-group { + description "int Record"; + + // Collect parameters for the int record + leaf collect0 { + + type inbandTelemetry_CollectParams0; + description "Collect Params Set0"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + } + + grouping inbandTelemetry_Collector-group { + description "Collector entry"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Remote node VRF + leaf vrfName { + + type inbandTelemetry_VrfName; + description "Remote Entity VRF"; + } + + // Remote node destination IP address + leaf dstAddr { + + type inbandTelemetry_DstIp; + description "Remote Entity IP"; + } + + // Remote node destination port + leaf dstPort { + + type inbandTelemetry_Port; + description "Remote Entity L4 Port"; + } + + // IP dscp value + leaf dscp { + + type qosp_DscpCP; + description "DSCP Value"; + } + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + leaf srcAddr { + type address_Ip; + description "Source IP Address"; + } + leaf sequenceNumber { + type uint32; + default "1000"; + description "Start sequence number for this exporter"; + } + } + + grouping inbandTelemetry_FlowProfile-group { + description "Inband Telemetry Flow Profile"; + + // Flow dscp value + leaf dscp { + + type inbandTelemetry_FlowDscp; + description "Inband Telemetry Flow dscp value"; + } + + // Flow dscp mask + leaf dscpMask { + + type inbandTelemetry_FlowDscp; + description "Inband Telemetry Flow dscp mask"; + } + + // Flow age + leaf age { + + type inbandTelemetry_FlowAge; + description "Inband Telemetry Flow age"; + } + + // Flow latency quantization + leaf latencyQuant { + + type inbandTelemetry_FlowLatencyQuant; + description "Inband Telemetry Flow latency quantization"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + } + + grouping inbandTelemetry_QueueProfile-group { + description "Inband Telemetry Queue Profile"; + + // Queue depth value + leaf depth { + + type inbandTelemetry_QueueDepth; + description "Inband Telemetry Queue depth value"; + } + + // Queue latency + leaf latency { + + type inbandTelemetry_QueueLatency; + description "Inband Telemetry Queue Latency"; + } + + // Queue Breach Quota + leaf breach { + + type inbandTelemetry_QueueBreachQuota; + description "Inband Telemetry Queue Breach Quota"; + } + + // Queue Tail Drop + leaf tailDrop { + + type inbandTelemetry_QueueTailDrop; + description "Inband Telemetry Queue Tail Drop"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + } + + grouping inbandTelemetry_Monitor-group { + description "int Monitor"; + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + container rsrecordPAtt-items { + + uses inbandTelemetry_RsRecordPAtt_source-group; + description "Record Policy Attachment"; + } + + container rscollectorAtt-items { + + list RsCollectorAtt-list { + key "tDn"; + + uses inbandTelemetry_RsCollectorAtt_source-group; + description "Reference to Collector list"; + } + description "Reference to Collector"; + } + + container rswatchlistAtt-items { + + uses inbandTelemetry_RsWatchlistAtt_source-group; + description "Reference to Watchlist"; + } + + container rsdroplistAtt-items { + + uses inbandTelemetry_RsDroplistAtt_source-group; + description "Reference to Droplist"; + } + } + + grouping inbandTelemetry_FwdInstTarget-group { + description "Forward Instance Target"; + + // Identifier + leaf id { + + type inbandTelemetry_FwdInstTargetId; + description "Identifier"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + container rsmonitorAtt-items { + + list RsMonitorAtt-list { + key "tDn"; + + uses inbandTelemetry_RsMonitorAtt_source-group; + description "Reference to Monitor list"; + } + description "Reference to Monitor"; + } + } + + grouping netflow_Netflow-group { + description "Netflow entity"; + + leaf rtpTimeout { + + type netflow_RtpTimeout; + description "RTP Flow Timeout"; + } + + leaf rtpHistory { + + type netflow_RtpHistory; + description "RTP Flow History Size"; + } + leaf isRtpIpv4 { + type boolean; + default "false"; + description "RTP IPV4 Config"; + } + + leaf rtpIpv4Acl { + + type netflow_ACLName; + description "RTP IPV4 ACL"; + } + leaf isRtpIpv6 { + type boolean; + default "false"; + description "RTP IPV6 Config"; + } + + leaf rtpIpv6Acl { + + type netflow_ACLName; + description "RTP IPV6 ACL"; + } + + // Holds netflow instance information + container inst-items { + list Inst-list { + key "mode"; + + uses netflow_Inst-group; + description "Instance for Netflow config list"; + } + description "Instance for Netflow config"; + } + + // Show Flow Info + // Ephemeral data + container flowinfo-items { + + // Ephemeral data + list FlowInfo-list { + config "false"; + key "flowId"; + + uses netflow_FlowInfo-group; + description "Flow Info that is displayed/exported. list"; + } + description "Flow Info that is displayed/exported."; + } + } + + grouping netflow_Inst-group { + description "Instance for Netflow config"; + + // analytics/netflow mode + leaf mode { + + type netflow_ModeT; + description "It represents the mode in which netflow is running"; + } + + // flow timeout + leaf timeOut { + + type netflow_FlowTimeout; + description "Flow timeout"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // Flow Record + container recordp-items { + list RecordP-list { + key "name"; + + uses netflow_RecordP-group; + description "Object to store different parameters of netflow record list"; + } + description "Object to store different parameters of netflow record"; + } + + // Flow Collector + container collector-items { + list Collector-list { + key "name"; + + uses netflow_Collector-group; + description "It has the information about the netflow collector entity list"; + } + description "It has the information about the netflow collector entity"; + } + + // Flow Monitor one monitor can be attached to n records + container monitor-items { + list Monitor-list { + key "name"; + + uses netflow_Monitor-group; + description "Netflow Monitor list"; + } + description "Netflow Monitor"; + } + + // Netflow profile + container prof-items { + list Profile-list { + key "name"; + + uses netflow_Profile-group; + description "The profile of netflow list"; + } + description "The profile of netflow"; + } + + // Forwarding instance based target + container fwdinst-items { + list FwdInstTarget-list { + key "id"; + + uses netflow_FwdInstTarget-group; + description "Forward Instance Target list"; + } + description "Forward Instance Target"; + } + } + + grouping netflow_RecordP-group { + description "Object to store different parameters of netflow record"; + + // Match parameters for the netflow record + leaf match { + + type netflow_MatchParams; + description "The match parameters of the netflow record"; + } + + // Collect parameters for the flow record + leaf collect { + + type netflow_CollectParams; + description "The collect parameters of the netflow record"; + } + + leaf descr { + + type naming_Descr { + pattern "(.{1,128}).*|()"; + } + description "Record Description"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + } + + grouping netflow_Collector-group { + description "It has the information about the netflow collector entity"; + + // Collector version + leaf ver { + + type netflow_CollVersion; + description "Collector Version Format"; + } + + // Collector stats timeout + leaf statsTimeout { + + type netflow_CollTimeout; + description "Collector stats timeout"; + } + + // Collector interface table timeout + leaf interfaceTimeout { + + type netflow_CollTimeout; + description "Collector interface table timeout"; + } + + // Collector template data timeout + leaf templateTimeout { + + type netflow_CollTemplateTimeout; + description "Collector template data timeout"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr { + pattern "(.{1,128}).*|()"; + } + description "Collector Description"; + } + + // Remote node VRF + leaf vrfName { + + type netflow_VrfName; + description "Remote Entity VRF"; + } + + // Remote node destination IP address + leaf dstAddr { + + type netflow_addressIp; + description "Remote Entity IP"; + } + + // Remote node destination port + leaf dstPort { + + type netflow_flowPort; + description "Remote Entity L4 Port"; + } + + // IP dscp value + leaf dscp { + + type netflow_flowDscp; + description "DSCP Value of Remote Entity"; + } + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface of the sender"; + } + + // Source IP address + leaf srcAddr { + + type netflow_addressIp; + description "Source IP Address of the sender"; + } + } + + grouping netflow_Monitor-group { + description "Netflow Monitor"; + + leaf descr { + + type naming_Descr { + pattern "(.{1,128}).*|()"; + } + description "Monitor Description"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Collector bucket info + container collectorbucket-items { + list CollectorBucket-list { + key "id"; + + uses netflow_CollectorBucket-group; + description "Netflow Collector Bucket Entry list"; + } + description "Netflow Collector Bucket Entry"; + } + + container rsrecordPAtt-items { + + uses netflow_RsRecordPAtt_source-group; + description "Reference to the record that is to be used under this monitor"; + } + } + + grouping netflow_CollectorBucket-group { + description "Netflow Collector Bucket Entry"; + + // Collector bucket identifier + leaf id { + + type netflow_CollBucketId; + description "Netflow Collector Bucket Id"; + } + + // HashLo value for this collector bucket + leaf hashLo { + + type netflow_HashT; + description "Hash Low Value for this collector bucket"; + } + + // HashHi value for this collector bucket + leaf hashHi { + + type netflow_HashT; + description "Hash High Value for this collector bucket"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + container rscollectorAtt-items { + + list RsCollectorAtt-list { + key "tDn"; + + uses netflow_RsCollectorAtt_source-group; + description "Reference to the collector that is to be used under this monitor list"; + } + description "Reference to the collector that is to be used under this monitor"; + } + } + + grouping netflow_Profile-group { + description "The profile of netflow"; + + // Collect interval + leaf collectIntvl { + + type netflow_CollIntvl; + description "Collect Interval in Milliseconds"; + } + + // Source port + leaf srcPort { + + type netflow_L4Port; + description "Source L4 Port"; + } + + // IP packet id shift + leaf ipPktIdShift { + + type netflow_IpPktIdShift; + description "IP Packet Id Shift"; + } + + // Burst interval shift + leaf burstIntvlShift { + + type netflow_BurstIntvlShift; + description "Timestamp Shift Value for Burst Interval"; + } + + // Collector export packet MTU + leaf mtu { + + type netflow_Mtu; + description "Collector export packet MTU"; + } + + // Sequence number guess threshold low + leaf seqNumGuessThreshLo { + + type netflow_ThresholdT; + description "Sequence Number Guess Threshold Low"; + } + + // Sequence number guess threshold high + leaf seqNumGuessThreshHi { + + type netflow_ThresholdT; + description "Sequence Number Guess Threshold High"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Payload length bin + container payloadlenbin-items { + list PayloadLenBin-list { + key "id"; + + uses netflow_PayloadLenBin-group; + description "Payload length bin entry list"; + } + description "Payload length bin entry"; + } + + // TCP options header length bin + container tcpopthdrlenbin-items { + list TcpOptHdrLenBin-list { + key "id"; + + uses netflow_TcpOptHdrLenBin-group; + description "TCP option header length bin entry list"; + } + description "TCP option header length bin entry"; + } + + // Receive window size bin + container rcvwindowszbin-items { + list RcvWindowSzBin-list { + key "id"; + + uses netflow_RcvWindowSzBin-group; + description "Receive window size bin entry list"; + } + description "Receive window size bin entry"; + } + } + + grouping netflow_PayloadLenBin-group { + description "Payload length bin entry"; + + // Identifier + leaf id { + + type netflow_PayloadLenIdT; + description "Payload Length Bin Id"; + } + + // Low value + leaf lo { + + type netflow_PayloadLenT; + description "Bin Low Value for Payload Length"; + } + + // High value + leaf hi { + + type netflow_PayloadLenT; + description "Bin High Value for Payload Length"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping netflow_TcpOptHdrLenBin-group { + description "TCP option header length bin entry"; + + // Identifier + leaf id { + + type netflow_TCPOptHdrLenIdT; + description "TCP option header length bin ID"; + } + + // Low value + leaf lo { + + type netflow_TCPOptHdrLenT; + description "Bin Low Value of TCP option header length"; + } + + // High value + leaf hi { + + type netflow_TCPOptHdrLenT; + description "Bin High Value of TCP option header length"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping netflow_RcvWindowSzBin-group { + description "Receive window size bin entry"; + + // Identifier + leaf id { + + type netflow_RcvWindowSzIdT; + description "Receive window size bin ID"; + } + + // Low value + leaf lo { + + type netflow_RcvWindowSzT; + description "Bin Low Value of Receive window size"; + } + + // High value + leaf hi { + + type netflow_RcvWindowSzT; + description "Bin High Value of Receive window size"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping netflow_FwdInstTarget-group { + description "Forward Instance Target"; + + // Identifier + leaf id { + + type netflow_FwdInstTargetId; + description "Identifier to the Forward Instance Target"; + } + + // Collector identifier provided by the netflow controller + leaf collectorId { + + type netflow_CollectorId; + description "Collector identifier provided by the netflow controller"; + } + leaf error { + config "false"; + type uint64; + description "failure code"; + } + + // IP filter type + leaf fltType { + + type netflow_FltType; + description "Netflow Target IP filter Type"; + } + + // Direction + leaf dir { + + type netflow_DirectionT; + description "Traffic direction to monitor"; + } + + container rsprofAtt-items { + + uses netflow_RsProfAtt_source-group; + description "Reference to profile attachement"; + } + + container rsmonitorAtt-items { + + list RsMonitorAtt-list { + key "tDn"; + + uses netflow_RsMonitorAtt_source-group; + description "Reference to the monitor that is to be used under this interface list"; + } + description "Reference to the monitor that is to be used under this interface"; + } + } + + grouping netflow_FlowInfo-group { + description "Flow Info that is displayed/exported."; + + // Ephemeral data + leaf flowId { + config "false"; + type uint32; + description "Number to index a flow."; + } + + // Ephemeral data + leaf protocol { + config "false"; + type uint32; + description "L4 protocol (TCP or UDP)"; + } + + // Ephemeral data + leaf intfName { + config "false"; + type string; + description "ingress interface where the flow exists"; + } + + // Ephemeral data + leaf sip { + config "false"; + type address_Ip; + description "Source IP address of the flow"; + } + + // Ephemeral data + leaf dip { + config "false"; + type address_Ip; + description "Destination IP address of the flow"; + } + + // Ephemeral data + leaf srcPort { + config "false"; + + type netflow_L4Port; + description "Source Port of the flow"; + } + + // Ephemeral data + leaf dstPort { + config "false"; + + type netflow_L4Port; + description "Destination Port of the flow"; + } + + // Ephemeral data + leaf pktCount { + config "false"; + type uint64; + description "Number of Packets received so far."; + } + + // Ephemeral data + leaf bitsPerSec { + config "false"; + type uint64; + description "Current rate of flow in bits per second"; + } + + // Ephemeral data + leaf flowStartTime { + config "false"; + type string; + description "Time when the flow was first detected."; + } + + // Ephemeral data + leaf pktLoss { + config "false"; + type uint64; + description "Number of packets lost in the flow"; + } + + // Ephemeral data + leaf lossStartTime { + config "false"; + type string; + description "Time when flow started experiencing packet losses."; + } + + // Ephemeral data + leaf lossEndTime { + config "false"; + type string; + description "Time when packet losses are no longer observed for the flow."; + } + } + + grouping sflow_Sflow-group { + description "Sflow entity"; + + // Holds sflow instance information + container inst-items { + + uses sflow_Inst-group; + description "Instance for Sflow config"; + } + } + + grouping sflow_Inst-group { + description "Instance for Sflow config"; + leaf isExtendedSwitch { + type boolean; + description "Describes whether sflow is configured in extended switch flow"; + } + + // sampling-rate + leaf pktSamplingRate { + + type sflow_samplingRate; + description "The statistical sampling rate for packet sampling from this source"; + } + + // max-sampling-size + leaf maxHeaderSize { + + type sflow_maxSampledSize; + description "The maximum number of bytes that should be copied from a sampled packet. The agent may have an internal maximum and minimum permissible sizes"; + } + + // counter-poll-interval + leaf counterPollInterval { + + type sflow_counterPollInterval; + description "The maximum number of seconds between successive samples of the counters associated with this data source"; + } + + // max-datagram-size + leaf rcvrMaxDatagramSize { + + type sflow_maxDatagramSize; + description "The maximum number of data bytes that can be sent in a single sample datagram"; + } + + // collector-ip + leaf rcvrAddress { + + type sflow_addressIp; + description "The IP address of the sFlow collector. If set to 0.0.0.0 not sFlow datagrams will be sent."; + } + + // collector-vrf + leaf rcvrVrfName { + + type sflow_VrfName; + description "It holds collector vrf name"; + } + + // collector-source-ip + leaf rcvrSrcAddress { + + type sflow_addressIp; + description "The source ip-address option causes the sent sFlow datagram to use the source IP address as the IP packet source address."; + } + + // collector-port + leaf rcvrPort { + + type sflow_L4Port; + description "The destination port for sFlow datagrams."; + } + + // agent-ip + leaf agentAddress { + + type sflow_addressIp; + description "The IP address associated with this agent. In the case of a multi-homed agent, this should be the loopback address of the agent.The address should be an invariant that does not change as interfaces are reconfigured, enabled, disabled, added or removed"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + container datasource-items { + list SflowFsDataSource-list { + key "id"; + + uses sflow_SflowFsDataSource-group; + description " The source of the data for the sFlow sampler as an Ethernet port, a range of Ethernet ports, or a port channel. list"; + } + description " The source of the data for the sFlow sampler as an Ethernet port, a range of Ethernet ports, or a port channel."; + } + } + + grouping sflow_SflowFsDataSource-group { + description " The source of the data for the sFlow sampler as an Ethernet port, a range of Ethernet ports, or a port channel."; + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping ssx_Ssx-group { + description "ssx"; + leaf enable { + type boolean; + description "Enable Streaming Statistics Export Instance"; + } + + // Global system id + leaf systemId { + + type ssx_SystemId; + description "Global System Identifier"; + } + + // ssx Record + container recordp-items { + list RecordP-list { + key "name"; + + uses ssx_RecordP-group; + description "ssx Record details list"; + } + description "ssx Record details"; + } + + // ssx Collector + container collector-items { + list Collector-list { + key "name"; + + uses ssx_Collector-group; + description "Collector entry list"; + } + description "Collector entry"; + } + + // ssx Monitor + container monitor-items { + list Monitor-list { + key "name"; + + uses ssx_Monitor-group; + description "ssx Monitor list"; + } + description "ssx Monitor"; + } + + // System SSX + container sysssx-items { + list SystemSsx-list { + key "name"; + + uses ssx_SystemSsx-group; + description "Configure System SSX configs list"; + } + description "Configure System SSX configs"; + } + + // Forwarding instance based target + container fwdinst-items { + list FwdInstTarget-list { + config "false"; + key "id"; + + uses ssx_FwdInstTarget-group; + description "Forward Instance Target list"; + } + description "Forward Instance Target"; + } + } + + grouping ssx_RecordP-group { + description "ssx Record details"; + + // Record name + leaf name { + + type ssx_SsxRecordName; + description "Ssx Record Node Name"; + } + leaf ingQueueDep { + type boolean; + description "Enable/Disable Ingress Queue Depth"; + } + leaf ingQueueDrp { + type boolean; + description "Enable/Disable Ingress Queue Drops"; + } + leaf ethCounters { + type boolean; + description "Enable/Disable Ethernet Counters"; + } + leaf egrQueueDep { + type boolean; + description "Enable/Disable Egress Queue Depth"; + } + leaf egrQueueDrp { + type boolean; + description "Enable/Disable Egress Queue Drop"; + } + leaf egrQueueMicro { + type boolean; + description "Enable/Disable Egress Queue Microburst Records"; + } + leaf egrQueuePeak { + type boolean; + description "Enable/Disable Egress Queue Buffer Peak Counters"; + } + leaf egrBufferDep { + type boolean; + description "Enable/Disable Egress Buffer Depth"; + } + leaf egrPoolDep { + type boolean; + description "Enable/Disable Egress Pool Group Depth"; + } + + // Interval in uS of collection for this record + leaf interval { + + type ssx_Interval; + description "Time Interval"; + } + } + + grouping ssx_Collector-group { + description "Collector entry"; + + // Remote node name + leaf name { + + type ssx_SsxRemoteNodeName; + description "Ssx Remote Node Name"; + } + + // Remote node VRF + leaf vrfName { + + type ssx_VrfName; + description "Remote Entity VRF id"; + } + leaf dstAddr { + type address_Ip; + description "Remote Entity IP address"; + } + + // Remote node destination port + leaf dstPort { + + type ssx_SsxPort; + description "Remote Entity L4 Port number"; + } + + // IP dscp value + leaf dscp { + + type qosp_DscpCP; + description "DSCP Value to be used"; + } + + // Source node L4 port + leaf srcPort { + + type ssx_SsxPort; + description "Source L4 port number"; + } + leaf srcAddr { + type address_Ip; + description "Source IP Address"; + } + leaf inbandInterface { + type boolean; + description "inband interface for collector"; + } + + // MTU + leaf mtu { + + type ssx_Mtu; + description "MTU size of the packets"; + } + } + + grouping ssx_Monitor-group { + description "ssx Monitor"; + + // Monitor name + leaf name { + + type ssx_SsxMonitorName; + description "Ssx Monitor Node Name"; + } + + container rsrecordPAtt-items { + + list RsRecordPAtt-list { + key "tDn"; + + uses ssx_RsRecordPAtt_source-group; + description "Record Policy Attachment list"; + } + description "Record Policy Attachment"; + } + + container rscollectorAtt-items { + + list RsCollectorAtt-list { + key "tDn"; + + uses ssx_RsCollectorAtt_source-group; + description "Reference to Collector list"; + } + description "Reference to Collector"; + } + } + + grouping ssx_SystemSsx-group { + description "Configure System SSX configs"; + + leaf name { + + type ssx_SsxMonitorName; + description "Ssx Monitor Node Name"; + } + + container rssysMonitorAtt-items { + + list RsSysMonitorAtt-list { + key "tDn"; + + uses ssx_RsSysMonitorAtt_source-group; + description "Reference to Monitor list"; + } + description "Reference to Monitor"; + } + } + + grouping ssx_FwdInstTarget-group { + description "Forward Instance Target"; + + // Identifier + leaf id { + config "false"; + + type ssx_FwdInstTargetId; + description "Identifier"; + } + + container rsmonitorAtt-items { + + list RsMonitorAtt-list { + config "false"; + key "tDn"; + + uses ssx_RsMonitorAtt_source-group; + description "Reference to Monitor list"; + } + description "Reference to Monitor"; + } + } + + grouping kbs_ContainerTracker-group { + description "Container Tracker entity"; + + // This object holds container tracker server information + container server-items { + + uses kbs_Server-group; + description "Kubernetes server infromation"; + } + } + + grouping kbs_Server-group { + description "Kubernetes server infromation"; + + // Admin state to configure kubernetes server + leaf adminSt { + + type kbs_adminStType; + description "State to configure kubernetes server properties"; + } + leaf ipAddress { + type address_Ip; + description "ip address of the kubernetes api server"; + } + leaf port { + type uint32 { + range "0..65535"; + } + description "port number of the kubernetes api server"; + } + + // VRF info + leaf vrf { + + type l3_VrfName; + description "VRF to be used while connecting to kubernetes api-server"; + } + + // This object holds container tracker watch information + container watch-items { + + uses kbs_Watch-group; + description "Kubernetes watch infromation"; + } + } + + grouping kbs_Watch-group { + description "Kubernetes watch infromation"; + + // Admin state to configure kubernetes watch service + leaf adminSt { + + type kbs_adminStType; + description "State to configure kubernetes watch service properties"; + } + leaf service { + type string { + length "0..64"; + } + description "service to watch for in the kubernetes cluster"; + } + + // acl cfg name to apply when watch is triggered + leaf acl { + + type acl_Name; + description "acl cfg name to apply when watch is triggered"; + } + } + + grouping copp_Entity-group { + description "CoPP Entity"; + leaf enableFlag { + type boolean; + default "true"; + description "Property Flag to enable or disable rate limiter for various CoPP classes"; + } + leaf error { + config "false"; + type uint64; + default "0"; + description "failure code"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Holder for copp class policy, each class describes a + // set of rules describing the policer rates + container classp-items { + list Class-list { + key "cName"; + + uses copp_Class-group; + description "Class list"; + } + description "Class"; + } + + // Holder for copp class policy, each class describes a + // set of rules describing the policer rates + container policy-items { + list Policy-list { + key "name"; + + uses copp_Policy-group; + description "Policy-map list"; + } + description "Policy-map"; + } + + // Model for COPP profile + container profile-items { + + uses copp_Profile-group; + description "CoPP Profile"; + } + + // Model for Copp Copy profile + container name-items { + list CopyProfile-list { + key "affixName"; + + uses copp_CopyProfile-group; + description "CoPP Copy Profile list"; + } + description "CoPP Copy Profile"; + } + + // Scale factor + container scale-items { + list Scale-list { + key "module"; + + uses copp_Scale-group; + description "Scale factor list"; + } + description "Scale factor"; + } + + // Service-Policy + container service-items { + list Service-list { + key "name"; + + uses copp_Service-group; + description "CoPP Service-policy list"; + } + description "CoPP Service-policy"; + } + + // Service-Policy + container servicedyn-items { + list ServiceDynamic-list { + key "name"; + + uses copp_ServiceDynamic-group; + description "CoPP Service-policy list"; + } + description "CoPP Service-policy"; + } + } + + grouping copp_Class-group { + description "Class"; + leaf cName { + type string; + description "Class-map name"; + } + + // Match any/all + leaf matchOption { + + type copp_MatchOption; + description "Match Option"; + } + leaf flag { + type boolean; + description "Property Flag"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Allowed rate, committed rate at which the packets + // are allowed into the system + leaf rate { + config "false"; + + type policer_Rate; + description "Rate"; + } + + // Committed burst size, number of packets to absorb during + // a burst + leaf burst { + config "false"; + + type policer_Burst; + description "Burst"; + } + + // Set of match conditions for this copp policer + container match-items { + list Match-list { + key "type"; + + uses copp_Match-group; + description "Match Criteria list"; + } + description "Match Criteria"; + } + + // Match access-group + container acl-items { + list Acl-list { + key "name"; + + uses copp_Acl-group; + description "Match access list name list"; + } + description "Match access list name"; + } + + // Match redirect + container rdirect-items { + + uses copp_Rdirect-group; + description "Match redirect"; + } + + // Match exception fcoe-fib-miss + container fcoe-items { + + uses copp_Fcoe-group; + description "Match Exception fcoe"; + } + + // Match exception multicast + container mcast-items { + list Multicast-list { + key "mcastOption"; + + uses copp_Multicast-group; + description "Multicast Exception options list"; + } + description "Multicast Exception options"; + } + + // Match exception + container excep-items { + list ExeOptions-list { + key "option"; + + uses copp_ExeOptions-group; + description "Match exception options list"; + } + description "Match exception options"; + } + + // Match exception ip + container ip-items { + + uses copp_Ip-group; + description "Match Ip version"; + } + + // Match exception ip icmp + container icmp-items { + list IpIcmp-list { + key "option"; + + uses copp_IpIcmp-group; + description "icmp options list"; + } + description "icmp options"; + } + + // Match exception ipv6 + container ipv6-items { + + uses copp_Ipv6-group; + description "Match Ipv6 version"; + } + + // Match exception ipv6 icmp + container icmpv6-items { + list Ipv6Icmp-list { + key "option"; + + uses copp_Ipv6Icmp-group; + description "icmp options list"; + } + description "icmp options"; + } + + // Match Protocol + container prot-items { + list Protocol-list { + key "type"; + + uses copp_Protocol-group; + description "Match Protocol list"; + } + description "Match Protocol"; + } + } + + grouping copp_Match-group { + description "Match Criteria"; + + // Match type + leaf type { + + type copp_MatchT; + description "Match type"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping copp_Acl-group { + description "Match access list name"; + leaf name { + type string; + description "Acl name"; + } + leaf flag { + type boolean; + description "Property Flag"; + } + } + + grouping copp_Rdirect-group { + description "Match redirect"; + + // Redirect options + leaf rdrct { + + type copp_Rdrct; + description "Match redirect options"; + } + } + + grouping copp_Fcoe-group { + description "Match Exception fcoe"; + + // Fcoe option + leaf option { + + type copp_Fcoe; + description "fcoe-fib-miss"; + } + } + + grouping copp_Multicast-group { + description "Multicast Exception options"; + + leaf mcastOption { + + type copp_Mcast; + description "Multicast options"; + } + leaf flag { + type boolean; + description "Property Flag"; + } + } + + grouping copp_ExeOptions-group { + description "Match exception options"; + + leaf option { + + type copp_Excep; + description "Match options"; + } + leaf flag { + type boolean; + description "Property Flag"; + } + } + + grouping copp_Ip-group { + description "Match Ip version"; + leaf options { + type boolean; + description "Ip Option"; + } + leaf flag { + type boolean; + description "Property Flag"; + } + } + + grouping copp_IpIcmp-group { + description "icmp options"; + + // ICMP options + leaf option { + + type copp_Icmp; + description "icmp options"; + } + leaf flag { + type boolean; + description "Property Flag"; + } + } + + grouping copp_Ipv6-group { + description "Match Ipv6 version"; + leaf options { + type boolean; + description "Ip Option"; + } + leaf flag { + type boolean; + description "Property Flag"; + } + } + + grouping copp_Ipv6Icmp-group { + description "icmp options"; + + // ICMP options + leaf option { + + type copp_Icmp; + description "icmp options"; + } + leaf flag { + type boolean; + description "Property Flag"; + } + } + + grouping copp_Protocol-group { + description "Match Protocol"; + + leaf type { + + type copp_Proto; + description "Protocol List"; + } + leaf flag { + type boolean; + description "Property Flag"; + } + + // Match protocol mpls + container mpls-items { + + uses copp_MPLSoption-group; + description "MPLS options"; + } + } + + grouping copp_MPLSoption-group { + description "MPLS options"; + + leaf exp { + + type copp_ExpVal; + description "Experimental value"; + } + + leaf routerAlert { + + type copp_Ralert; + description "router-alert"; + } + } + + grouping copp_Policy-group { + description "Policy-map"; + leaf name { + type string; + description "Policy-map name"; + } + leaf flag { + type boolean; + description "Property Flag"; + } + + // Class included in Policy-map + container classp-items { + list Classp-list { + key "name"; + + uses copp_Classp-group; + description "Classp list"; + } + description "Classp"; + } + } + + grouping copp_Classp-group { + description "Classp"; + leaf name { + type string; + description "Class name"; + } + leaf insertBeforeName { + type string; + description "Insert before Class name"; + } + leaf flag { + type boolean; + description "Property Flag"; + } + + // Set policer action + container cir-items { + list PolicerAction-list { + key "cirVal cirUnit burstC burstUnit"; + + uses copp_PolicerAction-group; + description "Set police action list"; + } + description "Set police action"; + } + + // Set policer action with pir rate + container policeActionE-items { + + uses copp_PolicerActionExc-group; + description "Set police action including exceed"; + } + + // Logging Action + container logging-items { + list Logging-list { + key "threshold levelRange"; + + uses copp_Logging-group; + description "Logging action list"; + } + description "Logging action"; + } + + // Set cos action + container setCos-items { + list SetCos-list { + key "cosVal"; + + uses copp_SetCos-group; + description "Set cos action list"; + } + description "Set cos action"; + } + + container setDscp-items { + + uses copp_SetDscp-group; + description "Set dscp action"; + } + } + + grouping copp_PolicerAction-group { + description "Set police action"; + + leaf cirVal { + + type copp_IrVal; + description "Cir value"; + } + + leaf cirUnit { + + type copp_IrUnit; + description "Cir rate"; + } + + leaf burstC { + + type copp_BurstVal; + description "Burst count"; + } + + leaf burstUnit { + + type copp_BurstUnit; + description "BC unit"; + } + + leaf conformAction { + + type copp_ConformAction; + description "Conform Action"; + } + + leaf violateAction { + + type copp_ViolateAction; + description "Violate action"; + } + leaf flag { + type boolean; + description "Property Flag"; + } + } + + grouping copp_PolicerActionExc-group { + description "Set police action including exceed"; + + leaf cirVal { + + type copp_IrVal; + description "Cir value"; + } + + leaf cirUnit { + + type copp_IrUnit; + description "Cir rate"; + } + + leaf burstC { + + type copp_BurstVal; + description "Burst count"; + } + + leaf burstUnit { + + type copp_BurstUnit; + description "BC unit"; + } + + leaf pirVal { + + type copp_IrVal; + description "Pir value"; + } + + leaf pirUnit { + + type copp_IrUnit; + description "Pir rate"; + } + + leaf burstE { + + type copp_BurstVal; + description "Burst exceed "; + } + + leaf burstEUnit { + + type copp_BurstUnit; + description "BE unit"; + } + + leaf conformAction { + + type copp_ConformAction; + description "Conform Action"; + } + + leaf exceedAction { + + type copp_ExceedAction; + description "Exceed Action"; + } + + leaf violateAction { + + type copp_ViolateAction; + description "Violate action"; + } + } + + grouping copp_Logging-group { + description "Logging action"; + + leaf threshold { + + type copp_IrVal; + description "Logging Threshold"; + } + + leaf levelRange { + + type copp_LevelRange; + description "logging range"; + } + } + + grouping copp_SetCos-group { + description "Set cos action"; + leaf inner { + type boolean; + description "Set cos inner"; + } + + // Cos value + leaf cosVal { + + type copp_CosVal; + description "Cos Value"; + } + leaf flag { + type boolean; + description "Property Flag"; + } + } + + grouping copp_SetDscp-group { + description "Set dscp action"; + leaf tunnel { + type boolean; + description "set dscp tunnel"; + } + + leaf dscpVal { + + type copp_DscpVal; + description "Dscp Value"; + } + } + + grouping copp_Profile-group { + description "CoPP Profile"; + + // Profile type + leaf prof { + + type copp_ProfT; + description "Profile type "; + } + } + + grouping copp_CopyProfile-group { + description "CoPP Copy Profile"; + + // Profile type + leaf profile { + + type copp_ProfT; + description "Profile type "; + } + + // affix type + leaf affix { + + type copp_Affix; + description "Affix type"; + } + leaf affixName { + type string; + description "Prefix/Suffix Name"; + } + leaf copyNum { + type uint32; + description "Number of copp copies to this MO"; + } + } + + grouping copp_Scale-group { + description "Scale factor"; + leaf scaleVal { + type decimal64 { + fraction-digits 6; + } + description "scale factor value"; + } + leaf module { + type uint16; + description "Module number"; + } + } + + grouping copp_Service-group { + description "CoPP Service-policy"; + leaf name { + type string; + description "service-policy name"; + } + leaf error { + config "false"; + type uint64; + default "0"; + description "failure code"; + } + } + + grouping copp_ServiceDynamic-group { + description "CoPP Service-policy"; + leaf name { + type string; + description "service-policy name"; + } + leaf error { + config "false"; + type uint64; + default "0"; + description "failure code"; + } + } + + grouping fsyncMgr_SynceEntity-group { + description "synce MO for global configuration"; + + // clock-interface timing mode system timing mode QL itu-t option + leaf qloption { + + type fsyncMgr_gqloptype; + description "QL option type global"; + } + leaf clockid { + type address_Mac; + description "SyncE clock-identity MAC Address"; + } + + leaf peerrcvtimeout { + + type fsyncMgr_peerrcvtimeout; + description + "fsync esmc peer + receive timeout in seconds, (120-600) default: 0"; + } + leaf txDnuLag { + type boolean; + default "true"; + description "transmit dnu on lag members"; + } + + // synce config for ethernet interface + container if-items { + list SynceEthif-list { + key "id"; + + uses fsyncMgr_SynceEthif-group; + description "synce eth interface config list"; + } + description "synce eth interface config"; + } + } + + grouping fsyncMgr_SynceEthif-group { + description "synce eth interface config"; + + // synce if id + leaf id { + + type nw_IfId; + description "SyncE ethernet interface"; + } + leaf freqsync { + type boolean; + description "frequency synchronization"; + } + leaf selinput { + type boolean; + default "false"; + description "Selection configuration"; + } + leaf ssm { + type boolean; + default "true"; + description "SSM configuration: enable/disable"; + } + leaf srcpriority { + type uint16 { + range "1..254"; + } + default "100"; + description "source priority (1-254) default:100"; + } + leaf wtr { + type uint16 { + range "0..12"; + } + default "5"; + description "Set the wait-to-restore time (0-12) default: 5 minute"; + } + + // quality transmit exact option type + leaf qltxexactoptype { + + type fsyncMgr_qloptype; + description "quality transmit exact QL option type"; + } + + // quality receive exact option type + leaf qlrcvexactoptype { + + type fsyncMgr_qloptype; + description "quality receive exact QL option type"; + } + + // quality transmit range option type quality receive range option type quality transmit exact value + leaf qltxexactval { + + type fsyncMgr_qlvalue; + description "quality transmit exact QL value"; + } + + // quality receive exact value + leaf qlrcvexactval { + + type fsyncMgr_qlvalue; + description "quality receive exact QL value"; + } + + // quality transmit lowest value + leaf qltxlval { + + type fsyncMgr_qlvalue; + description "quality transmit lowest QL value"; + } + + // quality receive lowest value + leaf qlrcvlval { + + type fsyncMgr_qlvalue; + description "quality receive lowest QL value"; + } + + // quality transmit highest value + leaf qltxhval { + + type fsyncMgr_qlvalue; + description "quality transmit highest QL value"; + } + + // quality receive highest value + leaf qlrcvhval { + + type fsyncMgr_qlvalue; + description "quality receive highest QL value"; + } + } + + grouping grpc_Inst-group { + description "Instance node for managing grpc properties"; + leaf port { + type uint32 { + range "1024..65535"; + } + default "50051"; + description "Specifies the port number on which the grpc Agent listens"; + } + + leaf cert { + + type os_OsString { + length "0..64"; + } + description "Specifies the certificate to be used for TLS authentication"; + } + + leaf useVrf { + + type os_OsString; + description "Vrf to be used for grpc communication."; + } + + // gnmi config + // It supports the following options: + // maxCalls Specifies the maximum number of concurrent calls to gnmi. + container gnmi-items { + + uses grpc_Gnmi-group; + description "Child mo for managing gnmi properties"; + } + } + + grouping grpc_Gnmi-group { + description "Child mo for managing gnmi properties"; + leaf maxCalls { + type uint16 { + range "1..16"; + } + default "8"; + description "Specifies the maximum number of concurrent calls to gnmi."; + } + } + + grouping hmm_Entity-group { + description "Holds Host Mobility Manager (HMM) Entity information."; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Fabric Forwarding Object + container fwdinst-items { + + uses hmm_FwdInst-group; + description "The object that represents the HMM Fabric Forwarding Instance (responsible for host detection and mobility). Currently only one HMM Forwarding instance is supported."; + } + } + + grouping hmm_FwdInst-group { + description "The object that represents the HMM Fabric Forwarding Instance (responsible for host detection and mobility). Currently only one HMM Forwarding instance is supported."; + leaf amac { + type address_Mac; + description "Anycast Gateway MAC address."; + } + leaf limitVlanMac { + type uint16 { + range "5..2048"; + } + default "2048"; + description "This is to limit the number of hosts learnt by HMM in the same subnet with same MAC information."; + } + + // selective-host-probe + leaf selHostProbe { + + type hmm_Boolean; + description "When set to True, host mobility will be triggered when a remote host route exists irrespective of the sequence id."; + } + leaf adminDist { + type uint16 { + range "1..255"; + } + default "190"; + description "Set the administrative distance for HMM "; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Fabric Forwarding Interface Object + container if-items { + list FwdIf-list { + key "id"; + + uses hmm_FwdIf-group; + description "Object that holds HMM Fabric Forwarding mode information related to an Interface. list"; + } + description "Object that holds HMM Fabric Forwarding mode information related to an Interface."; + } + + // Fabric Forwarding EVPN Object + container evpn-items { + + uses hmm_FwdEvpn-group; + description "The object that represents the HMM Fabric Forwarding EVPN instance. This model is not available unless EVPN is configured. Currently only one HMM Forwarding EVPN instance is supported."; + } + + // Holds HMM vrf information + container tenant-items { + list TenantDb-list { + config "false"; + key "vrfName"; + + uses hmm_TenantDb-group; + description "Holds Tenant (VRF) statistics information. This includes Tenant state and number of hosts in the Tenant network. list"; + } + description "Holds Tenant (VRF) statistics information. This includes Tenant state and number of hosts in the Tenant network."; + } + } + + grouping hmm_FwdIf-group { + description "Object that holds HMM Fabric Forwarding mode information related to an Interface."; + + // Forwarding mode + leaf mode { + + type hmm_FwdMode; + description "HMM Fabric Forwarding mode information for the interface."; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping hmm_FwdEvpn-group { + description "The object that represents the HMM Fabric Forwarding EVPN instance. This model is not available unless EVPN is configured. Currently only one HMM Forwarding EVPN instance is supported."; + leaf ddHmmoves { + type uint16 { + range "1..1000"; + } + default "5"; + description "User Setting to mark a host as duplicate if it does ddHmmoves number of moves."; + } + leaf ddHnsecs { + type uint16 { + range "2..36000"; + } + default "180"; + description "User Setting to mark a host as duplicate if it does ddHmmoves moves in ddHnsecs seconds."; + } + leaf dhrtimeout { + type uint16 { + range "30..36000"; + } + default "30"; + description "User Setting to periodically (dhrtimeout seconds) check if a Duplicate marked Host is no longer duplicate."; + } + leaf dhrcount { + type uint16 { + range "1..3000"; + } + default "5"; + description "Number of times (dhrcount) to periodically check if a Duplicate marked Host is no longer duplicate."; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + } + + grouping hmm_TenantDb-group { + description "Holds Tenant (VRF) statistics information. This includes Tenant state and number of hosts in the Tenant network."; + leaf vrfName { + config "false"; + type string; + description "Tenant (VRF) Name"; + } + leaf vrfState { + config "false"; + type string; + description "Tenant (VRF) State."; + } + leaf vniId { + config "false"; + type uint32; + description "VNI (Virtual Network Identifier) ID of the Tenant."; + } + leaf refCount { + config "false"; + type uint32; + description "Reference count to keep track of the number of references to this tenant."; + } + + // Holds Address family information + container af-items { + list TenantDBAf-list { + config "false"; + key "type"; + + uses hmm_TenantDBAf-group; + description "Holds information related to a particular Tenant Address Family. list"; + } + description "Holds information related to a particular Tenant Address Family."; + } + } + + grouping hmm_TenantDBAf-group { + description "Holds information related to a particular Tenant Address Family."; + + // Address family type + leaf type { + config "false"; + + type bgp_AfT; + description "Tenant Address Family type (IPv4/IPv6)."; + } + leaf tblState { + config "false"; + type string; + description "Tenant Table State."; + } + leaf localHosts { + config "false"; + type uint32; + description "Number of locally connected hosts in the Tenant network."; + } + leaf remoteHosts { + config "false"; + type uint32; + description "remote hosts"; + } + leaf aggregates { + config "false"; + type uint32; + description "aggregates"; + } + } + + grouping bd_Entity-group { + description "System BD"; + leaf descr { + config "false"; + type string; + description "BD"; + } + + // If false, value is explicitly set globally for all SVIs + leaf sysDefaultSVIAutostate { + + type bd_DefaultSVIAutoState; + description "Disable/enable autoState for SVI interface"; + } + + // This object holds vlan config information + container vlanconfig-items { + list VlanConfig-list { + key "accEncap"; + + uses l2_VlanConfig-group; + description "Vlan Configuration list"; + } + description "Vlan Configuration"; + } + + // Layer2 Bridge-domain. Domain with regular ports and/or + // epg-vlans as members. + container bd-items { + + list BD-list { + key "fabEncap"; + + uses l2_BD-group; + description "Bridge Domain list"; + } + description "Bridge Domain"; + } + + // 802.1q Vlan + container vlan-items { + + list CktEp-list { + key "encap"; + + uses vlan_CktEp-group; + description "Vlan list"; + } + description "Vlan"; + } + + // Vxlan circuit + container vxlan-items { + + list CktEp-list { + config "false"; + key "encap"; + + uses vxlan_CktEp-group; + description "Vxlan list"; + } + description "Vxlan"; + } + + container resvlan-items { + + uses resmgr_ResVlan-group; + description "Resmgr vlan reservation"; + } + } + + grouping l2_VlanConfig-group { + description "Vlan Configuration"; + leaf accEncap { + type string; + description "Access Encapsulation"; + } + + // Vlan Mac learn enable/disable + leaf vlanMacLearn { + + type l2fm_Learning; + description "VlanMacLearn state"; + } + + container ipqos-items { + + uses ipqos_Entity-group; + description "QoS configuration space"; + } + } + + grouping ipqos_Entity-group { + description "QoS configuration space"; + + leaf statsState { + + type ipqos_statsState; + description "Globally enable/disable QoS statistics"; + } + + leaf qosPoliciesStatsState { + + type ipqos_statsState; + default "disabled"; + description + "Globally enable/disable + QoS-Policies statistics"; + } + leaf dynamicBufferShare { + type boolean; + description "Globally enable/disable dynamic-buffer-sharing"; + } + leaf mode { + type boolean; + description "System QoS Mode, sets the mode"; + } + + container statClear-items { + + uses ipqos_StatClear-group; + description "clear qos statistics"; + } + + // Queuing QoS + container queuing-items { + + uses ipqos_Queuing-group; + description "Queuing type QoS"; + } + + // Network QoS + container nw-items { + + uses ipqos_NwQoS-group; + description "Network QoS"; + } + + // Default QoS + container dflt-items { + + uses ipqos_DefaultQoS-group; + description "Default type QoS"; + } + + container globalpriorflowctrl-items { + + uses ipqos_GlobalPriorFlowCtrl-group; + description "Global priority flow control"; + } + + // Logging level + container loglevel-items { + + uses ipqos_LogLevel-group; + description "configure logging level parameters"; + } + } + + grouping ipqos_StatClear-group { + description "clear qos statistics"; + + // StatClear pmap type + leaf pmapType { + + type ipqos_policyType; + description "policy-map type"; + } + + // StatClear pmap diretion + leaf direction { + + type ipqos_policyDirection; + description "policy-map direction input or output"; + } + + // StatClear ethernet list + leaf ethernet { + + type ipqos_ethernetList; + description "list of ethernet interfaces"; + } + + // StatClear vlan list + leaf vlan { + + type ipqos_vlanList; + description "list of vlan interfaces"; + } + + // StatClear portChan list + leaf portChan { + + type ipqos_portChanList; + description "list of port-channel interfaces"; + } + leaf timeStamp { + type union { + type string; + type uint64; + } + description "INTERNAL:time stamp"; + } + } + + grouping ipqos_Queuing-group { + description "Queuing type QoS"; + + // service policy applied on target + container policy-items { + + uses ipqos_ServPol-group; + description "service policy instance"; + } + + // class-map + container c-items { + + uses ipqos_CMapEntity-group; + description "ClassMap"; + } + + // policy-map + container p-items { + + uses ipqos_PMapEntity-group; + description "PolicyMap"; + } + + container copyPMap-items { + + uses ipqos_CopyPMap-group; + description "Copy qos objects"; + } + } + + grouping ipqos_ServPol-group { + description "service policy instance"; + + // Ingress direction + container in-items { + + uses ipqos_Ingress-group; + description "Ingress direction"; + } + + // Ingress direction + container out-items { + + uses ipqos_Egress-group; + description "Egress direction"; + } + } + + grouping ipqos_Ingress-group { + description "Ingress direction"; + + // Target interface + container intf-items { + list If-list { + key "name"; + + uses ipqos_If-group; + description "Interface list"; + } + description "Interface"; + } + + // Target Nve interface + container nveif-items { + list NveIf-list { + key "id"; + + uses ipqos_NveIf-group; + description "Nve Interface for service-policy list"; + } + description "Nve Interface for service-policy"; + } + + // system qos + container sys-items { + + uses ipqos_System-group; + description "System"; + } + + // Service policy instance + container pmap-items { + + uses ipqos_Inst-group; + description "Service Policy name"; + } + } + + grouping ipqos_If-group { + description "Interface"; + + // interface name string + leaf name { + + type nw_IfId; + description "Interface name in a short form. eth1/1 or pc1"; + } + leaf delIntfBit { + type boolean; + default "false"; + description "hidden delete Interface bit for internal use"; + } + + // Service policy instance + container pmap-items { + + uses ipqos_Inst-group; + description "Service Policy name"; + } + container cmap-items { + list Stats-list { + config "false"; + key "cmapName statType"; + + uses ipqos_Stats-group; + description "QoS statistics list"; + } + description "QoS statistics"; + } + container queCmap-items { + list QueuingStats-list { + config "false"; + key "cmapName statType"; + + uses ipqos_QueuingStats-group; + description "Queuing statistics list"; + } + description "Queuing statistics"; + } + } + + grouping ipqos_Inst-group { + description "Service Policy name"; + + // name of policy map + leaf name { + + type ipqos_PMapName; + description "Policy-map Name"; + } + leaf stats { + type boolean; + default "true"; + description "turn on/off statistics"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + + container rspolicyInstToPMap-items { + + uses ipqos_RsPolicyInstToPMap_source-group; + description "Link from policy instance to policy-map"; + } + } + + grouping ipqos_Stats-group { + description "QoS statistics"; + + leaf cmapName { + config "false"; + + type ipqos_CMapName; + description "Class map name"; + } + + leaf statType { + config "false"; + + type ipqos_StatsType; + description "QoS statistics type"; + } + + leaf pmapName { + config "false"; + + type ipqos_PMapName; + description "Policy map name"; + } + leaf dropPackets { + config "false"; + type uint64; + description "Drop packet count"; + } + leaf dropBytes { + config "false"; + type uint64; + description "Drop byte count"; + } + leaf txPackets { + config "false"; + type uint64; + description "Transmit packet count"; + } + leaf txBytes { + config "false"; + type uint64; + description "Transmit byte count"; + } + leaf conformBytes { + config "false"; + type uint64; + description "Conform byte count"; + } + leaf exceedBytes { + config "false"; + type uint64; + description "Exceed byte count"; + } + leaf violateBytes { + config "false"; + type uint64; + description "Violate byte count"; + } + } + + grouping ipqos_QueuingStats-group { + description "Queuing statistics"; + + leaf cmapName { + config "false"; + + type ipqos_CMapName; + description "Class map name"; + } + + leaf statType { + config "false"; + + type ipqos_StatsType; + description "QoS statistics type"; + } + + leaf pmapName { + config "false"; + + type ipqos_PMapName; + description "Policy map name"; + } + leaf dropPackets { + config "false"; + type uint64; + description "Drop packet count"; + } + leaf dropBytes { + config "false"; + type uint64; + description "Drop byte count"; + } + leaf txPackets { + config "false"; + type uint64; + description "Transmit packet count"; + } + leaf txBytes { + config "false"; + type uint64; + description "Transmit byte count"; + } + leaf currQueueDepth { + config "false"; + type uint64; + description "Current queue depth in bytes"; + } + leaf maxQueueDepth { + config "false"; + type uint64; + description "Maximum queue depth in bytes"; + } + leaf ingQDropPackets { + config "false"; + type uint64; + description "Ingress Queue Drop packet count"; + } + leaf ingQDepthBytes { + config "false"; + type uint64; + description "Ingress Queue Depth in bytes"; + } + leaf randDropBytes { + config "false"; + type uint64; + description "Random detect drop byte count"; + } + leaf randDropPackets { + config "false"; + type uint64; + description "Random detect drop packet count"; + } + leaf randEcnMarkedPackets { + config "false"; + type uint64; + description "Random detect ECN Marked packet count"; + } + leaf pfcTxPpp { + config "false"; + type uint64; + description "Priority-based Flow Control Per Packet Pause Transmitted count"; + } + leaf pfcRxPpp { + config "false"; + type uint64; + description "Priority-based Flow Control Per Packet Pause Received count"; + } + leaf pfcwdShutdownCount { + config "false"; + type uint64; + description "Priority-based Flow Control WatchDog Queue Shutdown Count"; + } + leaf pfcwdRestoredCount { + config "false"; + type uint64; + description "Priority-based Flow Control WatchDog Queue Restored Count"; + } + leaf pfcwdFlushedPackets { + config "false"; + type uint64; + description "Priority-based Flow Control WatchDog Queue Flushed Packets"; + } + } + + grouping ipqos_NveIf-group { + description "Nve Interface for service-policy"; + + // interface name string + leaf id { + + type nvo_EpIdT; + description "Nve Interface id for service-policy"; + } + + // Service policy instance + container pmap-items { + + uses ipqos_Inst-group; + description "Service Policy name"; + } + } + + grouping ipqos_System-group { + description "System"; + + // Service policy instance + container pmap-items { + + uses ipqos_Inst-group; + description "Service Policy name"; + } + } + + grouping ipqos_Egress-group { + description "Egress direction"; + + // Target interface + container intf-items { + list If-list { + key "name"; + + uses ipqos_If-group; + description "Interface list"; + } + description "Interface"; + } + + // Target Nve interface + container nveif-items { + list NveIf-list { + key "id"; + + uses ipqos_NveIf-group; + description "Nve Interface for service-policy list"; + } + description "Nve Interface for service-policy"; + } + + // system qos + container sys-items { + + uses ipqos_System-group; + description "System"; + } + + // Service policy instance + container pmap-items { + + uses ipqos_Inst-group; + description "Service Policy name"; + } + } + + grouping ipqos_CMapEntity-group { + description "ClassMap"; + container name-items { + list CMapInst-list { + key "name"; + + uses ipqos_CMapInst-group; + description "Class map instance list"; + } + description "Class map instance"; + } + } + + grouping ipqos_CMapInst-group { + description "Class map instance"; + + // name of class map + leaf name { + + type ipqos_CMapName; + description "Name of class-map"; + } + + // type of matching + leaf matchType { + + type ipqos_QoSMatchType; + description "Match-any, match-all or match-first"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + + // access-group + container acl-items { + list Acl-list { + key "name"; + + uses ipqos_Acl-group; + description "Match ACL list"; + } + description "Match ACL"; + } + + // dscp matching + container dscp-items { + list Dscp-list { + key "val"; + + uses ipqos_Dscp-group; + description "Match dscp list"; + } + description "Match dscp"; + } + + // ip rtp matching + container ipRtp-items { + + uses ipqos_IpRtp-group; + description "Match ip rtp"; + } + + // packet length matching + container packetLength-items { + + uses ipqos_PacketLength-group; + description "Match Match packet length"; + } + + // cos marking + container cos-items { + list Cos-list { + key "val"; + + uses ipqos_Cos-group; + description "Match cos list"; + } + description "Match cos"; + } + + // mpls experimental matching + container mplsExperimental-items { + list MPLSExperimental-list { + key "val"; + + uses ipqos_MPLSExperimental-group; + description "Match mpls experimental list"; + } + description "Match mpls experimental"; + } + + // precedence matching + container precedence-items { + list Precedence-list { + key "val"; + + uses ipqos_Precedence-group; + description "Match precedence list"; + } + description "Match precedence"; + } + + // protocol matching + container protocol-items { + list Protocol-list { + key "val"; + + uses ipqos_Protocol-group; + description "Match protocol list"; + } + description "Match protocol"; + } + + // description + container Description-items { + + uses ipqos_Description-group; + description "description"; + } + + // NOT dscp matching + container dscpNot-items { + list NotDscp-list { + key "val"; + + uses ipqos_NotDscp-group; + description "Match not dscp list"; + } + description "Match not dscp"; + } + + // NOT cos matching + container cosNot-items { + list NotCos-list { + key "val"; + + uses ipqos_NotCos-group; + description "Match not cos list"; + } + description "Match not cos"; + } + + // NOT mpls experimental matching + container mplsExperimentalNot-items { + list NotMPLSExperimental-list { + key "val"; + + uses ipqos_NotMPLSExperimental-group; + description "Match not mpls experimental list"; + } + description "Match not mpls experimental"; + } + + // NOT precedence matching + container precedenceNot-items { + list NotPrecedence-list { + key "val"; + + uses ipqos_NotPrecedence-group; + description "Match not precedence list"; + } + description "Match not precedence"; + } + + // NOT protocol matching + container protocolNot-items { + list NotProtocol-list { + key "val"; + + uses ipqos_NotProtocol-group; + description "Match not protocol list"; + } + description "Match not protocol"; + } + + // NOT ip rtp matching + container ipRtpNot-items { + + uses ipqos_NotIpRtp-group; + description "Match not ip rtp"; + } + + // packet length matching + container packetLengthNot-items { + + uses ipqos_NotPacketLength-group; + description "Match not packet length"; + } + + // match qos-group + container grp-items { + list QoSGrp-list { + key "id"; + + uses ipqos_QoSGrp-group; + description "Match qos-group list"; + } + description "Match qos-group"; + } + + container rsclassMapToPolicyMap-items { + + list RsClassMapToPolicyMap-list { + key "tDn"; + + uses ipqos_RsClassMapToPolicyMap_source-group; + description "policy-maps using this class-map list"; + } + description "policy-maps using this class-map"; + } + } + + grouping ipqos_Acl-group { + description "Match ACL"; + + // ACL to match + leaf name { + + type acl_Name; + description "Match using ACL"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_Dscp-group { + description "Match dscp"; + + // dscp value + leaf val { + + type ipqos_Dscp; + description "Dscp value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_IpRtp-group { + description "Match ip rtp"; + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + leaf range { + type string; + description "range string values"; + } + } + + grouping ipqos_PacketLength-group { + description "Match Match packet length"; + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + leaf range { + type string; + description "range string values"; + } + } + + grouping ipqos_Cos-group { + description "Match cos"; + + // cos value + leaf val { + + type ipqos_Cos; + description "Cos value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_MPLSExperimental-group { + description "Match mpls experimental"; + + // mpls experimental value + leaf val { + + type ipqos_MPLSExperimental; + description "MPLS experimental value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_Precedence-group { + description "Match precedence"; + + // dscp value + leaf val { + + type ipqos_Prec; + description "Precedence value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_Protocol-group { + description "Match protocol"; + + // protocol value + leaf val { + + type ipqos_Protocol; + description "Protocol value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_Description-group { + description "description"; + + // description value + leaf val { + + type ipqos_DescStr; + description "Description string"; + } + } + + grouping ipqos_NotDscp-group { + description "Match not dscp"; + + // dscp value + leaf val { + + type ipqos_Dscp; + description "Not dscp value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_NotCos-group { + description "Match not cos"; + + // cos value + leaf val { + + type ipqos_Cos; + description "Not cos value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_NotMPLSExperimental-group { + description "Match not mpls experimental"; + + // mpls experimental value + leaf val { + + type ipqos_MPLSExperimental; + description "Not mpls experimental value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_NotPrecedence-group { + description "Match not precedence"; + + // precedence value + leaf val { + + type ipqos_Prec; + description "Not precedence value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_NotProtocol-group { + description "Match not protocol"; + + // protocol value + leaf val { + + type ipqos_Protocol; + description "Not protocol value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_NotIpRtp-group { + description "Match not ip rtp"; + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + leaf range { + type string; + description "range string values"; + } + } + + grouping ipqos_NotPacketLength-group { + description "Match not packet length"; + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + leaf range { + type string; + description "range string values"; + } + } + + grouping ipqos_QoSGrp-group { + description "Match qos-group"; + + // QoS-Group ID + leaf id { + + type ipqos_QoSGrpId; + description "QoS group ID"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_PMapEntity-group { + description "PolicyMap"; + + // policy map instance + container name-items { + list PMapInst-list { + key "name"; + + uses ipqos_PMapInst-group; + description "Policy map instance list"; + } + description "Policy map instance"; + } + } + + grouping ipqos_PMapInst-group { + description "Policy map instance"; + + // policy map name + leaf name { + + type ipqos_PMapName; + description "Name of policy-map"; + } + + // type of matching + leaf matchType { + + type ipqos_QoSMatchType; + description "Match-any, match-all or match-first"; + } + leaf refCount { + config "false"; + type uint32; + description "policy-map reference count"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + + // match a class-map + container cmap-items { + list MatchCMap-list { + key "name"; + + uses ipqos_MatchCMap-group; + description "Match class-map list"; + } + description "Match class-map"; + } + + // description + container Description-items { + + uses ipqos_Description-group; + description "description"; + } + + container rtipqosPolicyInstToPMap-items { + + list RtIpqosPolicyInstToPMap-list { + config "false"; + key "tDn"; + + uses ipqos_RtIpqosPolicyInstToPMap_target-group; + description "Link from policy instance to policy-map list"; + } + description "Link from policy instance to policy-map"; + } + + container rtclassMapToPolicyMap-items { + + uses ipqos_RtClassMapToPolicyMap_target-group; + description "policy-maps using this class-map"; + } + } + + grouping ipqos_MatchCMap-group { + description "Match class-map"; + + // use class-map with this name + leaf name { + + type ipqos_CMapName; + description "Match using class-map"; + } + + leaf prevCMap { + + type ipqos_MatchCMapName; + description "Insert after the given class-map"; + } + + leaf nextCMap { + + type ipqos_MatchCMapName; + description "Insert before the given class-map"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + + container setCos-items { + + uses ipqos_SetCos-group; + description "Set Cos"; + } + + // set MTU + container mtu-items { + + uses ipqos_SetMTU-group; + description "Set MTU"; + } + + // Aggregate Policer + container aggr-items { + list AggregatePolicer-list { + key "policerName"; + + uses ipqos_AggregatePolicer-group; + description "Aggregate Policer for policy list"; + } + description "Aggregate Policer for policy"; + } + + // set precedence + container setPrecedence-items { + + uses ipqos_SetPrecedence-group; + description "Set Precedence"; + } + + // set dscp + container setDscp-items { + + uses ipqos_SetDscp-group; + description "Set Dscp"; + } + + // set qos-group + container setGrp-items { + + uses ipqos_SetQoSGrp-group; + description "Set QoS-Group"; + } + + // set dlb-disable + container setDlbDisable-items { + + uses ipqos_SetDlbDisable-group; + description "Set dlb-disable"; + } + + // set mpls experimental imposition + container setmplsexpimposition-items { + + uses ipqos_SetMplsExperimentalImposition-group; + description "Set mpls experimental imposition"; + } + + // queue-limit + container QueueLimit-items { + + uses ipqos_QueueLimit-group; + description "Queue limit"; + } + + // pause priority group + container pausepg-items { + + uses ipqos_PausePg-group; + description "Pause Priority Group"; + } + + // pause + container pause-items { + + uses ipqos_Pause-group; + description "Pause PFC COS"; + } + + // dpp + container dpp-items { + + uses ipqos_Dpp-group; + description "Configure Dynamic Packet Prioritization"; + } + + // bandwidth + container setBW-items { + + uses ipqos_SetBW-group; + description "Set bandwidth"; + } + + // bandwidth + container setRemBW-items { + + uses ipqos_SetRemBW-group; + description "Set remaining bandwidth"; + } + + // shape traffic + container shape-items { + + uses ipqos_Shape-group; + description "Shape traffic"; + } + + // police + container police-items { + + uses ipqos_Police-group; + description "Police traffic"; + } + + // priority + container prio-items { + + uses ipqos_Priority-group; + description "Traffic class priority"; + } + + container RandDet-items { + + uses ipqos_RandomDetect-group; + description "Set random detect"; + } + + container RandDetNonEcn-items { + + uses ipqos_RandomDetectNonEcn-group; + description "Set random detect non ECN thresholds"; + } + + // set DCTCP + container dctcp-items { + + uses ipqos_Dctcp-group; + description "Data Center TCP"; + } + + // burst-detect + container burstdetect-items { + + uses ipqos_BurstDetect-group; + description "Burst detect"; + } + + // burst-detect state + container burstdetectstate-items { + + uses ipqos_BurstDetectState-group; + description "Burst detect"; + } + + // afd + container afd-items { + + uses ipqos_Afd-group; + description "configure AFD parameters"; + } + } + + grouping ipqos_SetCos-group { + description "Set Cos"; + + // Cos value + leaf val { + + type ipqos_CosNewNone; + description "Cos value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_SetMTU-group { + description "Set MTU"; + + // MTU value + leaf value { + + type ipqos_MTU; + description "Set MTU value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_AggregatePolicer-group { + description "Aggregate Policer for policy"; + + // Policer name + leaf policerName { + + type ipqos_PolicerName; + description "Policer name for Aggregate/Shared-Policer QoS"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_SetPrecedence-group { + description "Set Precedence"; + + // Precedence value + leaf val { + + type ipqos_Prec; + description "Precedence value"; + } + leaf tunnel { + type boolean; + description "tunnel on or off"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_SetDscp-group { + description "Set Dscp"; + + // Dscp value + leaf val { + + type ipqos_Dscp; + description "Dscp value"; + } + leaf tunnel { + type boolean; + description "tunnel on or off"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_SetQoSGrp-group { + description "Set QoS-Group"; + + // QoS-Group ID + leaf id { + + type ipqos_QoSGrpId; + description "QoS group ID"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_SetDlbDisable-group { + description "Set dlb-disable"; + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_SetMplsExperimentalImposition-group { + description "Set mpls experimental imposition"; + + // Experimental value + leaf expValue { + + type ipqos_MplsExperimentalValue; + description "Set mpls experimental imposition value"; + } + } + + grouping ipqos_QueueLimit-group { + description "Queue limit"; + + // queue-limit + leaf QueueLimitVal { + + type ipqos_QueueLimit; + description "Value in bytes/kbytes/mbytes"; + } + + // queue-limit unit + leaf QueueLimitUnit { + + type ipqos_QueueLimitUnit; + description "Bytes/kbytes/mbytes"; + } + + // queue-limit dynamic + leaf dynamic { + + type ipqos_QueueLimitDynamic; + description "Queue-limit dynamic value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_PausePg-group { + description "Pause Priority Group"; + + leaf val { + + type ipqos_PriorityGrpVal; + description "Priority Group value"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_Pause-group { + description "Pause PFC COS"; + + // buffer-size + leaf bufferSize { + + type ipqos_BuffSize; + description "size in bytes"; + } + + // pause-threshold + leaf pauseThreshold { + + type ipqos_XoffBytes; + description "xoff bytes"; + } + + // resume-threshold + leaf resumeThreshold { + + type ipqos_XonBytes; + description "xon bytes"; + } + leaf pfcCos0 { + type boolean; + description "Configure pfc-cos 0 value"; + } + leaf pfcCos1 { + type boolean; + description "Configure pfc-cos 1 value"; + } + leaf pfcCos2 { + type boolean; + description "Configure pfc-cos 2 value"; + } + leaf pfcCos3 { + type boolean; + description "Configure pfc-cos 3 value"; + } + leaf pfcCos4 { + type boolean; + description "Configure pfc-cos 4 value"; + } + leaf pfcCos5 { + type boolean; + description "Configure pfc-cos 5 value"; + } + leaf pfcCos6 { + type boolean; + description "Configure pfc-cos 6 value"; + } + leaf pfcCos7 { + type boolean; + description "Configure pfc-cos 7 value"; + } + leaf receive { + type boolean; + description "Configure pause receive only mode"; + } + leaf noDrop { + type boolean; + description "Configure pause no-drop mode"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_Dpp-group { + description "Configure Dynamic Packet Prioritization"; + + // set-qos-group + leaf setQosGroup { + + type ipqos_CosNewNone; + description "QoS Group Value"; + } + } + + grouping ipqos_SetBW-group { + description "Set bandwidth"; + + // Percent of available bandwidth + leaf val { + + type ipqos_Percent; + description "Available bandwidth"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_SetRemBW-group { + description "Set remaining bandwidth"; + + // Percent of available bandwidth + leaf val { + + type ipqos_Percent; + description "Remaining bandwidth"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_Shape-group { + description "Shape traffic"; + + leaf min { + + type ipqos_ShapeRate; + description "Minimum shape rate"; + } + + leaf minRateUnit { + + type ipqos_RateUnit; + description "Minimum shape rate unit"; + } + + leaf max { + + type ipqos_ShapeRate; + description "Maximum shape rate"; + } + + leaf maxRateUnit { + + type ipqos_RateUnit; + description "Maximum shape rate unit"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_Police-group { + description "Police traffic"; + + leaf cirRate { + + type ipqos_PoliceRate; + description "CIR"; + } + + leaf cirUnit { + + type ipqos_RateUnit; + description "CIR unit"; + } + + leaf bcRate { + + type ipqos_BurstRate; + description "CIR burst"; + } + + leaf bcUnit { + + type ipqos_BurstRateUnit; + description "CIR burst unit"; + } + + leaf pirRate { + + type ipqos_PoliceRate; + description "PIR"; + } + + leaf pirUnit { + + type ipqos_RateUnit; + description "PIR unit"; + } + + leaf beRate { + + type ipqos_BurstRate; + description "PIR burst"; + } + + leaf beUnit { + + type ipqos_BurstRateUnit; + description "PIR burst unit"; + } + + leaf conformAction { + + type ipqos_PoliceAction; + description "Conform action"; + } + + leaf conformSetCosTransmit { + + type ipqos_Cos; + description "set cos for conforming traffic"; + } + + leaf conformSetDscpTransmit { + + type ipqos_Dscp; + description "set dscp for conforming traffic"; + } + + leaf conformSetPrecTransmit { + + type ipqos_Prec; + description "set precedence for conforming traffic"; + } + + leaf conformSetQosGrpTransmit { + + type ipqos_QoSGrpId; + description "set qos-group for conforming traffic"; + } + + leaf exceedAction { + + type ipqos_PoliceAction; + description "Exceed action"; + } + + leaf exceedSetCosTransmit { + + type ipqos_Cos; + description "set cos for exceeding traffic"; + } + + leaf exceedSetDscpTransmit { + + type ipqos_Dscp; + description "set dscp for exceeding traffic"; + } + + leaf exceedSetPrecTransmit { + + type ipqos_Prec; + description "set precedence for exceeding traffic"; + } + + leaf exceedSetQosGrpTransmit { + + type ipqos_QoSGrpId; + description "set qos-group for exceeding traffic"; + } + + leaf violateAction { + + type ipqos_PoliceAction; + description "Violate action"; + } + + leaf violateSetCosTransmit { + + type ipqos_Cos; + description "set cos for violating traffic"; + } + + leaf violateSetDscpTransmit { + + type ipqos_Dscp; + description "set dscp for violating traffic"; + } + + leaf violateSetPrecTransmit { + + type ipqos_Prec; + description "set precedence for violating traffic"; + } + + leaf violateSetQosGrpTransmit { + + type ipqos_QoSGrpId; + description "set qos-group for violating traffic"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_Priority-group { + description "Traffic class priority"; + + leaf level { + + type ipqos_PriorityLevel; + description "Optional priority level"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_RandomDetect-group { + description "Set random detect"; + + // minimun thresold + leaf minThreshold { + + type ipqos_ThreshVal; + description "min threshold"; + } + + // minimun thresold unit + leaf minThresholdUnit { + + type ipqos_ThreshUnit; + description "min threshold"; + } + + // max threshold + leaf maxThreshold { + + type ipqos_ThreshVal; + description "max threshold"; + } + + // max thresold unit + leaf maxThresholdUnit { + + type ipqos_ThreshUnit; + description "max threshold"; + } + + // drop availability + leaf dropAvail { + + type ipqos_DropAvailRange; + description "drop availability range"; + } + + // threshold weight + leaf weight { + + type ipqos_Weight; + description "weight range"; + } + leaf capAverage { + type boolean; + description "cap average"; + } + + // mesh or burst optimization + leaf optimization { + + type ipqos_RandOptType; + description "random optimization type"; + } + leaf ecn { + type boolean; + description "ecn flag"; + } + } + + grouping ipqos_RandomDetectNonEcn-group { + description "Set random detect non ECN thresholds"; + + // minimun thresold + leaf minThresholdNonEcn { + + type ipqos_ThreshVal; + description "non ecn min threshold"; + } + + // minimun thresold unit + leaf minThresholdUnitNonEcn { + + type ipqos_ThreshUnit; + description "non ecn min threshold"; + } + + // max threshold + leaf maxThresholdNonEcn { + + type ipqos_ThreshVal; + description "non ecn max threshold"; + } + + // max thresold unit + leaf maxThresholdUnitNonEcn { + + type ipqos_ThreshUnit; + description "non ecn max threshold"; + } + + // drop availability + leaf dropAvailNonEcn { + + type ipqos_DropAvailRange; + description "drop availability range"; + } + } + + grouping ipqos_Dctcp-group { + description "Data Center TCP"; + + // ecn-threshold value + leaf ecnThreshold { + + type ipqos_ecnThresh; + description "Set ecn-threshold value"; + } + } + + grouping ipqos_BurstDetect-group { + description "Burst detect"; + + // rise-threshold + leaf riseThreshold { + + type ipqos_Threshold; + description "Rise Threshold value for Micro burst detection"; + } + + // rise-threshold unit + leaf riseThresUnit { + + type ipqos_ThresUnit; + description "Rise Threshold Unit for Micro burst detection"; + } + + // fall-threshold + leaf fallThreshold { + + type ipqos_Threshold; + description "Fall Threshold value for Micro burst detection"; + } + + // fall-threshold unit + leaf fallThresUnit { + + type ipqos_ThresUnit; + description "Fall Threshold Unit for Micro burst detection"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_BurstDetectState-group { + description "Burst detect"; + + // Enable + leaf val { + + type ipqos_BurstState; + description "Burst detect state enabled/disabled"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_Afd-group { + description "configure AFD parameters"; + + // queue-desired + leaf queueDesiredVal { + + type ipqos_QueueDesired; + description "Approximate Fair Discard value"; + } + + // queue-desired unit + leaf queueDesiredUnit { + + type ipqos_QueueDesiredUnit; + description "Units for Approximate Fair Discard value"; + } + leaf ecn { + type boolean; + description "Approximate Fair Discard ECN flag"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_CopyPMap-group { + description "Copy qos objects"; + + leaf lastFrom { + config "false"; + + type ipqos_PMapName; + description "Name of source policy-map to copy from"; + } + + leaf lastTo { + config "false"; + + type ipqos_PMapName; + description "Name of policy-map resulting from copying"; + } + } + + grouping ipqos_NwQoS-group { + description "Network QoS"; + + // service policy applied on target + container policy-items { + + uses ipqos_ServPol-group; + description "service policy instance"; + } + + // class-map + container c-items { + + uses ipqos_CMapEntity-group; + description "ClassMap"; + } + + // policy-map + container p-items { + + uses ipqos_PMapEntity-group; + description "PolicyMap"; + } + + container copyPMap-items { + + uses ipqos_CopyPMap-group; + description "Copy qos objects"; + } + } + + grouping ipqos_DefaultQoS-group { + description "Default type QoS"; + + // service policy applied on target + container policy-items { + + uses ipqos_ServPol-group; + description "service policy instance"; + } + + // class-map + container c-items { + + uses ipqos_CMapEntity-group; + description "ClassMap"; + } + + // policy-map + container p-items { + + uses ipqos_PMapEntity-group; + description "PolicyMap"; + } + + // Shared-Policer QoS + container sharedpolicer-items { + list SharedPolicer-list { + key "policerName"; + + uses ipqos_SharedPolicer-group; + description "Shared-Policer QoS list"; + } + description "Shared-Policer QoS"; + } + + container copyPMap-items { + + uses ipqos_CopyPMap-group; + description "Copy qos objects"; + } + } + + grouping ipqos_SharedPolicer-group { + description "Shared-Policer QoS"; + + leaf policerName { + + type ipqos_PolicerName; + description "Policer name for Aggregate/Shared-Policer QoS"; + } + + // police + container police-items { + + uses ipqos_Police-group; + description "Police traffic"; + } + } + + grouping ipqos_GlobalPriorFlowCtrl-group { + description "Global priority flow control"; + + // override interface + leaf overrideInterface { + + type ipqos_OverrideIntfMode; + description "Enable/Disable priority-flow-control override-interface mode off"; + } + } + + grouping ipqos_LogLevel-group { + description "configure logging level parameters"; + + leaf loggingLevel { + + type ipqos_LoggingLevel; + description "configure Logging Level value"; + } + } + + grouping l2_BD-group { + description "Bridge Domain"; + leaf fabEncap { + type string; + description "The Layer 2 bridge-domain Fabric encapsulation (VNID), input format is vlan-id "; + } + leaf accEncap { + type string; + description "The Layer 2 access encapsulation (VLAN or VNID), input format is vxlan-vnid"; + } + + // Enable cross connect on vlan + leaf xConnect { + + type l2_XConnect; + description "Enable Cross Connect on VLAN"; + } + leaf longName { + type boolean; + default "false"; + description "Enable or disable long name of 128 characters for VLAN"; + } + + // This represents the parameter used by the node + // (i.e. Leaf) for enabling forwarding modes (route + // or bridge or both). Default is enable both + leaf fwdMode { + + type l2_FwdMode; + description "The Layer 2 bridge-domain parameter mode used by the node for enabling forwarding modes"; + } + + // This represents the parameter used by the node + // (i.e. Leaf) for enabling classical bridging or + // bridging with IP. Default is bridge with IP + leaf bridgeMode { + + type l2_BridgeMode; + description "Bridging Mode"; + } + + // Forwarding controls + leaf fwdCtrl { + + type l2_FwdCtrl; + description "The Layer 2 bridge-domain forwarding controls"; + } + leaf bdDefDn { + config "false"; + type string; + description "The bridge domain name"; + } + + // Controller Id + leaf controllerId { + config "false"; + + type aggregate_ControllerIdBitmap; + description "Controller ID for Vlan"; + } + + // BdState + leaf BdState { + + type l2_DomAdminSt; + description "Bridge Domain State can be active or suspended"; + } + leaf BdOperName { + config "false"; + type string; + description "OperName"; + } + + // Vlan mac packet-classify + leaf macPacketClassify { + + type l2_PktClassify; + description "Vlan mac packet classify"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Vlan name that can be configured using name cli"; + } + + // domain id + leaf id { + + type l2_DomId; + description "Domain ID"; + } + + // Internal domain id + leaf hwId { + config "false"; + + type l2_DomId; + description "Hardware Resource ID"; + } + + // Vlan mode + leaf mode { + + type l2_DomMode; + description "Mode"; + } + + // admin state + leaf adminSt { + + type l2_DomAdminSt; + description "Admin State"; + } + + // oper state + leaf operSt { + config "false"; + + type l2_DomOperSt; + description "Operational State"; + } + leaf createTs { + config "false"; + type union { + type string; + type uint64; + } + description "Creation Timestamp"; + } + + // Controls + leaf ctrl { + + type l2_DomCtrl; + description "Controls"; + } + + // VLAN Membership Interface + container member-items { + list VlanMemberIf-list { + config "false"; + key "id"; + + uses l2_VlanMemberIf-group; + description "VLAN membership interface list"; + } + description "VLAN membership interface"; + } + + // Multicast group entity, this refers to the multicast + // group entity that each tenant's bridge domain uses to + // flood its traffic over the fabric + container fmgrp-items { + list Grp-list { + key "addr"; + + uses fmcast_Grp-group; + description "Group list"; + } + description "Group"; + } + + // Abstraction of epm database + container db-items { + list Db-list { + config "false"; + key "type"; + + uses epm_Db-group; + description "Database list"; + } + description "Database"; + } + + // 802.1q Vlan + container vlan-items { + list CktEp-list { + key "encap"; + + uses vlan_CktEp-group; + description "Vlan list"; + } + description "Vlan"; + } + + // Vxlan circuit + container vxlan-items { + list CktEp-list { + config "false"; + key "encap"; + + uses vxlan_CktEp-group; + description "Vxlan list"; + } + description "Vxlan"; + } + + container evi-items { + + uses nvo_Evi-group; + description "Configuration of EVI under VLAN"; + } + + container rtfvEPgDefToL2Dom-items { + + list RtFvEPgDefToL2Dom-list { + config "false"; + key "tDn"; + + uses fv_RtFvEPgDefToL2Dom_target-group; + description "EPgDef to L2 Domain Attachment list"; + } + description "EPgDef to L2 Domain Attachment"; + } + + container rsextBD-items { + + list RsExtBD-list { + key "tDn"; + + uses l2_RsExtBD_source-group; + description "External BD Attachment list"; + } + description "External BD Attachment"; + } + + container rsbdVsanMap-items { + + list RsBdVsanMap-list { + key "tDn"; + + uses l2_RsBdVsanMap_source-group; + } + } + + container rspathDomAtt-items { + + list RsPathDomAtt-list { + config "false"; + key "tDn"; + + uses l2_RsPathDomAtt_source-group; + description "Port Domain Attachment list"; + } + description "Port Domain Attachment"; + } + + container rtfvDomIfConn-items { + + list RtFvDomIfConn-list { + config "false"; + key "tDn"; + + uses fv_RtFvDomIfConn_target-group; + description "Domain Interface Attachment list"; + } + description "Domain Interface Attachment"; + } + + container dbgVlanStats-items { + + uses l2_VlanStats-group; + description "Vlan counters"; + } + } + + grouping l2_VlanMemberIf-group { + description "VLAN membership interface"; + + leaf id { + config "false"; + + type nw_IfId; + description "Interface Identifier"; + } + + leaf vlan { + config "false"; + + type l2_DomId; + description "VLAN"; + } + } + + grouping fmcast_Grp-group { + description "Group"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Multicast group address + leaf addr { + + type mcast_GrpIp; + description "Multicast Group IP Address"; + } + } + + grouping epm_Db-group { + description "Database"; + + // Type of the database + leaf type { + config "false"; + + type epm_DbT; + description "Type"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ip Ep record + container ip-items { + list IpEp-list { + config "false"; + key "addr"; + + uses epm_IpEp-group; + description "IP Endpoint list"; + } + description "IP Endpoint"; + } + + // Mac Ep record + container mac-items { + list MacEp-list { + config "false"; + key "addr"; + + uses epm_MacEp-group; + description "MAC Endpoint list"; + } + description "MAC Endpoint"; + } + } + + grouping epm_IpEp-group { + description "IP Endpoint"; + leaf addr { + config "false"; + type address_Ip; + description "Address"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Identifier of the logical interface + leaf ifId { + config "false"; + + type nw_IfId; + description "Path"; + } + + // Ep flags + leaf flags { + config "false"; + + type epm_EpFlags; + description "Endpoint Properties and State"; + } + + container rtIpEpRslttoIpEpAtt-items { + + uses eptrk_RtIpEpRslttoIpEpAtt_target-group; + } + + container rtMacEpRslttoIpEpAtt-items { + + uses eptrk_RtMacEpRslttoIpEpAtt_target-group; + } + } + + grouping epm_MacEp-group { + description "MAC Endpoint"; + leaf addr { + config "false"; + type address_Mac; + description "Address"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Identifier of the logical interface + leaf ifId { + config "false"; + + type nw_IfId; + description "Path"; + } + + // Ep flags + leaf flags { + config "false"; + + type epm_EpFlags; + description "Endpoint Properties and State"; + } + leaf createTs { + config "false"; + type union { + type string; + type uint64; + } + description "Endpoint Create TimeStamp"; + } + + container rsmacEpToIpEpAtt-items { + + list RsMacEpToIpEpAtt-list { + config "false"; + key "tDn"; + + uses epm_RsMacEpToIpEpAtt_source-group; + } + } + + container rtEpRslttoMacEpAtt-items { + + uses eptrk_RtEpRslttoMacEpAtt_target-group; + } + } + + grouping vlan_CktEp-group { + description "Vlan"; + leaf fabEncap { + type string; + description "The encapsulation used in the fabric to implement flood control"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // domain id + leaf id { + + type l2_DomId; + description "Domain ID"; + } + + // Internal domain id + leaf hwId { + config "false"; + + type l2_DomId; + description "Hardware Resource ID"; + } + + // Vlan mode + leaf mode { + + type l2_DomMode; + description "Mode"; + } + + // admin state + leaf adminSt { + + type l2_DomAdminSt; + description "Admin State"; + } + + // oper state + leaf operSt { + config "false"; + + type l2_DomOperSt; + description "Operational State"; + } + leaf createTs { + config "false"; + type union { + type string; + type uint64; + } + description "Creation Timestamp"; + } + + // Controls + leaf ctrl { + + type l2_DomCtrl; + description "Controls"; + } + leaf encap { + type string; + description "Encap identifying the epg"; + } + + // Enforcement preference + leaf enfPref { + + type l2_EnfPref; + description "Switching Preference"; + } + + // It represents the classId for the traffic + // terminating on this circuit + leaf pcTag { + + type actrl_PcTag; + description "It represents the classId for the traffic terminating on this circuit"; + } + + // It represents the default qos group for the + // traffic on this circuit + leaf qosPrio { + + type qos_TenantPrio; + description "It represents the default qos group for the traffic on this circuit"; + } + leaf epgDn { + type string; + description "EPG DN"; + } + + // Static Mac end point + container mac-items { + list MacEp-list { + config "false"; + key "mac"; + + uses l2_MacEp-group; + description "Desired MAC Endpoint list"; + } + description "Desired MAC Endpoint"; + } + + // Abstraction of epm database + container db-items { + list Db-list { + config "false"; + key "type"; + + uses epm_Db-group; + description "Database list"; + } + description "Database"; + } + + container rtfvEPgDefToL2Dom-items { + + list RtFvEPgDefToL2Dom-list { + config "false"; + key "tDn"; + + uses fv_RtFvEPgDefToL2Dom_target-group; + description "EPgDef to L2 Domain Attachment list"; + } + description "EPgDef to L2 Domain Attachment"; + } + + container rtfvDomIfConn-items { + + list RtFvDomIfConn-list { + config "false"; + key "tDn"; + + uses fv_RtFvDomIfConn_target-group; + description "Domain Interface Attachment list"; + } + description "Domain Interface Attachment"; + } + + container rsvlanEppAtt-items { + + uses vlan_RsVlanEppAtt_source-group; + description "Epp Attachment"; + } + + container rspathDomAtt-items { + + list RsPathDomAtt-list { + config "false"; + key "tDn"; + + uses l2_RsPathDomAtt_source-group; + description "Port Domain Attachment list"; + } + description "Port Domain Attachment"; + } + + container rsdscpRuleAtt-items { + + list RsDscpRuleAtt-list { + key "tDn"; + + uses l2_RsDscpRuleAtt_source-group; + description "DSCP Rule Attachment list"; + } + description "DSCP Rule Attachment"; + } + + container rsdot1pRuleAtt-items { + + list RsDot1pRuleAtt-list { + key "tDn"; + + uses l2_RsDot1pRuleAtt_source-group; + description "Dot1p Rule Attachment list"; + } + description "Dot1p Rule Attachment"; + } + } + + grouping l2_MacEp-group { + description "Desired MAC Endpoint"; + leaf mac { + config "false"; + type address_Mac; + description "MAC"; + } + + // The interface on which the endpoint is reachable + leaf if { + config "false"; + + type nw_IfId; + description "Interface"; + } + + // Operational state + leaf operSt { + config "false"; + + type epm_EpOperSt; + description "Operational State"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + container rtfvEpDefRefToL2MacEp-items { + + list RtFvEpDefRefToL2MacEp-list { + config "false"; + key "tDn"; + + uses fv_RtFvEpDefRefToL2MacEp_target-group; + } + } + } + + grouping vxlan_CktEp-group { + description "Vxlan"; + + // Multicast group address (GIPO'), Outer multicast + // encapsulation ip address for this layer2 domain + leaf mcastEncap { + config "false"; + + type mcast_GrpIp; + description "Multicast Encapsulation"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // domain id + leaf id { + config "false"; + + type l2_DomId; + description "Domain ID"; + } + + // Internal domain id + leaf hwId { + config "false"; + + type l2_DomId; + description "Hardware Resource ID"; + } + + // Vlan mode + leaf mode { + config "false"; + + type l2_DomMode; + description "Mode"; + } + + // admin state + leaf adminSt { + config "false"; + + type l2_DomAdminSt; + description "Admin State"; + } + + // oper state + leaf operSt { + config "false"; + + type l2_DomOperSt; + description "Operational State"; + } + leaf createTs { + config "false"; + type union { + type string; + type uint64; + } + description "Creation Timestamp"; + } + + // Controls + leaf ctrl { + config "false"; + + type l2_DomCtrl; + description "Controls"; + } + leaf encap { + config "false"; + type string; + description "Encap identifying the epg"; + } + + // Enforcement preference + leaf enfPref { + config "false"; + + type l2_EnfPref; + description "Switching Preference"; + } + + // It represents the classId for the traffic + // terminating on this circuit + leaf pcTag { + config "false"; + + type actrl_PcTag; + description "It represents the classId for the traffic terminating on this circuit"; + } + + // It represents the default qos group for the + // traffic on this circuit + leaf qosPrio { + config "false"; + + type qos_TenantPrio; + description "It represents the default qos group for the traffic on this circuit"; + } + leaf epgDn { + config "false"; + type string; + description "EPG DN"; + } + + // Abstraction of epm database + container db-items { + list Db-list { + config "false"; + key "type"; + + uses epm_Db-group; + description "Database list"; + } + description "Database"; + } + + container rtfvEPgDefToL2Dom-items { + + list RtFvEPgDefToL2Dom-list { + config "false"; + key "tDn"; + + uses fv_RtFvEPgDefToL2Dom_target-group; + description "EPgDef to L2 Domain Attachment list"; + } + description "EPgDef to L2 Domain Attachment"; + } + + container rtfvDomIfConn-items { + + list RtFvDomIfConn-list { + config "false"; + key "tDn"; + + uses fv_RtFvDomIfConn_target-group; + description "Domain Interface Attachment list"; + } + description "Domain Interface Attachment"; + } + + container rsvxlanEppAtt-items { + + uses vxlan_RsVxlanEppAtt_source-group; + description "Epp Attachement"; + } + + container rspathDomAtt-items { + + list RsPathDomAtt-list { + config "false"; + key "tDn"; + + uses l2_RsPathDomAtt_source-group; + description "Port Domain Attachment list"; + } + description "Port Domain Attachment"; + } + + container rsdscpRuleAtt-items { + + list RsDscpRuleAtt-list { + key "tDn"; + + uses l2_RsDscpRuleAtt_source-group; + description "DSCP Rule Attachment list"; + } + description "DSCP Rule Attachment"; + } + + container rsdot1pRuleAtt-items { + + list RsDot1pRuleAtt-list { + key "tDn"; + + uses l2_RsDot1pRuleAtt_source-group; + description "Dot1p Rule Attachment list"; + } + description "Dot1p Rule Attachment"; + } + } + + grouping nvo_Evi-group { + description "Configuration of EVI under VLAN"; + leaf auto { + type boolean; + description "Enable/disable automatic assignment of EVI value"; + } + leaf operId { + config "false"; + type uint32; + description "EVI Identifier for VLAN."; + } + leaf operVlanId { + config "false"; + type uint32; + description "Indicates identifier of VLAN under which EVI is configured."; + } + leaf operLabel { + config "false"; + type uint32; + description "Indicates local label assigend to EVI."; + } + + leaf operSt { + config "false"; + + type nvo_VniStateT; + description "Indicates operational state of EVI"; + } + } + + grouping resmgr_ResVlan-group { + description "Resmgr vlan reservation"; + leaf sysVlan { + type uint16 { + range "0..4032"; + } + default "3968"; + description "System vlan reservation"; + } + leaf blockVal64 { + type boolean; + default "false"; + description "System vlan block64 reservation"; + } + leaf currentmin { + config "false"; + type uint16; + description "Current min system vlan configured"; + } + leaf currentmax { + config "false"; + type uint16; + description "Current max system vlan configured"; + } + } + + grouping icam_Entity-group { + description "ICAM Entity"; + + // MO1 : ICAM inst + container inst-items { + + uses icam_Inst-group; + description "ICAM Instance"; + } + + // Resource Utilization and Monitoring object ! sys/icam/rumon ! + container rumon-items { + + uses icam_ResUtilMon-group; + description "iCAM resource utilization monitoring object"; + } + } + + grouping icam_Inst-group { + description "ICAM Instance"; + + // 1.1 ICAM interval + leaf interval { + + type icam_Interval; + description "iCAM Monitor Interval"; + } + + leaf numinterval { + + type icam_NumInterval; + description "Num of Intervals in History"; + } + + // MO2 :ICAM Scale MO + container scale-items { + + uses icam_Scale-group; + description "ICAM Scale Monitoring Instance"; + } + + // MO7 :.Entries + container entclass-items { + list Entries-list { + key "class module instance"; + + uses icam_Entries-group; + description "ICAM Entries to monitor list"; + } + description "ICAM Entries to monitor"; + } + + // MO8 :.Resources + container resclass-items { + list Resource-list { + key "class module instance"; + + uses icam_Resource-group; + description "ICAM Resources to monitor list"; + } + description "ICAM Resources to monitor"; + } + + // MO9 :ICAM System MO + container sysmon-items { + + uses icam_System-group; + description "ICAM System Monitoring Instance"; + } + + // Ephemeral data + container mod-items { + + // Ephemeral data + list MonACLEntries-list { + config "false"; + key "module inst feature value_mask"; + + uses icam_MonACLEntries-group; + description "iCAM ACL Entries Information list"; + } + description "iCAM ACL Entries Information"; + } + + // Ephemeral data + container aclresmod-items { + + // Ephemeral data + list AclResEntries-list { + config "false"; + key "module inst tcam_no bank_no"; + + uses icam_AclResEntries-group; + description "iCAM ACL TCAM Resource Utilization list"; + } + description "iCAM ACL TCAM Resource Utilization"; + } + } + + grouping icam_Scale-group { + description "ICAM Scale Monitoring Instance"; + leaf info { + type uint16 { + range "1..100"; + } + default "80"; + description "Info threshold percent"; + } + leaf warning { + type uint16 { + range "1..100"; + } + default "90"; + description "Warning threshold percent"; + } + leaf critical { + type uint16 { + range "1..100"; + } + default "100"; + description "Critical threshold percent"; + } + leaf scalecfg { + type boolean; + description "Scale feature config [yes/no]"; + } + leaf scaleoper { + config "false"; + type boolean; + description "fake data for oper icam fix"; + } + + // MO3 :ICAM L2 Scale MO + container l2scale-items { + + uses icam_L2Scale-group; + description "ICAM Layer 2 Scale Monitoring"; + } + + // MO4 :ICAM Unicast Scale MO + container unicastscale-items { + + uses icam_UnicastScale-group; + description "ICAM Unicast Scale Monitoring"; + } + + // MO5 :ICAM Multicast Scale MO + container multicastscale-items { + + uses icam_MulticastScale-group; + description "ICAM Multicast Scale Monitoring"; + } + + // MO6 :ICAM VxLAN Scale MO + container vxlanscale-items { + + uses icam_VxlanScale-group; + description "ICAM VxLAN Scale Monitoring"; + } + } + + grouping icam_L2Scale-group { + description "ICAM Layer 2 Scale Monitoring"; + leaf mstInstLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale L2 switching STP MST-Instance Limit"; + } + leaf mstVportLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale L2 switching STP MST-Vport Limit"; + } + leaf rpvstVportLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale L2 switching STP RPVST-Vport Limit"; + } + leaf rpvstVlanLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale L2 switching STP RPVST-Vlans Limit"; + } + leaf isoPortvlanLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale L2 switching STP isolated Port Vlans Limit"; + } + leaf infraMacLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale L2 switching Infra MAC-address Limit"; + } + leaf vlancountLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale L2 switching VLANs VLAN-count Limit"; + } + } + + grouping icam_UnicastScale-group { + description "ICAM Unicast Scale Monitoring"; + leaf arpcountLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing ARP ARP-count Limit"; + } + leaf bfdSessionLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing BFD Session Limit"; + } + leaf bgpNeighLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing BGP Neighbour Limit"; + } + leaf eigrpNeighLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing EIGRP Neighbour Limit"; + } + leaf eigrpRouteLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing EIGRP Route Limit"; + } + leaf hsrpGrpLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing HSRP group Limit"; + } + leaf ipv6NdLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing IPv6 ND-count Limit"; + } + leaf isisAdjLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing ISIS Adj Limit"; + } + leaf isisBdfSessLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing ISIS BFD Session Limit"; + } + leaf isisRouteLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing ISIS Route Limit"; + } + leaf ospfAreaLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing OSPF Area Limit"; + } + leaf ospfLsaLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing OSPF LSA Limit"; + } + leaf ospfNeighLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing OSPF Neighbour Limit"; + } + leaf pbrAcev4Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing PBR IPv4 ACEs Limit"; + } + leaf pbrAcev6Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing PBR IPv6 ACEs Limit"; + } + leaf pbrAcev4v6Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing PBR IPv4v6 ACEs Limit"; + } + leaf pbrIntfLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing PBR Interface Limit"; + } + leaf pbrNhPerPcLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing PBR Next Hope Per Policy Limit"; + } + leaf pbrSeqPerPcLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing PBR Sequences Per Policy Limit"; + } + leaf routingHostV4Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing Host Route V4 Limit"; + } + leaf routingHostV6Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing Host Route V6 Limit"; + } + leaf routingLpmV4Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing LPM Route V4 Limit"; + } + leaf routingLpmV6Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing LPM Route V6 Limit"; + } + leaf vrfCountLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing VRF count Limit"; + } + leaf vrrpGrpIntfLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing VRRP Grp per interface Limit"; + } + leaf vrrp3GrpIntfLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing VRRP3 Grp per interface Limit"; + } + leaf vrrp3GrpPathLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing VRRPv3 groups and pathways combined Limit"; + } + leaf vrrp3GrpTimerLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing VRRPv3 groups with default timers Limit"; + } + leaf vrrp3RelTimerLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing VRRPv3 groups with relaxed timers Limit"; + } + leaf vrrp3PathDftTimerLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Unicast Routing PAthways with one VRRPv3 groups with default timers Limit"; + } + } + + grouping icam_MulticastScale-group { + description "ICAM Multicast Scale Monitoring"; + leaf multicastIgmpGrpLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Multicast IGMP Group Limit"; + } + leaf multicastPimNeighLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Multicast PIM Neighbour Limit"; + } + leaf multicastRoutingFwdIntfLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale Multicast Routing and Forwarding Outgoing interface Limit"; + } + leaf multicastRoutingFwdRoutev4Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale Multicast Routing and Forwarding IPv4 Route Limit"; + } + leaf multicastRoutingFwdRoutev6Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale Multicast Routing and Forwarding IPv6 Route Limit"; + } + leaf multicastRoutingFwdRouteSGv4Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale Multicast Routing and Forwarding IPv4 SG Route Limit"; + } + leaf multicastRoutingFwdRouteSGv6Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale Multicast Routing and Forwarding IPv6 SG Route Limit"; + } + leaf multicastRoutingFwdRouteStarGv4Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale Multicast Routing and Forwarding IPv4 StarG Route Limit"; + } + leaf multicastRoutingFwdRouteStarGv6Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale Multicast Routing and Forwarding IPv6 StarG Route Limit"; + } + } + + grouping icam_VxlanScale-group { + description "ICAM VxLAN Scale Monitoring"; + leaf vxlanBgpHostv4Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP IPv4 host route Limit"; + } + leaf vxlanBgpHostv6Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP IPv6 host route Limit"; + } + leaf vxlanBgpIgmpgrpLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP IGMP group Limit"; + } + leaf vxlanBgpMacLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP Mac Address Limit"; + } + leaf vxlanBgpOvrlLpmv4Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP IPv4 LPM route Limit"; + } + leaf vxlanBgpOvrlLpmv6Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP IPv6 LPM route Limit"; + } + leaf vxlanBgpSviLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP SVI with Anycast Gateway Limit"; + } + leaf vxlanBgpUnderlMcastLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP Underlay multicast group Limit"; + } + leaf vxlanBgpVlanVpLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP VLAN logical port VP count Limit"; + } + leaf vxlanBgpVlanFexLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP VLAN per FEX port Limit"; + } + leaf vxlanBgpVniLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP VNI Limit"; + } + leaf vxlanBgpVrfLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP VRF Limit"; + } + leaf vxlanBgpVtepLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP VTEP Limit"; + } + leaf vxlanBgpirHostv4Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP-IR IPv4 host route Limit"; + } + leaf vxlanBgpirHostv6Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP-IR IPv6 host route Limit"; + } + leaf vxlanBgpirIgmpgrpLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP-IR IGMP group Limit"; + } + leaf vxlanBgpirMacLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP-IR Mac Address Limit"; + } + leaf vxlanBgpirOvrlLpmv4Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP-IR IPv4 LPM route Limit"; + } + leaf vxlanBgpirOvrlLpmv6Limit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP-IR IPv6 LPM route Limit"; + } + leaf vxlanBgpirSviLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP-IR SVI with Anycast Gateway Limit"; + } + leaf vxlanBgpirVlanVpLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP-IR VLAN logical port VP count Limit"; + } + leaf vxlanBgpirVlanFexLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP-IR VLAN per FEX port Limit"; + } + leaf vxlanBgpirVniLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP-IR VNI Limit"; + } + leaf vxlanBgpirVrfLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP-IR VRF Limit"; + } + leaf vxlanBgpirVtepLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN BGP-IR VTEP Limit"; + } + leaf vxlanFlIgmpgrpLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn IGMP group Limit"; + } + leaf vxlanFlIrMacLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn IR Mac Address Limit"; + } + leaf vxlanFlIrPeerLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn IR Peer Limit"; + } + leaf vxlanFlIrVniLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn IR L2 Vni Limit"; + } + leaf vxlanFlTotalMacLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn Total MAC Limit"; + } + leaf vxlanFlStaticMacLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn Static MAC Limit"; + } + leaf vxlanFlUnerlMcastLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn Underlay multicast group Limit"; + } + leaf vxlanFlVlanVpLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn Vlan Logical VP Limit"; + } + leaf vxlanFlVlanSwMapLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn VLAN translations in a switch Limit"; + } + leaf vxlanFlVlanIntfMapLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn VLAN translations under an interface Limit"; + } + leaf vxlanFlVlanFexPortLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn Vlan Per Fex Port Limit"; + } + leaf vxlanFlVniLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn VNI Limit"; + } + leaf vxlanFlVniVpcLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn VNIs for vPC-centralized gateway Limit"; + } + leaf vxlanFlVtepLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN Flood and learn remote VTEP Limit"; + } + leaf vxlanIgmpUnderlMcastLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN IGMP Underlay multicast group Limit"; + } + leaf vxlanIgmpVlanLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN IGMP VLAN Limit"; + } + leaf vxlanIgmpVtepLimit { + type uint32 { + range "0..4294967295"; + } + description "Scale VxLAN IGMP VTEP Limit"; + } + } + + grouping icam_Entries-group { + description "ICAM Entries to monitor"; + + leaf class { + + type icam_Entclass; + description "iCAM Entries Class Type"; + } + leaf module { + type uint32; + description "Module Number for iCAM Entries"; + } + leaf instance { + type uint32; + description "Forwarding Instance Number"; + } + } + + grouping icam_Resource-group { + description "ICAM Resources to monitor"; + + leaf class { + + type icam_Resclass; + description "iCAM Resources Class Type"; + } + leaf module { + type uint32; + description "Module Number for iCAM Resource"; + } + leaf instance { + type uint32; + description "Forwarding Instance Number"; + } + } + + grouping icam_System-group { + description "ICAM System Monitoring Instance"; + leaf info { + type uint16 { + range "1..100"; + } + default "80"; + description "Info threshold percent"; + } + leaf warning { + type uint16 { + range "1..100"; + } + default "90"; + description "Warning threshold percent"; + } + leaf critical { + type uint16 { + range "1..100"; + } + default "100"; + description "Critical threshold percent"; + } + leaf systemcfg { + type boolean; + description "System feature config [yes/no]"; + } + } + + grouping icam_MonACLEntries-group { + description "iCAM ACL Entries Information"; + + // Ephemeral data + leaf feature { + config "false"; + type string; + description "ACL Feature Name"; + } + + // Ephemeral data + leaf class_type { + config "false"; + type string; + description "Packet Type"; + } + + // Ephemeral data + leaf value_mask { + config "false"; + type string; + description "Source and Destination IP"; + } + + // Ephemeral data + leaf action { + config "false"; + type string; + description "ACL Action"; + } + + // Ephemeral data + leaf ifindex { + config "false"; + + type icam_Index; + description "Interface ifindex"; + } + + // Ephemeral data + leaf cum_stats { + config "false"; + type uint64; + description "Cumulative Traffic Stats"; + } + + // Ephemeral data + leaf module { + config "false"; + type uint32; + description "Module No."; + } + + // Ephemeral data + leaf inst { + config "false"; + type uint32; + description "Instance/FE No."; + } + } + + grouping icam_AclResEntries-group { + description "iCAM ACL TCAM Resource Utilization"; + + // Ephemeral data + leaf tcam_no { + config "false"; + type uint32; + description "TCAM No."; + } + + // Ephemeral data + leaf bank_no { + config "false"; + type uint32; + description "Bank No."; + } + + // Ephemeral data + leaf used { + config "false"; + type uint32; + description "Number of Used Entries"; + } + + // Ephemeral data + leaf free { + config "false"; + type uint32; + description "Number of Free Entries"; + } + + // Ephemeral data + leaf percent_util { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "Percentage Utilization"; + } + + // Ephemeral data + leaf timestamp { + config "false"; + type uint64; + description "Timestamp"; + } + + // Ephemeral data + leaf module { + config "false"; + type uint32; + description "Module No."; + } + + // Ephemeral data + leaf inst { + config "false"; + type uint32; + description "Instance No."; + } + } + + grouping icam_ResUtilMon-group { + description "iCAM resource utilization monitoring object"; + + // CPU Utilization and Monitoring object ! sys/icam/rumon/cpu ! + container cpu-items { + + uses icam_CpuUtilMon-group; + description "iCAM CPU utilization and monitoring object for each running process in the system"; + } + + // Memory Utilization and Monitoring object ! sys/icam/rumon/memory ! + container mem-items { + + uses icam_MemUtilMon-group; + description "iCAM Memory utilization and monitoring object for each running process in the system"; + } + } + + grouping icam_CpuUtilMon-group { + description "iCAM CPU utilization and monitoring object for each running process in the system"; + + // Sample Interval object that holds the CPU stats of all the processes monitored ! sys/icam/rumon/cpu/sample-[id] ! Interval identifier can be 1min/5min/1hr ! + container sample-items { + list CpuSampleInterval-list { + config "false"; + key "id"; + + uses icam_CpuSampleInterval-group; + description "The sample interval during which the CPU stats are collected and min/max/avg values are deduced list"; + } + description "The sample interval during which the CPU stats are collected and min/max/avg values are deduced"; + } + } + + grouping icam_CpuSampleInterval-group { + description "The sample interval during which the CPU stats are collected and min/max/avg values are deduced"; + + leaf id { + config "false"; + + type icam_sampleIntervalId; + description "identifies the time interval in seconds, during which the samples are analyzed"; + } + + // Process Object that inherits the utilization stats object ! sys/icam/rumon/cpu/sample-[id]/process-[id]/avg ! + container process-items { + list CpuProcess-list { + config "false"; + key "id"; + + uses icam_CpuProcess-group; + description "The object that holds the CPU utilization stats of a process list"; + } + description "The object that holds the CPU utilization stats of a process"; + } + } + + grouping icam_CpuProcess-group { + description "The object that holds the CPU utilization stats of a process"; + + leaf name { + config "false"; + + type icam_processName; + description "The name of the process"; + } + + leaf id { + config "false"; + + type icam_processId; + description "The pid of the process"; + } + leaf usrMin { + config "false"; + type decimal64 { + fraction-digits 6; + } + default "0"; + description "Minimum Utilization of User CPU"; + } + leaf usrMax { + config "false"; + type decimal64 { + fraction-digits 6; + } + default "0"; + description "Maximum Utilization of User CPU"; + } + leaf usrAvg { + config "false"; + type decimal64 { + fraction-digits 6; + } + default "0"; + description "Average Utilization of User CPU"; + } + leaf kerMin { + config "false"; + type decimal64 { + fraction-digits 6; + } + default "0"; + description "Minimum Utilization of Kernel CPU"; + } + leaf kerMax { + config "false"; + type decimal64 { + fraction-digits 6; + } + default "0"; + description "Maximum Utilization of Kernel CPU"; + } + leaf kerAvg { + config "false"; + type decimal64 { + fraction-digits 6; + } + default "0"; + description "Average Utilization of Kernel CPU"; + } + } + + grouping icam_MemUtilMon-group { + description "iCAM Memory utilization and monitoring object for each running process in the system"; + + // Sample Interval object that holds the data of all the processes monitored ! sys/icam/rumon/mem/sample-[id] ! Interval identifier can be 1min/5min/1hr ! + container sample-items { + list MemSampleInterval-list { + config "false"; + key "id"; + + uses icam_MemSampleInterval-group; + description "The sample interval during which the memory stats are collected and min/max/avg values are deduced list"; + } + description "The sample interval during which the memory stats are collected and min/max/avg values are deduced"; + } + } + + grouping icam_MemSampleInterval-group { + description "The sample interval during which the memory stats are collected and min/max/avg values are deduced"; + + leaf id { + config "false"; + + type icam_sampleIntervalId; + description "identifies the time interval in seconds, during which the samples are analyzed"; + } + + // Process Object that inherits the utilization stats object ! sys/icam/rumon/mem/sample-[id]/process-[id]/avg ! + container process-items { + list MemProcess-list { + config "false"; + key "id"; + + uses icam_MemProcess-group; + description "The MO that holds the physical memory (VmRSS) utilization stats of a process, in KB list"; + } + description "The MO that holds the physical memory (VmRSS) utilization stats of a process, in KB"; + } + } + + grouping icam_MemProcess-group { + description "The MO that holds the physical memory (VmRSS) utilization stats of a process, in KB"; + + leaf name { + config "false"; + + type icam_processName; + description "The name of the process"; + } + + leaf id { + config "false"; + + type icam_processId; + description "The pid of the process"; + } + leaf min { + config "false"; + type int64; + description "Minimum Utilization of a resource"; + } + leaf max { + config "false"; + type int64; + description "Maximum Utilization of a resource"; + } + leaf avg { + config "false"; + type int64; + description "Average Utilization of a resource"; + } + } + + grouping monitor_Entity-group { + description "Entity"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Abstraction of coop database (repository) + container db-items { + list Db-list { + config "false"; + key "type"; + + uses monitor_Db-group; + description "Database list"; + } + description "Database"; + } + + // Monitor session definition. there could be only few sessions + // active at a given time (max 4) + container session-items { + list Session-list { + config "false"; + key "name"; + + uses monitor_Session-group; + description "Span Session list"; + } + description "Span Session"; + } + } + + grouping monitor_Db-group { + description "Database"; + + // Type of the database + leaf type { + config "false"; + + type monitor_DbT; + description "Type"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ep records + container epr-items { + list EpRec-list { + config "false"; + key "vnid ip"; + + uses monitor_EpRec-group; + description "Endpoint Record list"; + } + description "Endpoint Record"; + } + } + + grouping monitor_EpRec-group { + description "Endpoint Record"; + leaf vnid { + config "false"; + type string; + description "VNID"; + } + leaf ip { + config "false"; + type address_Ip; + description "IP"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping monitor_Session-group { + description "Span Session"; + + // Identifier of the session + leaf id { + config "false"; + + type monitor_SessionId; + description "ID"; + } + + // Administrative state of the session + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state of the session + leaf operSt { + config "false"; + + type monitor_OperSt; + description "Operational State"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Monitor sources. The sources which we want to monitor + container src-items { + list Source-list { + config "false"; + key "type mode dir from to port"; + + uses monitor_Source-group; + description "Source list"; + } + description "Source"; + } + + // ERSpan destination information + container erdst-items { + + uses monitor_ERDest-group; + description "ERSPAN Destination"; + } + + // Local span destination information + container ldst-items { + + uses monitor_LocalDest-group; + description "Local Destination"; + } + } + + grouping monitor_Source-group { + description "Source"; + + // Source id + leaf id { + config "false"; + + type monitor_SrcId; + description "ID"; + } + + // Type of the source + leaf type { + config "false"; + + type monitor_SrcT; + description "Type"; + } + + // The direction of the packets to monitor + leaf dir { + config "false"; + + type monitor_Direction; + description "Direction"; + } + leaf from { + config "false"; + type string; + description "From"; + } + leaf to { + config "false"; + type string; + description "To"; + } + + // Port to monitor + leaf port { + config "false"; + + type nw_IfId; + description "Port"; + } + + // Mode of the source (access side or fabric side) + leaf mode { + config "false"; + + type monitor_Mode; + description "Mode"; + } + + // Operational state of the session + leaf operSt { + config "false"; + + type monitor_OperSt; + description "Operational State"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping monitor_ERDest-group { + description "ERSPAN Destination"; + + // Encapsulation type, the encapsulation of the monitored + // packet sent to the destination + leaf type { + config "false"; + + type monitor_DestEncapT; + description "Type"; + } + leaf srcIp { + config "false"; + type address_Ip; + description "Source IP"; + } + leaf dstIp { + config "false"; + type address_Ip; + description "Destination IP"; + } + + // Erspan version + leaf ver { + config "false"; + + type monitor_ErSpanVer; + description "Version"; + } + + // Flow id of the erspan packet + leaf flowId { + config "false"; + + type monitor_FlowId; + description "Flow ID"; + } + + // Ttl used in the erspan packet + leaf ttl { + config "false"; + + type l3_Ttl; + description "TTL"; + } + + // the vrf on which the erspan packet is sent + leaf vrfName { + config "false"; + + type l3_VrfName; + description "VRF"; + } + leaf vnid { + config "false"; + type string; + description "VNID"; + } + + // dscp value to be used when sending the monitored + // packets using ERSpan + leaf dscp { + config "false"; + + type qosp_Dscp; + description "Dscp"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // mtu truncation size for the packets + leaf mtu { + config "false"; + + type monitor_Mtu; + description "MTU"; + } + + // Operational state of the session + leaf operSt { + config "false"; + + type monitor_OperSt; + description "Operational State"; + } + } + + grouping monitor_LocalDest-group { + description "Local Destination"; + + // Port + leaf port { + config "false"; + + type nw_IfId; + description "Port"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // mtu truncation size for the packets + leaf mtu { + config "false"; + + type monitor_Mtu; + description "MTU"; + } + + // Operational state of the session + leaf operSt { + config "false"; + + type monitor_OperSt; + description "Operational State"; + } + } + + grouping netconf_Inst-group { + description "Instance node for managing netconf properties"; + leaf idleTimeout { + type uint32 { + range "0..1440"; + } + default "5"; + description "Timeout in minutes after which idle client sessions are disconnected"; + } + leaf maxSessions { + type uint16 { + range "1..10"; + } + default "5"; + description "Number of maximum simultaneous client sessions"; + } + } + + grouping flow_Entity-group { + description "Entity"; + + // Flow Record + container fr-items { + list Record-list { + key "name"; + + uses flow_Record-group; + description "Flow Record list"; + } + description "Flow Record"; + } + + // Flow Exporter + container fe-items { + list Exporter-list { + key "name"; + + uses flow_Exporter-group; + description "Collector entry list"; + } + description "Collector entry"; + } + + // Flow Monitor + container fm-items { + list Monitor-list { + key "name"; + + uses flow_Monitor-group; + description "Flow Monitor list"; + } + description "Flow Monitor"; + } + + // Sampler + container s-items { + list Sampler-list { + key "name"; + + uses flow_Sampler-group; + description "Sampler list"; + } + description "Sampler"; + } + container cmap-items { + list ClassMap-list { + key "name"; + + uses flow_ClassMap-group; + description "Class map instance list"; + } + description "Class map instance"; + } + container pmap-items { + list PolicyMap-list { + key "name"; + + uses flow_PolicyMap-group; + description "Policy-map list"; + } + description "Policy-map"; + } + + // Hardware profile + container hp-items { + list HwProfile-list { + key "name"; + + uses flow_HwProfile-group; + description "Hardware Profile list"; + } + description "Hardware Profile"; + } + + // Forwarding instance based target + container fit-items { + list FwdInstTarget-list { + key "slot asic slice"; + + uses flow_FwdInstTarget-group; + description "Forward Instance Target list"; + } + description "Forward Instance Target"; + } + } + + grouping flow_Record-group { + description "Flow Record"; + leaf name { + type string; + description "Flow record name"; + } + leaf description { + type string; + description "Flow record description"; + } + + leaf matchParams { + + type flow_MatchParams; + description "Match Params"; + } + + leaf collectParams { + + type flow_CollectParams; + description "Collect Params"; + } + } + + grouping flow_Exporter-group { + description "Collector entry"; + leaf name { + type string; + description "Flow exporter name"; + } + leaf description { + type string; + description "Flow exporter description"; + } + + leaf vrfName { + + type l3_VrfName; + description "Collector VRF"; + } + leaf destinationIp { + type address_Ip; + description "Collector IP"; + } + + leaf destinationPort { + + type flow_L4Port; + description "Collector L4 Port"; + } + + leaf dscp { + + type ipqos_Dscp; + description "DSCP value"; + } + + // check + leaf sourceInterface { + + type nw_IfId; + description "Source Interface"; + } + + leaf version { + + type flow_ExportVersion; + description "Export version format"; + } + } + + grouping flow_Monitor-group { + description "Flow Monitor"; + leaf name { + type string; + description "Flow monitor name"; + } + leaf description { + type string; + description "Flow monitor description"; + } + container feb-items { + list ExporterBucket-list { + key "id"; + + uses flow_ExporterBucket-group; + description "Flow exporter bucket entry list"; + } + description "Flow exporter bucket entry"; + } + + container rsrecord-items { + + uses flow_RsRecord_source-group; + description "Reference to flow record"; + } + } + + grouping flow_ExporterBucket-group { + description "Flow exporter bucket entry"; + leaf id { + type uint8; + description "Flow exporter bucket ID"; + } + leaf description { + type string; + description "Flow exporter bucket description"; + } + leaf hashLo { + type uint32; + description "Hash low"; + } + leaf hashHi { + type uint32; + description "Hash high"; + } + + container rsexporter1-items { + + uses flow_RsExporter1_source-group; + description "Reference to flow exporter1"; + } + + container rsexporter2-items { + + uses flow_RsExporter2_source-group; + description "Reference to flow exporter2"; + } + } + + grouping flow_Sampler-group { + description "Sampler"; + leaf name { + type string; + description "Sampler name"; + } + leaf description { + type string; + description "Sampler description"; + } + + leaf mode { + + type flow_SamplerMode; + description "Sampler mode"; + } + leaf param1 { + type uint32; + description "Sampler param1"; + } + leaf param2 { + type uint32; + description "Sampler param2"; + } + } + + grouping flow_ClassMap-group { + description "Class map instance"; + + // class map name + leaf name { + + type ipqos_CMapName; + description "Name of class-map"; + } + + // match access-group + container acl-items { + list MatchAcl-list { + key "name"; + + uses flow_MatchAcl-group; + description "Match ACL list"; + } + description "Match ACL"; + } + } + + grouping flow_MatchAcl-group { + description "Match ACL"; + + // ACL to match + leaf name { + + type acl_Name; + description "Match using ACL"; + } + } + + grouping flow_PolicyMap-group { + description "Policy-map"; + + // policy map name + leaf name { + + type ipqos_PMapName; + description "Name of policy-map"; + } + + // match a class-map + container cmap-items { + list MatchClassMap-list { + key "name"; + + uses flow_MatchClassMap-group; + description "Match class-map list"; + } + description "Match class-map"; + } + } + + grouping flow_MatchClassMap-group { + description "Match class-map"; + + // use class-map with this name + leaf name { + + type ipqos_CMapName; + description "Match using class-map"; + } + + // set Flow Monitor + container fm-items { + + uses flow_SetMonitor-group; + description "Set Flow Monitor"; + } + } + + grouping flow_SetMonitor-group { + description "Set Flow Monitor"; + + container rsmonitor-items { + + uses flow_RsMonitor_source-group; + description "Reference to flow monitor"; + } + } + + grouping flow_HwProfile-group { + description "Hardware Profile"; + leaf name { + type string; + description "Hardware profile name"; + } + leaf description { + type string; + description "Hardware profile description"; + } + leaf exportInterval { + type uint32; + default "100"; + description "Export Interval in milliseconds"; + } + + leaf sourcePort { + + type flow_L4Port; + description "Source L4 Port"; + } + leaf ipPacketIdShift { + type uint8; + description "IP Packet ID Shift"; + } + leaf burstIntervalShift { + type uint8; + description "Timestamp shift value for burst interval"; + } + + leaf mtu { + + type flow_Mtu; + description "MTU"; + } + + container sngt-items { + + uses flow_SeqNumGuessThreshold-group; + description "Sequence Number Guess Threshold"; + } + container plb-items { + list PayloadLenBin-list { + key "id"; + + uses flow_PayloadLenBin-group; + description "Payload length bin entry list"; + } + description "Payload length bin entry"; + } + container tohlb-items { + list TCPOptHdrLenBin-list { + key "id"; + + uses flow_TCPOptHdrLenBin-group; + description "TCP optional header length bin entry list"; + } + description "TCP optional header length bin entry"; + } + container rwsb-items { + list ReceiveWindowSizeBin-list { + key "id"; + + uses flow_ReceiveWindowSizeBin-group; + description "Receive window size bin entry list"; + } + description "Receive window size bin entry"; + } + } + + grouping flow_SeqNumGuessThreshold-group { + description "Sequence Number Guess Threshold"; + leaf lo { + type uint32; + description "Low Threshold"; + } + leaf hi { + type uint32; + description "High Threshold"; + } + } + + grouping flow_PayloadLenBin-group { + description "Payload length bin entry"; + leaf id { + type uint8; + description "Payload length bin ID"; + } + leaf description { + type string; + description "Payload length bin description"; + } + + leaf lo { + + type flow_PayloadLen; + description "Bin low value"; + } + + leaf hi { + + type flow_PayloadLen; + description "Bin high value"; + } + } + + grouping flow_TCPOptHdrLenBin-group { + description "TCP optional header length bin entry"; + leaf id { + type uint8; + description "TCP option header length bin ID"; + } + leaf description { + type string; + description "TCP option header length bin description"; + } + + leaf lo { + + type flow_TCPOptHdrLen; + description "Bin low value"; + } + + leaf hi { + + type flow_TCPOptHdrLen; + description "Bin high value"; + } + } + + grouping flow_ReceiveWindowSizeBin-group { + description "Receive window size bin entry"; + leaf id { + type uint8; + description "Receive window size bin ID"; + } + leaf description { + type string; + description "Receive window size bin description"; + } + + leaf lo { + + type flow_ReceiveWindowSize; + description "Bin low value"; + } + + leaf hi { + + type flow_ReceiveWindowSize; + description "Bin high value"; + } + } + + grouping flow_FwdInstTarget-group { + description "Forward Instance Target"; + leaf slot { + type uint8 { + range "1..64"; + } + description "Slot ID"; + } + leaf asic { + type uint8 { + range "1..10"; + } + description "Asic ID"; + } + leaf slice { + type uint8 { + range "1..10"; + } + description "Slice ID"; + } + leaf exporterId { + type uint32; + description "Exporter ID"; + } + + // Service Policy + container sp-items { + list ServicePolicy-list { + key "direction"; + + uses flow_ServicePolicy-group; + description "Service Policy list"; + } + description "Service Policy"; + } + + container rshwProfile-items { + + uses flow_RsHwProfile_source-group; + description "Reference to hardware profile"; + } + } + + grouping flow_ServicePolicy-group { + description "Service Policy"; + + leaf direction { + + type flow_Direction; + description "Direction"; + } + + container rspmap-items { + + uses flow_RsPmap_source-group; + description "Reference to policy-map"; + } + } + + grouping ngoam_Entity-group { + description "NGOAM Entity"; + + // Holds NGOAM entity information + container xcon-items { + + uses ngoam_Xcon-group; + description "Placeholder model for xconnect data to hang off of"; + } + + // NGOAM Profile Object + container profile-items { + list Profile-list { + key "profId"; + + uses ngoam_Profile-group; + description "Ngoam Profile list"; + } + description "Ngoam Profile"; + } + + // NGOAM InstallACL Object + container installacl-items { + + uses ngoam_InstallAcl-group; + description "Ngoam install acl"; + } + + // NGOAM Authentication Object + container authentication-items { + + uses ngoam_Authentication-group; + description "Ngoam Authentication"; + } + + // NGOAM Connectivity Check Object + container cc-items { + list ConnectCheck-list { + key "ccId"; + + uses ngoam_ConnectCheck-group; + description "Ngoam Connectivity check list"; + } + description "Ngoam Connectivity check"; + } + + // NGOAM Xconnect config Object + container xconnect-items { + + uses ngoam_XconCfg-group; + description "Ngoam xconnect configs"; + } + + // Holds NGOAM Loop Detection information + container loopdetection-items { + + uses ngoam_LoopDetection-group; + description "NGOAM loop detection feature"; + } + } + + grouping ngoam_Xcon-group { + description "Placeholder model for xconnect data to hang off of"; + + // Interface name for list of all egress interfaces + container bd-items { + list XConnect-list { + config "false"; + key "swBd"; + + uses ngoam_XConnect-group; + description "Model describing the properties of a vxlan cross-connect list"; + } + description "Model describing the properties of a vxlan cross-connect"; + } + } + + grouping ngoam_XConnect-group { + description "Model describing the properties of a vxlan cross-connect"; + leaf swBd { + config "false"; + type uint16; + description "vlanID on which xconnnect is enabled"; + } + + // Xc state + leaf xcState { + config "false"; + + type ngoam_xcState; + description "xconnect state - could have multiple states at the same time"; + } + leaf peerIp { + config "false"; + type address_Ipv4; + description "VTEP ip of the vxlan peer"; + } + leaf vni { + config "false"; + type uint32; + description "vni for the xconnect"; + } + leaf localPort { + config "false"; + type string; + description "LocalPort associated with the xconnect"; + } + + // Local port state + leaf localPortState { + config "false"; + + type ngoam_xcPortState; + description "Local Port State"; + } + leaf localVpcPort { + config "false"; + type string; + description "Local Vpc Port associated with the xconnect"; + } + + // Local Vpc port state + leaf localVpcPortState { + config "false"; + + type ngoam_xcPortState; + description "Local Vpc Port State"; + } + leaf remotePort { + config "false"; + type string; + description "RemotePort associated with the xconnect"; + } + + // Remote port state + leaf remotePortState { + config "false"; + + type ngoam_xcPortState; + description "Remote Port State"; + } + leaf remoteVpcPort { + config "false"; + type string; + description "Remote Vpc Port associated with the xconnect"; + } + + // Remote Vpc port state + leaf remoteVpcPortState { + config "false"; + + type ngoam_xcPortState; + description "Remote Vpc Port State"; + } + leaf lastChgTs { + config "false"; + type string; + description "timestamp of last change to this database"; + } + } + + grouping ngoam_Profile-group { + description "Ngoam Profile"; + + // Prof. ID + leaf profId { + + type ngoam_ProfId; + description "Profile ID"; + } + + // Description + leaf desc { + + type ngoam_Desc; + description "Description"; + } + + // dot1q + leaf dot1q { + + type ngoam_Dot1q; + description "dot1q"; + } + + // dot1q interface + leaf dot1qIf { + + type nw_IfId; + description "dot1q"; + } + + // hop + leaf hop { + + type ngoam_Hop; + description "hop count"; + } + + // Egress Interface + leaf interface { + + type nw_IfId; + description "Interface"; + } + + // Oam Channel + leaf oamChannel { + + type ngoam_OamChannel; + description "OAM channel type"; + } + + // Payload Pad + leaf payloadPad { + + type ngoam_PayloadPad; + description "Payload padding pattern"; + } + + // source port + leaf srcPort { + + type ngoam_Sport; + description "Source Port Range"; + } + + // NGOAM FlowFwd Object + container flowfwd-items { + + uses ngoam_FlowFwd-group; + description "Ngoam Profile Flow Fwd"; + } + } + + grouping ngoam_FlowFwd-group { + description "Ngoam Profile Flow Fwd"; + leaf forward { + type boolean; + description "forward"; + } + + // dot1q + leaf dot1q { + + type ngoam_Dot1qFlow; + description "dot1q"; + } + leaf ipDest { + type address_Ipv4; + description "IP v4 address destination"; + } + leaf ipSrc { + type address_Ipv4; + description "IP v4 address source"; + } + leaf ipv6Dest { + type address_Ipv6; + description "IP v6 address destination"; + } + leaf ipv6Src { + type address_Ipv6; + description "IP v6 address source"; + } + leaf macDest { + type address_Mac; + description "mac address destination"; + } + leaf macSrc { + type address_Mac; + description "mac address source"; + } + + // port destination + leaf portDest { + + type ngoam_DestPort; + description "TCP or UDP port destination"; + } + + // port source + leaf portSrc { + + type ngoam_SrcPort; + description "TCP or UDP port source"; + } + + // Flow protocol number + leaf protocol { + + type ngoam_Protocol; + description "Flow protocol number"; + } + leaf packet { + type string; + description "IP v6 address"; + } + } + + grouping ngoam_InstallAcl-group { + description "Ngoam install acl"; + leaf enabled { + type boolean; + description "install acl enabled"; + } + } + + grouping ngoam_Authentication-group { + description "Ngoam Authentication"; + + // Authentication key + leaf key { + + type ngoam_AuthKey; + description "Authentication key"; + } + } + + grouping ngoam_ConnectCheck-group { + description "Ngoam Connectivity check"; + + // Connectivity check id + leaf ccId { + + type ngoam_ProfId; + description "Ngoam Connectivity check ID"; + } + + // Prof. id + leaf profileId { + + type ngoam_ProfIdCC; + description "Ngoam profile ID"; + } + leaf dstIp { + type address_Ipv4; + description "Destination Node ID"; + } + leaf dstIpv6 { + type address_Ipv6; + description "Destination Node ID"; + } + leaf dstMAC { + type address_Mac; + description "Destination Node ID"; + } + leaf dstUnknown { + type boolean; + description "Destination Node ID"; + } + leaf srcIp { + type address_Ipv4; + description "Source IP"; + } + leaf srcIpv6 { + type address_Ipv6; + description "Source IP"; + } + + // dot1q + leaf dot1q { + + type ngoam_Dot1q; + description "dot1q"; + } + + // source port + leaf srcPort { + + type ngoam_Sport; + description "Source Port"; + } + + // count + leaf count { + + type ngoam_NumPkt; + description "Number of packets"; + } + + // timeout + leaf timeout { + + type ngoam_Timeout; + description "Timeout"; + } + + // interval + leaf interval { + + type ngoam_SendIntvlCC; + description "Interval"; + } + + leaf dataPattern { + + type ngoam_PayloadPad; + description "data pattern"; + } + + // packet size + leaf packetSz { + + type ngoam_PktSz; + description "Payload Size"; + } + + // The vrf in which it is running + leaf vrf { + + type ngoam_Vrf; + description "VRF"; + } + + // The VxLAN vni + leaf vni { + + type ngoam_VnidCC; + description "VNI"; + } + + // Egress Interface id + leaf egressIf { + + type nw_IfId; + description "Interface ID"; + } + + // MAC Interface + leaf macsrcif { + + type nw_IfId; + description "payload source interface"; + } + leaf verifyHost { + type boolean; + description "Verify Host"; + } + + // dot1q + leaf payload_dot1q { + + type ngoam_Dot1q; + description "dot1q"; + } + leaf payload_srcip { + type address_Ipv4; + description "src IP v4 address"; + } + leaf payload_srcipv6 { + type address_Ipv6; + description "src IP v6 address"; + } + leaf payload_srcmac { + type address_Mac; + description "src mac address"; + } + leaf payload_dstip { + type address_Ipv4; + description "dst IP v4 address"; + } + leaf payload_dstipv6 { + type address_Ipv6; + description "dst IP v6 address"; + } + leaf payload_dstmac { + type address_Mac; + description "dst mac address"; + } + leaf payload_srcport { + type uint16; + description "payload src port"; + } + leaf payload_dstport { + type uint16; + description "payload dst port"; + } + + // protocol + leaf payload_protocol { + + type ngoam_Protocol; + description "payload protocol"; + } + + // Source Interface + leaf payload_srcif { + + type nw_IfId; + description "payload source interface"; + } + + // Result for fabric ping + container pingnverslt-items { + list PingNveRslt-list { + config "false"; + key "sessionId"; + + uses ngoam_PingNveRslt-group; + description "Ping Nve Result list"; + } + description "Ping Nve Result"; + } + } + + grouping ngoam_PingNveRslt-group { + description "Ping Nve Result"; + + // Prof. Name + leaf sessionId { + config "false"; + + type ngoam_SessionId; + description "Name"; + } + + leaf descr { + config "false"; + + type action_Descr; + description "Description"; + } + + // Time that the task started + leaf startTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Task rule type + leaf type { + config "false"; + + type action_Type; + description "TBD"; + } + + leaf rSz { + config "false"; + + type action_RetentionSize; + description "TBD"; + } + + // Retention time of task results + leaf rTm { + config "false"; + + type action_RetentionTime; + description "TBD"; + } + leaf peerClassId { + config "false"; + type string; + } + + // Qualifier for the above status + leaf qual { + config "false"; + + type action_Qual; + description "TBD"; + } + leaf ack { + config "false"; + type boolean; + } + + // Time that the task ended + leaf endTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Runtime status of the task + leaf operSt { + config "false"; + + type action_OperSt; + description "Runtime status of the task"; + } + leaf replyIp { + config "false"; + type address_Ipv4; + description "IPv4 Address"; + } + leaf replyIpv6 { + config "false"; + type address_Ipv6; + description "IPv6 Address"; + } + leaf nodeName { + config "false"; + type string; + description "Node name"; + } + leaf errorCode { + config "false"; + type string; + description "Error Code String"; + } + leaf failReason { + config "false"; + type string; + description "Failure Reason"; + } + + // Source port + leaf sPort { + config "false"; + + type ngoam_SrcPort; + description "VxLAN outer UDP Source Port -- Will be deprecated. Please use verbose"; + } + leaf verbose { + config "false"; + type string; + description "Verbose info, fabric specific verbose info from the replies"; + } + + // packet size + leaf packetSz { + config "false"; + + type ngoam_PktSz; + description "Packet Size"; + } + + // Number of packets sent + leaf sentPkts { + config "false"; + + type ngoam_Counter; + description "Sent Packets"; + } + + // Number of packets not sent + leaf notSentPkts { + config "false"; + + type ngoam_Counter; + description "Not Sent Packets"; + } + + // Number of packets received + leaf rcvdPkts { + config "false"; + + type ngoam_Counter; + description "Received Packets"; + } + + // Minimum round trip time of all the packets that + // have been sent in one exec + leaf minRtt { + config "false"; + + type ngoam_Rtt; + description "Minimum Round Trip Time"; + } + + // Average round trip time of all the packets that + // have been sent in one exec + leaf avgRtt { + config "false"; + + type ngoam_Rtt; + description "Average Round Trip Time"; + } + + // Maximum round trip time of all the packets that + // have been sent in one exec + leaf maxRtt { + config "false"; + + type ngoam_Rtt; + description "Maximum Round Trip Time"; + } + + // Total Rtt of all the packets sent + leaf totalRtt { + config "false"; + + type ngoam_Rtt; + description "Total Round Trip Time"; + } + } + + grouping ngoam_XconCfg-group { + description "Ngoam xconnect configs"; + + // xconnect_hb_interval + leaf hbinterval { + + type ngoam_HbInterval; + description "Heartbeat interval"; + } + } + + grouping ngoam_LoopDetection-group { + description "NGOAM loop detection feature"; + leaf enable { + type boolean; + description "enable/disable loop detection feature"; + } + + // Loop Detection periodic probe interval + leaf periodicProbeInterval { + + type ngoam_SLDperiodicprobeinterval; + description "Loop detection periodic probe interval value"; + } + + // Loop Detection port-recovery interval + leaf portRecoveryInterval { + + type ngoam_SLDportrecoveryinterval; + description "loop detection port recovery interval value"; + } + leaf nextProbeTime { + config "false"; + type union { + type string; + type uint64; + } + description "Next probe window start time"; + } + leaf nextRecoveryTime { + config "false"; + type union { + type string; + type uint64; + } + description "Next port recovery window start time"; + } + leaf totalProbesSent { + config "false"; + type uint64; + description "Total Number of probes sent"; + } + leaf totalProbesReceived { + config "false"; + type uint64; + description "Total Number of probes received"; + } + leaf numVlans { + config "false"; + type uint16; + description "Number of VLANs loop detection is actively monitoring"; + } + leaf numPorts { + config "false"; + type uint32; + description "Number of ports loop detection is actively monitoring"; + } + leaf numLoops { + config "false"; + type uint32; + description "Number of loops detected"; + } + leaf numPortsBlocked { + config "false"; + type uint32; + description "Number of ports blocked by the loop detection"; + } + leaf numVlansDisabled { + config "false"; + type uint16; + description "Number of VLANs where loop detection is disabled"; + } + leaf numPortsDisabled { + config "false"; + type uint32; + description "Number of ports where loop detection is disabled"; + } + + // Holds disabled port-vlan information + container dis-items { + list Disabled-list { + key "vlanId"; + + uses ngoam_Disabled-group; + description "NGOAM loop detection list of disabled Vlan/ports list"; + } + description "NGOAM loop detection list of disabled Vlan/ports"; + } + + // Holds Detected loops information + container loops-items { + list Loops-list { + config "false"; + key "vlanId portId"; + + uses ngoam_Loops-group; + description "Contains the information about the vlans and ports that has loops detected list"; + } + description "Contains the information about the vlans and ports that has loops detected"; + } + } + + grouping ngoam_Disabled-group { + description "NGOAM loop detection list of disabled Vlan/ports"; + + // vlanId + leaf vlanId { + + type ngoam_VlanRange; + description "Range of Vlans to disable the loop detection"; + } + + // portId + leaf portId { + + type ngoam_Interface; + description "Range of ports to disable the loop detection"; + } + } + + grouping ngoam_Loops-group { + description "Contains the information about the vlans and ports that has loops detected"; + + // vlanId + leaf vlanId { + config "false"; + + type ngoam_vlanId; + description "Vlan Id of the vlan that has loop detected"; + } + + // portId + leaf portId { + config "false"; + + type nw_IfId; + description "Interface on which loop detected"; + } + + // state + leaf state { + config "false"; + + type ngoam_portState; + description "State of the port like blocked/force cleared etc"; + } + leaf loopDetectedTime { + config "false"; + type union { + type string; + type uint64; + } + description "Last time the loop detected"; + } + leaf loopClearedTime { + config "false"; + type union { + type string; + type uint64; + } + description "Last time the loop cleared"; + } + leaf numLoops { + config "false"; + type uint32; + description "Number of loops detected so far"; + } + } + + grouping nxapi_Inst-group { + description "NXAPI Instance"; + + leaf httpPort { + + type nxapi_HttpPort; + description "HTTP Port"; + } + + leaf httpsPort { + + type nxapi_HttpsPort; + description "HTTPS Port"; + } + + leaf useVrf { + + type os_OsString; + description "Vrf for NX-API"; + } + + leaf certFile { + + type os_OsString; + description "Certificate file for NX-API"; + } + + leaf keyFile { + + type os_OsString; + description "Key file for NX-API"; + } + + leaf encrKeyPassphrase { + + type nxapi_keyPassphrase; + description "Passphrase to decrypt the encrypted key file for NX-API"; + } + leaf certEnable { + type boolean; + description "Certificate status of NX-API"; + } + leaf sslCiphersWeak { + type boolean; + default "false"; + description "Enable Weak Ciphers for SSL"; + } + + leaf sslProtocols { + + type nxapi_SslProtocols; + description "String of space separated SSL protocols to be supported"; + } + + leaf clientCertAuth { + + type nxapi_ClientCertAuthType; + description "Enable Mutual SSL Certificate Authentication for NXAPI between client and server and set verficiation restriction level"; + } + leaf idleTimeout { + type uint16 { + range "1..1440"; + } + default "10"; + description "Specifies the idle timeout (in minutes) before a session expires."; + } + } + + grouping ofm_Inst-group { + description "Static Tunnel"; + container tunnelprofile-items { + list TunnelProfile-list { + key "profName"; + + uses ofm_TunnelProfile-group; + description "TunnelProfile list"; + } + description "TunnelProfile"; + } + } + + grouping ofm_TunnelProfile-group { + description "TunnelProfile"; + + leaf profName { + + type ofm_profileName; + description "Name of Tunnel Profile"; + } + + leaf encaptype { + + type ofm_encapType; + description "Encapsulation type for tunnel profile"; + } + + leaf srcID { + + type nw_IfId; + description "Source ID for Src vtep IP"; + } + container route-items { + list Route-list { + key "vrfName route nhvrf nexthop"; + + uses ofm_Route-group; + description "Tunnel Route list"; + } + description "Tunnel Route"; + } + container routevrf-items { + list RouteSrv6-list { + key "vrfName route"; + + uses ofm_RouteSrv6-group; + description "Tunnel Route for Srv6 list"; + } + description "Tunnel Route for Srv6"; + } + } + + grouping ofm_Route-group { + description "Tunnel Route"; + + leaf vrfName { + + type l3_VrfName; + description "Vrf name for dest Route"; + } + leaf route { + type address_Ip; + description "IP address of dest route"; + } + + leaf nhvrf { + + type l3_VrfName; + description "vrf name of next hop"; + } + leaf nexthop { + type address_Ip; + description "IP address of next hop"; + } + leaf vni { + type uint32; + description "Virtual Network Identifier"; + } + leaf dmac { + type address_Mac; + description "MAC Address of remote VTEP"; + } + } + + grouping ofm_RouteSrv6-group { + description "Tunnel Route for Srv6"; + + leaf vrfName { + + type l3_VrfName; + description "Vrf name for Srv6"; + } + leaf route { + type address_Ip; + description "IP address for Srv6"; + } + leaf remoteLocator { + type address_Ipv6; + description "Ipv6 locator of remote srv6 peer"; + } + leaf function { + type uint32 { + range "0..65534"; + } + description "Function in the remote sid"; + } + + leaf tePolicyName { + + type ofm_TePolicyName; + description "Name of the Te-policy"; + } + leaf color { + type uint32 { + range "0..4294967295"; + } + description "Name of Te-policy color"; + } + leaf endpoint { + type address_Ipv6; + description "Ipv6 address of SRv6 End-point"; + } + } + + grouping poe_Entity-group { + description "poe Entity"; + + // This class shall store the global configuration + // for a running poe instance + container inst-items { + + uses poe_Inst-group; + description "Power on Ethernet Instance"; + } + container physif-items { + list PhysIf-list { + key "id"; + + uses poe_PhysIf-group; + description "Power on Ethernet Interface list"; + } + description "Power on Ethernet Interface"; + } + + // This object configs module logging level + container modloglevel-items { + + uses poe_ModLogLevel-group; + description "Config POE logging level"; + } + } + + grouping poe_Inst-group { + description "Power on Ethernet Instance"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + } + + grouping poe_PhysIf-group { + description "Power on Ethernet Interface"; + + leaf portMode { + + type poe_poePortmode; + description "POE interface's current port mode "; + } + + leaf maxConsumption { + + type poe_poeMaxConsumption; + description "POE interface's current max port consumption"; + } + + leaf portPriority { + + type poe_poePriority; + description "POE interface's current port Priority "; + } + + leaf portPolice { + + type poe_poePolice; + description "POE interface's current port police action "; + } + + leaf portDefaultConsumption { + + type poe_poeDefaultConsumption; + description "POE interface's default port consumption"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping poe_ModLogLevel-group { + description "Config POE logging level"; + + // logging level + leaf loggingLevel { + + type poe_LoggingLevel; + description "Logging Level"; + } + + // logging type + leaf loggingType { + config "false"; + + type poe_LoggingType; + description "Logging type"; + } + } + + grouping qosm_Entity-group { + description "QoS Entity"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Qos interface defintion. Holds information about qos + // operated at a class level + container class-items { + list Class-list { + config "false"; + key "qosGrp"; + + uses qosm_Class-group; + description "Class list"; + } + description "Class"; + } + + // Qos interface defintion. Holds information about qos + // operated at a interface level + container if-items { + list If-list { + config "false"; + key "id"; + + uses qosm_If-group; + description "Qos Interface list"; + } + description "Qos Interface"; + } + + // Holder for qos fabric class policy, each class describes + // qos attributes like mtu, etc + container classp-items { + list Class-list { + config "false"; + key "qosGrp"; + + uses qosp_Class-group; + description "QoS Class list"; + } + description "QoS Class"; + } + + // Qos classification rules based on dscp values + container dscp-items { + list DscpRule-list { + config "false"; + key "from to qosGrp markDscp"; + + uses qosp_DscpRule-group; + description "DSCP QoS Classification Rule list"; + } + description "DSCP QoS Classification Rule"; + } + + // Qos classification rules based on dot1p values + container dot1p-items { + list Dot1pRule-list { + config "false"; + key "from to qosGrp markDscp"; + + uses qosp_Dot1pRule-group; + description "Dot1p QoS Classification Rule list"; + } + description "Dot1p QoS Classification Rule"; + } + + // Qos classification rules based on IP values + container ip-items { + list IpRule-list { + config "false"; + key "addr"; + + uses qosp_IpRule-group; + description "IP Classification Rule list"; + } + description "IP Classification Rule"; + } + } + + grouping qosm_Class-group { + description "Class"; + + // QoS Group + leaf qosGrp { + config "false"; + + type qos_Prio; + description "ID"; + } + } + + grouping qosm_If-group { + description "Qos Interface"; + + // Interface ID + leaf id { + config "false"; + + type nw_IfId; + description "ID"; + } + + // IfClass information. Holds information about qos operated + // at a per port per class level + container class-items { + list IfClass-list { + config "false"; + key "id"; + + uses qosm_IfClass-group; + description "Qos Interface Class list"; + } + description "Qos Interface Class"; + } + } + + grouping qosm_IfClass-group { + description "Qos Interface Class"; + + // Class id + leaf id { + config "false"; + + type qos_Prio; + description "ID"; + } + } + + grouping qosp_Class-group { + description "QoS Class"; + + // Administrative state + leaf admin { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // mtu + leaf mtu { + config "false"; + + type qosp_MTU; + description "MTU"; + } + + // Class id + leaf qosGrp { + config "false"; + + type qos_Prio; + description "Priority"; + } + + // Qos Class operational state + leaf operSt { + config "false"; + + type qosp_OperSt; + description "Operational State"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Congestion policy holder, describes the congestion + // parameters like congestion algo, ecn etc. These are + // applied at a per class today in the system + container cong-items { + + uses qosp_Cong-group; + description "Congestion"; + } + + // Queue management policy holder, describes the queue + // threshold parameters like management method, limts, + // etc. These are applied at a per class today in the + // system + container queue-items { + + uses qosp_Queue-group; + description "Queue"; + } + + // Buffer policy holder, describes the minimum + // guaranteed packet buffer reservations. These are + // applied at a per class today in the system + container buffer-items { + + uses qosp_Buffer-group; + description "Buffer"; + } + + // Schedule policy holder, describes the minimum + // guaranteed packet buffer reservations. These are + // applied at a per class today in the system + container sched-items { + + uses qosp_Sched-group; + description "Schedule"; + } + } + + grouping qosp_Cong-group { + description "Congestion"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // What algorithm to use when congestion happens + leaf algo { + config "false"; + + type qosp_CongAlgo; + description "TBD"; + } + + // Explicit congestion notification (ecn) ECN is disabled for FCS, thus this is implicit + leaf ecn { + config "false"; + + type qosp_ECN; + description "TBD"; + } + } + + grouping qosp_Queue-group { + description "Queue"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Queue control method (static/dynamic) + leaf meth { + config "false"; + + type qosp_CtrlMeth; + description "TBD"; + } + + // queue limit, only applicable with static control + // method + leaf limit { + config "false"; + + type qosp_QueueLimit; + description "TBD"; + } + } + + grouping qosp_Buffer-group { + description "Buffer"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Minimum buffers reserved in units of MTU + leaf min { + config "false"; + + type qosp_MinBuf; + description "TBD"; + } + } + + grouping qosp_Sched-group { + description "Schedule"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Scheduling algorithm + leaf meth { + config "false"; + + type qosp_SchedAlgo; + description "TBD"; + } + + // If wrr, what is the bandwidth allocated (in %) + leaf bw { + config "false"; + + type qosp_BwPercent; + description "TBD"; + } + } + + grouping qosp_DscpRule-group { + description "DSCP QoS Classification Rule"; + + // Range from + leaf from { + config "false"; + + type qosp_Dscp; + description "From"; + } + + // Range to + leaf to { + config "false"; + + type qosp_Dscp; + description "To"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Group Id + leaf qosGrp { + config "false"; + + type qos_Prio; + description "Group ID"; + } + + // Mark Dscp + leaf markDscp { + config "false"; + + type qosp_Dscp; + description "DSCP"; + } + + // Qos Class operational state + leaf operSt { + config "false"; + + type qosp_OperSt; + description "Operational State"; + } + + container rtl2DscpRuleAtt-items { + + list RtL2DscpRuleAtt-list { + config "false"; + key "tDn"; + + uses l2_RtL2DscpRuleAtt_target-group; + description "DSCP Rule Attachment list"; + } + description "DSCP Rule Attachment"; + } + } + + grouping qosp_Dot1pRule-group { + description "Dot1p QoS Classification Rule"; + + // Range from + leaf from { + config "false"; + + type qosp_Dot1P; + description "From"; + } + + // Range to + leaf to { + config "false"; + + type qosp_Dot1P; + description "To"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Group Id + leaf qosGrp { + config "false"; + + type qos_Prio; + description "Group ID"; + } + + // Mark Dscp + leaf markDscp { + config "false"; + + type qosp_Dscp; + description "DSCP"; + } + + // Qos Class operational state + leaf operSt { + config "false"; + + type qosp_OperSt; + description "Operational State"; + } + + container rtl2Dot1pRuleAtt-items { + + list RtL2Dot1pRuleAtt-list { + config "false"; + key "tDn"; + + uses l2_RtL2Dot1pRuleAtt_target-group; + description "Dot1p Rule Attachment list"; + } + description "Dot1p Rule Attachment"; + } + } + + grouping qosp_IpRule-group { + description "IP Classification Rule"; + leaf addr { + config "false"; + type address_Ip; + description "IP Address"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Group Id + leaf qosGrp { + config "false"; + + type qos_Prio; + description "Group ID"; + } + + // Mark Dscp + leaf markDscp { + config "false"; + + type qosp_Dscp; + description "DSCP"; + } + + // Qos Class operational state + leaf operSt { + config "false"; + + type qosp_OperSt; + description "Operational State"; + } + } + + grouping sisf_Entity-group { + description "Enable/Disable FHS feature"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This objects hold per sisf instance information. There is only + // one instance of dhcp running in the system today + container snooping-items { + list InstSnooping-list { + key "policyName"; + + uses sisf_InstSnooping-group; + description "Configure a snooping policy for FHS feature list"; + } + description "Configure a snooping policy for FHS feature"; + } + + // Ipv6 Neighbor Binding Global Configuration + container neighborbinding-items { + + uses sisf_InstBinding-group; + description "Configure IPv6 snoopiong binding table global setting"; + } + + // Ipv6 DHCP Guard Configure + container dhcpguard-items { + list InstDhcpGuard-list { + key "policyName"; + + uses sisf_InstDhcpGuard-group; + description "Configure a dhcp guard policy for FHS feature list"; + } + description "Configure a dhcp guard policy for FHS feature"; + } + + // Ipv6 RA Guard Configure + container raguard-items { + list InstRaGuard-list { + key "policyName"; + + uses sisf_InstRaGuard-group; + description "Configure a nd raguard policy for FHS feature list"; + } + description "Configure a nd raguard policy for FHS feature"; + } + + // This object holds bfd interface information + container fhsif-items { + list FhsIf-list { + key "id"; + + uses sisf_FhsIf-group; + description "Configure interface for FHS feature list"; + } + description "Configure interface for FHS feature"; + } + container fhsvlan-items { + list FhsVlan-list { + key "vlanID"; + + uses sisf_FhsVlan-group; + description "SISF Vlan list"; + } + description "SISF Vlan"; + } + } + + grouping sisf_InstSnooping-group { + description "Configure a snooping policy for FHS feature"; + leaf policyName { + type string; + description "Name of the snooping policy"; + } + leaf trustedPortEnabled { + type boolean; + description "Setup trusted port"; + } + + leaf deviceRole { + + type sisf_deviceRole; + description "Sets the role of the device attached to the port"; + } + + leaf ndpProtocol { + + type sisf_ndpflag; + description "Glean addresses in NDP packets"; + } + + leaf dhcpProtocol { + + type sisf_dhcpflag; + description "Glean addresses in DHCP packets"; + } + + leaf securityLevel { + + type sisf_securityLevel; + description "Setup security level of snoopiong policy"; + } + + leaf limitAddressCount { + + type sisf_limitAddressCount; + description "Configure maximum address per port"; + } + + leaf tracking { + + type sisf_NonGlobalTracking; + description "Override default tracking behavior"; + } + + leaf reachableLifetimer { + + type sisf_reachableLifetimerSnoopingPolicy; + description "TBD"; + } + + leaf staleLifetimer { + + type sisf_staleLifetimerSnoopingPolicy; + description "TBD"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping sisf_InstBinding-group { + description "Configure IPv6 snoopiong binding table global setting"; + leaf logging { + type boolean; + description "Enable syslog logging of IPv6 snooping binding table events"; + } + + leaf maxEntries { + + type sisf_maxEntries; + description "Define maximum number of entries in the IPv6 snoopiong binding table"; + } + + leaf vlanLimit { + + type sisf_vlanLimit; + description "Define maximum number of entries allowed per vlan"; + } + + leaf macLimit { + + type sisf_macLimit; + description "Define maximum number of entries allowed per mac"; + } + + leaf portLimit { + + type sisf_portLimit; + description "Define maximum number of entries allowed per port"; + } + + leaf reachableLifetimer { + + type sisf_reachableLifetimer; + description "Set reachable-lifetimer of IPv6 snooping binding table"; + } + + leaf staleLifetimer { + + type sisf_staleLifetimer; + description "Set stale-lifetimer of IPv6 snooping binding table"; + } + + leaf downLifetimer { + + type sisf_downLifetimer; + description "Set down-lifetimer of IPv6 snooping binding table"; + } + leaf tracking { + type boolean; + default "false"; + description "Configure IPv6 snooping tracking for static binding entry"; + } + + leaf retryInterval { + + type sisf_retryInterval; + description "Configure interval time between two probings"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + container bindingip-items { + list StaticBinding-list { + key "v6Addr vlanID"; + + uses sisf_StaticBinding-group; + description "Create static binding entry in IPv6 snooping binding table of FHS feature list"; + } + description "Create static binding entry in IPv6 snooping binding table of FHS feature"; + } + } + + grouping sisf_StaticBinding-group { + description "Create static binding entry in IPv6 snooping binding table of FHS feature"; + + leaf vlanID { + + type sisf_VlanID; + description "Configure Vlan ID of static binding entry"; + } + leaf v6Addr { + type address_Ipv6; + description "Configure IPv6 address of static binding entry"; + } + + leaf interface { + + type nw_IfId; + description "Configure interface of static binding entry"; + } + leaf mac { + type address_Mac; + description "Configure mac address of static binding entry"; + } + + leaf tracking { + + type sisf_NonGlobalTracking; + description "Configure tracking option of static binding entry"; + } + + leaf retryInterval { + + type sisf_RetryIntervalBinding; + description "Configure retry interfval between two probings of static binding entry"; + } + + leaf reachableLifetimer { + + type sisf_ReachableLifetimerBinding; + description "Configure reachable-lifetimer of static binding entry"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping sisf_InstDhcpGuard-group { + description "Configure a dhcp guard policy for FHS feature"; + leaf policyName { + type string; + description "Name of dhcp guard policy"; + } + + leaf deviceRole { + + type sisf_dhcpGuardDeviceRole; + description "Set the role of device attached to the port"; + } + leaf trustedPortEnabled { + type boolean; + description "Setup trusted port"; + } + + leaf preferenceMax { + + type sisf_preferenceMax; + description "Configure maximum allowed advertised server preference"; + } + + leaf preferenceMin { + + type sisf_preferenceMin; + description "Configure minimum allowed advertised server preference"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping sisf_InstRaGuard-group { + description "Configure a nd raguard policy for FHS feature"; + leaf policyName { + type string; + description "Name of the nd raguard policy"; + } + + leaf deviceRole { + + type sisf_raGuardDeviceRole; + description "Set the role of the device attached to the port"; + } + leaf trustedPortEnabled { + type boolean; + description "Setup trusted port"; + } + + leaf routerPreferenceMaximum { + + type sisf_raGuardRouterPreferenceMaximum; + description "Enable verification of the advertised router preference"; + } + + leaf hopLimitMax { + + type sisf_hopLimitMax; + description "Enable verification of the maximum advertised hop count limit"; + } + + leaf hopLimitMin { + + type sisf_hopLimitMin; + description "Enable verification of the minimum advertised hop count limit"; + } + + leaf managedConfig { + + type sisf_raGuardManagedConfig; + description "Enable verification of the advertised M flag"; + } + + leaf otherConfig { + + type sisf_raGuardOtherConfig; + description "Enable verification of the advertised O flag"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping sisf_FhsIf-group { + description "Configure interface for FHS feature"; + leaf snoopingPolicyName { + type string; + description "Attach a snooping policy of FHS feature"; + } + leaf dhcpGuardPolicyName { + type string; + description "Attach a dhcp guard policy of FHS feature"; + } + leaf raGuardPolicyName { + type string; + description "Attach a nd raguard policy of FHS feature"; + } + leaf deleted { + config "false"; + type boolean; + description "Delete the Mo if the target becomes l3"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping sisf_FhsVlan-group { + description "SISF Vlan"; + + leaf vlanID { + + type sisf_VlanID; + description "Vlan Number"; + } + leaf snoopingPolicyName { + type string; + description "Attach a snooping policy of FHS feature"; + } + leaf dhcpGuardPolicyName { + type string; + description "Attach a dhcp guard policy of FHS feature"; + } + leaf raGuardPolicyName { + type string; + description "Attach a nd raguard policy of FHS feature"; + } + leaf deleted { + config "false"; + type boolean; + description "Delete the Mo if no vlan config"; + } + } + + grouping sla_Entity-group { + description "SLA"; + + // Holds service instance information + container inst-items { + + uses sla_Inst-group; + description "Instance"; + } + } + + grouping sla_Inst-group { + description "Instance"; + + // Holds service control plane entity information + container sender-items { + + uses sla_Sender-group; + description "Sender"; + } + + container responder-items { + + uses sla_Responder-group; + description "sla Responder specific configs are handled with this mo"; + } + + container twampserver-items { + + uses sla_TwampServer-group; + description "Twamp"; + } + } + + grouping sla_Sender-group { + description "Sender"; + leaf loggingTraps { + type boolean; + description + "Enable syslog traps which sends the + trap meesages on reaction-config trap is enabled."; + } + leaf loggingLevel { + type uint32 { + range "0..7"; + } + default "3"; + description + "configures the logging level for ip sla sender. + The property can be set only if feature sla sender + is enabled."; + } + leaf resetSender { + type boolean; + default "false"; + description "Resets all sla probe related configuration."; + } + + // Holds service instance information + container operation-items { + list Probe-list { + key "id"; + + uses sla_Probe-group; + description "Probe configuration list"; + } + description "Probe configuration"; + } + + // Scheduler starts a probe of any type for a destination monitroring + container groupschedule-items { + list GrpScheduler-list { + key "grpSchedulerId"; + + uses sla_GrpScheduler-group; + description + "sla group scheduler configurations - Configures the + group scheduling parameters + for multiple IP SLAs operations list"; + } + description + "sla group scheduler configurations - Configures the + group scheduling parameters + for multiple IP SLAs operations"; + } + } + + grouping sla_Probe-group { + description "Probe configuration"; + leaf id { + type uint32 { + range "1..2147483647"; + } + description + "Operation index which is unique for each probe, + all the probe related configs and the + statistics are displayed using this index."; + } + leaf restart { + type boolean; + default "false"; + description "Restarting a scheduled probe"; + } + + container icmpecho-items { + + uses sla_IcmpEcho-group; + description "ICMP Echo Operation"; + } + + container tcpconnect-items { + + uses sla_TcpConnect-group; + description "TCP Connect Operation to probe the server"; + } + + container http-items { + + uses sla_Http-group; + description + "The HTTP operation measures the round-trip time(RTT) + between a Cisco device and an HTTP server to retrieve a + web page."; + } + + container udpecho-items { + + uses sla_UdpEcho-group; + description "UDP Echo Operation"; + } + + container udpjitter-items { + + uses sla_UdpJitter-group; + description "UDP Jitter Operation"; + } + + container dns-items { + + uses sla_Dns-group; + description "DNS Operation to probe the DNS server"; + } + + // Scheduler starts a probe of any type for a destination monitroring + container schedule-items { + + uses sla_Scheduler-group; + description "sla scheduler configurations"; + } + + // Reaction trigger + container trigger-items { + list ReactionTrigger-list { + key "targetProbe"; + + uses sla_ReactionTrigger-group; + description + "sla reaction trigger configurations for a probe - + IP SLAs reactions are configured to trigger when a + monitored value exceeds or falls below a specified level + or when a monitored event, such as a timeout or + connection loss, occurs. If IP SLAs measure too high or + too low of any configured reaction, IP SLAs can generate + a notification to a network management application or + trigger another IP SLA operation to gather more data. list"; + } + description + "sla reaction trigger configurations for a probe - + IP SLAs reactions are configured to trigger when a + monitored value exceeds or falls below a specified level + or when a monitored event, such as a timeout or + connection loss, occurs. If IP SLAs measure too high or + too low of any configured reaction, IP SLAs can generate + a notification to a network management application or + trigger another IP SLA operation to gather more data."; + } + + // Reaction iconfiguration and reaction trigger + container reaction-items { + list Reaction-list { + key "reactOn"; + + uses sla_Reaction-group; + description + "sla reaction configurations for a probe - + IP SLAs reactions are configured to trigger when a + monitored value exceeds or falls below a specified level + or when a monitored event, such as a timeout or + connection loss, occurs. If IP SLAs measure too high or + too low of any configured reaction, IP SLAs can generate + a notification to a network management application or + trigger another IP SLA operation to gather more data. list"; + } + description + "sla reaction configurations for a probe - + IP SLAs reactions are configured to trigger when a + monitored value exceeds or falls below a specified level + or when a monitored event, such as a timeout or + connection loss, occurs. If IP SLAs measure too high or + too low of any configured reaction, IP SLAs can generate + a notification to a network management application or + trigger another IP SLA operation to gather more data."; + } + } + + grouping sla_IcmpEcho-group { + description "ICMP Echo Operation"; + + // Service monitoring frequency in seconds + leaf frequency { + + type sla_Frequency; + description + "Frequency of an operation - + The interval at which the configured + destination is tracked by the probe. + Frequency in seconds(default value is 60). + Minimum frequency value for an + IP SLAs HTTP probe operation is 60 seconds + but 1 second for other probes."; + } + + // Service monitoring timeout declaring the service down + leaf timeout { + + type sla_Timeout; + description + "Timeout of an operation - this is the maximum + wait time for completing the operation. + The probe will be marked with Timeout + return code."; + } + leaf verifyData { + type boolean; + description + "Verify Data for Corruption. + When data verification is enabled, each + operation response is checked for corruption. + Use the verify-data command with caution + during normal operations because it generates + unnecessary overhead."; + } + + leaf reqDataSize { + + type sla_ReqDataSize; + description + "Sets the protocol data size in the payload of + an IP SLAs operation's request packet."; + } + + leaf srcInterface { + + type nw_IfId; + description + "Source Interface in which the ingress icmp + packet is received."; + } + + // Service node's vrf + leaf vrf { + + type l3_VrfName; + description "vrf on which the probe is configured."; + } + leaf destip { + type address_Ip; + description + "Destination IP address which is tracked by the + probe.This property is not applicable if the + configured probe type is HTTP or DNS. Modifying + this property is not allowed in case of icmp-echo + probe."; + } + leaf srcip { + type address_Ip; + description + "Source`IP address from which the configured + destination is tracked by the probe. Modifying + this property is not allowed."; + } + + // Service monitoring threshold in milliseconds + leaf threshold { + + type sla_Threshold; + description + "Operation threshold - this is an upper limit + for the observed RTT for the probe. + RTT value of a probe exceeding the configured + threshold will be marked with Overthreshold + return code."; + } + leaf owner { + type string; + description "Owner string of the probe(Max size 127)"; + } + leaf tag { + type string; + description "User defined tag string (Max Size 127)"; + } + leaf ipTos { + type uint32; + description + "TOS if the probe is tracking IPv4 destination + and Traffic Class if the probe is tracking + IPv6 destination."; + } + leaf ipv6TrafficClass { + type uint32; + description + "TOS if the probe is tracking IPv4 destination + and Traffic Class if the probe is tracking + IPv6 destination."; + } + leaf srcHostName { + type string; + description + "Source Host Name, if IP address is resolved + from DNS server. Modifying this property is + not allowed."; + } + leaf destHostName { + type string; + description + "Destination Host Name, if IP address is + resolved from DNS server.Modifying + this property is not allowed in case of icmp-echo + probe."; + } + leaf hoursOfStatsKept { + type uint32 { + range "0..25"; + } + default "2"; + description "Maximum number of statistics hour groups to capture."; + } + leaf distributionsOfStatsKept { + type uint32 { + range "1..20"; + } + default "1"; + description + "Maximum number of statistics distribution + buckets to capture"; + } + leaf statsDistributionInterval { + type uint32 { + range "1..100000"; + } + default "20"; + description + "Statistics distribution interval size, if the precision + configured is in milliseconds, then the unit is in + milliseconds else if it is microseconds, then the unit + is in microseconds."; + } + leaf livesKept { + type uint32 { + range "0..2"; + } + default "0"; + description "Maximum number of history lives to collect."; + } + leaf bucketsKept { + type uint32 { + range "1..60"; + } + default "15"; + description "Bucket size value - Maximum number of history buckets to collect"; + } + leaf filter { + type enumeration { + enum None { + value 1; + description "Shutoff History collection"; + } + enum All { + value 2; + description "Collect every operation in History"; + } + enum OverThreshold { + value 3; + description "Collect operations that are over threshold in History"; + } + enum Failures { + value 4; + description "Collect operations that fail in History"; + } + } + default "None"; + description "Bucket size value - Maximum number of history buckets to collect"; + } + leaf enhancedInterval { + type uint32 { + range "0..3600"; + } + description "Aggregation interval in seconds to collect the aggregated values."; + } + leaf enhancedBuckets { + type uint32 { + range "0..100"; + } + description "Number of buckets to collect data based on the enhanced interval."; + } + } + + grouping sla_TcpConnect-group { + description "TCP Connect Operation to probe the server"; + + // Service monitoring frequency in seconds + leaf frequency { + + type sla_Frequency; + description + "Frequency of an operation - + The interval at which the configured + destination is tracked by the probe. + Frequency in seconds(default value is 60). + Minimum frequency value for an + IP SLAs HTTP probe operation is 60 seconds + but 1 second for other probes."; + } + + // Service monitoring timeout declaring the service down + leaf timeout { + + type sla_Timeout { + range "1..604800000"; + } + description + "Timeout of an operation - this is the maximum + wait time for completing the operation. + The probe will be marked with Timeout + return code."; + } + leaf srcPort { + type uint32; + description + "Source TCP Port configuration for TCP probe, + if the srcPort is not configured then the + random source port will be used."; + } + leaf dstPort { + type uint32; + description + "Destination TCP Port configuration for the TCP + probe, it is must to configure the destination + port."; + } + leaf control { + type boolean; + default "true"; + description + "To turn on/off Control Packets Exchanging + mechanism between the sender and the responder, + control is enabled by default."; + } + + // Service node's vrf + leaf vrf { + + type l3_VrfName; + description "vrf on which the probe is configured."; + } + leaf destip { + type address_Ip; + description + "Destination IP address which is tracked by the + probe.This property is not applicable if the + configured probe type is HTTP or DNS. Modifying + this property is not allowed in case of icmp-echo + probe."; + } + leaf srcip { + type address_Ip; + description + "Source`IP address from which the configured + destination is tracked by the probe. Modifying + this property is not allowed."; + } + + // Service monitoring threshold in milliseconds + leaf threshold { + + type sla_Threshold; + description + "Operation threshold - this is an upper limit + for the observed RTT for the probe. + RTT value of a probe exceeding the configured + threshold will be marked with Overthreshold + return code."; + } + leaf owner { + type string; + description "Owner string of the probe(Max size 127)"; + } + leaf tag { + type string; + description "User defined tag string (Max Size 127)"; + } + leaf ipTos { + type uint32; + description + "TOS if the probe is tracking IPv4 destination + and Traffic Class if the probe is tracking + IPv6 destination."; + } + leaf ipv6TrafficClass { + type uint32; + description + "TOS if the probe is tracking IPv4 destination + and Traffic Class if the probe is tracking + IPv6 destination."; + } + leaf srcHostName { + type string; + description + "Source Host Name, if IP address is resolved + from DNS server. Modifying this property is + not allowed."; + } + leaf destHostName { + type string; + description + "Destination Host Name, if IP address is + resolved from DNS server.Modifying + this property is not allowed in case of icmp-echo + probe."; + } + leaf hoursOfStatsKept { + type uint32 { + range "0..25"; + } + default "2"; + description "Maximum number of statistics hour groups to capture."; + } + leaf distributionsOfStatsKept { + type uint32 { + range "1..20"; + } + default "1"; + description + "Maximum number of statistics distribution + buckets to capture"; + } + leaf statsDistributionInterval { + type uint32 { + range "1..100000"; + } + default "20"; + description + "Statistics distribution interval size, if the precision + configured is in milliseconds, then the unit is in + milliseconds else if it is microseconds, then the unit + is in microseconds."; + } + leaf livesKept { + type uint32 { + range "0..2"; + } + default "0"; + description "Maximum number of history lives to collect."; + } + leaf bucketsKept { + type uint32 { + range "1..60"; + } + default "15"; + description "Bucket size value - Maximum number of history buckets to collect"; + } + leaf filter { + type enumeration { + enum None { + value 1; + description "Shutoff History collection"; + } + enum All { + value 2; + description "Collect every operation in History"; + } + enum OverThreshold { + value 3; + description "Collect operations that are over threshold in History"; + } + enum Failures { + value 4; + description "Collect operations that fail in History"; + } + } + default "None"; + description "Bucket size value - Maximum number of history buckets to collect"; + } + leaf enhancedInterval { + type uint32 { + range "0..3600"; + } + description "Aggregation interval in seconds to collect the aggregated values."; + } + leaf enhancedBuckets { + type uint32 { + range "0..100"; + } + description "Number of buckets to collect data based on the enhanced interval."; + } + } + + grouping sla_Http-group { + description + "The HTTP operation measures the round-trip time(RTT) + between a Cisco device and an HTTP server to retrieve a + web page."; + + // frequency can be either a single value or a range as "x-y" + // schedule-periods min and max is same as this if it is not range use this property frequency + leaf frequency { + + type sla_Frequency { + range "60..604800"; + } + description + "Operation frequency (in seconds) + using which the probes are scheduled."; + } + + // Service monitoring timeout declaring the service down + leaf timeout { + + type sla_Timeout { + range "1..604800000"; + } + description + "Timeout of an operation - this is the maximum + wait time for completing the operation. + The probe will be marked with Timeout + return code."; + } + + leaf httpmethod { + + type sla_HttpMethodVal; + description + "HTTP method - Currently only the get method is + supported.For GET requests,IP SLAs will format + the request based on the specified http URL."; + } + leaf httpurl { + type string; + description + "URL string, expecting the input as + http:[[//location[:port]]/directory]/filename"; + } + leaf proxy { + type string; + description "Proxy information - proxy URL"; + } + leaf cache { + type boolean; + default "true"; + description + "The config to enable/disable the download of + cached HTTP page."; + } + leaf srcPort { + type uint32; + description "Source Port configuration for HTTP probe"; + } + leaf version { + type string; + default "1.0"; + description + "HTTP version number, + Supported HTTP versions are '1.0' and '1.1'."; + } + + // Service node's vrf + leaf vrf { + + type l3_VrfName; + description "vrf on which the probe is configured."; + } + leaf destip { + type address_Ip; + description + "Destination IP address which is tracked by the + probe.This property is not applicable if the + configured probe type is HTTP or DNS. Modifying + this property is not allowed in case of icmp-echo + probe."; + } + leaf srcip { + type address_Ip; + description + "Source`IP address from which the configured + destination is tracked by the probe. Modifying + this property is not allowed."; + } + + // Service monitoring threshold in milliseconds + leaf threshold { + + type sla_Threshold; + description + "Operation threshold - this is an upper limit + for the observed RTT for the probe. + RTT value of a probe exceeding the configured + threshold will be marked with Overthreshold + return code."; + } + leaf owner { + type string; + description "Owner string of the probe(Max size 127)"; + } + leaf tag { + type string; + description "User defined tag string (Max Size 127)"; + } + leaf ipTos { + type uint32; + description + "TOS if the probe is tracking IPv4 destination + and Traffic Class if the probe is tracking + IPv6 destination."; + } + leaf ipv6TrafficClass { + type uint32; + description + "TOS if the probe is tracking IPv4 destination + and Traffic Class if the probe is tracking + IPv6 destination."; + } + leaf srcHostName { + type string; + description + "Source Host Name, if IP address is resolved + from DNS server. Modifying this property is + not allowed."; + } + leaf destHostName { + type string; + description + "Destination Host Name, if IP address is + resolved from DNS server.Modifying + this property is not allowed in case of icmp-echo + probe."; + } + leaf hoursOfStatsKept { + type uint32 { + range "0..25"; + } + default "2"; + description "Maximum number of statistics hour groups to capture."; + } + leaf distributionsOfStatsKept { + type uint32 { + range "1..20"; + } + default "1"; + description + "Maximum number of statistics distribution + buckets to capture"; + } + leaf statsDistributionInterval { + type uint32 { + range "1..100000"; + } + default "20"; + description + "Statistics distribution interval size, if the precision + configured is in milliseconds, then the unit is in + milliseconds else if it is microseconds, then the unit + is in microseconds."; + } + leaf livesKept { + type uint32 { + range "0..2"; + } + default "0"; + description "Maximum number of history lives to collect."; + } + leaf bucketsKept { + type uint32 { + range "1..60"; + } + default "15"; + description "Bucket size value - Maximum number of history buckets to collect"; + } + leaf filter { + type enumeration { + enum None { + value 1; + description "Shutoff History collection"; + } + enum All { + value 2; + description "Collect every operation in History"; + } + enum OverThreshold { + value 3; + description "Collect operations that are over threshold in History"; + } + enum Failures { + value 4; + description "Collect operations that fail in History"; + } + } + default "None"; + description "Bucket size value - Maximum number of history buckets to collect"; + } + } + + grouping sla_UdpEcho-group { + description "UDP Echo Operation"; + + // Service monitoring frequency in seconds + leaf frequency { + + type sla_Frequency; + description + "Frequency of an operation - + The interval at which the configured + destination is tracked by the probe. + Frequency in seconds(default value is 60). + Minimum frequency value for an + IP SLAs HTTP probe operation is 60 seconds + but 1 second for other probes."; + } + + // Service monitoring timeout declaring the service down + leaf timeout { + + type sla_Timeout; + description + "Timeout of an operation - this is the maximum + wait time for completing the operation. + The probe will be marked with Timeout + return code."; + } + leaf dstPort { + type uint32; + description + "Destination UDP Port configuration for the UDP + probe, it is must to configure the destination + port."; + } + leaf srcPort { + type uint32; + description + "Source UDP Port configuration for udp echo + probe and if the srcPort is not configured, + then source port will be used."; + } + leaf control { + type boolean; + default "true"; + description + "To turn on/off Control Packets Exchanging + mechanism between the sender and the responder, + control is enabled by default."; + } + leaf dataPattern { + type string; + description + "Specifies the hexadecimal data pattern in + udp-echo probe to test for data corruption."; + } + leaf verifyData { + type boolean; + description + "Verify Data for Corruption. + When data verification is enabled, each + operation response is checked for corruption. + Use the verify-data command with caution + during normal operations because it generates + unnecessary overhead."; + } + + leaf reqDataSize { + + type sla_ReqDataSize; + description + "Sets the protocol data size in the payload of + an IP SLAs operation's request packet."; + } + + // Service node's vrf + leaf vrf { + + type l3_VrfName; + description "vrf on which the probe is configured."; + } + leaf destip { + type address_Ip; + description + "Destination IP address which is tracked by the + probe.This property is not applicable if the + configured probe type is HTTP or DNS. Modifying + this property is not allowed in case of icmp-echo + probe."; + } + leaf srcip { + type address_Ip; + description + "Source`IP address from which the configured + destination is tracked by the probe. Modifying + this property is not allowed."; + } + + // Service monitoring threshold in milliseconds + leaf threshold { + + type sla_Threshold; + description + "Operation threshold - this is an upper limit + for the observed RTT for the probe. + RTT value of a probe exceeding the configured + threshold will be marked with Overthreshold + return code."; + } + leaf owner { + type string; + description "Owner string of the probe(Max size 127)"; + } + leaf tag { + type string; + description "User defined tag string (Max Size 127)"; + } + leaf ipTos { + type uint32; + description + "TOS if the probe is tracking IPv4 destination + and Traffic Class if the probe is tracking + IPv6 destination."; + } + leaf ipv6TrafficClass { + type uint32; + description + "TOS if the probe is tracking IPv4 destination + and Traffic Class if the probe is tracking + IPv6 destination."; + } + leaf srcHostName { + type string; + description + "Source Host Name, if IP address is resolved + from DNS server. Modifying this property is + not allowed."; + } + leaf destHostName { + type string; + description + "Destination Host Name, if IP address is + resolved from DNS server.Modifying + this property is not allowed in case of icmp-echo + probe."; + } + leaf hoursOfStatsKept { + type uint32 { + range "0..25"; + } + default "2"; + description "Maximum number of statistics hour groups to capture."; + } + leaf distributionsOfStatsKept { + type uint32 { + range "1..20"; + } + default "1"; + description + "Maximum number of statistics distribution + buckets to capture"; + } + leaf statsDistributionInterval { + type uint32 { + range "1..100000"; + } + default "20"; + description + "Statistics distribution interval size, if the precision + configured is in milliseconds, then the unit is in + milliseconds else if it is microseconds, then the unit + is in microseconds."; + } + leaf livesKept { + type uint32 { + range "0..2"; + } + default "0"; + description "Maximum number of history lives to collect."; + } + leaf bucketsKept { + type uint32 { + range "1..60"; + } + default "15"; + description "Bucket size value - Maximum number of history buckets to collect"; + } + leaf filter { + type enumeration { + enum None { + value 1; + description "Shutoff History collection"; + } + enum All { + value 2; + description "Collect every operation in History"; + } + enum OverThreshold { + value 3; + description "Collect operations that are over threshold in History"; + } + enum Failures { + value 4; + description "Collect operations that fail in History"; + } + } + default "None"; + description "Bucket size value - Maximum number of history buckets to collect"; + } + leaf enhancedInterval { + type uint32 { + range "0..3600"; + } + description "Aggregation interval in seconds to collect the aggregated values."; + } + leaf enhancedBuckets { + type uint32 { + range "0..100"; + } + description "Number of buckets to collect data based on the enhanced interval."; + } + } + + grouping sla_UdpJitter-group { + description "UDP Jitter Operation"; + + // Service monitoring frequency in seconds + leaf frequency { + + type sla_Frequency; + description + "Frequency of an operation - + The interval at which the configured + destination is tracked by the probe. + Frequency in seconds(default value is 60). + Minimum frequency value for an + IP SLAs HTTP probe operation is 60 seconds + but 1 second for other probes."; + } + + // Service monitoring timeout declaring the service down + leaf timeout { + + type sla_Timeout; + description + "Timeout of an operation - this is the maximum + wait time for completing the operation. + The probe will be marked with Timeout + return code."; + } + leaf dstPort { + type uint32; + description + "Destion UDP Port configuration for the UDP + probe, it is must to configure the destination + port."; + } + leaf srcPort { + type uint32; + description + "Source UDP Port configuration for udp-jitter + probe and if the srcPort is not configured, + then source port will be used."; + } + leaf control { + type boolean; + default "true"; + description + "To turn on/off Control Packets Exchanging + mechanism between the sender and the responder, + control is enabled by default."; + } + + leaf numPkts { + + type sla_NumPkts; + description "Number of packets per operation"; + } + + leaf interval { + + type sla_Interval; + description "UDP Jitter Interval"; + } + + leaf codecType { + + type sla_CodecType; + description "Codec Type"; + } + + leaf codecNumPkts { + + type sla_CodecNumPkts; + description "Number of packets per operation"; + } + + leaf codecSize { + + type sla_CodecSize; + description "Number of bytes per packet"; + } + + leaf codecInterval { + + type sla_Interval; + description "Interval between packets"; + } + + leaf advFactor { + + type sla_AdvFactor; + description "Advantage factor"; + } + leaf verifyData { + type boolean; + description + "Verify Data for Corruption. + When data verification is enabled, each + operation response is checked for corruption. + Use the verify-data command with caution + during normal operations because it generates + unnecessary overhead."; + } + + leaf reqDataSize { + + type sla_ReqDataSize; + description + "Sets the protocol data size in the payload of + an IP SLAs operation's request packet."; + } + + leaf precision { + + type sla_Precision; + description "Precision configuration"; + } + + leaf operationPktPriority { + + type sla_OpPktPriority; + description "Operation Packet Priority"; + } + + leaf absoluteClockTolerance { + + type sla_ClockToleranceAbsolute; + description "Oneway NTP Clock Tolerance absolute Value"; + } + + leaf percentClockTolerance { + + type sla_ClockTolerancePercent; + description "Oneway NTP Clock Tolerance Value in percentage"; + } + + // Service node's vrf + leaf vrf { + + type l3_VrfName; + description "vrf on which the probe is configured."; + } + leaf destip { + type address_Ip; + description + "Destination IP address which is tracked by the + probe.This property is not applicable if the + configured probe type is HTTP or DNS. Modifying + this property is not allowed in case of icmp-echo + probe."; + } + leaf srcip { + type address_Ip; + description + "Source`IP address from which the configured + destination is tracked by the probe. Modifying + this property is not allowed."; + } + + // Service monitoring threshold in milliseconds + leaf threshold { + + type sla_Threshold; + description + "Operation threshold - this is an upper limit + for the observed RTT for the probe. + RTT value of a probe exceeding the configured + threshold will be marked with Overthreshold + return code."; + } + leaf owner { + type string; + description "Owner string of the probe(Max size 127)"; + } + leaf tag { + type string; + description "User defined tag string (Max Size 127)"; + } + leaf ipTos { + type uint32; + description + "TOS if the probe is tracking IPv4 destination + and Traffic Class if the probe is tracking + IPv6 destination."; + } + leaf ipv6TrafficClass { + type uint32; + description + "TOS if the probe is tracking IPv4 destination + and Traffic Class if the probe is tracking + IPv6 destination."; + } + leaf srcHostName { + type string; + description + "Source Host Name, if IP address is resolved + from DNS server. Modifying this property is + not allowed."; + } + leaf destHostName { + type string; + description + "Destination Host Name, if IP address is + resolved from DNS server.Modifying + this property is not allowed in case of icmp-echo + probe."; + } + leaf hoursOfStatsKept { + type uint32 { + range "0..25"; + } + default "2"; + description "Maximum number of statistics hour groups to capture."; + } + leaf distributionsOfStatsKept { + type uint32 { + range "1..20"; + } + default "1"; + description + "Maximum number of statistics distribution + buckets to capture"; + } + leaf statsDistributionInterval { + type uint32 { + range "1..100000"; + } + default "20"; + description + "Statistics distribution interval size, if the precision + configured is in milliseconds, then the unit is in + milliseconds else if it is microseconds, then the unit + is in microseconds."; + } + leaf enhancedInterval { + type uint32 { + range "0..3600"; + } + description "Aggregation interval in seconds to collect the aggregated values."; + } + leaf enhancedBuckets { + type uint32 { + range "0..100"; + } + description "Number of buckets to collect data based on the enhanced interval."; + } + } + + grouping sla_Dns-group { + description "DNS Operation to probe the DNS server"; + + // Service monitoring frequency in seconds + leaf frequency { + + type sla_Frequency; + description + "Frequency of an operation - + The interval at which the configured + destination is tracked by the probe. + Frequency in seconds(default value is 60). + Minimum frequency value for an + IP SLAs HTTP probe operation is 60 seconds + but 1 second for other probes."; + } + + // Service monitoring timeout declaring the service down + leaf timeout { + + type sla_Timeout { + range "1..604800000"; + } + description + "Timeout of an operation - this is the maximum + wait time for completing the operation. + The probe will be marked with Timeout + return code."; + } + leaf srcPort { + type uint32; + description "Source Port configuration for DNS probe"; + } + leaf nameServerHostName { + type string; + description + "Host name of the name server, from which the + DNS name server IP address is resolved. + Name server IP address which is used to resolve + the target host name or target host ip configured + in the probe. This property is applicable + only incase of DNS probe."; + } + leaf nameServerIp { + type address_Ip; + description + "Name server IP address which is used to resolve + the target host name or target host ip configured + in the probe.This property is applicable only if the + configured probe type is DNS."; + } + leaf targetEntry { + type string; + description + "This property can be either Host name or IP address + (IPv4 address format x.x.x.x),(no IPv6 support) + for which the resolution happens either by name or + by IP to name respectively, in the configured probe. + This property is applicable only incase of DNS probe."; + } + + // Service node's vrf + leaf vrf { + + type l3_VrfName; + description "vrf on which the probe is configured."; + } + leaf destip { + type address_Ip; + description + "Destination IP address which is tracked by the + probe.This property is not applicable if the + configured probe type is HTTP or DNS. Modifying + this property is not allowed in case of icmp-echo + probe."; + } + leaf srcip { + type address_Ip; + description + "Source`IP address from which the configured + destination is tracked by the probe. Modifying + this property is not allowed."; + } + + // Service monitoring threshold in milliseconds + leaf threshold { + + type sla_Threshold; + description + "Operation threshold - this is an upper limit + for the observed RTT for the probe. + RTT value of a probe exceeding the configured + threshold will be marked with Overthreshold + return code."; + } + leaf owner { + type string; + description "Owner string of the probe(Max size 127)"; + } + leaf tag { + type string; + description "User defined tag string (Max Size 127)"; + } + leaf ipTos { + type uint32; + description + "TOS if the probe is tracking IPv4 destination + and Traffic Class if the probe is tracking + IPv6 destination."; + } + leaf ipv6TrafficClass { + type uint32; + description + "TOS if the probe is tracking IPv4 destination + and Traffic Class if the probe is tracking + IPv6 destination."; + } + leaf srcHostName { + type string; + description + "Source Host Name, if IP address is resolved + from DNS server. Modifying this property is + not allowed."; + } + leaf destHostName { + type string; + description + "Destination Host Name, if IP address is + resolved from DNS server.Modifying + this property is not allowed in case of icmp-echo + probe."; + } + leaf hoursOfStatsKept { + type uint32 { + range "0..25"; + } + default "2"; + description "Maximum number of statistics hour groups to capture."; + } + leaf distributionsOfStatsKept { + type uint32 { + range "1..20"; + } + default "1"; + description + "Maximum number of statistics distribution + buckets to capture"; + } + leaf statsDistributionInterval { + type uint32 { + range "1..100000"; + } + default "20"; + description + "Statistics distribution interval size, if the precision + configured is in milliseconds, then the unit is in + milliseconds else if it is microseconds, then the unit + is in microseconds."; + } + leaf livesKept { + type uint32 { + range "0..2"; + } + default "0"; + description "Maximum number of history lives to collect."; + } + leaf bucketsKept { + type uint32 { + range "1..60"; + } + default "15"; + description "Bucket size value - Maximum number of history buckets to collect"; + } + leaf filter { + type enumeration { + enum None { + value 1; + description "Shutoff History collection"; + } + enum All { + value 2; + description "Collect every operation in History"; + } + enum OverThreshold { + value 3; + description "Collect operations that are over threshold in History"; + } + enum Failures { + value 4; + description "Collect operations that fail in History"; + } + } + default "None"; + description "Bucket size value - Maximum number of history buckets to collect"; + } + } + + grouping sla_Scheduler-group { + description "sla scheduler configurations"; + leaf life { + type uint64 { + range "0..2147483647"; + } + default "3600"; + description "Length of time to execute in seconds"; + } + leaf ageOut { + type uint32 { + range "0..2073600"; + } + default "0"; + description + "How long to keep this probe, + when inactive (in seconds)"; + } + leaf startProbe { + type enumeration { + enum Now { + value 1; + description "Now immediate"; + } + enum At { + value 2; + description "At a specific time"; + } + enum Pending { + value 3; + description "Pending "; + } + enum After { + value 4; + description "After some time"; + } + } + default "Pending"; + description "When the probe is to be started"; + } + leaf dayOfTheMonth { + type uint16 { + range "0..31"; + } + default "0"; + description + "At which day of the configured month, + the probe is to be started.Setting the value + as zero means current day of the time. + This property is applicable only when the + startProbe proeprty is set as At"; + } + leaf month { + type enumeration { + enum None { + value 0; + description "Current month"; + } + enum January { + value 1; + description "January"; + } + enum February { + value 2; + description "February"; + } + enum March { + value 3; + description "March"; + } + enum April { + value 4; + description "April"; + } + enum May { + value 5; + description "May"; + } + enum June { + value 6; + description "June"; + } + enum July { + value 7; + description "July"; + } + enum August { + value 8; + description "August"; + } + enum September { + value 9; + description "September"; + } + enum October { + value 10; + description "October"; + } + enum November { + value 11; + description "November"; + } + enum December { + value 12; + description "December"; + } + } + default "None"; + description + "At which month, the probe is to be started. + This property is applicable only when the + startProbe proeprty is set as At"; + } + leaf startTime { + type string; + description + "When to start this probe on a given day and + month in Hour(s):Minute(s):Second(s) + i.e in (H:M:S) format. + This property is applicable only when the + startProbe proeprty is set as At or After."; + } + leaf recurring { + type boolean; + default "false"; + description "Probe to be scheduled automatically every day"; + } + } + + grouping sla_ReactionTrigger-group { + description + "sla reaction trigger configurations for a probe - + IP SLAs reactions are configured to trigger when a + monitored value exceeds or falls below a specified level + or when a monitored event, such as a timeout or + connection loss, occurs. If IP SLAs measure too high or + too low of any configured reaction, IP SLAs can generate + a notification to a network management application or + trigger another IP SLA operation to gather more data."; + leaf targetProbe { + type uint32; + description + "The target entry Number which will be + triggered when the reactionType is configured + as trapAndTrigger or triggerOnly. It is + mandatory that this targetId probe should be + configured prior to setting this property."; + } + } + + grouping sla_Reaction-group { + description + "sla reaction configurations for a probe - + IP SLAs reactions are configured to trigger when a + monitored value exceeds or falls below a specified level + or when a monitored event, such as a timeout or + connection loss, occurs. If IP SLAs measure too high or + too low of any configured reaction, IP SLAs can generate + a notification to a network management application or + trigger another IP SLA operation to gather more data."; + + leaf reactOn { + + type sla_ReactionVariable; + description + "The performance parameters on which the + proactive threshold monitoring and + notifications are done."; + } + + leaf reactionType { + + type sla_ActionType; + description + "The config is to notify the user when the + monitored performance parameter value rises + above or falls below a specified threshold. + The notification can be either as SNMP traps + or trigger to a new probe."; + } + + leaf thresholdType { + + type sla_ThresholdType; + description + "The config says when the configured + reactionType should be triggered."; + } + leaf thresholdCountX { + type uint16 { + range "1..16"; + } + default "5"; + description + "The config denotes the number of times the + monitored performance parameter value rises + above or falls below a specified threshold. + This config applies only for the thresholdType + 1. average + 2. consecutive + 3. xOfy"; + } + leaf thresholdCountY { + type uint16 { + range "1..16"; + } + default "5"; + description + "The config denotes the number of times the + monitored performance parameter value rises + above or falls below a specified threshold. + This config applies only for the thresholdType + xOfy"; + } + + leaf upperThreshold { + + type sla_Threshold; + description "Upper limit for Threshold."; + } + + leaf lowerThreshold { + + type sla_Threshold; + description "Lower limit for Threshold."; + } + } + + grouping sla_GrpScheduler-group { + description + "sla group scheduler configurations - Configures the + group scheduling parameters + for multiple IP SLAs operations"; + leaf grpSchedulerId { + type uint32 { + range "1..65535"; + } + description "Group scheduler index"; + } + leaf probeList { + type string; + description + "Multiple probe ID's to be group scheduled, + List of one or more identification(ID) numbers + of the IP SLAs operations to be included in a + new multioperation schedule. + (Max up to 125 characters). + Indicate ranges of operation ID numbers with a + hyphen. Individual ID numbers and ranges of ID + numbers are delimited by a comma. + For example, enter a list of operation ID + numbers in any of the following ways: + x-y,a-b,c-f or + x,y,a,b,c,f or + x-y,a,b,c-f"; + } + leaf schedulePeriod { + type uint32 { + range "0..604800"; + } + default "0"; + description + "Group schedule period in seconds, + This is the time period in which the group of + the probes configured in probeList are + scheduled at an equal gap between them."; + } + leaf life { + type uint32 { + range "0..2147483647"; + } + default "3600"; + description "Length of time to execute in seconds"; + } + leaf ageOut { + type uint32 { + range "0..2073600"; + } + default "0"; + description + "How long to keep the probes, + when inactive (in seconds)"; + } + + // frequency can be either a single value or a range as "x-y" + // schedule-periods min and max is same as this if it is not range use this property frequency + leaf frequency { + + type sla_Frequency; + description + "Group operation frequency (in seconds) + using which the probes are scheduled."; + } + leaf frequencyRange { + type string; + description + "Group operation frequency (in seconds) + either in range as x-y, frequency-range + is used for random scheduling."; + } + leaf startProbe { + type enumeration { + enum Now { + value 1; + description "Now immediate"; + } + enum At { + value 2; + description "At a specific time"; + } + enum Pending { + value 3; + description "Pending "; + } + enum After { + value 4; + description "After some time"; + } + } + default "Pending"; + description "When the probe is to be started"; + } + leaf dayOfTheMonth { + type uint16 { + range "0..31"; + } + default "0"; + description + "At which day of the configured month, + the probe is to be started.Setting the value + as zero means current day of the time. + This property is applicable only when the + startProbe proeprty is set as At"; + } + leaf month { + type enumeration { + enum None { + value 0; + description "Current month"; + } + enum January { + value 1; + description "January"; + } + enum February { + value 2; + description "February"; + } + enum March { + value 3; + description "March"; + } + enum April { + value 4; + description "April"; + } + enum May { + value 5; + description "May"; + } + enum June { + value 6; + description "June"; + } + enum July { + value 7; + description "July"; + } + enum August { + value 8; + description "August"; + } + enum September { + value 9; + description "September"; + } + enum October { + value 10; + description "October"; + } + enum November { + value 11; + description "November"; + } + enum December { + value 12; + description "December"; + } + } + default "None"; + description + "At which month, the probe is to be started. + This property is applicable only when the + startProbe proeprty is set as At"; + } + leaf startTime { + type string; + description + "When to start this probe on a given day and + month in Hour(s):Minute(s):Second(s) + i.e in (H:M:S) format. + This property is applicable only when the + startProbe proeprty is set as At or After."; + } + leaf modifyGrpSchedule { + type enumeration { + enum create { + value 0; + description "Create"; + } + enum add { + value 1; + description "Add"; + } + enum delete { + value 2; + description "Delete"; + } + } + default "create"; + description "modify the existing group schedule"; + } + leaf reschedule { + type boolean; + default "false"; + description "Restarting a scheduled probe"; + } + } + + grouping sla_Responder-group { + description "sla Responder specific configs are handled with this mo"; + leaf loggingLevel { + type uint32 { + range "0..7"; + } + default "2"; + description + "configures the logging level for ip sla responder. + The property can be set only if feature sla responder + is enabled."; + } + leaf adminState { + type boolean; + default "true"; + description + "Enable or disable the ip sla responder. + To enable responder, feature sla responder is to be enabled"; + } + + container twampresponder-items { + + uses sla_TwampResponder-group; + description "sla Responder twamp specific configs are handled with this mo"; + } + container type-items { + list PermanentResponder-list { + key "protocol port ipAddress"; + + uses sla_PermanentResponder-group; + description + "sla Responder permanent port configs for tcp-connect + and udp-echo are handled with this mo.If this MO used + the IP address will always be wild-card, only the port + is configurable. list"; + } + description + "sla Responder permanent port configs for tcp-connect + and udp-echo are handled with this mo.If this MO used + the IP address will always be wild-card, only the port + is configurable."; + } + } + + grouping sla_TwampResponder-group { + description "sla Responder twamp specific configs are handled with this mo"; + leaf adminState { + type boolean; + default "true"; + description + "Enable or disable the twamp responder. + To enable twamp responder, feature sla responder is to be enabled"; + } + + leaf timeout { + + type sla_Timeout { + range "1..604800"; + } + description + "TWAMP Responder Session inactivity timeout in + seconds (default 900)"; + } + } + + grouping sla_PermanentResponder-group { + description + "sla Responder permanent port configs for tcp-connect + and udp-echo are handled with this mo.If this MO used + the IP address will always be wild-card, only the port + is configurable."; + + leaf protocol { + + type sla_RespProto; + description + "Responder protocol types supported types are + udp-echo, tcp-connect"; + } + + leaf port { + + type sla_PortNum; + description + "Port on which the responder is listenening to + receive the packets from the sender. + This property is applicable only for + TCP or UDP protocol. + Required only if ip sla sender probe's control + is disabled. Permanently enables + the responder functionality on the specified + port."; + } + leaf ipAddress { + type address_Ip; + description + "IP on which the responder is listenening to + receive the packets from the sender. + This property is applicable only for + TCP or UDP protocol. + Required only if ip sla sender probe's control + is disabled. Permanently enables + the responder functionality on the specified + port and IP. If the user needs wild card IP address, + then use 0.0.0.0(any IP)"; + } + } + + grouping sla_TwampServer-group { + description "Twamp"; + leaf adminState { + type boolean; + default "true"; + description + "Enable or disable the ip sla twamp server. + To enable twamp-server, feature sla twamp-server is to be enabled"; + } + leaf loggingLevel { + type uint32 { + range "0..7"; + } + default "2"; + description + "configures the logging level for twamp server. + The property can be set only if feature sla twamp-server + is enabled."; + } + + leaf port { + + type sla_PortNum { + range "1..65535"; + } + description + "TWAMP Server Port on which the TCP control + connection is established.(default 862)"; + } + + leaf inactivityTimer { + + type sla_Timeout { + range "1..6000"; + } + description + "TWAMP Server Inactivity Timer, + Max number of inactive seconds (default 900)"; + } + } + + grouping telemetry_Entity-group { + description "Telemetry System"; + + leaf adminSt { + + type telemetry_AdminState; + description "TBD"; + } + leaf batchDmeEvt { + type boolean; + default "true"; + description "DME events batching is enabled or disabled"; + } + + // certificate + container certificate-items { + + uses telemetry_Certificate-group; + description "Certificate used by Telemetry System"; + } + + // default destination profile + // This is the placeholder for global destination/transport options. + // It supports the following options: + // - vrf : Specify the vrf for the transport. + // The default is "", meaning each platform + // could pick it own default setting. + container destprof-items { + + uses telemetry_DestProfile-group; + description "Default Destination Profile"; + } + + // sensor-groups + container sensor-items { + list SensorGroup-list { + key "id"; + + uses telemetry_SensorGroup-group; + description "Sensor Group list"; + } + description "Sensor Group"; + } + + // destination-groups + container dest-items { + list DestGroup-list { + key "id"; + + uses telemetry_DestGroup-group; + description "Destination Group list"; + } + description "Destination Group"; + } + + // subscriptions + container subs-items { + list Subscription-list { + key "id"; + + uses telemetry_Subscription-group; + description "Subscription list"; + } + description "Subscription"; + } + } + + grouping telemetry_Certificate-group { + description "Certificate used by Telemetry System"; + + leaf filename { + + type os_OsString { + length "1..255"; + } + description "Name of the .pem certificate file"; + } + + leaf hostname { + + type os_OsString { + length "1..255"; + } + description "Hostname associated with the certificate"; + } + } + + grouping telemetry_DestProfile-group { + description "Default Destination Profile"; + + // Not used. + // Need this dummy property for VSH/CLI + leaf adminSt { + + type telemetry_AdminState; + description "Admin state"; + } + + // Destination option : vrf name + container vrf-items { + + uses telemetry_DestOptVrf-group; + description "Destination option for vrf"; + } + + // Destination option : compression name + container compression-items { + + uses telemetry_DestOptCompression-group; + description "Destination option for compression"; + } + + // Destination option : source interface + container sourceinterface-items { + + uses telemetry_DestOptSourceInterface-group; + description "Destination option for source interface"; + } + + container retry-items { + + uses telemetry_DestOptRetry-group; + description "Destination option for send retry"; + } + + // Destination option : nodeid name + container nodeid-items { + + uses telemetry_DestOptNodeId-group; + description "Destination option for nodeid string"; + } + } + + grouping telemetry_DestOptVrf-group { + description "Destination option for vrf"; + + leaf name { + + type telemetry_VrfName; + description "VRF name"; + } + } + + grouping telemetry_DestOptCompression-group { + description "Destination option for compression"; + + leaf name { + + type telemetry_Compression; + description "Compression name"; + } + } + + grouping telemetry_DestOptSourceInterface-group { + description "Destination option for source interface"; + + leaf name { + + type nw_IfId; + description "Source interface name"; + } + } + + grouping telemetry_DestOptRetry-group { + description "Destination option for send retry"; + leaf size { + type uint32 { + range "10..1500"; + } + default "10"; + description "Send retry buffer size (in MB)"; + } + } + + grouping telemetry_DestOptNodeId-group { + description "Destination option for nodeid string"; + leaf name { + type string { + length "1..128"; + } + description "NodeID name"; + } + } + + grouping telemetry_SensorGroup-group { + description "Sensor Group"; + + leaf id { + + type telemetry_IDType; + description "Sensor group identifier"; + } + + leaf dataSrc { + + type telemetry_DataSource; + description "Data source for this sensor group"; + } + container path-items { + list SensorPath-list { + key "path"; + + uses telemetry_SensorPath-group; + description "The DME/Open-Config/Device-Yang/Usability path list"; + } + description "The DME/Open-Config/Device-Yang/Usability path"; + } + } + + grouping telemetry_SensorPath-group { + description "The DME/Open-Config/Device-Yang/Usability path"; + + leaf path { + + type telemetry_SnsrPathType; + description "The path to the monitored data"; + } + + // Query condition (opaque query arguments as in REST url) + leaf queryCondition { + + type telemetry_queryCondType { + pattern ".*[!-~]{0,256}.*"; + } + description "The condition(s) for retrieving notifications"; + } + + // Event Collector (queryFilter) + leaf filterCondition { + + type telemetry_filterCondType { + pattern ".*[!-~]{0,512}.*"; + } + description "The condition(s) for filtering the queried notifications"; + } + + leaf depth { + + type telemetry_RetrieveDepth; + description "The number of levels of managed objects retrieved (For path property value == 'Usability path' only level 0 is valid value)"; + } + leaf alias { + type string { + length "0..64"; + } + description "The alias of the en-coding path"; + } + } + + grouping telemetry_DestGroup-group { + description "Destination Group"; + + leaf id { + + type telemetry_IDType; + description "Destination group ID"; + } + container addr-items { + list Dest-list { + key "addr port"; + + uses telemetry_Dest-group; + description "Destination list"; + } + description "Destination"; + } + + // destination-group option : use-chunking + container chunking-items { + + uses telemetry_DestGrpOptChunking-group; + description "Destination-group option for chunking"; + } + + // destination-group option : certificate + container certificate-items { + + uses telemetry_DestGrpOptCertificate-group; + description "Destination-group option for certificate"; + } + + // destination-group option : vrf name + container vrf-items { + + uses telemetry_DestGrpOptVrf-group; + description "Destination-group option for vrf"; + } + + // destination-group option : compression + container compression-items { + + uses telemetry_DestGrpOptCompression-group; + description "Destination-group option for compression"; + } + } + + grouping telemetry_Dest-group { + description "Destination"; + leaf addr { + type address_Ip; + description "Destination IP address"; + } + leaf port { + type uint16; + description "Destination port number"; + } + + // Need equivalent type for YANG telemetry-stream-protocol in DME + leaf proto { + + type telemetry_Protocol; + description "Destination protocol type"; + } + + // No equivalent property in YANG + leaf enc { + + type telemetry_Encoding; + description "Destination encoding type"; + } + } + + grouping telemetry_DestGrpOptChunking-group { + description "Destination-group option for chunking"; + leaf chunkSize { + type uint32 { + range "64..4096"; + } + default "64"; + description "Chunking size in kbytes"; + } + } + + grouping telemetry_DestGrpOptCertificate-group { + description "Destination-group option for certificate"; + + leaf filename { + + type os_OsString { + length "1..255"; + } + description "Name of the .pem certificate file"; + } + + leaf hostname { + + type os_OsString { + length "1..255"; + } + description "Hostname associated with the certificate"; + } + } + + grouping telemetry_DestGrpOptVrf-group { + description "Destination-group option for vrf"; + + leaf name { + + type telemetry_VrfName; + description "Destination-group VRF name"; + } + } + + grouping telemetry_DestGrpOptCompression-group { + description "Destination-group option for compression"; + + leaf name { + + type telemetry_Compression; + description "Destination-group Compression name"; + } + } + + grouping telemetry_Subscription-group { + description "Subscription"; + + leaf id { + + type telemetry_SubIDType; + description "Subscription identifier"; + } + + container rssensorGroupRel-items { + + list RsSensorGroupRel-list { + key "tDn"; + + uses telemetry_RsSensorGroupRel_source-group; + description "Link to sensorGroup entry list"; + } + description "Link to sensorGroup entry"; + } + + container rsdestGroupRel-items { + + list RsDestGroupRel-list { + key "tDn"; + + uses telemetry_RsDestGroupRel_source-group; + description "Link to destGroup entry list"; + } + description "Link to destGroup entry"; + } + } + + grouping track_Entity-group { + description "Object track entity"; + + // This object represents object of track. + // The object tracking monitors the status of the tracked objects + // and communicates any changes made to interested clients. + // Each tracked object is identified by a unique number + // (track:Object.id) that clients can use to configure the action + // to take when a tracked object changes state. + // Object types that can be tracked: + // * Interface line protocol state: Tracks whether the line + // protocol state is UP or Down. + // * Interface IPv4/IPv6 routing state: Tracks whether the interface + // has an IPv4 address and if IPv4 routing is enabled and active. + // * IPv4/IPv6 route reachability: Tracks whether an IPv4 route + // exists and is reachable from the local switch. + // * Object track list: Tracks combined states of multiple objects. + // Capabilities supported: boolean-and, boolean-or, + // threshold-percentage, threshold-weight. + // * Object tracking of IP SLA. + // Specify track:Object.id + container object-items { + list Object-list { + key "id"; + + uses track_Object-group; + description "Placeholder for object which can be of type Interface line protocol state, Interface IPv4/IPv6 routing state, IPv4/IPv6 route reachability, Object track list and Object tracking of IP SLA list"; + } + description "Placeholder for object which can be of type Interface line protocol state, Interface IPv4/IPv6 routing state, IPv4/IPv6 route reachability, Object track list and Object tracking of IP SLA"; + } + } + + grouping track_Object-group { + description "Placeholder for object which can be of type Interface line protocol state, Interface IPv4/IPv6 routing state, IPv4/IPv6 route reachability, Object track list and Object tracking of IP SLA"; + + // Track Object ID. + // Each instance is identified by a unique number, + // the object ID. Each instance is a parent of only one + // of 'track:If', 'track:List', + // 'track:IpRoute' or 'track:IpSla' + leaf id { + + type track_TrackId; + description "Track object ID"; + } + leaf clients { + config "false"; + type uint16; + description "Number of clients tracking this object"; + } + + // Object tracking for an interface, supports Ethernet, + // subinterfaces, port-channels, loopback interfaces, and + // VLAN interfaces. Either the interface line protocol state or + // the interface IP routing state. When IP routing state is + // tracked, these conditions are required for the object to be UP: + // * IP routing must be enabled and active on the interface. + // * The interface line-protocol state must be UP. + // * The interface IP address must be known. + // If all three conditions are not met, IP routing state is Down. + container if-items { + + uses track_If-group; + description "Interfaces of type Physical, Sub-interfaces, Port-channels, Loopback and VLAN support tracking object"; + } + + // IP route track object. + // Tracks whether an IPV4/IPV6 route exists and is reachable from + // the local switch + container iprt-items { + + uses track_IpRoute-group; + description "IP route tracking object tracks whether an IPV4/IPV6 route exists and is reachable from the local switch"; + } + + // IP SLA track object. + // Object tracking of IP SLAs operations allow clients to + // track the output from IP SLAs objects and + // use this information to trigger an action. + // Two aspects of IP SLAs can be tracked: state and reachability. + // For state, if the return code is OK, then the track state is UP; + // if the return code is not OK, then the track state is Down. + // For reachability, if the return code is OK or OverThreshold, reachability is UP; + // if not OK, reachability is Down. + container ipsla-items { + + uses track_IpSla-group; + description "Object tracking of IP SLAs operations allow clients to track the output from IP SLAs objects"; + } + + // An object track list allows User to track the combined states + // of multiple objects. Object track lists support the following + // capabilities: + // * Boolean "and" function: Each object defined within the track + // list must be in an UP state so that the track list object + // can become UP. + // track:List.type should be specified as 'and' + // * Boolean "or" function: At least one object defined within the + // track list must be in UP state so that the tracked object + // can become UP. + // track:List.type should be specified as 'or' + // * Threshold percentage: The percentage of UP objects in the + // tracked list must be greater than the configured UP + // threshold for the tracked list to be in the UP state. If the + // percentage of Down objects in the tracked list is above the + // configured track list Down threshold, the tracked list is + // marked as Down. + // track:List.type should be specified as 'percentage'. The value + // for 'percentageUp' and 'percentageDown' + // * Threshold weight: Assign a weight value to each object in the + // tracked list, and a weight threshold for the track list. If + // the combined weights of all UP objects exceeds the track list + // weight UP threshold, the track list is in an UP state. If the + // combined weights of all the Down objects exceeds the track list + // weight Down threshold, the track list is in the Down state. + // track:List.type should be specified as 'weight'. The value for + // 'weightUp' and 'weightDown'. + // Mo for List type track + container list-items { + + uses track_List-group; + description "list object allows User to track the combined states of multiple objects"; + } + } + + grouping track_If-group { + description "Interfaces of type Physical, Sub-interfaces, Port-channels, Loopback and VLAN support tracking object"; + + // Interface ID to be tracked. + // This specifies the name of the object tracking interface, + // examples: 'eth1/1', 'eth1/1.1', 'po10', 'lo0'. + // The interface MO must be present in objstore to configure + // this else an error will be reported. + leaf id { + + type nw_IfId; + description "Interface to track"; + } + + // Interface protocol type that an object can track + leaf protocolType { + + type track_IntfProtocolType; + description "Protocol type for interface object"; + } + } + + grouping track_IpRoute-group { + description "IP route tracking object tracks whether an IPV4/IPV6 route exists and is reachable from the local switch"; + + // IPVX Address family of the route that is to be configured + leaf af { + + type track_Af; + description "Address family"; + } + leaf prefix { + type address_Ip; + description "IP route prefix"; + } + + // This specifies IP Route State + leaf routeState { + + type track_RouteState; + description "Route State"; + } + leaf vrf { + type string; + description "Vrf for track"; + } + + // This specifies the process owning the route + leaf routeOwner { + + type track_RouteOwner; + description "Owner of the route"; + } + } + + grouping track_IpSla-group { + description "Object tracking of IP SLAs operations allow clients to track the output from IP SLAs objects"; + leaf probeId { + type uint32 { + range "1..2147483647"; + } + description "SLA probe ID"; + } + + // SLA Probe States + leaf probeState { + + type track_ProbeState; + description "SLA reachability/state type"; + } + } + + grouping track_List-group { + description "list object allows User to track the combined states of multiple objects"; + + // Type of list object. + // Only 'boolean-and' object can be changed to 'boolean-or' + // and vice versa is possible. Any other type of object can't + // be modified to some other type. + leaf type { + + type track_ListObj; + description "Type of list object"; + } + leaf percentageUp { + type uint16 { + range "0..100"; + } + default "1"; + description "Percentage Up"; + } + leaf percentageDown { + type uint16 { + range "0..100"; + } + default "0"; + description "Percentage Down"; + } + leaf weightUp { + type uint16 { + range "0..255"; + } + default "1"; + description "weight up value"; + } + leaf weightDown { + type uint16 { + range "0..255"; + } + default "0"; + description "weight down value"; + } + + // track list member objects, object-id is a naming property here + container obj-items { + list Member-list { + key "id"; + + uses track_Member-group; + description "MO for tracking list members list"; + } + description "MO for tracking list members"; + } + } + + grouping track_Member-group { + description "MO for tracking list members"; + + // ID of track-list member + leaf id { + + type track_TrackId; + description "Track ID of object to be tracked"; + } + leaf weight { + type uint16 { + range "1..255"; + } + default "10"; + description "Assign weight to a particular object"; + } + leaf not { + type boolean; + default "false"; + description "Negate state of object"; + } + } + + grouping udld_Entity-group { + description "Unidirectional Link Detection Entity"; + + // This class shall store the global configuration + // for a running UDLD instance + container inst-items { + + uses udld_Inst-group; + description "Unidirectional Link Detection Instance"; + } + } + + grouping udld_Inst-group { + description "Unidirectional Link Detection Instance"; + + // aggressive mode + leaf aggressive { + + type udld_AdminSt; + description "Global Aggressive Mode"; + } + + // probe message interval + leaf msgIntvl { + + type udld_MsgIntvl; + description "Probe Message Interval"; + } + leaf error { + config "false"; + type uint64; + default "0"; + description "failure code"; + } + container physif-items { + list PhysIf-list { + key "id"; + + uses udld_PhysIf-group; + description "Unidirectional Link Detection Interface list"; + } + description "Unidirectional Link Detection Interface"; + } + } + + grouping udld_PhysIf-group { + description "Unidirectional Link Detection Interface"; + + // aggressive mode + leaf aggressive { + + type udld_AdminSt; + description "Interface Aggressive Mode"; + } + + // bidirectional detection + leaf biDirDetect { + + type udld_PortEnable; + description "Bidirectional Detection Enabled"; + } + + // port type is fiber or non-fiber/copper + leaf fiber { + config "false"; + + type udld_OperSt; + description "Fiber Port"; + } + leaf error { + config "false"; + type uint64; + default "0"; + description "failure code"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + } + + grouping vmtracker_VmTracker-group { + description "VmTracker entity"; + leaf autoconfigEnabled { + type boolean; + default "false"; + description "Enable vmtracker fabric auto-config"; + } + + // vmtracker interface object + container vmtracker-items { + list VmTrackerIf-list { + key "vmtrackerInterface"; + + uses vmtracker_VmTrackerIf-group; + description "vmracker settings for an interface. list"; + } + description "vmracker settings for an interface."; + } + + // This object holds vmtracker connection information + container connection-items { + list Connection-list { + key "connName"; + + uses vmtracker_Connection-group; + description "VmTracker Connection list"; + } + description "VmTracker Connection"; + } + } + + grouping vmtracker_VmTrackerIf-group { + description "vmracker settings for an interface."; + + leaf vmtrackerInterface { + + type nw_IfId; + description "A vmtracker interface"; + } + leaf enable { + type boolean; + default "true"; + description "Enable vmtracker on this interface."; + } + } + + grouping vmtracker_Connection-group { + description "VmTracker Connection"; + leaf connName { + type string { + length "0..64"; + } + description "Name of a connection the remote VMware Host"; + } + leaf remoteIp { + type address_Ip; + description "Destination IP address of this connection"; + } + leaf remotePort { + type uint32 { + range "0..65535"; + } + description "Destination TCP port of this connection"; + } + + // VRF of vcenter to connect to + leaf remoteVrf { + + type l3_VrfName; + description "VRF to use for the destination of this connection"; + } + leaf remoteUserName { + type string { + length "0..128"; + } + description "Username for logging into this VMware host"; + } + leaf remotePassword { + type string; + description "Password for logging into this VMware server"; + } + + // Password Encrypt Type + leaf remotePasswordType { + + type vmtracker_PasswordType; + description "Password EnCrypt Type"; + } + leaf connect { + type boolean; + default "false"; + description "Attempt to establish this connection"; + } + + // allowed VLANs learned + leaf allowedVlans { + + type l2_VlanBitmap; + description "Limit the possible VLANs learned from the destination by this set"; + } + leaf autoVlan { + type boolean; + default "true"; + description "Enable dynamic creation of VLANs learned"; + } + leaf findNewHost { + type uint32 { + range "0..65355"; + } + default "3600"; + description "Check this frequently for new hosts"; + } + leaf syncFullInfo { + type uint32 { + range "0..65355"; + } + default "3600"; + description "Check this frequently for hosts, VMs, and port groups"; + } + } + + grouping acllog_Entity-group { + description "Acllog entity"; + + // Acllog instance MO + container inst-items { + + uses acllog_Inst-group; + description "Acllog Inst Object"; + } + } + + grouping acllog_Inst-group { + description "Acllog Inst Object"; + + container log-items { + + uses acllog_LogCache-group; + description "Acllog cache object"; + } + } + + grouping acllog_LogCache-group { + description "Acllog cache object"; + leaf threshold { + type uint32 { + range "0..1000000"; + } + default "0"; + description "Number of packets are logged before the expiry of the alert interval the system generates a Syslog message"; + } + leaf entries { + type uint32 { + range "0..1048576"; + } + default "8000"; + description "Maximum number of flows to be monitored by logging process"; + } + leaf detailed { + type boolean; + description "Include detailed ACL information"; + } + leaf includeSgt { + type boolean; + description "Include source group tag info in syslogs"; + } + leaf interval { + type union { + type string; + type uint64 { + range "5..86400"; + } + } + default "300"; + description "Log update interval in seconds"; + } + leaf matchLevel { + type uint8 { + range "0..7"; + } + default "6"; + description "Acllog logging level severity"; + } + } + + grouping conftmpl_TemplateTable-group { + description "Template Table"; + + // TemplateEntry + container templateEntry-items { + list TemplateEntry-list { + key "name"; + + uses conftmpl_TemplateEntry-group; + description "Provides the details about a specific template entry list"; + } + description "Provides the details about a specific template entry"; + } + } + + grouping conftmpl_TemplateEntry-group { + description "Provides the details about a specific template entry"; + leaf name { + type string; + description "Name of the config template"; + } + leaf description { + type string; + description "Description"; + } + leaf refCount { + config "false"; + type uint32; + description "Signifies the number of VRFs associated with this config template"; + } + + // OpTable MO + container opTable-items { + + uses conftmpl_OpTable-group; + description "Template Create/Delete Operation Table"; + } + } + + grouping conftmpl_OpTable-group { + description "Template Create/Delete Operation Table"; + leaf description { + type string; + description "Description"; + } + + // OpEntry + container opEntry-items { + list OpEntry-list { + key "operationType"; + + uses conftmpl_OpEntry-group; + description "Template Operation Entry list"; + } + description "Template Operation Entry"; + } + } + + grouping conftmpl_OpEntry-group { + description "Template Operation Entry"; + + leaf operationType { + + type conftmpl_OperationType; + description "OperationType"; + } + + leaf templateType { + + type conftmpl_TemplateType; + description "The type of config template depending on which resource it operates for"; + } + leaf substituteString { + type string; + description "The string in a config template to be substituted by string sent by controller before applying the template configurations"; + } + leaf configString { + type string; + description "A list of semicolon seperated commands configured in a config template"; + } + leaf description { + type string; + description "Description"; + } + leaf refCount { + type uint32; + description "Description"; + } + } + + grouping fm_Entity-group { + description "Feature entity"; + + // MPLS Static feature information + container mplsstatic-items { + + uses fm_MplsStatic-group; + description "MPLS Static Feature (Static MPLS label allocation)"; + } + + // MPLS OAM feature information + container mplsoam-items { + + uses fm_MplsOam-group; + description "MPLS OAM Feature (MPLS ping and traceroute)"; + } + + // SRTE feature information + container srte-items { + + uses fm_SRTE-group; + description "Segment-Routing Traffic Engineering Feature"; + } + + // MPLS Segment-routing feature information + container mplssgmntrtg-items { + + uses fm_MplsSgmntRtg-group; + description "MPLS Segment-Routing Feature"; + } + + // SRv6 feature information + container srv6-items { + + uses fm_SRv6-group; + description "SRv6 Feature"; + } + + // MPLS LDP feature information + container mplsldp-items { + + uses fm_MplsLdp-group; + description "MPLS-Ldp Feature"; + } + + // MPLS L3vpn feature information + container mplsl3vpn-items { + + uses fm_MplsL3vpn-group; + description "MPLS L3VPN Feature"; + } + + // MPLS EVPN feature information + container mplsevpn-items { + + uses fm_MplsEvpn-group; + description "MPLS EVPN Feature"; + } + + // EVMED feature information + container evmed-items { + + uses fm_Evmed-group; + description "Event manager event detector feature"; + } + + // PNP feature information + container pnp-items { + + uses fm_Pnp-group; + description "Plug and Play feature"; + } + + // Privilege feature information + container privilege-items { + + uses fm_Privilege-group; + description "Enable or Disable privilege level support"; + } + + // BGP feature information + container bgp-items { + + uses fm_Bgp-group; + description "BGP feature"; + } + + // HMM feature information + container hmm-items { + + uses fm_Hmm-group; + description "HMM aka feature fabric forwarding"; + } + + // EVPN feature information + container evpn-items { + + uses fm_Evpn-group; + description "EVPN feature (nv overlay evpn)"; + } + + // Sflow feature information + container sflow-items { + + uses fm_Sflow-group; + description "Sflow feature"; + } + + // NGOAM feature information + container ngoam-items { + + uses fm_Ngoam-group; + description "NGOAM feature"; + } + + // POE feature information + container poe-items { + + uses fm_Poe-group; + description "POE feature"; + } + + // MSDP feature information + container msdp-items { + + uses fm_Msdp-group; + description "MSDP feature"; + } + + // MVPN feature information + container mvpn-items { + + uses fm_Mvpn-group; + description "MVPN feature"; + } + + // DHCP feature information + container dhcp-items { + + uses fm_Dhcp-group; + description "DHCP feature"; + } + + // Interface-Vlan feature information + container ifvlan-items { + + uses fm_InterfaceVlan-group; + description "Interface-Vlan feature"; + } + + container bashshell-items { + + uses fm_BashShell-group; + description "Bash-Shell feature"; + } + + container netconf-items { + + uses fm_Netconf-group; + description "Netconf feature"; + } + + container restconf-items { + + uses fm_Restconf-group; + description "Restconf feature"; + } + + container grpc-items { + + uses fm_Grpc-group; + description "Grpc feature"; + } + + container scpserver-items { + + uses fm_ScpServer-group; + description "SCP-Server Feature"; + } + + container lldp-items { + + uses fm_Lldp-group; + description "Lldp feature"; + } + + // LACP feature information + container lacp-items { + + uses fm_Lacp-group; + description "LACP feature"; + } + + // Nxapi feature information + container nxapi-items { + + uses fm_Nxapi-group; + description "Nxapi feature"; + } + + // Telnet feature information + container telnet-items { + + uses fm_Telnet-group; + description "Telnet Feature"; + } + + // Ssh feature information + container ssh-items { + + uses fm_Ssh-group; + description "Ssh feature"; + } + + // Nxdb feature information + container nxdb-items { + + uses fm_Nxdb-group; + description "Nxdb feature"; + } + + // VnSegment feature information + container vnsegment-items { + + uses fm_VnSegment-group; + description "VnSegment feature"; + } + + // Tacacs+ feature information + container tacacsplus-items { + + uses fm_Tacacsplus-group; + description "Tacacs+ Feature"; + } + + // Ldap feature information + container ldap-items { + + uses fm_Ldap-group; + description "Ldap Feature"; + } + + // Scheduler feature information + container scheduler-items { + + uses fm_Scheduler-group; + description "Scheduler Feature"; + } + + // Imp feature information + container imp-items { + + uses fm_Imp-group; + description "Imp Feature"; + } + + // sftpServer feature information + container sftpserver-items { + + uses fm_SftpServer-group; + description "sftp-server Feature"; + } + + // UDLD feature information + container udld-items { + + uses fm_Udld-group; + description "UDLD feature"; + } + + // NAT feature information + container nat-items { + + uses fm_Nat-group; + description "Nat feature"; + } + + // VRRPv3 feature information + container vrrpv3-items { + + uses fm_Vrrpv3-group; + description "Virtual Router Redundancy Protocol (VRRP) Version 3 feature"; + } + + // VRRP feature information + container vrrp-items { + + uses fm_Vrrp-group; + description "Virtual Router Redundancy Protocol (VRRP) Version 2 feature"; + } + + // HSRP feature information + container hsrp-items { + + uses fm_Hsrp-group; + description "Hot Standby Router Protocol (HSRP) feature"; + } + + // Netflow feature information + container netflow-items { + + uses fm_Netflow-group; + description "Netflow feature"; + } + + // Analytics feature information + container analytics-items { + + uses fm_Analytics-group; + description "Analytics feature"; + } + + // BFD feature information + container bfd-items { + + uses fm_Bfd-group; + description "BFD feature"; + } + + // PTP feature information + container ptp-items { + + uses fm_Ptp-group; + description "PTP feature"; + } + + // Tunnel feature information + container tunnelif-items { + + uses fm_Tunnelif-group; + description "Tunnel feature"; + } + + // nv overlay feature information + container nvo-items { + + uses fm_Nvo-group; + description "Vxlan feature"; + } + + // PBR feature information + container pbr-items { + + uses fm_Pbr-group; + description "PBR feature"; + } + + // PIM feature information + container pim-items { + + uses fm_Pim-group; + description "PIM feature"; + } + + // NGMVPN feature information + container ngmvpn-items { + + uses fm_Ngmvpn-group; + description "Ngmvpn feature"; + } + + // VPC feature information + container vpc-items { + + uses fm_Vpc-group; + description "VPC feature"; + } + + // VTP feature information + container vtp-items { + + uses fm_Vtp-group; + description "VTP feature"; + } + + container pvlan-items { + + uses fm_Pvlan-group; + description "PVLAN feature"; + } + + // NTP feature information + container ntpd-items { + + uses fm_Ntpd-group; + description "NTP Feature"; + } + + // NBM feature information + container nbm-items { + + uses fm_Nbm-group; + description "Nbm feature"; + } + + // Telemetry feature information + container telemetry-items { + + uses fm_Telemetry-group; + description "Telemetry feature"; + } + + // OSPF feature information + container ospf-items { + + uses fm_Ospf-group; + description "Open Shortest Path First (OSPF) Version 2 feature"; + } + + // OSPFv3 feature information + container ospfv3-items { + + uses fm_Ospfv3-group; + description "Open Shortest Path First (OSPFv3) Version 3 feature"; + } + + // Holds "vendor interop controller" info + container vctrl-items { + + uses fm_VendorCntrl-group; + description "Vendor controllor interop"; + } + + // macsec feature information + container macsec-items { + + uses fm_Macsec-group; + description "Macsec feature"; + } + + // Tunnel-Encryption (CloudSec) feature information + container tunnelenc-items { + + uses fm_TunnelEncryption-group; + description "Tunnel-Encryption feature"; + } + + // macsec feature information + container ofm-items { + + uses fm_Ofm-group; + description "Static Tunnel feature"; + } + + // Npiv feature information + container npiv-items { + + uses fm_Npiv-group; + description "Npiv feature"; + } + + // PIM6 feature information + container pim6-items { + + uses fm_Pim6-group; + description "PIM6 feature"; + } + + // ISIS feature information + container isis-items { + + uses fm_Isis-group; + description "ISIS feature"; + } + + // HW_Telemetry feature information + container hwtelemetry-items { + + uses fm_HwTelemetry-group; + description "HW_Telemetry feature"; + } + + container itd-items { + + uses fm_Itd-group; + description "ITD feature"; + } + + container icam-items { + + uses fm_Icam-group; + description "Icam feature"; + } + + // Port Security feature information + container portsec-items { + + uses fm_PortSec-group; + description "Port-Security Feature"; + } + + // Flexlink feature information + container flexlink-items { + + uses fm_Flexlink-group; + description "Flexlink feature"; + } + + // Sla Sender feature information + container slasender-items { + + uses fm_SlaSender-group; + description "Sla-Sender Feature"; + } + + // Sla Responder feature information + container slaresponder-items { + + uses fm_SlaResponder-group; + description "Sla-Responder Feature"; + } + + // Sla twamp-server feature information + container slatwampserver-items { + + uses fm_SlaTwampServer-group; + description "Sla-Twamp-Server Feature"; + } + + // vmtracker feature information + container vmtracker-items { + + uses fm_VmTracker-group; + description "VmTracker Feature"; + } + + // Dot1x feature information + container dot1x-items { + + uses fm_Dot1x-group; + description "Enable or disable dot1x feature"; + } + + // NxSdk feature information + container nxsdk-items { + + uses fm_NxSdk-group; + description "NxSdk feature"; + } + + // OpenFlow feature information + container openflow-items { + + uses fm_OpenFlow-group; + description "Enable or disable OpenFlow feature"; + } + + // Container tracker feature information + container containertracker-items { + + uses fm_ContainerTracker-group; + description "Container Tracker Feature"; + } + + // frequency-synchronization feature information + container fsyncmgr-items { + + uses fm_FsyncMgr-group; + description + "Frequency + Synchronization"; + } + + // EPBR feature information + container epbr-items { + + uses fm_Epbr-group; + description "Epbr feature"; + } + + // Smart Licensing feature information + container smartlicensing-items { + + uses fm_SmartLicensing-group; + description "Smart Licensing feature"; + } + + // Smart Reservation feature information + container smartreservation-items { + + uses fm_SmartReservation-group; + description "Smart Reservation feature"; + } + } + + grouping fm_MplsStatic-group { + description "MPLS Static Feature (Static MPLS label allocation)"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + leaf conflictingFeature { + config "false"; + type string; + description "Name of a feature that is enabled and conflicts with this feature, and so is preventing this feature from being enabled."; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_ServiceInstance-group { + description "Operational instance information"; + leaf id { + config "false"; + type uint32; + description "Instance Id"; + } + + leaf operSt { + config "false"; + + type fm_InstOperState; + description "Operational status of the instance"; + } + } + + grouping fm_MplsOam-group { + description "MPLS OAM Feature (MPLS ping and traceroute)"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + leaf conflictingFeature { + config "false"; + type string; + description "Name of a feature that is enabled and conflicts with this feature, and so is preventing this feature from being enabled."; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_SRTE-group { + description "Segment-Routing Traffic Engineering Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_MplsSgmntRtg-group { + description "MPLS Segment-Routing Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + leaf conflictingFeature { + config "false"; + type string; + description "Name of a feature that is enabled and conflicts with this feature, and so is preventing this feature from being enabled."; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_SRv6-group { + description "SRv6 Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_MplsLdp-group { + description "MPLS-Ldp Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + leaf conflictingFeature { + config "false"; + type string; + description "Name of a feature that is enabled and conflicts with this feature, and so is preventing this feature from being enabled."; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_MplsL3vpn-group { + description "MPLS L3VPN Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + leaf conflictingFeature { + config "false"; + type string; + description "Name of a feature that is enabled and conflicts with this feature, and so is preventing this feature from being enabled."; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_MplsEvpn-group { + description "MPLS EVPN Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + leaf conflictingFeature { + config "false"; + type string; + description "Name of a feature that is enabled and conflicts with this feature, and so is preventing this feature from being enabled."; + } + } + + grouping fm_Evmed-group { + description "Event manager event detector feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Pnp-group { + description "Plug and Play feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Privilege-group { + description "Enable or Disable privilege level support"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Bgp-group { + description "BGP feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Hmm-group { + description "HMM aka feature fabric forwarding"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Evpn-group { + description "EVPN feature (nv overlay evpn)"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Sflow-group { + description "Sflow feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Ngoam-group { + description "NGOAM feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Poe-group { + description "POE feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Msdp-group { + description "MSDP feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Mvpn-group { + description "MVPN feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Dhcp-group { + description "DHCP feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_InterfaceVlan-group { + description "Interface-Vlan feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_BashShell-group { + description "Bash-Shell feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Netconf-group { + description "Netconf feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Restconf-group { + description "Restconf feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Grpc-group { + description "Grpc feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_ScpServer-group { + description "SCP-Server Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Lldp-group { + description "Lldp feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Lacp-group { + description "LACP feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Nxapi-group { + description "Nxapi feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Telnet-group { + description "Telnet Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + } + + grouping fm_Ssh-group { + description "Ssh feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + default "enabled"; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + } + + grouping fm_Nxdb-group { + description "Nxdb feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_VnSegment-group { + description "VnSegment feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Tacacsplus-group { + description "Tacacs+ Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Ldap-group { + description "Ldap Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Scheduler-group { + description "Scheduler Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Imp-group { + description "Imp Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_SftpServer-group { + description "sftp-server Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Udld-group { + description "UDLD feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Nat-group { + description "Nat feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Vrrpv3-group { + description "Virtual Router Redundancy Protocol (VRRP) Version 3 feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Vrrp-group { + description "Virtual Router Redundancy Protocol (VRRP) Version 2 feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Hsrp-group { + description "Hot Standby Router Protocol (HSRP) feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Netflow-group { + description "Netflow feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Analytics-group { + description "Analytics feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Bfd-group { + description "BFD feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Ptp-group { + description "PTP feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Tunnelif-group { + description "Tunnel feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Nvo-group { + description "Vxlan feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Pbr-group { + description "PBR feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Pim-group { + description "PIM feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Ngmvpn-group { + description "Ngmvpn feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Vpc-group { + description "VPC feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Vtp-group { + description "VTP feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Pvlan-group { + description "PVLAN feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Ntpd-group { + description "NTP Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + } + + grouping fm_Nbm-group { + description "Nbm feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Telemetry-group { + description "Telemetry feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Ospf-group { + description "Open Shortest Path First (OSPF) Version 2 feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Ospfv3-group { + description "Open Shortest Path First (OSPFv3) Version 3 feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_VendorCntrl-group { + description "Vendor controllor interop"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + } + + grouping fm_Macsec-group { + description "Macsec feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_TunnelEncryption-group { + description "Tunnel-Encryption feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Ofm-group { + description "Static Tunnel feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Npiv-group { + description "Npiv feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Pim6-group { + description "PIM6 feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Isis-group { + description "ISIS feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_HwTelemetry-group { + description "HW_Telemetry feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Itd-group { + description "ITD feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Icam-group { + description "Icam feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_PortSec-group { + description "Port-Security Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Flexlink-group { + description "Flexlink feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_SlaSender-group { + description "Sla-Sender Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_SlaResponder-group { + description "Sla-Responder Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_SlaTwampServer-group { + description "Sla-Twamp-Server Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_VmTracker-group { + description "VmTracker Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Dot1x-group { + description "Enable or disable dot1x feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_NxSdk-group { + description "NxSdk feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_OpenFlow-group { + description "Enable or disable OpenFlow feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_ContainerTracker-group { + description "Container Tracker Feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_FsyncMgr-group { + description + "Frequency + Synchronization"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_Epbr-group { + description "Epbr feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_SmartLicensing-group { + description "Smart Licensing feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fm_SmartReservation-group { + description "Smart Reservation feature"; + + // To enable/disable feature + leaf adminSt { + + type fm_AdminState; + description "Admin status"; + } + + // Operational state of the service. + // Its in enabled state even if one instance is enabled + leaf operSt { + config "false"; + + type fm_OperState; + description "Operational status"; + } + + leaf maxInstance { + config "false"; + + type fm_Instance; + description "Maximum number of instances supported"; + } + + // This object contains instance specific operational information + // common to features. This MO is created when there is a service instance + // and removed when the service instance is removed. + container service-items { + list ServiceInstance-list { + config "false"; + key "id"; + + uses fm_ServiceInstance-group; + description "Operational instance information list"; + } + description "Operational instance information"; + } + } + + grouping fs_Entity-group { + description "file system entity"; + + // fils system entry + container fs-items { + list Fs-list { + config "false"; + key "mountOn"; + + uses fs_Fs-group; + description "file system objects list"; + } + description "file system objects"; + } + } + + grouping fs_Fs-group { + description "file system objects"; + + // Mount location + leaf mountOn { + config "false"; + + type fs_fileString; + description "Mount location"; + } + leaf oneKBlocks { + config "false"; + type uint64; + description "1K block size"; + } + leaf used { + config "false"; + type uint64; + description "Used size"; + } + leaf available { + config "false"; + type uint64; + description "Available size"; + } + leaf usePercent { + config "false"; + type uint32; + description "Used percentage"; + } + + // File system type + leaf fileSystem { + config "false"; + + type fs_fileString; + description "File system type"; + } + } + + grouping fset_FeatureSet-group { + description "A FeatureSet is a purely software functionality. It is a collection of componenets that perform a specific set of function"; + leaf name { + type string; + description "Feature-set Name"; + } + + // To uninstall/install + leaf adminSt { + + type fset_AdminState; + description "Admin status"; + } + leaf force { + type boolean; + description "force status"; + } + + // Operational state of the featureSet + leaf operSt { + config "false"; + + type fset_OperState; + description "Operational status"; + } + } + + grouping guestshell_GuestShell-group { + description "Guest Shell execution space"; + + // Guest Shell status + container status-items { + + uses guestshell_Status-group; + description "Guest Shell status information"; + } + + // Guest Shell general information + container info-items { + + uses guestshell_Info-group; + description "Guest Shell general information"; + } + + // Guest Shell resource information + container resources-items { + + uses guestshell_ResourceInfo-group; + description "Resource information for the Guest Shell"; + } + } + + grouping guestshell_Status-group { + description "Guest Shell status information"; + + // Operational state + leaf operState { + config "false"; + + type guestshell_GuestShellOperState; + description "Operational state of the Guest Shell"; + } + leaf lastActionStatus { + config "false"; + type string; + description "Status/result of last action performed on the Guest Shell"; + } + } + + grouping guestshell_Info-group { + description "Guest Shell general information"; + leaf packageLocation { + config "false"; + type string; + description "Location of the Guest Shell package file at the time it was installed"; + } + leaf version { + config "false"; + type string; + description "Guest Shell version number"; + } + leaf description { + config "false"; + type string; + description "Guest Shell description"; + } + + // Signing Key + leaf signingKeyType { + config "false"; + + type guestshell_SigningKeyType; + description "Type of key that was used to sign the Guest Shell source package"; + } + } + + grouping guestshell_ResourceInfo-group { + description "Resource information for the Guest Shell"; + + // Memory resource information + leaf memRequested { + config "false"; + + type guestshell_MemoryResource; + description "Requested memory limit"; + } + + leaf memCommitted { + config "false"; + + type guestshell_MemoryResource; + description "Maximum amount of memory currently allowed to be used"; + } + + leaf memAvailable { + config "false"; + + type guestshell_MemoryResource; + description "Amount of memory beneath the quota that may be committed"; + } + + leaf memQuota { + config "false"; + + type guestshell_MemoryResource; + description "Maximum memory limit allowed"; + } + + leaf memUtilized { + config "false"; + + type guestshell_MemoryResource; + description "Amount of memory in use"; + } + + // CPU resource information + leaf cpuRequested { + config "false"; + + type guestshell_CpuResource; + description "Requested share of CPU"; + } + + leaf cpuCommitted { + config "false"; + + type guestshell_CpuResource; + description "Current share of CPU"; + } + + leaf cpuAvailable { + config "false"; + + type guestshell_CpuResource; + description "Amount of CPU share beneath the quota that may be committed"; + } + + leaf cpuQuota { + config "false"; + + type guestshell_CpuResource; + description "Maximum CPU share allowed"; + } + + leaf cpuUtilized { + config "false"; + + type guestshell_CpuResource; + description "Current utilization of CPU resources"; + } + + // Bootflash storage resource information + leaf rootfsRequested { + config "false"; + + type guestshell_BootflashResource; + description "Requested space for rootfs"; + } + + leaf bootflashCommitted { + config "false"; + + type guestshell_BootflashResource; + description "Amount of space used for rootfs and control files"; + } + + leaf bootflashAvailable { + config "false"; + + type guestshell_BootflashResource; + description "Amount of bootflash space available beneath the quota that may be committed"; + } + + leaf bootflashQuota { + config "false"; + + type guestshell_BootflashResource; + description "Maximum bootflash space that may be used"; + } + + leaf rootfsUtilized { + config "false"; + + type guestshell_BootflashResource; + description "Current utilization of the rootfs"; + } + } + + grouping installer_InstallHistoryEntity-group { + description "Installation History information table"; + + // Ephemeral data + leaf numEntriesMax { + config "false"; + type uint32; + description "Maximum number of entries that will be saved"; + } + + // Ephemeral data + container installhistoryentry-items { + + // Ephemeral data + list InstallHistoryEntry-list { + key "number"; + + uses installer_InstallHistoryEntry-group; + description "Installation History information list"; + } + description "Installation History information"; + } + } + + grouping installer_InstallHistoryEntry-group { + description "Installation History information"; + + // Ephemeral data + leaf number { + type uint32; + description "Entry number"; + } + + // Ephemeral data + leaf historyEntry { + config "false"; + type string; + description "Installation History information entry"; + } + } + + grouping installer_Install-group { + description "Image installation information and result"; + leaf imgName { + config "false"; + type string; + description "Image name for target installation image"; + } + leaf packageName { + config "false"; + type string; + description "path for package to be applied after reload"; + } + + // Stage of the install task + leaf stage { + config "false"; + + type installer_Stage; + description "Stage of installation operation"; + } + + // Upgrade error string + leaf upgErr { + config "false"; + + type installer_InstErr; + description "Install upgrade error value"; + } + leaf upgErrStr { + config "false"; + type string; + description "Upgrade error details string"; + } + leaf progress { + config "false"; + type uint32; + description "Upgrade completion progress percentage "; + } + + // Installation table + container mod-items { + list InstallUpgTable-list { + config "false"; + key "module"; + + uses installer_InstallUpgTable-group; + description "Installer upgrade table for each module list"; + } + description "Installer upgrade table for each module "; + } + } + + grouping installer_InstallUpgTable-group { + description "Installer upgrade table for each module "; + leaf module { + config "false"; + type uint32; + description "Module number"; + } + + // Per Module Upg table row + container modtype-items { + list ModUpgTable-list { + config "false"; + key "modType"; + + uses installer_ModUpgTable-group; + description "Module upgrade details for each module type list"; + } + description "Module upgrade details for each module type "; + } + } + + grouping installer_ModUpgTable-group { + description "Module upgrade details for each module type "; + leaf module { + config "false"; + type uint32; + description "Module number"; + } + + // module Type + leaf modType { + config "false"; + + type installer_InstModType; + description "Module type"; + } + leaf runVer { + config "false"; + type string; + description "Current running version"; + } + leaf targetVer { + config "false"; + type string; + description "Target version for installation"; + } + + // Upgrade Required YES/NO + leaf upgReq { + config "false"; + + type installer_InstEnum; + description "Upgrade required result"; + } + + // Status of the mod install task + leaf upgStatus { + config "false"; + + type installer_UpgStatusType; + description "Upgrade status of each module"; + } + leaf failStr { + config "false"; + type string; + description "Module upgrade failure reason details "; + } + } + + grouping interface_Entity-group { + description "Interface"; + leaf descr { + config "false"; + type string; + description "Intf"; + } + + // Physical ethernet interface information holder + container phys-items { + list PhysIf-list { + key "id"; + + uses l1_PhysIf-group; + description "Layer 1 Physical Interface Configuration list"; + } + description "Layer 1 Physical Interface Configuration"; + } + + // Aggregated interface, collection of physical ports; + // aka port channel + container aggr-items { + list AggrIf-list { + key "id"; + + uses pc_AggrIf-group; + description "Aggregated Interface list"; + } + description "Aggregated Interface"; + } + + // Routed concrete interface (aka routed port) + container rtd-items { + list RtdIf-list { + key "id"; + + uses l3_RtdIf-group; + description "Routed Interface list"; + } + description "Routed Interface"; + } + + // Routed loopback interface + container lb-items { + list LbRtdIf-list { + key "id"; + + uses l3_LbRtdIf-group; + description "Routed Loopback Interface list"; + } + description "Routed Loopback Interface"; + } + + // Routed encap interface (aka sub if) + container encrtd-items { + list EncRtdIf-list { + key "id"; + + uses l3_EncRtdIf-group; + description "Encapsulated Routed Interface list"; + } + description "Encapsulated Routed Interface"; + } + + // Routed Vlan Interface (SVI) Svi:If gets created for L2:BD, immediately after + // l2:BD is attached to l3:Ctx. Use case: Communication + // between two Hosts in different BDs. This is achieved + // through routing. The resource limit of svi is same + // as the resource limit of BD + container svi-items { + list If-list { + key "id"; + + uses svi_If-group; + description "Routed Vlan Interface list"; + } + description "Routed Vlan Interface"; + } + container tunnelif-items { + list If-list { + key "id"; + + uses tunnelif_If-group; + description "Tunnel Interface list"; + } + description "Tunnel Interface"; + } + } + + grouping l1_PhysIf-group { + description "Layer 1 Physical Interface Configuration"; + + // Administrative port link Transmit Reset + leaf linkTransmitReset { + + type l1_LinkTransmitReset; + description "Link Transmit Reset"; + } + + // Administrative port link mac-up timer + leaf linkMacUpTimer { + + type l1_LinkMacUpTimer; + description "Administrative port link mac-up timer"; + } + + // Administrative port link mac-up timer max + leaf linkMaxBringUpTimer { + + type l1_LinkMacUpTimer; + description "Administrative port link mac-up timer max"; + } + + // Administrative port link active-jitter-management + leaf linkActiveJitterMgmt { + + type l1_LinkActiveJitterMgmt; + description "Administrative port link active-jitter-management"; + } + + // Administrative port link debounce interval for link debounce Link up + leaf linkDebounceLinkUp { + + type l1_LinkDebounceLinkUp; + description "Link Debounce Interval - LinkUp Event"; + } + + leaf dfeTuningDelay { + + type l1_DfeTuningDelay; + description "DFE (Decision Feedback Equalizer) Tuning Delay"; + } + + leaf dfeAdaptiveTuning { + + type l1_DfeAdaptiveTuning; + description "DFE (Decision Feedback Equalizer) Adaptive Tuning"; + } + + leaf uniDirectionalEthernet { + + type l1_UniDirectionalEthernet; + description "UDE (Uni-Directional Ethernet)"; + } + + leaf linkLoopback { + + type l1_LinkLoopback; + description "Link loopback configuration"; + } + + // Packet timestamping feature state @@@ This comes from the interface configuration policy + leaf packetTimestampState { + + type l1_PacketTimestampState; + description " packet timestamp feature state"; + } + + leaf packetTimestampIngressSourceId { + + type l1_PacketTimestampSourceId; + description " Ingress timestamp Source Id"; + } + + leaf packetTimestampEgressSourceId { + + type l1_PacketTimestampSourceId; + description " Egress timestamp Source Id"; + } + + // port speed-group + leaf speedGroup { + + type l1_SpeedGroup; + description "Speed Group"; + } + + // Beacon port state + leaf beacon { + + type l1_Beacon; + description "Beacon State"; + } + + // Voice VLAN ID + leaf voiceVlanId { + + type l1_VoiceVlanId; + description "Voice VLAN ID"; + } + + // Voice vlan type + leaf voiceVlanType { + + type l1_VoiceVlanType; + description "Voice vlan type"; + } + + // Switchport Priority Extend COS + leaf voicePortCos { + + type l1_VoicePortCos; + description "Voice Port Cos"; + } + + // Switchport Priority Extend trust + leaf voicePortTrust { + + type l1_VoicePortTrust; + description "Voice Port Trust"; + } + + // FEC knob + leaf FECMode { + + type l1_FECMode; + description "FEC Mode"; + } + + // phy media type + leaf mediaType { + + type l1_MediaType; + description "phy interfaces media type"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024 { + length "0..254"; + } + description "descr"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Switching state + leaf switchingSt { + config "false"; + + type l1_SwitchingSt; + description "Switching State"; + } + + // Administrative port state @@@ Comes from port out-of-service policy + leaf adminSt { + + type l1_AdminSt; + description "Administrative Port State"; + } + + // Administrative port speed @@@ This comes from the host interface + // @@@ configuration policy + leaf speed { + + type l1_Speed; + description "Administrative Port Speed"; + } + + // Administrative port duplex @@@ This comes from the host interface + // @@@ configuration policy + leaf duplex { + + type l1_Duplex; + description "Duplex"; + } + + // Administrative port auto-negotiation @@@ It comes from the host interface configuration + // @@@ policy. It is used for automatically negotiating + // @@@ the speed + leaf autoNeg { + + type l1_AutoNeg; + description "Administrative Port Auto-Negotiation"; + } + + // Administrative port mtu @@@ This comes from QOS Policy + leaf mtu { + + type l1_Mtu; + description "Administrative port MTU"; + } + + // Administrative port snmp trap state @@@ This is a port level config. but it could go in + // @@@ SNMP policy in IFC + leaf snmpTrapSt { + + type l1_SnmpTrapSt; + description "Administrative Port Snmp Trap State"; + } + + // Administrative port mode @@@ Internally set by PE + leaf mode { + + type l1_Mode; + description "Administrative port mode"; + } + + // Administrative port layer @@@ Internally set by PE + leaf layer { + + type l1_Layer; + description "Administrative port layer"; + } + + // Administrative mdix mode @@@ Theres no benefit in exposing this property + // @@@ in IFC. Ask Marketing. + leaf mdix { + + type l1_Mdix; + description "Administrative Medium-dependant interface crossover(Mdix) mode"; + } + + // Administrative port delay @@@ is this exposed in IFC? + leaf delay { + + type l1_Delay; + description "Administrative port delay time"; + } + + // Administrative port link debounce interval @@@ This comes from the interface configuration policy + leaf linkDebounce { + + type l1_LinkDebounce; + description "Administrative port link debounce interval"; + } + + // Administrative port dot1q ether-type @@@ This property is not supported in switch ?? + leaf dot1qEtherType { + + type l1_DDot1qEtherType; + description "Administrative port Dot1q ether-type: configures TPID value in VLAN tag field for packets received and sent by interface"; + } + + // Administrative port bandwidth @@@ Comes from QOS Policy + leaf bw { + + type l1_Bw; + description "Bandwidth parameter for a routed interface, port channel or subinterface"; + } + + // Administrative port medium type @@@ The fabric & Host connections are P2p. @@@ No need to expose this property in IFC + leaf medium { + + type l1_Medium; + description "Administrative port medium type"; + } + + // Administrative port inherit bandwidth @@@ It is used for specifying the bandwidth inherited + // @@@ by the subinterfaces from the parent interface @@@ It is not exposed in IFC. All the subinterfaces + // @@@ inherit full parent interface's bandwidth + leaf inhBw { + + type l1_InheritBw; + description "Administrative port inherit bandwidth"; + } + + // Administrative port span mode @@@ This comes from the span policy in IFC + leaf spanMode { + + type l1_SpanMode; + description "Administrative port span mode"; + } + + // Administrative link logging enable @@@ This come from interface configuration policy + leaf linkLog { + + type l1_LinkLog; + description "Administrative link logging enable"; + } + + // Administrative trunk logging enable @@@ This come from interface configuration policy + leaf trunkLog { + + type l1_TrunkLog; + description "Administrative trunk logging enable"; + } + leaf routerMac { + type address_Mac; + default "00:00:00:00:00:00"; + description "Administrative Router MAC address"; + } + + // Type of the port: Fabric vs Leaf @@@ This property is not exposed in IFC + leaf portT { + + type eqpt_PortT; + description "Type of the port: Fabric vs Leaf"; + } + + // Usage of the port: Fabric, Infra, Epg, Controller, Discovery @@@ This property is not exposed in IFC + leaf usage { + + type l1_PortUsage; + description "Port Usage Type"; + } + + // config trunk vlans + leaf trunkVlans { + + type l1_l1IfTrunkVlans; + description "Configed Trunk Vlans"; + } + + // config access vlan + leaf accessVlan { + + type l1_l1IfAccessVlan; + description "Configured Access Vlan"; + } + + // Controller Id + leaf controllerId { + + type aggregate_ControllerIdBitmap; + description "Controller ID"; + } + + // config access vlan + leaf nativeVlan { + + type l1_l1IfNativeVlan; + description "Configured Native Vlan"; + } + + // port user config flags + leaf userCfgdFlags { + + type l1_userCfgdFlags; + description "Port User Config Flags"; + } + + container nfmphysif-items { + + uses nfm_PhysIf-group; + description "Physical Interface Operational(nfm)"; + } + + container ucos-items { + + uses ipqos_UntaggedCos-group; + description "untagged cos"; + } + + container priorflowctrl-items { + + uses ipqos_PriorFlowCtrl-group; + description "priority flow control"; + } + + container priorflowctrlwd-items { + + uses ipqos_PriorFlowCtrlWd-group; + description "priority flow control watchdog"; + } + + container physExtd-items { + + uses l1_PhysIfExtended-group; + description "Layer 1 Physical Interface Extended Configuration"; + } + + // EEE policy + container eeep-items { + + uses l1_EeeP-group; + description "EEE Policy"; + } + + // Storm control policy + container stormctrlp-items { + + uses l1_StormCtrlP-group; + description "Storm Control Policy"; + } + + // Load interval policy + container loadp-items { + + uses l1_LoadP-group; + description "Load Policy"; + } + + container nivp-items { + + uses l1_NivP-group; + description "VIM Physical Interface Config"; + } + + // Vlan Mapping policy + container vlanmapping-items { + + uses l1_VlanMapping-group; + description "Vlan Mapping Table"; + } + + // This MO is temporary. Needs to be removed when + // "vrf member " is objectified + container vrf-items { + + uses l1_Vrf-group; + description "Vrf Name"; + } + + // Physical interface information holder + container phys-items { + + uses ethpm_PhysIf-group; + description "Physical Interface Runtime State (ethpm)"; + } + + container hwifdetails-items { + + uses ethpm_HwIfDetails-group; + description "Interface Hardware Details"; + } + + // AggrMbrIf class + container aggrmbrif-items { + + uses pc_AggrMbrIf-group; + description "Aggregated Member Interface"; + } + + // Niv interface + container niv-items { + + uses vim_NivIf-group; + description "NIV Bound Interface Runtime Info"; + } + + container multisiteiftracking-items { + + uses nvo_MultisiteIfTracking-group; + description "Tracking for Multisite DCI and Fabric Interfaces."; + } + + // Dom info + container dom-items { + list DomDef-list { + config "false"; + key "domPKey"; + + uses fv_DomDef-group; + description "Domain list"; + } + description "Domain"; + } + + container rtInbandConf-items { + + uses l2_RtInbandConf_target-group; + description "Inband Attachment"; + } + + container rtextConf-items { + + uses l2_RtExtConf_target-group; + description "Eth Interface Attachment"; + } + + container rtbrConf-items { + + uses l2_RtBrConf_target-group; + description "Eth Interface Attachment"; + } + + container rtl2EthIf-items { + + list RtL2EthIf-list { + config "false"; + key "tDn"; + + uses l2_RtL2EthIf_target-group; + description "Ethernet Interface list"; + } + description "Ethernet Interface"; + } + + container rtfvNodePortAtt-items { + + list RtFvNodePortAtt-list { + config "false"; + key "tDn"; + + uses fv_RtFvNodePortAtt_target-group; + } + } + + container rsethIfToVethIf-items { + + list RsEthIfToVethIf-list { + key "tDn"; + + uses l1_RsEthIfToVethIf_source-group; + description "Association to the veths bound to this interface list"; + } + description "Association to the veths bound to this interface"; + } + + container rtmbrIfs-items { + + uses pc_RtMbrIfs_target-group; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rtphysRtdConf-items { + + uses l3_RtPhysRtdConf_target-group; + description "Physical Routed Attachment"; + } + + container rtl3EncPhysRtdConf-items { + + list RtL3EncPhysRtdConf-list { + config "false"; + key "tDn"; + + uses l3_RtL3EncPhysRtdConf_target-group; + description "Parent If list"; + } + description "Parent If"; + } + + container rttunnelTunnelMbrIfs-items { + + list RtTunnelTunnelMbrIfs-list { + config "false"; + key "tDn"; + + uses tunnel_RtTunnelTunnelMbrIfs_target-group; + } + } + + container rtioPPhysConf-items { + + uses eqpt_RtIoPPhysConf_target-group; + description "Thw physical interface attachment information"; + } + + container rtPhysIf-items { + + uses synthetic_RtPhysIf_target-group; + } + + container dbgIfIn-items { + + uses rmon_IfIn-group; + description "Interface Input Counters"; + } + + container dbgIfOut-items { + + uses rmon_IfOut-group; + description "Interface Output Counters"; + } + + container dbgIpIn-items { + + uses rmon_IpIn-group; + description "IPV4 Input Counters"; + } + + container dbgDot1d-items { + + uses rmon_Dot1d-group; + description "Dot1d Counters"; + } + + container dbgEtherStats-items { + + uses rmon_EtherStats-group; + description "Ethernet Statistic Counters"; + } + + container dbgDot3Stats-items { + + uses rmon_Dot3Stats-group; + description "Dot3 Statistics Counters"; + } + + container dbgIfHCIn-items { + + uses rmon_IfHCIn-group; + description "Interface HC Input Counters"; + } + + container dbgIfHCOut-items { + + uses rmon_IfHCOut-group; + description "Interface HC Output Counters"; + } + + container dbgIpv6IfStats-items { + + uses rmon_Ipv6IfStats-group; + description "Ipv6 Interface Statistics Counters"; + } + + container dbgIfStorm-items { + + uses rmon_IfStorm-group; + description "Interface Storm Drop Counters"; + } + } + + grouping nfm_PhysIf-group { + description "Physical Interface Operational(nfm)"; + leaf sliceSrcId { + config "false"; + type uint32; + description "Slice Src ID "; + } + leaf slotNum { + config "false"; + type uint32; + description "Slot ID "; + } + leaf asicNum { + config "false"; + type uint32; + description "Asic ID "; + } + leaf sliceNum { + config "false"; + type uint32; + description "Slice ID "; + } + } + + grouping ipqos_UntaggedCos-group { + description "untagged cos"; + + // ucos value + leaf val { + + type ipqos_CosNewNone; + description "untagged cos val"; + } + leaf configStatus { + config "false"; + type uint32; + description "Configuration status"; + } + } + + grouping ipqos_PriorFlowCtrl-group { + description "priority flow control"; + + // priority mode + leaf mode { + + type ipqos_PriorFlowCtrlMode; + description "priority-flow-control mode on/off/auto"; + } + leaf send_tlv { + type boolean; + default "false"; + description "send_tlv used for sending dcbx pfc tlv when pfc mode is on"; + } + } + + grouping ipqos_PriorFlowCtrlWd-group { + description "priority flow control watchdog"; + + // priority mode + leaf watchDogInterval { + + type ipqos_PriorFlowCtrlWdIntvl; + description "watch dog internal on/off"; + } + leaf disableAction { + type boolean; + default "false"; + description "only generate syslog for stuck queue, no action"; + } + + // priority mode + leaf interfaceMutiplier { + + type ipqos_PriorFlowCtrlWdIntfMulti; + description "shutdown mutlipler value"; + } + } + + grouping l1_PhysIfExtended-group { + description "Layer 1 Physical Interface Extended Configuration"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Port-type that the interface is facing + leaf portTypeFabric { + + type l1_PortTypeFabric; + description "Identifies if or not the port is a fabric-facing port"; + } + + leaf routerMacIpv6Extract { + + type l1_RouterMacIpv6Extract; + default "disable"; + description "Disable/enable switchport ipv6 extract"; + } + + leaf switchportBlock { + + type l1_SwitchportBlock; + description "Disable/enable switchport block on interface"; + } + + leaf switchportIsolated { + + type l1_SwitchportIsolated; + description "Switchport Isolated"; + } + + leaf autoExcludeVlans { + + type l1_AutoExcludeVlans; + description "Switchport Autostate Exclude vlans"; + } + + leaf switchportMacLearn { + + type l1_switchportMacLearn; + description "Disable/enable mac learning on interface"; + } + leaf flowCtrlSend { + type boolean; + default "false"; + description "Disable/enable tx flowcontrol block on interface"; + } + leaf flowCtrlReceive { + type boolean; + default "false"; + description "Disable/enable rx flowcontrol block on interface"; + } + + leaf stormCtrlBCastLevel { + + type l1_StormCtrlRate; + description "storm-control broadcast level"; + } + + leaf stormCtrlBCastPPS { + + type l1_StormCtrlPPS; + description "storm-control broadcast PPS"; + } + + leaf stormCtrlMCastLevel { + + type l1_StormCtrlRate; + description "storm-control multicast level"; + } + + leaf stormCtrlMCastPPS { + + type l1_StormCtrlPPS; + description "storm-control multicast PPS"; + } + + leaf stormCtrlUCastLevel { + + type l1_StormCtrlRate; + description "Storm control unicast level"; + } + + leaf stormCtrlUCastPPS { + + type l1_StormCtrlPPS; + description "Storm control unicast PPS"; + } + + leaf stormCtrlAct { + + type l1_StormCtrlAct; + description "Storm control action"; + } + + leaf bufferBoost { + + type l1_BufferBoost; + description "Disable/enable buffer boost on interface"; + } + + leaf switchportVirtualEthernetBridge { + + type l1_SwitchportVirtualEthernetBridge; + description "Disable/enable switchport virtual ethernet bridge on interface"; + } + + leaf allowMultiTag { + + type l1_AllowMultiTag; + description "Allow Multitag"; + } + leaf shutDownLan { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 0; + } + } + default "disable"; + description "Shut/Unshut all LAN VLANs on interface"; + } + + leaf chassisNumber { + + type l1_chassisNo; + description "Chassis number information"; + } + leaf chassisSerial { + type string; + description "Serial number information"; + } + leaf chassisModuleSerial { + type string; + description "Module serial number information"; + } + leaf chassisProfileName { + type string; + description "Profile name information"; + } + + leaf chassisModuleSide { + + type l1_moduleSide; + description "Module Side information"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping l1_EeeP-group { + description "EEE Policy"; + + // Administrative state for port energy efficient + // ethernet (EEE) @@@ Its by default enabled on every port. No need to + // @@@ expose in IFC + leaf eeeState { + + type l1_EEEState; + description "Administrative state for port energy efficient ethernet (EEE) on the Layer 1 physical interface"; + } + + // Administrative port EEE Lpi threshold @@@ Its by default enabled on every port. No need to + // @@@ expose in IFC + leaf eeeLpi { + + type l1_EEELpi; + description "Administrative port EEE LPI threshold of the Layer 1 physical interface"; + } + + // Administrative port EEE Latency @@@ Its by default enabled on every port. No need to + // @@@ expose in IFC + leaf eeeLat { + + type l1_EEELatency; + description "Administrative port EEE latency of the Layer 1 physical interface"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping l1_StormCtrlP-group { + description "Storm Control Policy"; + + // Packet Type - Unknwn Ucast/Mcast/Bcast + leaf type { + + type l1_PktT; + description "Packet Type"; + } + + // Max Rate Allowed + leaf rate { + + type l1_StormCtrlRate; + description "Traffic rate"; + } + + // Max Burst Rate Allowed + leaf burstRate { + + type l1_StormCtrlRate; + description "Max burst size"; + } + + // Max Rate Allowed in PPS + leaf ratePps { + + type l1_StormCtrlPps; + description "Tarffic rate"; + } + + // Max Burst Rate Allowed in PPS + leaf burstPps { + + type l1_StormCtrlPps; + description "Max burst size"; + } + } + + grouping l1_LoadP-group { + description "Load Policy"; + + // Administrative port load interval 1 @@@ This property gets filled up from stats policy + leaf loadIntvl1 { + + type l1_LoadIntvl; + description "Port load sampling interval 1 at bit-rate and packet-rate statistics"; + } + + // Administrative port load interval 2 @@@ This property gets filled up from stats policy + leaf loadIntvl2 { + + type l1_LoadIntvl; + description "Port load sampling interval 2 at bit-rate and packet-rate statistics"; + } + + // Administrative port load interval 3 @@@ This property gets filled up from stats policy + leaf loadIntvl3 { + + type l1_LoadIntvl3; + description "Port load sampling interval 3 at bit-rate and packet-rate statistics"; + } + } + + grouping l1_NivP-group { + description "VIM Physical Interface Config"; + + leaf adminVifs { + config "false"; + + type l1_VifCount; + description "Maximum vifs allowed on this interface"; + } + + leaf mode { + config "false"; + + type l1_VntagMode; + description "Vntag Mode on this Physical Port"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping l1_VlanMapping-group { + description "Vlan Mapping Table"; + leaf Enabled { + type boolean; + default "false"; + description "Vlan Mapping Enable"; + } + + leaf selectiveQinqVlans { + + type l2_VlanBitmap; + description "Selective QinQ VLANs"; + } + + leaf selectiveQinqTranslateVlan { + + type l1_translatevlanid; + description "Selective QinQ Translate Vlan Id"; + } + leaf selectiveQinqAll { + type boolean; + description "Selective QinQ All VLANs"; + } + + container selqinqtable-items { + + uses l1_SelectiveQinqTable-group; + } + + // Vlan Translate Table policy + container vlantranslatetable-items { + + uses l1_VlanTranslateTable-group; + description "Vlan Translate Table"; + } + } + + grouping l1_SelectiveQinqTable-group { + container selqinq-items { + list SelectiveQinq-list { + key "selectiveQinqTranslateVlan"; + + uses l1_SelectiveQinq-group; + description "Vlan Mapping Entry for selective qinq vlans list"; + } + description "Vlan Mapping Entry for selective qinq vlans"; + } + } + + grouping l1_SelectiveQinq-group { + description "Vlan Mapping Entry for selective qinq vlans"; + + leaf selectiveQinqVlans { + + type l2_VlanBitmap; + description "Selective QinQ VLANs"; + } + + leaf selectiveQinqTranslateVlan { + + type l1_translatevlanid; + description "Selective QinQ Translate Vlan Id"; + } + } + + grouping l1_VlanTranslateTable-group { + description "Vlan Translate Table"; + + // Vlan Translate Table policy Vlan Translate Entry policy + container vlan-items { + list VlanTranslateEntry-list { + key "vlanid"; + + uses l1_VlanTranslateEntry-group; + description "Vlan Translate Entry list"; + } + description "Vlan Translate Entry"; + } + } + + grouping l1_VlanTranslateEntry-group { + description "Vlan Translate Entry"; + + leaf vlanid { + + type l1_translatevlanid; + description "Vlan Id"; + } + + leaf innervlanid { + + type l1_translatevlanid; + description "Inner Vlan Id"; + } + + leaf translatevlanid { + + type l1_translatevlanid; + description "Translate Vlan Id"; + } + } + + grouping l1_Vrf-group { + description "Vrf Name"; + + // Vrf Name... + leaf name { + config "false"; + + type l3_VrfName; + description "Vrf Name"; + } + } + + grouping ethpm_PhysIf-group { + description "Physical Interface Runtime State (ethpm)"; + + leaf operLinkDebounce { + config "false"; + + type l1_LinkDebounce; + description "Link Debounce Interval"; + } + + leaf shareState { + config "false"; + + type ethpm_ShareState; + description "Interface share state"; + } + + // FEC knob + leaf operFECMode { + config "false"; + + // Type is a Local-MO-Defined-Type + type l1_FECMode_PhysIf_operFECMode; + description "Operational FEC Mode"; + } + + // cached usercfgdflag + leaf cachedUserCfgdFlags { + config "false"; + + type l1_userCfgdFlags; + description "Cached Port User Config Flags"; + } + leaf ifIndex { + config "false"; + type uint32; + default "0"; + description "Interface index"; + } + + leaf operAutoNeg { + config "false"; + + type l1_AutoNeg; + description "negotiate auto"; + } + + leaf operMtu { + config "false"; + + type l1_Mtu; + description "Operational Maximum transmission unit"; + } + + leaf adminSt { + config "false"; + + type l1_AdminSt; + description "Administrative State"; + } + + leaf operDescr { + config "false"; + + type ethpm_operDescr; + description "Description"; + } + + // Operational port state + leaf operSt { + config "false"; + + type l1_OperSt; + description "Operational Port State"; + } + + // Operational port status reason + leaf operStQual { + config "false"; + + type l1_OperStQual; + description "Operational State Failure Reason"; + } + + // Operational port status syserror code + leaf operStQualCode { + config "false"; + + type l1_OperStQualCode; + description "Operational Port Status Syserror Code"; + } + + // Operational port err disable reason code + leaf operErrDisQual { + config "false"; + + type l1_OperErrDisQual; + description "Operational Port Error Disable Reason Code"; + } + + // Operational port speed + leaf operSpeed { + config "false"; + + type l1_Speed; + description "Operational Port Speed"; + } + + // Operational port mode + leaf operMode { + config "false"; + + type l1_Mode; + description "Operational Port Mode"; + } + + // Operational duplex + leaf operDuplex { + config "false"; + + type l1_Duplex; + description "Operational Duplex State"; + } + + // Operational port flow control + leaf operFlowCtrl { + config "false"; + + type l1_FlowControl; + description "Operational Port Flow Control"; + } + + // Operational phy port enable state + leaf operPhyEnSt { + config "false"; + + type l1_OperSt; + description "Operational Physical Port Enable State"; + } + leaf backplaneMac { + config "false"; + type address_Mac; + description "Port Backplane MAC"; + } + leaf operRouterMac { + config "false"; + type address_Mac; + description "Operational Port Router MAC"; + } + + // port Tx type + leaf txT { + config "false"; + + type l1_TxT; + description "Port Transmit Type"; + } + leaf lastLinkStChg { + config "false"; + type union { + type string; + type uint64; + } + description "Last Link State Change"; + } + leaf portCfgWaitFlags { + config "false"; + type uint32; + description "Port Config Wait Flags"; + } + leaf accessVlan { + config "false"; + type string; + description "VLAN port access state"; + } + leaf nativeVlan { + config "false"; + type string; + description "Port Native Vlan"; + } + leaf cfgNativeVlan { + config "false"; + type string; + description "Native VLAN port configuration"; + } + leaf cfgAccessVlan { + config "false"; + type string; + description "VLAN port configuration access"; + } + leaf primaryVlan { + config "false"; + type string; + description "Port Primary-vlan"; + } + + // port oper bitset + leaf operBitset { + config "false"; + + type ethpm_PortOperBitmap; + description "Port Oper Bitset"; + } + + // vdc id + leaf vdcId { + config "false"; + + type l2_VdcId; + description "Vdc Id"; + } + leaf resetCtr { + config "false"; + type uint32; + description "Reset Counter"; + } + leaf media { + config "false"; + type uint32; + description "Port Media"; + } + leaf encap { + config "false"; + type uint32; + description "Port Encap"; + } + leaf iod { + config "false"; + type uint64; + description "Iod"; + } + + // allowed vlans + leaf allowedVlans { + config "false"; + + type l2_VlanBitmap; + description "Allowed Vlans"; + } + + // operational vlans + leaf operVlans { + config "false"; + + type l2_VlanBitmap; + description "Operational Vlans"; + } + + // errored vlans + leaf errVlans { + config "false"; + + type l2_VlanBitmap; + description "Errored Vlans"; + } + + // trunk status + leaf operTrunkStatus { + config "false"; + + type ethpm_TrunkStatus; + description "Trunking Status"; + } + + // bundle index + leaf bundleIndex { + config "false"; + + type nw_IfId; + description "Interface Bundle Index - table for a particular output primitive"; + } + + // port oper mdix mode + leaf operMdix { + config "false"; + + type l1_Mdix; + description "Port Oper Mdix Mode"; + } + leaf currErrIndex { + config "false"; + type uint32; + description "Current Error Index"; + } + + // last seen errors + leaf lastErrors { + config "false"; + + type ethpm_LastErrorsList; + description "Last Seen Errors"; + } + leaf errDisTimerRunning { + config "false"; + type boolean; + description "Error Disable Recovery Time Running"; + } + leaf bundleBupId { + config "false"; + type uint32; + description "Bundle Bringup Id"; + } + + // Operational Dce Mode + leaf operDceMode { + config "false"; + + type l1_DceMode; + description "Operational Dce Mode"; + } + + // interface type + leaf intfT { + config "false"; + + type l1_IntfT; + description "Interface Type"; + } + + // port diags type + leaf diags { + config "false"; + + type l1_DiagsT; + description "Port Diags Type"; + } + + // Operational port EEE state + leaf operEEEState { + config "false"; + + type l1_EEEState; + description "Operational Port EEE State"; + } + leaf operEEETxWkTime { + config "false"; + type uint32; + description "Operational Port EEE Tx Time"; + } + leaf operEEERxWkTime { + config "false"; + type uint32; + description "Operational Port EEE Rx Time"; + } + + // port user config flags + leaf userCfgdFlags { + config "false"; + + type l1_userCfgdFlags; + description "Port User Config Flags"; + } + + // Interface info + leaf intf { + config "false"; + + type l1_Intf; + description "Interface Present or Deleted"; + } + leaf numOfSI { + config "false"; + type uint32; + description "Number of Sub-interfaces"; + } + leaf gport { + config "false"; + type uint32; + description "gport"; + } + + // configured sub-interface ids + leaf siList { + config "false"; + + type ethpm_SiBitmap; + description "Configured Sub-interface Ids"; + } + leaf dynamicVlan { + config "false"; + type boolean; + description "Operational port Dynamic VLAN from dot1x"; + } + + // Usage of the port: Fabric, Infra, Epg, Controller, Discovery @@@ This property is not exposed in IFC + // Liked from l1:EthIf:usage + leaf usage { + config "false"; + + type l1_PortUsage; + description "Port Usage"; + } + + // This is the class for regualr chassis types. + container chassis-items { + + uses ethpm_Chassis-group; + description "Chassis"; + } + + // This is the class for regualr fcot types. + container fcot-items { + + uses ethpm_Fcot-group; + description "Fcot"; + } + + // This is the class for X2 fcot types. + container fcotx2-items { + + uses ethpm_FcotX2-group; + description "X2 Fcot"; + } + + // This is the class for DD fcot types. + container fcotdd-items { + + uses ethpm_FcotDD-group; + description "DD Fcot"; + } + + // Fault handling for Ethernet Interfaces + container faults-items { + + uses ethpm_Faults-group; + description "Ethpm Fatal faults model object"; + } + + container portcap-items { + + uses ethpm_PortCap-group; + description "Port Capability"; + } + } + + grouping ethpm_Chassis-group { + description "Chassis"; + + leaf operChassisNumber { + config "false"; + + type l1_chassisNo; + description "Operational Chassis number information"; + } + leaf operChassisSerial { + config "false"; + type string; + description "Operational Serial number information"; + } + + leaf operChassisPortStatus { + config "false"; + + type l1_portStatus; + description "Operational Chassis port status information"; + } + + leaf operChassisRemotePortNo { + config "false"; + + type l1_remotePortNo; + description "Operational Chassis remote port no information"; + } + leaf operChassisModel { + config "false"; + type string; + description "Operational Chassis model information"; + } + leaf operChassisModuleModel { + config "false"; + type string; + description "Operational Chassis module model information"; + } + + leaf operChassisAdaptorMode { + config "false"; + + type l1_adaptorMode; + description "Operational Module Side information"; + } + + leaf operServerPortStatus { + config "false"; + + type l1_serverPortStatus; + description "Operational Server port status information"; + } + + leaf operServerPortDeviceType { + config "false"; + + type l1_deviceType; + description "Operational Server device type information"; + } + leaf operChassisModuleserial { + config "false"; + type string; + description "Operational Module Serial number information"; + } + } + + grouping ethpm_Fcot-group { + description "Fcot"; + leaf partNumber { + config "false"; + type string; + description "Part Number"; + } + leaf versionId { + config "false"; + type string; + description "Version ID"; + } + leaf description { + config "false"; + type string; + description "Description"; + } + leaf isFcotPresent { + config "false"; + type boolean; + description "Presence Status"; + } + + // Fcot state + leaf state { + config "false"; + + type ethpm_FcotState; + description "State"; + } + + // Fcot flags + leaf flags { + config "false"; + + type ethpm_FcotFlags; + description "Flags"; + } + + // Fcot type + leaf type { + config "false"; + + type ethpm_FcotType; + description "Type"; + } + leaf typeName { + config "false"; + type string; + description "Type Name"; + } + leaf eid { + config "false"; + type string; + description "Cisco EID"; + } + + // Transceiver type + leaf transceiverType { + config "false"; + + type ethpm_FcotTransceiverType; + description "Transceiver Type"; + } + leaf xcvrId { + config "false"; + type uint8; + description "Transceiver ID"; + } + leaf xcvrExtId { + config "false"; + type uint8; + description "Transceiver Extended ID"; + } + leaf connectType { + config "false"; + type uint8; + description "Connector Type"; + } + + // Xcvr code field + leaf xcvrCode { + config "false"; + + type ethpm_SfpXcvrCodeBytes; + description "Transceiver Code"; + } + leaf encoding { + config "false"; + type uint8; + description "Encoding"; + } + leaf brIn100MHz { + config "false"; + type uint8; + description "Baud Rate"; + } + leaf baseResvd1 { + config "false"; + type uint8; + description "Base Reserved Field"; + } + leaf distInKmFor9u { + config "false"; + type uint8; + description "Distance"; + } + leaf distIn100mFor9u { + config "false"; + type uint8; + description "Distance"; + } + leaf distIn10mFor50u { + config "false"; + type uint8; + description "Distance"; + } + leaf distIn10mFor60u { + config "false"; + type uint8; + description "Distance"; + } + leaf distIn1mForCu { + config "false"; + type uint8; + description "Distance"; + } + leaf baseResvd2 { + config "false"; + type uint8; + description "Base Reserved Field"; + } + leaf vendorName { + config "false"; + type string; + description "Vendor Name"; + } + leaf baseResvd3 { + config "false"; + type uint8; + description "Base Reserved Field"; + } + + // IEEE vendor Id + leaf vendorId { + config "false"; + + type ethpm_SfpVendorIdBytes; + description "Vendor ID"; + } + leaf vendorPn { + config "false"; + type string; + description "Vendor Part Number"; + } + leaf vendorRev { + config "false"; + type string; + description "Vendor Revision"; + } + + // Reserved field 4 + leaf baseResvd4 { + config "false"; + + type ethpm_SfpReserved4Array; + description "Base Reserved Field"; + } + leaf ccid { + config "false"; + type uint8; + description "CCID"; + } + + // Extended option + leaf extOption { + config "false"; + + type ethpm_SfpExtendedOptionBytes; + description "Extended Option"; + } + leaf brMaxMargin { + config "false"; + type uint8; + description "Baud Rate Maximum Margin"; + } + leaf brMinMargin { + config "false"; + type uint8; + description "Baud Rate Minimum Margin"; + } + leaf vendorSn { + config "false"; + type string; + } + leaf dateCode { + config "false"; + type string; + } + leaf diagMonType { + config "false"; + type uint8; + } + leaf enhOption { + config "false"; + type uint8; + } + leaf sff8472Compl { + config "false"; + type uint8; + } + leaf ccex { + config "false"; + type uint8; + } + + // Vendor data + leaf vendorData { + config "false"; + + type ethpm_X2VendorDataBytes; + description "TBD"; + } + leaf maxSpeed { + config "false"; + type uint32; + } + leaf minSpeed { + config "false"; + type uint32; + } + leaf fcotNum { + config "false"; + type uint8; + } + leaf fcotType { + config "false"; + type uint8; + } + leaf gigEthCC { + config "false"; + type uint8; + } + leaf fCTxType { + config "false"; + type uint8; + } + + // Transceiver DOM sensor. + container lane-items { + list FcotSensor-list { + config "false"; + key "laneId sensorId"; + + uses eqpt_FcotSensor-group; + description "The transceiver DOM sensor information list"; + } + description "The transceiver DOM sensor information"; + } + + // Transceiver DOM Statistics + container domstats-items { + + uses eqpt_FcotDomStats-group; + description "DOM statistics"; + } + } + + grouping eqpt_FcotSensor-group { + description "The transceiver DOM sensor information"; + leaf laneId { + config "false"; + type uint16; + description "The transceiver LANE identifier"; + } + + // Fcot DOM Lane type + leaf laneType { + config "false"; + + type eqpt_fcotDomLane; + description "The transceiver LANE type"; + } + leaf sensorId { + config "false"; + type uint16; + description "The transceiver sensor identifier"; + } + leaf description { + config "false"; + type string; + description "The transceiver sensor description"; + } + leaf unit { + config "false"; + type string; + description "The transceiver sensor unit"; + } + leaf value { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "The transceiver sensor current value"; + } + leaf highAlarm { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "The transceiver sensor high alarm threshold"; + } + leaf highWarning { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "The transceiver sensor high warning threshold"; + } + leaf lowAlarm { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "The transceiver sensor low alarm threshold"; + } + leaf lowWarning { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "The transceiver sensor low warning threshold"; + } + leaf max { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "The transceiver sensor max warning threshold"; + } + leaf min { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "The transceiver sensor min warning threshold"; + } + leaf avg { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "The transceiver sensor avg warning threshold"; + } + leaf instant { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "The transceiver sensor instant warning threshold"; + } + + // alert + leaf alert { + config "false"; + + type eqpt_fcotDomAlert; + description "The transceiver sensor alert"; + } + } + + grouping eqpt_FcotDomStats-group { + description "DOM statistics"; + leaf numLanes { + config "false"; + type uint16; + description "Number of Network Lanes"; + } + + // Transceiver DOM Network lane + container lane-items { + list FcotLane-list { + config "false"; + key "laneId"; + + uses eqpt_FcotLane-group; + description "The transceiver DOM lane information list"; + } + description "The transceiver DOM lane information"; + } + } + + grouping eqpt_FcotLane-group { + description "The transceiver DOM lane information"; + leaf laneId { + config "false"; + type uint16; + description "The transceiver LANE identifier"; + } + leaf description { + config "false"; + type string; + description "The transceiver LANE description"; + } + leaf transmitFaultCount { + config "false"; + type uint64; + description "Transmit Fault Counter"; + } + } + + grouping ethpm_FcotX2-group { + description "X2 Fcot"; + leaf partNumber { + config "false"; + type string; + description "Part Number"; + } + leaf versionId { + config "false"; + type string; + description "Version ID"; + } + leaf description { + config "false"; + type string; + description "Description"; + } + leaf isFcotPresent { + config "false"; + type boolean; + description "Presence Status"; + } + + // Fcot state + leaf state { + config "false"; + + type ethpm_FcotState; + description "State"; + } + + // Fcot flags + leaf flags { + config "false"; + + type ethpm_FcotFlags; + description "Flags"; + } + + // Fcot type + leaf type { + config "false"; + + type ethpm_FcotType; + description "Type"; + } + leaf typeName { + config "false"; + type string; + description "Type Name"; + } + leaf eid { + config "false"; + type string; + description "Cisco EID"; + } + + // Transceiver type + leaf transceiverType { + config "false"; + + type ethpm_FcotTransceiverType; + description "Transceiver Type"; + } + leaf xcvrType { + config "false"; + type uint8; + } + leaf connectType { + config "false"; + type uint8; + } + leaf bitEncoding { + config "false"; + type uint8; + } + + // Bit rate (Mbps) + leaf bitRateMbps { + config "false"; + + type ethpm_X2BitRateBytes; + description "TBD"; + } + leaf protocolType { + config "false"; + type uint8; + } + + // 10G eth code + leaf xgEthCode { + config "false"; + + type ethpm_X2XgEthCodeBytes; + description "TBD"; + } + + // Sonet SDH code + leaf sonetSdhCode { + config "false"; + + type ethpm_X2SonetSdhCodeBytes; + description "TBD"; + } + + // 10G fc code + leaf xgFcCode { + config "false"; + + type ethpm_X2XbFcCodeBytes; + description "TBD"; + } + + // Range + leaf range { + config "false"; + + type ethpm_X2RangeBytes; + description "TBD"; + } + + // Fibre type + leaf fibreType { + config "false"; + + type ethpm_X2FibreTypeBytes; + description "TBD"; + } + + // Wavelength channel 0 + leaf waveLenCh0 { + config "false"; + + type ethpm_X2WavelengthChannelBytes; + description "TBD"; + } + + // Wavelength channel 1 + leaf waveLenCh1 { + config "false"; + + type ethpm_X2WavelengthChannelBytes; + description "TBD"; + } + + // Wavelength channel 2 + leaf waveLenCh2 { + config "false"; + + type ethpm_X2WavelengthChannelBytes; + description "TBD"; + } + + // Wavelength channel 3 + leaf waveLenCh3 { + config "false"; + + type ethpm_X2WavelengthChannelBytes; + description "TBD"; + } + + // Package Oui + leaf packageOui { + config "false"; + + type ethpm_X2PackageOuiBytes; + description "TBD"; + } + leaf vendorName { + config "false"; + type string; + } + leaf vendorPn { + config "false"; + type string; + } + leaf vendorRev { + config "false"; + type string; + } + leaf vendorSerNo { + config "false"; + type string; + } + leaf dateCode { + config "false"; + type string; + } + + // Lot code + leaf lotCode { + config "false"; + + type ethpm_X2LotCodeBytes; + description "TBD"; + } + leaf fiveVStressEnv { + config "false"; + type uint8; + } + leaf threeThreeVStressEnv { + config "false"; + type uint8; + } + leaf apsStressEnv { + config "false"; + type uint8; + } + leaf normalApsVolt { + config "false"; + type uint8; + } + leaf diagOptMonCap { + config "false"; + type uint8; + } + leaf lowPwrStartupCap { + config "false"; + type uint8; + } + leaf reserved { + config "false"; + type uint8; + } + leaf checksum { + config "false"; + type uint8; + } + leaf ciscoPid { + config "false"; + type string; + } + leaf ciscoVid { + config "false"; + type string; + } + leaf ciscoSN { + config "false"; + type string; + } + leaf ciscoPN { + config "false"; + type string; + } + leaf ciscoRev { + config "false"; + type string; + } + + // Extended vendor specific info + leaf extVendorSpecific { + config "false"; + + type ethpm_X2ExtendedVendorSpecificInfoBytes; + description "TBD"; + } + leaf maxSpeed { + config "false"; + type uint32; + } + leaf minSpeed { + config "false"; + type uint32; + } + leaf fcotNum { + config "false"; + type uint8; + } + leaf fcotType { + config "false"; + type uint8; + } + leaf gigEthCC { + config "false"; + type uint8; + } + leaf fCTxType { + config "false"; + type uint8; + } + } + + grouping ethpm_FcotDD-group { + description "DD Fcot"; + leaf partNumber { + config "false"; + type string; + description "Part Number"; + } + leaf versionId { + config "false"; + type string; + description "Version ID"; + } + leaf description { + config "false"; + type string; + description "Description"; + } + leaf isFcotPresent { + config "false"; + type boolean; + description "Presence Status"; + } + + // Fcot state + leaf state { + config "false"; + + type ethpm_FcotState; + description "State"; + } + + // Fcot flags + leaf flags { + config "false"; + + type ethpm_FcotFlags; + description "Flags"; + } + + // Fcot type + leaf type { + config "false"; + + type ethpm_FcotType; + description "Type"; + } + leaf typeName { + config "false"; + type string; + description "Type Name"; + } + leaf eid { + config "false"; + type string; + description "Cisco EID"; + } + + // Transceiver type + leaf transceiverType { + config "false"; + + type ethpm_FcotTransceiverType; + description "Transceiver Type"; + } + leaf xcvrType { + config "false"; + type uint8; + } + leaf verId { + config "false"; + type uint8; + } + leaf modAdvCode { + config "false"; + type uint8; + } + leaf vendorName { + config "false"; + type string; + } + leaf vendorPn { + config "false"; + type string; + } + leaf vendorRev { + config "false"; + type string; + } + leaf vendorSerNo { + config "false"; + type string; + } + leaf dateCode { + config "false"; + type string; + } + + // Lot code + leaf lotCode { + config "false"; + + type ethpm_X2LotCodeBytes; + description "TBD"; + } + leaf connectType { + config "false"; + type uint8; + } + leaf diagOptMonCap { + config "false"; + type uint8; + } + leaf checksum { + config "false"; + type uint8; + } + leaf ciscoPid { + config "false"; + type string; + } + leaf ciscoVid { + config "false"; + type string; + } + leaf ciscoSN { + config "false"; + type string; + } + leaf ciscoPN { + config "false"; + type string; + } + leaf ciscoRev { + config "false"; + type string; + } + leaf maxSpeed { + config "false"; + type uint32; + } + leaf minSpeed { + config "false"; + type uint32; + } + leaf fcotNum { + config "false"; + type uint8; + } + leaf fcotType { + config "false"; + type uint8; + } + leaf fCTxType { + config "false"; + type uint8; + } + leaf apSel1 { + config "false"; + type uint32; + } + leaf apSel2 { + config "false"; + type uint32; + } + leaf apSel3 { + config "false"; + type uint32; + } + leaf apSel4 { + config "false"; + type uint32; + } + leaf apSel5 { + config "false"; + type uint32; + } + leaf apSel6 { + config "false"; + type uint32; + } + leaf apSel7 { + config "false"; + type uint32; + } + leaf apSel8 { + config "false"; + type uint32; + } + + // Transceiver DOM sensor. + container lane-items { + list FcotSensor-list { + config "false"; + key "laneId sensorId"; + + uses eqpt_FcotSensor-group; + description "The transceiver DOM sensor information list"; + } + description "The transceiver DOM sensor information"; + } + } + + grouping ethpm_Faults-group { + description "Ethpm Fatal faults model object"; + } + + grouping ethpm_PortCap-group { + description "Port Capability"; + + // If-index + leaf id { + config "false"; + + type nw_IfId; + description "Port Identifier"; + } + + // Speed bitmask + leaf speed { + config "false"; + + type ethpm_capSpeed; + description "Speed Bitmask"; + } + + // Duplex bitmask + leaf duplex { + config "false"; + + type ethpm_capDuplex; + description "Duplex Bitmask for simutaneous communication between interfaces"; + } + leaf trunkEncap { + config "false"; + type uint8; + description "Trunk Encap Bitmask"; + } + leaf channel { + config "false"; + type uint8; + description "Port-Channel Identifier"; + } + leaf suppression { + config "false"; + type uint8; + description "Suppression Bitmask"; + } + leaf rxFlowControl { + config "false"; + type uint8; + description "Port Rx Flow Control Boolean"; + } + leaf txFlowControl { + config "false"; + type uint8; + description "Port Tx Flow Control Boolean"; + } + leaf cosRewrite { + config "false"; + type uint8; + description "Cos Rewrite Boolean"; + } + leaf tosRewrite { + config "false"; + type uint8; + description "Tos Rewrite Boolean"; + } + leaf span { + config "false"; + type uint8; + description "Enables SPAN on port"; + } + leaf udld { + config "false"; + type uint8; + description "Udld Capable"; + } + leaf autoneg { + config "false"; + type uint8; + description "Enables Auto-negotiation on port"; + } + leaf linkDebounce { + config "false"; + type uint8; + description "Link Debounce Timer"; + } + leaf linkDebounceTime { + config "false"; + type uint8; + description "Configured Link Debounce Interval Time"; + } + leaf fcotCapable { + config "false"; + type uint8; + description "Enables the Fibre Channel Optical Transmitter(FCOT) on port"; + } + leaf rateMode { + config "false"; + type uint8; + description "Port Rate Mode"; + } + leaf mdix { + config "false"; + type uint8; + description "Medium Dependent Interface Crossover(MDIX) parameter enables/disables detection of crossover connection between devices"; + } + leaf portGroup { + config "false"; + type uint8; + description "Port Group Indentifier"; + } + leaf ctsCapable { + config "false"; + type uint8; + description "Enables Cisco TrustSec (CTS)"; + } + leaf qosRxPrio { + config "false"; + type uint8; + description "Qos Rx Priority Value"; + } + leaf qosRxQueue { + config "false"; + type uint8; + description "Qos Rx Queue Value"; + } + leaf qosRxThold { + config "false"; + type uint8; + description "Qos Rx Threshold Value"; + } + leaf qosTxPrio { + config "false"; + type uint8; + description "Qos Tx Prority Value"; + } + leaf qosTxQueue { + config "false"; + type uint8; + description "Qos Tx Queue Value"; + } + leaf qosTxThold { + config "false"; + type uint8; + description "Qos Tx Threshold Value"; + } + + // Model + leaf model { + config "false"; + + type ethpm_ModelList; + description "Port Model Number"; + } + + // Type + leaf type { + config "false"; + + type ethpm_TypeList; + description "Type"; + } + + // Port-group members + leaf portGrpMbrs { + config "false"; + + type ethpm_PortGroupBitmap; + description "Port-group Members"; + } + leaf protoSupport { + config "false"; + type uint32; + description "Protocol Support"; + } + leaf portCap { + config "false"; + type uint32; + description "Port Capability Flags"; + } + leaf eeeCapVal { + config "false"; + type uint16; + description "Energy Efficient Ethernet(EEE) Capability Value"; + } + + // EEE 10G wake times + leaf eeeWakeTimes10g { + config "false"; + + type ethpm_EeeWakeTimesList; + description "EEE 10G Wake Times"; + } + leaf eeeFlapFlags { + config "false"; + type uint16; + description "EEE Flap Flags"; + } + } + + grouping ethpm_HwIfDetails-group { + description "Interface Hardware Details"; + leaf slice { + config "false"; + type uint32; + description "Interface Slice"; + } + leaf sPort { + config "false"; + type uint32; + description "Interface Source Port"; + } + leaf vif { + config "false"; + type uint32; + description "Interface VIF"; + } + leaf asic { + config "false"; + type uint32; + description "Interface Asic Number"; + } + leaf macBlockNum { + config "false"; + type uint32; + description "Interface Mac Block Number"; + } + } + + grouping pc_AggrMbrIf-group { + description "Aggregated Member Interface"; + + // Operational state + leaf operSt { + config "false"; + + type pc_OperSt; + description "Operational State"; + } + + // Channeling status + leaf channelingSt { + config "false"; + + type pc_ChannelingSt; + description "Channeling Status"; + } + + // Summarized operational state + leaf summOperSt { + config "false"; + + type pc_SummOperSt; + description "Summarized Oper State"; + } + + // Member up time + leaf uptime { + config "false"; + + type pc_Time; + description "Member Up Time"; + } + + // Member port flags + leaf flags { + config "false"; + + type pc_Flags; + description "Member Port Flags"; + } + + // Bundle port number + leaf bdlPortNum { + config "false"; + + type pc_BdlPortNum; + description "Bundle Port Number"; + } + + // LTL programmed + leaf ltlProgrammed { + config "false"; + + type pc_LtlProgrammed; + description "LTL Programmed"; + } + + leaf name { + config "false"; + + type naming_Name; + description "Name"; + } + } + + grouping vim_NivIf-group { + description "NIV Bound Interface Runtime Info"; + leaf operVifs { + config "false"; + type uint32; + description "Vif Count"; + } + leaf adaptorMac { + config "false"; + type address_Mac; + description "Mac address of the connected adaptor"; + } + } + + grouping nvo_MultisiteIfTracking-group { + description "Tracking for Multisite DCI and Fabric Interfaces."; + + leaf tracking { + + type nvo_MultisiteTrackingT; + description "Configure EVPN multisite tracking for DCI/Fabric interface."; + } + } + + grouping pc_AggrIf-group { + description "Aggregated Interface"; + + // Port channel id + leaf pcId { + + type pc_PcId; + description "Port Channel Id"; + } + + // Channel mode + leaf pcMode { + + type pc_Mode; + description "Aggregated Interface Protocol Channel Mode"; + } + leaf suspIndividual { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 0; + } + } + default "enable"; + description "Suspend Individual Port"; + } + leaf gracefulConv { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 0; + } + } + default "enable"; + description "Graceful Convergence"; + } + leaf loadDefer { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 0; + } + } + default "disable"; + description "Load Defer Member Ports"; + } + leaf lacpDelayMode { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 0; + } + } + default "disable"; + description "Configuring LACP delay mode"; + } + leaf lacpVpcConvergence { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 0; + } + } + default "disable"; + description "LACP vpc convergence"; + } + + // minimum links @@@ MinLinks in the port channel + leaf minLinks { + + type pc_MinLinks; + description "Minimum Links"; + } + + // maximum links @@@ MaxLinks in the port channel + leaf maxLinks { + + type pc_MaxLinks; + description "Maximum Links"; + } + + // Hash distribution configured - adaptive/fixed + leaf hashDist { + + type pc_HashDist; + description "Hash Distribution Configured - Adaptive/fixed"; + } + + // Interface ordinal + leaf iod { + config "false"; + + type pc_Iod; + description "Interface Ordinal"; + } + + // Operational mode + leaf operChannelMode { + config "false"; + + type pc_Mode; + description "Operational Mode"; + } + + // Last status - successful/failed + leaf lastSt { + config "false"; + + type pc_LastSt; + description "Last Status - Successful/failed"; + } + leaf lastStCause { + config "false"; + type string; + description "Last Status Cause"; + } + + // Time when last status was set + leaf lastTime { + config "false"; + + type pc_Time; + description "Time when Last Status was Set"; + } + + // Time of port-channel creation + leaf createTime { + config "false"; + + type pc_Time; + description "Time of Port-channel Creation"; + } + + // First operational port + leaf fop { + config "false"; + + type nw_IfId; + description "First Operational Port"; + } + + // Time of last member addition + leaf lastBundleTime { + config "false"; + + type pc_Time; + description "Time of Last Member Addition"; + } + + // Last member added + leaf lastBundleMbr { + config "false"; + + type nw_IfId; + description "Last Member Added"; + } + + // Time of last member removal + leaf lastUnbundleTime { + config "false"; + + type pc_Time; + description "Time of Last Member Removal"; + } + + // Last member removed + leaf lastUnbundleMbr { + config "false"; + + type nw_IfId; + description "Last Member Removed"; + } + + // port-channel suspended due to min-links + leaf suspMinlinks { + config "false"; + + type pc_SuspMinlinks; + description "Port-channel Suspended Due to Min-links"; + } + + // PIXM-allocated LTL + leaf ltl { + config "false"; + + type pc_Ltl; + description "PIXM-allocated LTL"; + } + + // ELTM-allocated LIF + leaf lif { + config "false"; + + type pc_Lif; + description "ELTM-allocated LIF"; + } + + // Max possible active members + leaf maxActive { + config "false"; + + type pc_MaxActive; + description "Max Possible Active Members"; + } + + // Time when first non-fop port came up + leaf loadDeferStartTime { + config "false"; + + type pc_Time; + description "Time when First Non-fop Port Came Up"; + } + leaf isExplicit { + type boolean; + default "true"; + description "PC Created Explicitly"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024 { + length "0..254"; + } + description "descr"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative port state @@@ Comes from port out-of-service policy + leaf adminSt { + + type l1_AdminSt; + description "Administrative Port State"; + } + + // Administrative port speed @@@ This comes from the host interface + // @@@ configuration policy + leaf speed { + + type l1_Speed; + description "Administrative Port Speed"; + } + + // Administrative port duplex @@@ This comes from the host interface + // @@@ configuration policy + leaf duplex { + + type l1_Duplex; + description "Duplex"; + } + + // Administrative port auto-negotiation @@@ It comes from the host interface configuration + // @@@ policy. It is used for automatically negotiating + // @@@ the speed + leaf autoNeg { + + type l1_AutoNeg; + description "Administrative Port Auto-Negotiation"; + } + + // Administrative port mtu @@@ This comes from QOS Policy + leaf mtu { + + type l1_Mtu; + description "Administrative port MTU"; + } + + // Administrative port snmp trap state @@@ This is a port level config. but it could go in + // @@@ SNMP policy in IFC + leaf snmpTrapSt { + + type l1_SnmpTrapSt; + description "Administrative Port Snmp Trap State"; + } + + // Administrative port mode @@@ Internally set by PE + leaf mode { + + type l1_Mode; + description "Administrative port mode"; + } + + // Administrative port layer @@@ Internally set by PE + // Default value handled in local MO type + leaf layer { + + // Type is a Local-MO-Defined-Type + type l1_Layer_AggrIf_layer; + description "Layer"; + } + + // Administrative mdix mode @@@ Theres no benefit in exposing this property + // @@@ in IFC. Ask Marketing. + leaf mdix { + + type l1_Mdix; + description "Administrative Medium-dependant interface crossover(Mdix) mode"; + } + + // Administrative port delay @@@ is this exposed in IFC? + leaf delay { + + type l1_Delay; + description "Administrative port delay time"; + } + + // Administrative port link debounce interval @@@ This comes from the interface configuration policy + leaf linkDebounce { + + type l1_LinkDebounce; + description "Administrative port link debounce interval"; + } + + // Administrative port dot1q ether-type @@@ This property is not supported in switch ?? + leaf dot1qEtherType { + + type l1_DDot1qEtherType; + description "Administrative port Dot1q ether-type: configures TPID value in VLAN tag field for packets received and sent by interface"; + } + + // Administrative port bandwidth @@@ Comes from QOS Policy + leaf bw { + + type l1_Bw; + description "Bandwidth parameter for a routed interface, port channel or subinterface"; + } + + // Administrative port medium type @@@ The fabric & Host connections are P2p. @@@ No need to expose this property in IFC + leaf medium { + + type l1_Medium; + description "Administrative port medium type"; + } + + // Administrative port inherit bandwidth @@@ It is used for specifying the bandwidth inherited + // @@@ by the subinterfaces from the parent interface @@@ It is not exposed in IFC. All the subinterfaces + // @@@ inherit full parent interface's bandwidth + leaf inhBw { + + type l1_InheritBw; + description "Administrative port inherit bandwidth"; + } + + // Administrative port span mode @@@ This comes from the span policy in IFC + leaf spanMode { + + type l1_SpanMode; + description "Administrative port span mode"; + } + + // Administrative link logging enable @@@ This come from interface configuration policy + leaf linkLog { + + type l1_LinkLog; + description "Administrative link logging enable"; + } + + // Administrative trunk logging enable @@@ This come from interface configuration policy + leaf trunkLog { + + type l1_TrunkLog; + description "Administrative trunk logging enable"; + } + leaf routerMac { + type address_Mac; + default "00:00:00:00:00:00"; + description "Administrative Router MAC address"; + } + + // Type of the port: Fabric vs Leaf @@@ This property is not exposed in IFC + leaf portT { + + type eqpt_PortT; + description "Type of the port: Fabric vs Leaf"; + } + + // Usage of the port: Fabric, Infra, Epg, Controller, Discovery @@@ This property is not exposed in IFC + leaf usage { + + type l1_PortUsage; + description "Port Usage Type"; + } + + // config trunk vlans + leaf trunkVlans { + + type l1_l1IfTrunkVlans; + description "Configed Trunk Vlans"; + } + + // config access vlan + leaf accessVlan { + + type l1_l1IfAccessVlan; + description "Configured Access Vlan"; + } + + // Controller Id + leaf controllerId { + + type aggregate_ControllerIdBitmap; + description "Controller ID"; + } + + // config access vlan + leaf nativeVlan { + + type l1_l1IfNativeVlan; + description "Configured Native Vlan"; + } + + // port user config flags + leaf userCfgdFlags { + + type l1_userCfgdFlags; + description "Port User Config Flags"; + } + + container ucos-items { + + uses ipqos_UntaggedCos-group; + description "untagged cos"; + } + + container priorflowctrl-items { + + uses ipqos_PriorFlowCtrl-group; + description "priority flow control"; + } + + container priorflowctrlwd-items { + + uses ipqos_PriorFlowCtrlWd-group; + description "priority flow control watchdog"; + } + + // EEE policy + container eeep-items { + + uses l1_EeeP-group; + description "EEE Policy"; + } + + // Storm control policy + container stormctrlp-items { + + uses l1_StormCtrlP-group; + description "Storm Control Policy"; + } + + // Load interval policy + container loadp-items { + + uses l1_LoadP-group; + description "Load Policy"; + } + + container nivp-items { + + uses l1_NivP-group; + description "VIM Physical Interface Config"; + } + + // This MO is temporary. Needs to be removed when + // "vrf member " is objectified + container vrf-items { + + uses l1_Vrf-group; + description "Vrf Name"; + } + + // Port-channel interface information holder + container aggrif-items { + + uses ethpm_AggrIf-group; + description "Aggregated Interface"; + } + + container hwifdetails-items { + + uses ethpm_HwIfDetails-group; + description "Interface Hardware Details"; + } + + container bundleInfo-items { + + uses pc_BundleInfo-group; + description "Aggregate Bundle Information"; + } + + container aggrExtd-items { + + uses pc_AggrIfExtended-group; + description "Aggregated Interface extended configs"; + } + + // Vlan Mapping policy + container vlanmapping-items { + + uses pc_VlanMapping-group; + description "Vlan Mapping Table"; + } + + // BndlMbrIf class + container bndlmbrif-items { + list BndlMbrIf-list { + config "false"; + key "id"; + + uses pc_BndlMbrIf-group; + description "Bundle Member Interface list"; + } + description "Bundle Member Interface"; + } + + // Niv interface + container niv-items { + + uses vim_NivIf-group; + description "NIV Bound Interface Runtime Info"; + } + + container multisiteiftracking-items { + + uses nvo_MultisiteIfTracking-group; + description "Tracking for Multisite DCI and Fabric Interfaces."; + } + + // Dom info + container dom-items { + list DomDef-list { + config "false"; + key "domPKey"; + + uses fv_DomDef-group; + description "Domain list"; + } + description "Domain"; + } + + container rtfexBndlGrpToAggrIf-items { + + uses infra_RtFexBndlGrpToAggrIf_target-group; + } + + container rtaccBndlGrpToAggrIf-items { + + uses infra_RtAccBndlGrpToAggrIf_target-group; + } + + container rtextConf-items { + + uses l2_RtExtConf_target-group; + description "Eth Interface Attachment"; + } + + container rtbrConf-items { + + uses l2_RtBrConf_target-group; + description "Eth Interface Attachment"; + } + + container rtl2EthIf-items { + + list RtL2EthIf-list { + config "false"; + key "tDn"; + + uses l2_RtL2EthIf_target-group; + description "Ethernet Interface list"; + } + description "Ethernet Interface"; + } + + container rtvpcConf-items { + + uses vpc_RtVpcConf_target-group; + description "Port Channel Attachment"; + } + + container rtfvNodePortAtt-items { + + list RtFvNodePortAtt-list { + config "false"; + key "tDn"; + + uses fv_RtFvNodePortAtt_target-group; + } + } + + container rsmbrIfs-items { + + list RsMbrIfs-list { + key "tDn"; + + uses pc_RsMbrIfs_source-group; + } + } + + container rslacpPolCons-items { + + uses pc_RsLacpPolCons_source-group; + } + + container rsethIfToVethIf-items { + + list RsEthIfToVethIf-list { + key "tDn"; + + uses l1_RsEthIfToVethIf_source-group; + description "Association to the veths bound to this interface list"; + } + description "Association to the veths bound to this interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rtphysRtdConf-items { + + uses l3_RtPhysRtdConf_target-group; + description "Physical Routed Attachment"; + } + + container rtl3EncPhysRtdConf-items { + + list RtL3EncPhysRtdConf-list { + config "false"; + key "tDn"; + + uses l3_RtL3EncPhysRtdConf_target-group; + description "Parent If list"; + } + description "Parent If"; + } + + container dbgIfIn-items { + + uses rmon_IfIn-group; + description "Interface Input Counters"; + } + + container dbgIfOut-items { + + uses rmon_IfOut-group; + description "Interface Output Counters"; + } + + container dbgIpIn-items { + + uses rmon_IpIn-group; + description "IPV4 Input Counters"; + } + + container dbgDot1d-items { + + uses rmon_Dot1d-group; + description "Dot1d Counters"; + } + + container dbgEtherStats-items { + + uses rmon_EtherStats-group; + description "Ethernet Statistic Counters"; + } + + container dbgDot3Stats-items { + + uses rmon_Dot3Stats-group; + description "Dot3 Statistics Counters"; + } + + container dbgIfHCIn-items { + + uses rmon_IfHCIn-group; + description "Interface HC Input Counters"; + } + + container dbgIfHCOut-items { + + uses rmon_IfHCOut-group; + description "Interface HC Output Counters"; + } + + container dbgIpv6IfStats-items { + + uses rmon_Ipv6IfStats-group; + description "Ipv6 Interface Statistics Counters"; + } + + container dbgIfStorm-items { + + uses rmon_IfStorm-group; + description "Interface Storm Drop Counters"; + } + } + + grouping ethpm_AggrIf-group { + description "Aggregated Interface"; + leaf numActivePorts { + config "false"; + type uint16; + description "Number of Active Ports"; + } + + // list of active members + leaf activeMbrs { + config "false"; + + type ethpm_ActiveMembersList; + description "List of Active Members"; + } + leaf numMbrUp { + config "false"; + type uint8; + description "Number of Up Members"; + } + leaf ifIndex { + config "false"; + type uint32; + default "0"; + description "Interface index"; + } + + leaf operAutoNeg { + config "false"; + + type l1_AutoNeg; + description "negotiate auto"; + } + + leaf operMtu { + config "false"; + + type l1_Mtu; + description "Operational Maximum transmission unit"; + } + + leaf adminSt { + config "false"; + + type l1_AdminSt; + description "Administrative State"; + } + + leaf operDescr { + config "false"; + + type ethpm_operDescr; + description "Description"; + } + + // Operational port state + leaf operSt { + config "false"; + + type l1_OperSt; + description "Operational Port State"; + } + + // Operational port status reason + leaf operStQual { + config "false"; + + type l1_OperStQual; + description "Operational State Failure Reason"; + } + + // Operational port status syserror code + leaf operStQualCode { + config "false"; + + type l1_OperStQualCode; + description "Operational Port Status Syserror Code"; + } + + // Operational port err disable reason code + leaf operErrDisQual { + config "false"; + + type l1_OperErrDisQual; + description "Operational Port Error Disable Reason Code"; + } + + // Operational port speed + leaf operSpeed { + config "false"; + + type l1_Speed; + description "Operational Port Speed"; + } + + // Operational port mode + leaf operMode { + config "false"; + + type l1_Mode; + description "Operational Port Mode"; + } + + // Operational duplex + leaf operDuplex { + config "false"; + + type l1_Duplex; + description "Operational Duplex State"; + } + + // Operational port flow control + leaf operFlowCtrl { + config "false"; + + type l1_FlowControl; + description "Operational Port Flow Control"; + } + + // Operational phy port enable state + leaf operPhyEnSt { + config "false"; + + type l1_OperSt; + description "Operational Physical Port Enable State"; + } + leaf backplaneMac { + config "false"; + type address_Mac; + description "Port Backplane MAC"; + } + leaf operRouterMac { + config "false"; + type address_Mac; + description "Operational Port Router MAC"; + } + + // port Tx type + leaf txT { + config "false"; + + type l1_TxT; + description "Port Transmit Type"; + } + leaf lastLinkStChg { + config "false"; + type union { + type string; + type uint64; + } + description "Last Link State Change"; + } + leaf portCfgWaitFlags { + config "false"; + type uint32; + description "Port Config Wait Flags"; + } + leaf accessVlan { + config "false"; + type string; + description "VLAN port access state"; + } + leaf nativeVlan { + config "false"; + type string; + description "Port Native Vlan"; + } + leaf cfgNativeVlan { + config "false"; + type string; + description "Native VLAN port configuration"; + } + leaf cfgAccessVlan { + config "false"; + type string; + description "VLAN port configuration access"; + } + leaf primaryVlan { + config "false"; + type string; + description "Port Primary-vlan"; + } + + // port oper bitset + leaf operBitset { + config "false"; + + type ethpm_PortOperBitmap; + description "Port Oper Bitset"; + } + + // vdc id + leaf vdcId { + config "false"; + + type l2_VdcId; + description "Vdc Id"; + } + leaf resetCtr { + config "false"; + type uint32; + description "Reset Counter"; + } + leaf media { + config "false"; + type uint32; + description "Port Media"; + } + leaf encap { + config "false"; + type uint32; + description "Port Encap"; + } + leaf iod { + config "false"; + type uint64; + description "Iod"; + } + + // allowed vlans + leaf allowedVlans { + config "false"; + + type l2_VlanBitmap; + description "Allowed Vlans"; + } + + // operational vlans + leaf operVlans { + config "false"; + + type l2_VlanBitmap; + description "Operational Vlans"; + } + + // errored vlans + leaf errVlans { + config "false"; + + type l2_VlanBitmap; + description "Errored Vlans"; + } + + // trunk status + leaf operTrunkStatus { + config "false"; + + type ethpm_TrunkStatus; + description "Trunking Status"; + } + + // bundle index + leaf bundleIndex { + config "false"; + + type nw_IfId; + description "Interface Bundle Index - table for a particular output primitive"; + } + + // port oper mdix mode + leaf operMdix { + config "false"; + + type l1_Mdix; + description "Port Oper Mdix Mode"; + } + leaf currErrIndex { + config "false"; + type uint32; + description "Current Error Index"; + } + + // last seen errors + leaf lastErrors { + config "false"; + + type ethpm_LastErrorsList; + description "Last Seen Errors"; + } + leaf errDisTimerRunning { + config "false"; + type boolean; + description "Error Disable Recovery Time Running"; + } + leaf bundleBupId { + config "false"; + type uint32; + description "Bundle Bringup Id"; + } + + // Operational Dce Mode + leaf operDceMode { + config "false"; + + type l1_DceMode; + description "Operational Dce Mode"; + } + + // interface type + leaf intfT { + config "false"; + + type l1_IntfT; + description "Interface Type"; + } + + // port diags type + leaf diags { + config "false"; + + type l1_DiagsT; + description "Port Diags Type"; + } + + // Operational port EEE state + leaf operEEEState { + config "false"; + + type l1_EEEState; + description "Operational Port EEE State"; + } + leaf operEEETxWkTime { + config "false"; + type uint32; + description "Operational Port EEE Tx Time"; + } + leaf operEEERxWkTime { + config "false"; + type uint32; + description "Operational Port EEE Rx Time"; + } + + // port user config flags + leaf userCfgdFlags { + config "false"; + + type l1_userCfgdFlags; + description "Port User Config Flags"; + } + + // Interface info + leaf intf { + config "false"; + + type l1_Intf; + description "Interface Present or Deleted"; + } + leaf numOfSI { + config "false"; + type uint32; + description "Number of Sub-interfaces"; + } + + // configured sub-interface ids + leaf siList { + config "false"; + + type ethpm_SiBitmap; + description "Configured Sub-interface Ids"; + } + leaf dynamicVlan { + config "false"; + type boolean; + description "Operational port Dynamic VLAN from dot1x"; + } + + // Usage of the port: Fabric, Infra, Epg, Controller, Discovery @@@ This property is not exposed in IFC + // Liked from l1:EthIf:usage + leaf usage { + config "false"; + + type l1_PortUsage; + description "Port Usage"; + } + + // Fault handling for Ethernet Interfaces + container faults-items { + + uses ethpm_Faults-group; + description "Ethpm Fatal faults model object"; + } + + container portcap-items { + + uses ethpm_PortCap-group; + description "Port Capability"; + } + } + + grouping pc_BundleInfo-group { + description "Aggregate Bundle Information"; + + leaf operType { + config "false"; + + type pc_PortChannelType; + description "P ort channel type"; + } + + leaf operProtocol { + config "false"; + + type pc_PortChannelProtocol; + description "Port channel protocol"; + } + } + + grouping pc_AggrIfExtended-group { + description "Aggregated Interface extended configs"; + + leaf poType { + + type pc_PoType; + default "none"; + description "Port-channel type"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Port-type that the interface is facing + leaf portTypeFabric { + + type l1_PortTypeFabric; + description "Identifies if or not the port is a fabric-facing port"; + } + + leaf routerMacIpv6Extract { + + type l1_RouterMacIpv6Extract; + default "disable"; + description "Disable/enable switchport ipv6 extract"; + } + + leaf switchportBlock { + + type l1_SwitchportBlock; + description "Disable/enable switchport block on interface"; + } + + leaf switchportIsolated { + + type l1_SwitchportIsolated; + description "Switchport Isolated"; + } + + leaf autoExcludeVlans { + + type l1_AutoExcludeVlans; + description "Switchport Autostate Exclude vlans"; + } + + leaf switchportMacLearn { + + type l1_switchportMacLearn; + description "Disable/enable mac learning on interface"; + } + leaf flowCtrlSend { + type boolean; + default "false"; + description "Disable/enable tx flowcontrol block on interface"; + } + leaf flowCtrlReceive { + type boolean; + default "false"; + description "Disable/enable rx flowcontrol block on interface"; + } + + leaf stormCtrlBCastLevel { + + type l1_StormCtrlRate; + description "storm-control broadcast level"; + } + + leaf stormCtrlBCastPPS { + + type l1_StormCtrlPPS; + description "storm-control broadcast PPS"; + } + + leaf stormCtrlMCastLevel { + + type l1_StormCtrlRate; + description "storm-control multicast level"; + } + + leaf stormCtrlMCastPPS { + + type l1_StormCtrlPPS; + description "storm-control multicast PPS"; + } + + leaf stormCtrlUCastLevel { + + type l1_StormCtrlRate; + description "Storm control unicast level"; + } + + leaf stormCtrlUCastPPS { + + type l1_StormCtrlPPS; + description "Storm control unicast PPS"; + } + + leaf stormCtrlAct { + + type l1_StormCtrlAct; + description "Storm control action"; + } + + leaf bufferBoost { + + type l1_BufferBoost; + description "Disable/enable buffer boost on interface"; + } + + leaf switchportVirtualEthernetBridge { + + type l1_SwitchportVirtualEthernetBridge; + description "Disable/enable switchport virtual ethernet bridge on interface"; + } + + leaf allowMultiTag { + + type l1_AllowMultiTag; + description "Allow Multitag"; + } + leaf shutDownLan { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 0; + } + } + default "disable"; + description "Shut/Unshut all LAN VLANs on interface"; + } + + leaf chassisNumber { + + type l1_chassisNo; + description "Chassis number information"; + } + leaf chassisSerial { + type string; + description "Serial number information"; + } + leaf chassisModuleSerial { + type string; + description "Module serial number information"; + } + leaf chassisProfileName { + type string; + description "Profile name information"; + } + + leaf chassisModuleSide { + + type l1_moduleSide; + description "Module Side information"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping pc_VlanMapping-group { + description "Vlan Mapping Table"; + leaf Enabled { + type boolean; + default "false"; + description "Vlan Mapping Enable"; + } + + leaf selectiveQinqVlans { + + type l2_VlanBitmap; + description "Selective Qinq Vlans"; + } + + leaf selectiveQinqTranslateVlan { + + type l1_translatevlanid; + description "Selective Qinq Translate Vlan Id"; + } + leaf selectiveQinqAll { + type boolean; + description "Selective QinQ All Vlans"; + } + + container selqinqtable-items { + + uses pc_SelectiveQinqTable-group; + } + + // Vlan Translate Table policy + container vlantranslatetable-items { + + uses pc_VlanTranslateTable-group; + description "Vlan Translate Table"; + } + } + + grouping pc_SelectiveQinqTable-group { + container selqinq-items { + list SelectiveQinq-list { + key "selectiveQinqTranslateVlan"; + + uses pc_SelectiveQinq-group; + description "Vlan Mapping Table for Trunk Mode list"; + } + description "Vlan Mapping Table for Trunk Mode"; + } + } + + grouping pc_SelectiveQinq-group { + description "Vlan Mapping Table for Trunk Mode"; + + leaf selectiveQinqVlans { + + type l2_VlanBitmap; + description "Selective QinQ VLANs"; + } + + leaf selectiveQinqTranslateVlan { + + type l1_translatevlanid; + description "Selective QinQ Translate Vlan Id"; + } + } + + grouping pc_VlanTranslateTable-group { + description "Vlan Translate Table"; + + // Vlan Translate Table policy Vlan Translate Entry policy + container vlan-items { + list VlanTranslateEntry-list { + key "vlanid"; + + uses pc_VlanTranslateEntry-group; + description "Vlan Translate Entry list"; + } + description "Vlan Translate Entry"; + } + } + + grouping pc_VlanTranslateEntry-group { + description "Vlan Translate Entry"; + + leaf vlanid { + + type l1_translatevlanid; + description "Vlan Id"; + } + + leaf innervlanid { + + type l1_translatevlanid; + description "Inner Vlan Id"; + } + + leaf translatevlanid { + + type l1_translatevlanid; + description "Translate Vlan Id"; + } + } + + grouping pc_BndlMbrIf-group { + description "Bundle Member Interface"; + + leaf id { + config "false"; + + type nw_IfId; + description "Interface index"; + } + } + + grouping l3_RtdIf-group { + description "Routed Interface"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type l1_AdminSt; + description "Admin State"; + } + + container rtpseudoIf-items { + + uses dhcp_RtPseudoIf_target-group; + description "Pseudo Interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rsphysRtdConf-items { + + uses l3_RsPhysRtdConf_source-group; + description "Physical Routed Attachment"; + } + + container rsl3If-items { + + list RsL3If-list { + key "tDn"; + + uses l3_RsL3If_source-group; + description "L3 Interface Attachment list"; + } + description "L3 Interface Attachment"; + } + } + + grouping l3_LbRtdIf-group { + description "Routed Loopback Interface"; + + // Administrative link logging enable + leaf linkLog { + + type l1_LinkLog; + description "Administrative Link Logging Enable"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024 { + length "0..254"; + pattern "(.{1,254}).*|()"; + } + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type l1_AdminSt; + description "Admin State"; + } + + // This MO is temporary. Needs to be removed when + // "vrf member " is objectified + container vrf-items { + + uses l1_Vrf-group; + description "Vrf Name"; + } + + // loopback interface information holder + container lbrtdif-items { + + uses ethpm_LbRtdIf-group; + description "Loopback Routed Interface"; + } + + container rtpseudoIf-items { + + uses dhcp_RtPseudoIf_target-group; + description "Pseudo Interface"; + } + + container rtoperSourceInterface-items { + + uses nvo_RtOperSourceInterface_target-group; + description "Operational Up/Down status of the Source Interface."; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rsprotLbIf-items { + + uses l3_RsProtLbIf_source-group; + description "Protection Group"; + } + + container rslbIfToLocale-items { + + list RsLbIfToLocale-list { + key "tDn"; + + uses l3_RsLbIfToLocale_source-group; + description "Router Id list"; + } + description "Router Id"; + } + + container rslbIfToOutRef-items { + + list RsLbIfToOutRef-list { + key "tDn"; + + uses l3_RsLbIfToOutRef_source-group; + description "Router Id list"; + } + description "Router Id"; + } + + container rsl3If-items { + + list RsL3If-list { + key "tDn"; + + uses l3_RsL3If_source-group; + description "L3 Interface Attachment list"; + } + description "L3 Interface Attachment"; + } + } + + grouping ethpm_LbRtdIf-group { + description "Loopback Routed Interface"; + leaf ifIndex { + config "false"; + type uint32; + default "0"; + description "Interface index"; + } + leaf iod { + config "false"; + type uint64; + description "Iod"; + } + + // Operational state + leaf operSt { + config "false"; + + type l1_OperSt; + description "Operational Port State"; + } + + // Operational MTU + leaf operMtu { + config "false"; + + type l1_Mtu; + description "Operational MTU"; + } + + // Operational Description + leaf operDescr { + config "false"; + + type ethpm_operDescr; + description "Operational Description"; + } + + // Operational state reason + leaf operStQual { + config "false"; + + type l1_OperStQual; + description "Operational State Failure Reason"; + } + leaf currErrIndex { + config "false"; + type uint32; + description "Current Error Index"; + } + + // Last seen errors + leaf lastErrors { + config "false"; + + type ethpm_LastErrorsList; + description "Last Seen Errors"; + } + + // Operational state flags + leaf operBitset { + config "false"; + + type ethpm_PortOperBitmap; + description "Operational State Flags"; + } + } + + grouping l3_EncRtdIf-group { + description "Encapsulated Routed Interface"; + + // Interface Mtu Is it required, check with marketing? + leaf mtu { + + type l1_Mtu; + description "Interface Mtu"; + } + leaf mtuInherit { + type boolean; + default "true"; + } + + // Interface interface delay @@@ This is not exposed in IFC + leaf delay { + + type l1_Delay; + description "Interface Interface Delay"; + } + leaf snmpTrap { + type enumeration { + enum enable { + value 1; + } + enum disable { + value 2; + } + } + default "disable"; + description "Administrative Port Snmp Trap State"; + } + leaf encap { + type string; + description "Encap Vlan"; + } + + // Interface Bandwidth Is it required, check with marketing? + leaf bw { + + type l1_Bw; + description "Interface Bandwidth"; + } + + leaf linkLog { + + type l1_LinkLog; + description "Interface Link Logging Enable"; + } + leaf routerMac { + type address_Mac; + default "00:00:00:00:00:00"; + description "Interface Router Mac"; + } + leaf ifConnDn { + type string; + description "Interface Connectivity Dn"; + } + + // Interface link logging enable + leaf mediumType { + + type l1_Medium; + description "Interface Medium Type"; + } + + leaf routerMacIpv6Extract { + + type l1_RouterMacIpv6Extract; + default "disable"; + description "Disable/enable switchport ipv6 extract"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024 { + length "0..254"; + pattern "(.{1,254}).*|()"; + } + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type l1_AdminSt; + default "down"; + description "Admin State"; + } + + // This MO is temporary. Needs to be removed when + // "vrf member " is objectified + container vrf-items { + + uses l1_Vrf-group; + description "Vrf Name"; + } + + // sub-interface information holder + container encrtdif-items { + + uses ethpm_EncRtdIf-group; + description "Encapsulated Routed Interface"; + } + + container rtpseudoIf-items { + + uses dhcp_RtPseudoIf_target-group; + description "Pseudo Interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rsencPhysRtdConf-items { + + uses l3_RsEncPhysRtdConf_source-group; + description "Parent If"; + } + + container rsl3If-items { + + list RsL3If-list { + key "tDn"; + + uses l3_RsL3If_source-group; + description "L3 Interface Attachment list"; + } + description "L3 Interface Attachment"; + } + } + + grouping ethpm_EncRtdIf-group { + description "Encapsulated Routed Interface"; + leaf ifIndex { + config "false"; + type uint32; + default "0"; + description "Interface index"; + } + leaf operRouterMac { + config "false"; + type address_Mac; + description "Operational Router MAC"; + } + leaf operEncap { + config "false"; + type uint16; + description "Encapsulation dot1Q"; + } + + leaf operDescr { + config "false"; + + type ethpm_operDescr; + description "Description"; + } + leaf fsmState { + config "false"; + type uint8; + description "Indicates FSM State"; + } + leaf iod { + config "false"; + type uint64; + description "Specifies IOD"; + } + + // Operational state + leaf operSt { + config "false"; + + type l1_OperSt; + description "Operational Port State"; + } + + // Operational state reason + leaf operStQual { + config "false"; + + type l1_OperStQual; + description "Operational State Failure Reason"; + } + + // Operational Mtu + leaf operMtu { + config "false"; + + type l1_Mtu; + description "Operational Maximum Transmission Unit"; + } + leaf currErrIndex { + config "false"; + type uint32; + description "Specifies the Current Error Index"; + } + + // Last seen errors + leaf lastErrors { + config "false"; + + type ethpm_LastErrorsList; + description "Holds most recently seen errors"; + } + + // Operational state flags + leaf operBitset { + config "false"; + + type ethpm_PortOperBitmap; + description "Specifies Operational State Flags"; + } + leaf siCfgFlags { + config "false"; + type uint32; + description "Specifies Sub-interface Configuration Flags"; + } + } + + grouping svi_If-group { + description "Routed Vlan Interface"; + + // VLAN ID associated with the SVI + leaf vlanId { + + type svi_VlanId; + description "VLAN ID Associated with the SVI"; + } + leaf mac { + type address_Mac; + description "MAC Address of the SVI"; + } + + // Medium type (P2P or Broadcast) @@@ default value: Not coming from IFC + leaf medium { + + type svi_Medium; + description "indicates the administrative port medium type"; + } + + // MTU of the SVI @@@ This comes from qos + leaf mtu { + + type svi_Mtu; + description "the administrative MTU port on the aggregated interface"; + } + leaf mtuInherit { + type boolean; + default "true"; + description "property for specifying if the MTU is inherited from global policy"; + } + + // Delay metric associated with the SVI + leaf delay { + + type svi_Delay; + description "specifies the administrative port delay"; + } + + // Bandwidth metric associated with the SVI + leaf bw { + + type svi_Bw; + description "specifies the administrative port bandwidth"; + } + + // Carrier Delay: hold period for which Carrier transition + // like L2 interfacing going down is ignored. + leaf carDel { + + type svi_CarrDelay; + description + "Carrier Delay: hold period for which Carrier transition + like L2 interfacing going down is ignored"; + } + + // Load-averaging interval 1 @@@ Infrastrure level policy + leaf loadIntvl1 { + + type svi_LoadIntvl1; + description "Load-averaging Interval 1"; + } + + // Load-averaging interval 2 + leaf loadIntvl2 { + + type svi_LoadIntvl2; + description "Load-averaging Interval 2"; + } + + // Load-averaging interval 3 + leaf loadIntvl3 { + + type svi_LoadIntvl3; + description "Load-averaging Interval 3"; + } + leaf inbMgmt { + type boolean; + description "An in-band management interface configuration"; + } + leaf autostate { + type boolean; + default "true"; + description "Autostate Enabled?"; + } + leaf snmpTrap { + type boolean; + default "true"; + description "SNMP Trap Link Status Enabled?"; + } + + // Operational state of the SVI + leaf operSt { + config "false"; + + type svi_OperSt; + description "the runtime state of the object or policy"; + } + + // Reason for operational state being down + leaf operStQual { + config "false"; + + type svi_OperStQual; + description "Reason for Operational State Being Down (status qualifier)"; + } + + // VLAN Type (e.g. private vlan) + leaf vlanT { + config "false"; + + type l2_DomType; + description "VLAN Type"; + } + + // Controller Id + leaf ctrlrId { + + type aggregate_ControllerIdBitmap; + description "Controller ID"; + } + leaf iod { + config "false"; + type uint32; + description "Interface Ordinal"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024 { + length "0..254"; + pattern "(.{1,254}).*|()"; + } + description "Tunnel Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type l1_AdminSt; + default "down"; + description "Admin State"; + } + + // This MO is temporary. Needs to be removed when + // "vrf member " is objectified + container vrf-items { + + uses l1_Vrf-group; + description "Vrf Name"; + } + + container multisiteiftracking-items { + + uses nvo_MultisiteIfTracking-group; + description "Tracking for Multisite DCI and Fabric Interfaces."; + } + + container svi-items { + + uses svi_OperSvi-group; + description "Interface"; + } + + container rtpseudoIf-items { + + uses dhcp_RtPseudoIf_target-group; + description "Pseudo Interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rsl3If-items { + + list RsL3If-list { + key "tDn"; + + uses l3_RsL3If_source-group; + description "L3 Interface Attachment list"; + } + description "L3 Interface Attachment"; + } + } + + grouping svi_OperSvi-group { + description "Interface"; + leaf ifIndex { + config "false"; + type uint32; + default "0"; + description "Interface index"; + } + leaf operDescr { + config "false"; + type string; + description "Operational State Summary"; + } + + leaf adminSt { + config "false"; + + type l1_AdminSt; + description "Operational State"; + } + + // Operational port status reason + leaf operStQual { + config "false"; + + type svi_OperStQual; + description "Operational State Qualifier"; + } + + // Operational Mtu + leaf operCarrierDelaySec { + config "false"; + + type svi_CarrDelay; + description "Operational Carrier Delay Seconds"; + } + + // Operational Mtu + leaf operCarrierDelayMsec { + config "false"; + + type svi_CarrDelay; + description "Operational Carrier Delay milliseconds"; + } + + // Operational Mtu + leaf operMtu { + config "false"; + + type svi_Mtu; + description "Operational Mtu"; + } + + leaf operBw { + config "false"; + + type svi_Bw; + description "operational Bandwidth"; + } + + leaf operDelay { + config "false"; + + type svi_Delay; + description "operational delay"; + } + leaf operAutoState { + config "false"; + type boolean; + description "Operational AutoState"; + } + leaf operMac { + config "false"; + type address_Mac; + description "Operational Router MAC"; + } + leaf iod { + config "false"; + type uint64; + description "Iod"; + } + + // Load interval 1 + leaf operLoadIntvl1 { + config "false"; + + type svi_LoadIntvl1; + description "Load Interval 1"; + } + + // Load interval 2 + leaf operLoadIntvl2 { + config "false"; + + type svi_LoadIntvl2; + description "Load Interval 2"; + } + + // Load interval 3 + leaf operLoadIntvl3 { + config "false"; + + type svi_LoadIntvl3; + description "Load Interval 3"; + } + leaf operLastChgSec { + config "false"; + type uint64; + description "Last change"; + } + leaf operLastChgUsec { + config "false"; + type uint64; + description "Last change"; + } + } + + grouping tunnelif_If-group { + description "Tunnel Interface"; + leaf tunSrcAddr { + type address_Ip; + description "Tunnel Source"; + } + + // Tunnel source interface + leaf tunSrcIntf { + + type nw_IfId; + description "Tunnel Source"; + } + + // Tunnel source direct + leaf tunSrcDirect { + + type tunnelif_TunnelSrcDirect; + description "Tunnel Source"; + } + leaf tunDestAddr { + type address_Ip; + description "Tunnel Destination"; + } + + // Tunnel mode + leaf tunMode { + + type tunnelif_TunnelMode; + description "Tunnel Mode"; + } + + // Tunnel VRF name + leaf tunVrf { + + type tunnelif_TunnelTransVRF; + description "Tunnel Transport VRF"; + } + + // Tunnel MTU + leaf tunMtu { + + type tunnelif_TunnelMtu; + description "Tunnel MTU"; + } + + // Tunnel PATH MTU Discovery + leaf tunPMTUD { + + type tunnelif_TunnelPMTUD; + description "Tunnel PMTU Discovery"; + } + + // Tunnel PMTU min-mtu + leaf tunminPMTU { + + type tunnelif_TunnelminPMTU; + description "Tunnel min PMTU"; + } + + // Tunnel PMTU ager + leaf tunPMTUage { + + type tunnelif_TunnelPMTUAge; + description "Tunnel PMTU age"; + } + + // Tunnel Interface Bandwidth + leaf tunBW { + + type tunnelif_TunnelBW; + description "Tunnel Bandwidth"; + } + + // Tunnel Interface TTL + leaf tunTTL { + + type tunnelif_TunnelTTL; + description "Tunnel TTL"; + } + + // Administrative port snmp trap state + leaf snmpTrapSt { + + type tunnelif_SnmpTrapSt; + description "Snmp Trap State"; + } + + // Tunnel operational state + leaf tunOperSt { + config "false"; + + type tunnelif_TunnelOperSt; + description "Tunnel Operational State"; + } + + // Tunnel operational state down reason + leaf tunOperStQual { + config "false"; + + type tunnelif_TunnelOperStQual; + description "Tunnel Operational State Qualifier"; + } + leaf lastStateChgdTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last State Change Timestamp"; + } + leaf tunDelInProg { + config "false"; + type boolean; + description "Tunnel Deletion in Progress"; + } + + // Tunnel Interface options + leaf tunIntfOptions { + config "false"; + + type tunnelif_TunnelOption; + description "Tunnel Interface Options"; + } + leaf tunIod { + config "false"; + type uint32; + description "Tunnel Interface Ordinal"; + } + leaf tunIfIndex { + config "false"; + type uint32; + description "Tunnel Interface Index"; + } + leaf tunIfPmtu { + config "false"; + type uint32; + description "Tunnel Interface PMTU"; + } + leaf lastCtrRstChgdTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last Counters Reset Timestamp"; + } + leaf tunRxPackets { + config "false"; + type uint64; + description "Tunnel Rx Packet counter"; + } + leaf tunRxBytes { + config "false"; + type uint64; + description "Tunnel Rx Bytes counter"; + } + leaf tunTxPackets { + config "false"; + type uint64; + description "Tunnel Tx Packet counter"; + } + leaf tunTxBytes { + config "false"; + type uint64; + description "Tunnel Tx Bytes counter"; + } + leaf tunSrcIP { + config "false"; + type address_Ip; + description "Tunnel Source IP"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024 { + length "0..254"; + pattern "(.{1,254}).*|()"; + } + description "Tunnel Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type l1_AdminSt; + default "down"; + description "Admin State"; + } + + // This MO is temporary. Needs to be removed when + // "vrf member " is objectified + container vrf-items { + + uses l1_Vrf-group; + description "Vrf Name"; + } + + container rtpseudoIf-items { + + uses dhcp_RtPseudoIf_target-group; + description "Pseudo Interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rsl3If-items { + + list RsL3If-list { + key "tDn"; + + uses l3_RsL3If_source-group; + description "L3 Interface Attachment list"; + } + description "L3 Interface Attachment"; + } + } + + grouping ipv4_Entity-group { + description "IPv4 Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per ipv4 instance information. There is + // only one instance of ipv4 running in the system today + container inst-items { + + uses ipv4_Inst-group; + description "IPv4 Instance"; + } + } + + grouping ipv4_Inst-group { + description "IPv4 Instance"; + + // ip source-route enabled by default + leaf sourceRoute { + + type nw_AdminSt; + description "Source-Route"; + } + + // ip access-list match local enabled by default + leaf accessListMatchLocal { + + type nw_AdminSt; + default "disabled"; + description "Access-List Match Local"; + } + leaf hardwareEcmpHashOffsetValue { + type uint16 { + range "0..63"; + } + default "0"; + description "hardware Ecmp HashOffset Value"; + } + + leaf hardwareEcmpHashOffsetConcat { + + type nw_AdminSt; + default "disabled"; + description "hardware Ecmp HashOffset Concatenation"; + } + + leaf hardwareEcmpHashPolynomial { + + type ip_HardwareEcmpHashPolynomialT; + description "hardware Ecmp Hash-Polynomial"; + } + + // logging level enabled by default + leaf loggingLevel { + + type arp_LoggingLevel; + description "Logging level"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Domain (vrf) information + container dom-items { + list Dom-list { + key "name"; + + uses ipv4_Dom-group; + description "IPv4 Domain list"; + } + description "IPv4 Domain"; + } + + // IP Packets per second mo + container pps-items { + list IpPacketsPerSecond-list { + key "ipPpsType"; + + uses ipv4_IpPacketsPerSecond-group; + description "IPv4 Packets per second config list"; + } + description "IPv4 Packets per second config"; + } + + // IPv4 Client information + // Ephemeral data + container client-items { + + // Ephemeral data + list Client-list { + config "false"; + key "clientName clientProtocol"; + + uses ipv4_Client-group; + description "IPv4 Client list"; + } + description "IPv4 Client"; + } + + // Load sharing mo + container iploadsharing-items { + + uses ipv4_IPLoadSharing-group; + description "IPv4 Load-sharing"; + } + + // Ephemeral data + container loadstat-items { + + uses ipv4_LoadSharingStat-group; + description "IPv4 load-sharing statistics"; + } + + // Ephemeral data + container iptrafficstat-items { + + uses ipv4_IpTrafficStat-group; + description "IP Software Processed Traffic Stat"; + } + + // Ephemeral data + container iptrafficerrstat-items { + + uses ipv4_IpTrafficErrStat-group; + description "IP Software Processed Traffic Stat"; + } + + // Ephemeral data + container icmptrafficstat-items { + + uses ipv4_ICMPTrafficStat-group; + description "ICMP Software Processed Traffic Stat"; + } + + // Ephemeral data + container rfc4293trafficstat-items { + + uses ipv4_RFC4293TrafficStat-group; + description "RFC 4293: IP Software Processed Traffic Stat"; + } + } + + grouping ipv4_Dom-group { + description "IPv4 Domain"; + + // ip auto-discard disabled by default + leaf autoDiscard { + + type nw_AdminSt; + default "disabled"; + description "Auto-Discard"; + } + + // ip icmp-error source-interface + leaf ipIcmpErrorsSrcIntf { + + type nw_IfId; + description "ICMP errors source-interface"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // ip route static bfd + container rtstaticbfd-items { + list RtStaticBfd-list { + key "intf nexthop"; + + uses ipv4_RtStaticBfd-group; + description "IP route static bfd list"; + } + description "IP route static bfd"; + } + + // This object holds ipv4 information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses ipv4_If-group; + description "IPv4 Interface list"; + } + description "IPv4 Interface"; + } + container multicastrt-items { + list MulticastRoute-list { + key "prefix"; + + uses ipv4_MulticastRoute-group; + description "IPv4 Multicast Static Route list"; + } + description "IPv4 Multicast Static Route"; + } + + // Ephemeral data + container pstat-items { + + uses ipv4_ProcessStat-group; + description "IPv4 Process Stat"; + } + + // Static route definitions + container rt-items { + list Route-list { + key "prefix"; + + uses ipv4_Route-group; + description "IPv4 Static Route list"; + } + description "IPv4 Static Route"; + } + + // Ephemeral data + container routestat-items { + + uses ipv4_RouteStat-group; + description "IPv4 Static Route"; + } + + // This object holds ipv4 information that is operated at a + // domain level + // Ephemeral data + container ifbriefstats-items { + + // Ephemeral data + list VrfIfBriefStats-list { + config "false"; + key "interfaceId"; + + uses ipv4_VrfIfBriefStats-group; + description "IPv4 Vrf Level Brief Interface Statistics list"; + } + description "IPv4 Vrf Level Brief Interface Statistics"; + } + } + + grouping ipv4_RtStaticBfd-group { + description "IP route static bfd"; + + // interface value. + leaf intf { + + type nw_IfId; + description "Interface"; + } + leaf nexthop { + type address_Ip; + description "Nexthop Address"; + } + } + + grouping ipv4_If-group { + description "IPv4 Interface"; + leaf directedBroadcast { + type enumeration { + enum disabled { + value 0; + description "Disabled"; + } + enum enabled { + value 1; + description "Enabled"; + } + } + default "disabled"; + description "IP directed broadcast"; + } + leaf acl { + type string { + length "0..63"; + } + description "IP directed broadcast ACL"; + } + + // IP forward. When interface types: eth, mgmt, + // or port channel. + leaf forward { + + type nw_AdminSt; + default "disabled"; + description "IP forward"; + } + + // IP unnumbered. When interface types: eth, tunnel + leaf unnumbered { + + type nw_IfId; + description "IP unnumbered"; + } + + // URPF info on interface + leaf urpf { + + type ip_UrpfT; + description "URPF Info"; + } + + leaf dropGlean { + + type nw_AdminSt; + default "disabled"; + description "ip drop-glean enabled/disabled"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Operational state + leaf operSt { + config "false"; + + type ip_OperSt; + description "Operational State"; + } + + // Operational state qualifier + leaf operStQual { + config "false"; + + type ip_UnnumberedOperStQual; + description "Operational State Qualifier"; + } + + // Interface address + container addr-items { + list Addr-list { + key "addr"; + + uses ipv4_Addr-group; + description "Ipv4 Address list"; + } + description "Ipv4 Address"; + } + + container dampening-items { + + uses ipv4_Dampening-group; + description "IPv4 interface dampening"; + } + + // Ephemeral data + container dampeningdata-items { + + uses ipv4_DampeningData-group; + description "IPv4 interface dampening data"; + } + + // Ephemeral data + container trafficstat-items { + + uses ipv4_IfTrafficStat-group; + description "IPv4 Interface Traffic Stat"; + } + + // Ephemeral data + container stat-items { + + uses ipv4_IfStat-group; + description "IPv4 Interface Stat"; + } + + // Route map entries + container rpol-items { + + uses rtmap_RmapPolicy-group; + description "interface Route map Policy"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping ipv4_Addr-group { + description "Ipv4 Address"; + leaf addr { + type address_Ip; + description "Address"; + } + + // Type of the address + leaf type { + + type ip_AddrT; + description "Type"; + } + + // Address controls + leaf ctrl { + + type ip_AddrControl; + description "Controls"; + } + leaf vpcPeer { + type address_Ip; + description "VPC Peer"; + } + + // Ip address preference + leaf pref { + + type ip_Preference; + description "Preference"; + } + + // Route tag + leaf tag { + + type rt_Tag; + description "Route Tag"; + } + + // Operational state + leaf operSt { + config "false"; + + type ip_OperSt; + description "Operational State"; + } + + // Operational state qualifier + leaf operStQual { + config "false"; + + type ip_AddrOperStQual; + description "Operational State Qualifier"; + } + + container rsipAddr-items { + + list RsIpAddr-list { + key "tDn"; + + uses ip_RsIpAddr_source-group; + description "IF Policy Attachement list"; + } + description "IF Policy Attachement"; + } + + container rsrtDefIpAddr-items { + + list RsRtDefIpAddr-list { + key "tDn"; + + uses ip_RsRtDefIpAddr_source-group; + description "Route Def Attachment list"; + } + description "Route Def Attachment"; + } + + container rsaddrToIpDef-items { + + list RsAddrToIpDef-list { + key "tDn"; + + uses ip_RsAddrToIpDef_source-group; + description "IpDef attachment list"; + } + description "IpDef attachment"; + } + } + + grouping ipv4_Dampening-group { + description "IPv4 interface dampening"; + leaf halfLifePeriod { + type uint64 { + range "0..30"; + } + description "Half life period"; + } + leaf reuseThreshold { + type uint64 { + range "0..20000"; + } + description "Reuse threshold"; + } + leaf suppressThreshold { + type uint64 { + range "0..20000"; + } + description "Suppress threshold"; + } + leaf maxSuppress { + type uint64 { + range "0..255"; + } + description "Maximum suppress time"; + } + + leaf restartEnabled { + + type nw_AdminSt; + description "Restart enabled"; + } + leaf restartPenalty { + type uint64 { + range "0..20000"; + } + description "Restart penalty"; + } + } + + grouping ipv4_DampeningData-group { + description "IPv4 interface dampening data"; + + // Ephemeral data + leaf flapCount { + config "false"; + type uint64; + description "Flap count"; + } + + // Ephemeral data + leaf penalty { + config "false"; + type uint64; + description "Penalty accumulated"; + } + + // Ephemeral data + leaf suppressed { + config "false"; + type uint64; + description "Is interface suppressed"; + } + + // Ephemeral data + leaf reuseTime { + config "false"; + type uint64; + description "Reuse time"; + } + + // Ephemeral data + leaf halfLifePeriod { + config "false"; + type uint64; + description "Half life period"; + } + + // Ephemeral data + leaf reuseThreshold { + config "false"; + type uint64; + description "Reuse threshold"; + } + + // Ephemeral data + leaf suppressThreshold { + config "false"; + type uint64; + description "Suppress threshold"; + } + + // Ephemeral data + leaf maxSuppress { + config "false"; + type uint64; + description "Max suppress"; + } + + // Ephemeral data + leaf maxPenalty { + config "false"; + type uint64; + description "Maximum penalty"; + } + + // Ephemeral data + leaf restartPenalty { + config "false"; + type uint64; + description "Restart penalty"; + } + } + + grouping ipv4_IfTrafficStat-group { + description "IPv4 Interface Traffic Stat"; + + // Ephemeral data + leaf upktSent { + config "false"; + type uint64; + description "Unicast Packet sent"; + } + + // Ephemeral data + leaf upktRecv { + config "false"; + type uint64; + description "Unicast Packet Receive"; + } + + // Ephemeral data + leaf upktFwd { + config "false"; + type uint64; + description "Unicast Packet Forward"; + } + + // Ephemeral data + leaf upktOrig { + config "false"; + type uint64; + description "Unicast Packet Originated"; + } + + // Ephemeral data + leaf upktConsumed { + config "false"; + type uint64; + description "Unicast Packet Consumed"; + } + + // Ephemeral data + leaf ubyteSent { + config "false"; + type uint64; + description "Unicast Byte Sent"; + } + + // Ephemeral data + leaf ubyteRcv { + config "false"; + type uint64; + description "Unicast Byte Receive"; + } + + // Ephemeral data + leaf ubyteFwd { + config "false"; + type uint64; + description "Unicast Byte Forward"; + } + + // Ephemeral data + leaf ubyteOrig { + config "false"; + type uint64; + description "Unicast Byte Originated"; + } + + // Ephemeral data + leaf ubyteConsumed { + config "false"; + type uint64; + description "Unicast Byte Consumed"; + } + + // Ephemeral data + leaf mpktSent { + config "false"; + type uint64; + description "Multicast Packets Sent"; + } + + // Ephemeral data + leaf mpktRcv { + config "false"; + type uint64; + description "Multicast Packets Receive"; + } + + // Ephemeral data + leaf mpktFwd { + config "false"; + type uint64; + description "Multicast Packets Forward"; + } + + // Ephemeral data + leaf mpktOrig { + config "false"; + type uint64; + description "Multicast Packets Originated"; + } + + // Ephemeral data + leaf mpktConsumed { + config "false"; + type uint64; + description "Multicast Packets Consumed"; + } + + // Ephemeral data + leaf mbyteSent { + config "false"; + type uint64; + description "Multicast Byte Sent"; + } + + // Ephemeral data + leaf mbyteRcv { + config "false"; + type uint64; + description "Multicast Byte Receive"; + } + + // Ephemeral data + leaf mbyteFwd { + config "false"; + type uint64; + description "Multicast Byte Forward"; + } + + // Ephemeral data + leaf mbyteOrig { + config "false"; + type uint64; + description "Multicast Byte Originated"; + } + + // Ephemeral data + leaf mbyteConsumed { + config "false"; + type uint64; + description "Multicast Byte Consumed"; + } + + // Ephemeral data + leaf bpktSent { + config "false"; + type uint64; + description "Broadcast Packet Sent"; + } + + // Ephemeral data + leaf bpktRcv { + config "false"; + type uint64; + description "Broadcast Packet Receive"; + } + + // Ephemeral data + leaf bpktFwd { + config "false"; + type uint64; + description "Broadcast Packet Forward"; + } + + // Ephemeral data + leaf bpktOrig { + config "false"; + type uint64; + description "Broadcast Packet Originated"; + } + + // Ephemeral data + leaf bpktConsumed { + config "false"; + type uint64; + description "Broadcast Packet Consumed"; + } + + // Ephemeral data + leaf bbyteSent { + config "false"; + type uint64; + description "Broadcast Byte Sent"; + } + + // Ephemeral data + leaf bbyteRcv { + config "false"; + type uint64; + description "Broadcast Byte Receive"; + } + + // Ephemeral data + leaf bbyteFwd { + config "false"; + type uint64; + description "Broadcast Byte Forward"; + } + + // Ephemeral data + leaf bbyteOrig { + config "false"; + type uint64; + description "Broadcast Byte Originated"; + } + + // Ephemeral data + leaf bbyteConsumed { + config "false"; + type uint64; + description "Broadcast Byte Consumed"; + } + + // Ephemeral data + leaf lpktSent { + config "false"; + type uint64; + description "Labeled Packet Sent"; + } + + // Ephemeral data + leaf lpktRcv { + config "false"; + type uint64; + description "Labeled Packet Receive"; + } + + // Ephemeral data + leaf lpktFwd { + config "false"; + type uint64; + description "Labeled Packet Forward"; + } + + // Ephemeral data + leaf lpktOrig { + config "false"; + type uint64; + description "Labeled Packet Originated"; + } + + // Ephemeral data + leaf lpktConsumed { + config "false"; + type uint64; + description "Labeled Packet Consumed"; + } + + // Ephemeral data + leaf lbyteSent { + config "false"; + type uint64; + description "Labeled Byte Sent"; + } + + // Ephemeral data + leaf lbyteRcv { + config "false"; + type uint64; + description "Labeled Byte Receive"; + } + + // Ephemeral data + leaf lbyteFwd { + config "false"; + type uint64; + description "Labeled Byte Forward"; + } + + // Ephemeral data + leaf lbyteOrig { + config "false"; + type uint64; + description "Labeled Byte Originated"; + } + + // Ephemeral data + leaf lbyteConsumed { + config "false"; + type uint64; + description "Labeled Byte Consumed"; + } + } + + grouping ipv4_IfStat-group { + description "IPv4 Interface Stat"; + + // Ephemeral data + leaf iodValue { + config "false"; + type uint64; + description "Iod Value"; + } + + // Ephemeral data + leaf vrfNameOut { + config "false"; + type string; + description "Vrf Name Out"; + } + + // Ephemeral data + leaf protoState { + config "false"; + type string; + description "Protocol state"; + } + + // Ephemeral data + leaf linkState { + config "false"; + type string; + description "Link State"; + } + + // Ephemeral data + leaf adminState { + config "false"; + type string; + description "Admin State"; + } + + // Ephemeral data + leaf priAddr { + config "false"; + type address_Ipv4; + description "Primary Address"; + } + + // Ephemeral data + leaf priSubnet { + config "false"; + type string; + description "Primary Address Subnet"; + } + + // Ephemeral data + leaf priMasklen { + config "false"; + type uint8; + description "Primary Address Masklen"; + } + + // Ephemeral data + leaf priRoutePref { + config "false"; + type uint8; + description "Primary address route preference"; + } + + // Ephemeral data + leaf priTag { + config "false"; + type uint32; + description "Primary Address Tag"; + } + + // Ephemeral data + leaf secAddr { + config "false"; + type string; + description "Secondary IP Address"; + } + + // Ephemeral data + leaf secAddrSubnet { + config "false"; + type string; + description "Secondary Address Subnet"; + } + + // Ephemeral data + leaf secAddrMasklen { + config "false"; + type string; + description "Secondary Address Masklen"; + } + + // Ephemeral data + leaf secAddrRoutePref { + config "false"; + type string; + description "Secondary address route preference"; + } + + // Ephemeral data + leaf secAddrTag { + config "false"; + type string; + description "Secondary Address Tag"; + } + + // Ephemeral data + leaf numAddr { + config "false"; + type uint32; + description "Number of addresses"; + } + + // Ephemeral data + leaf vaddrClient { + config "false"; + type string; + description "Virtual address client"; + } + + // Ephemeral data + leaf vaddrPrefix { + config "false"; + type string; + description "Virtual address prefix"; + } + + // Ephemeral data + leaf vaddrSubnet { + config "false"; + type string; + description "Virtual address subnet"; + } + + // Ephemeral data + leaf vaddrMasklen { + config "false"; + type string; + description "Virtual address masklen"; + } + + // Ephemeral data + leaf numVaddr { + config "false"; + type uint64; + description "Number of virtual addresses"; + } + + // Ephemeral data + leaf unnumIntf { + config "false"; + type string; + description "Unnumbered IP Interface"; + } + leaf firstIod { + config "false"; + type uint64; + description "First iod"; + } + leaf unnumChildIntf { + config "false"; + type string; + description "Un-numbered child interface"; + } + + // Ephemeral data + leaf ipDisabled { + config "false"; + type string; + description "IP Disabled"; + } + + // Ephemeral data + leaf bcastAddr { + config "false"; + type address_Ipv4; + description "Broadcast Address"; + } + + // Ephemeral data + leaf mAddr { + config "false"; + type string; + description "IP Multicast Groups Address"; + } + + // Ephemeral data + leaf numMaddr { + config "false"; + type uint32; + description "Number of multicast addresses"; + } + + // Ephemeral data + leaf mtu { + config "false"; + type uint16; + description "MTU"; + } + + // Ephemeral data + leaf pref { + config "false"; + type uint8; + description "Preference"; + } + + // Ephemeral data + leaf tag { + config "false"; + type uint32; + description "Tag"; + } + + // Ephemeral data + leaf proxyArp { + config "false"; + + // Type is a Local-MO-Defined-Type + type nw_AdminSt_IfStat_proxyArp; + description "Proxy Arp"; + } + + // Ephemeral data + leaf localProxyArp { + config "false"; + + // Type is a Local-MO-Defined-Type + type nw_AdminSt_IfStat_localProxyArp; + description "Local Proxy Arp"; + } + + // Ephemeral data + leaf mRouting { + config "false"; + + // Type is a Local-MO-Defined-Type + type nw_AdminSt_IfStat_mRouting; + description "Multicast Routing"; + } + + // Ephemeral data + leaf icmpRedirect { + config "false"; + + // Type is a Local-MO-Defined-Type + type nw_AdminSt_IfStat_icmpRedirect; + description "Icmp Redirect"; + } + + // Ephemeral data + leaf directBcast { + config "false"; + + // Type is a Local-MO-Defined-Type + type nw_AdminSt_IfStat_directBcast; + description "Directed Broadcast"; + } + + // Ephemeral data + leaf ipUnreach { + config "false"; + + // Type is a Local-MO-Defined-Type + type nw_AdminSt_IfStat_ipUnreach; + description "IP Unreachable"; + } + + // Ephemeral data + leaf portUnreach { + config "false"; + + // Type is a Local-MO-Defined-Type + type nw_AdminSt_IfStat_portUnreach; + description "Port Unreachable"; + } + + // Ephemeral data + leaf urpfMode { + config "false"; + type string; + description "Unicast reverse path forwarding mode"; + } + + // Ephemeral data + leaf ipLoadSharing { + config "false"; + type string; + description "IP Load Sharing Type"; + } + + // Ephemeral data + leaf aclIn { + config "false"; + type string; + description "Acl In"; + } + + // Ephemeral data + leaf aclOut { + config "false"; + type string; + description "Acl Out"; + } + + // Ephemeral data + leaf statsLastReset { + config "false"; + type string; + description "Stats Last Reset"; + } + } + + grouping rtmap_RmapPolicy-group { + description "interface Route map Policy"; + leaf rmapname { + type string { + length "0..63"; + } + description "IP Route map Policy Name"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping ipv4_MulticastRoute-group { + description "IPv4 Multicast Static Route"; + leaf prefix { + type address_Ip; + description "Prefix"; + } + container nh-items { + list MulticastNexthop-list { + key "nhIf nhAddr nhVrf"; + + uses ipv4_MulticastNexthop-group; + description "IPv4 Nexthop list"; + } + description "IPv4 Nexthop"; + } + } + + grouping ipv4_MulticastNexthop-group { + description "IPv4 Nexthop"; + + leaf nhIf { + + type nw_IfId; + description "Nexthop Interface"; + } + leaf nhAddr { + type address_Ip; + description "Nexthop Address"; + } + + leaf nhVrf { + + type l3_VrfName; + description "Nexthop VRF"; + } + leaf pref { + type uint8; + description "Route preference"; + } + } + + grouping ipv4_ProcessStat-group { + description "IPv4 Process Stat"; + + // Ephemeral data + leaf contextName { + config "false"; + type string; + description "Context Name"; + } + + // Ephemeral data + leaf contextId { + config "false"; + type uint64; + description "Context Id"; + } + + // Ephemeral data + leaf baseTId { + config "false"; + type uint64; + description "Base Table Id"; + } + + // Ephemeral data + leaf autoDisc { + config "false"; + + // Type is a Local-MO-Defined-Type + type nw_AdminSt_ProcessStat_autoDisc; + description "Auto Discard"; + } + + // Ephemeral data + leaf autoDiscAdd { + config "false"; + + // Type is a Local-MO-Defined-Type + type nw_AdminSt_ProcessStat_autoDiscAdd; + description "Auto Discard Added"; + } + + // Ephemeral data + leaf nullBcast { + config "false"; + + // Type is a Local-MO-Defined-Type + type nw_AdminSt_ProcessStat_nullBcast; + description "Null BroadCast"; + } + + // Ephemeral data + leaf autoPuntBcast { + config "false"; + + // Type is a Local-MO-Defined-Type + type nw_AdminSt_ProcessStat_autoPuntBcast; + description "Auto Punt Broadcast"; + } + + // Ephemeral data + leaf staticDisc { + config "false"; + + // Type is a Local-MO-Defined-Type + type nw_AdminSt_ProcessStat_staticDisc; + description "Static Discard"; + } + + // Ephemeral data + leaf staticDefRoute { + config "false"; + type uint64; + description "Static Default Route Count"; + } + + // Ephemeral data + leaf ipUnreach { + config "false"; + type uint64; + description "IP Unreachable Count"; + } + + // Ephemeral data + leaf entryIod { + config "false"; + type string; + description "Entry IOD"; + } + + // Ephemeral data + leaf localAddr { + config "false"; + type string; + description "Local Address"; + } + } + + grouping ipv4_Route-group { + description "IPv4 Static Route"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf prefix { + type address_Ip; + description "Prefix"; + } + + // Route preference, the administrative distance assigned + // to this route + leaf pref { + + type rt_Preference; + description "Preference"; + } + + // Route tag + leaf tag { + + type rt_Tag; + description "Tag"; + } + + // Policy tag + leaf pcTag { + + type actrl_PcTag; + description "PC Tag"; + } + + // Route ctrl + leaf ctrl { + + type ip_RtControl; + description "Controls"; + } + + // Nexthops for the static route + container nh-items { + list Nexthop-list { + key "nhIf nhAddr nhVrf"; + + uses ipv4_Nexthop-group; + description "IPv4 Nexthop list"; + } + description "IPv4 Nexthop"; + } + + // Temporary Nexthop stub created until the Spine proxy + // IP address is determined. + container nhs-items { + list NexthopStub-list { + config "false"; + key "nhIf nhAddr nhVrf"; + + uses ipv4_NexthopStub-group; + description "IPv4 Nexthop list"; + } + description "IPv4 Nexthop"; + } + + container rsrouteToRouteDef-items { + + list RsRouteToRouteDef-list { + config "false"; + key "tDn"; + + uses ip_RsRouteToRouteDef_source-group; + description "Route Def Attachment list"; + } + description "Route Def Attachment"; + } + + container rsrouteToIfConn-items { + + list RsRouteToIfConn-list { + config "false"; + key "tDn"; + + uses ip_RsRouteToIfConn_source-group; + description "Route if Attachment list"; + } + description "Route if Attachment"; + } + } + + grouping ipv4_Nexthop-group { + description "IPv4 Nexthop"; + leaf rtname { + type string; + description "Next hop name"; + } + leaf tag { + type uint32; + description "tag value"; + } + leaf pref { + type uint8; + description "Route preference"; + } + leaf object { + type uint32; + description "Object to be tracked"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Nexthop interface, force the packet that matches + // this prefix on this interface + leaf nhIf { + + type nw_IfId; + description "Nexthop Interface"; + } + leaf nhAddr { + type address_Ip; + description "Nexthop Address"; + } + + // Nexthop vrf @@@ This is marked unspecified if the nexthop is in + // @@@ the same vrf as route + leaf nhVrf { + + type l3_VrfName; + description "Nexthop VRF"; + } + leaf rwEncap { + type string; + description "Rewrite Encapsulation"; + } + + // Nexthop flags + leaf flags { + config "false"; + + type ip_NhFlags; + description "Rnh Flags"; + } + + // Operational state + leaf operSt { + config "false"; + + type ip_OperSt; + description "Operational State"; + } + + container rsnexthopToNexthopDef-items { + + list RsNexthopToNexthopDef-list { + config "false"; + key "tDn"; + + uses ip_RsNexthopToNexthopDef_source-group; + description "Nexthop Def Attachment list"; + } + description "Nexthop Def Attachment"; + } + + container rsnexthopToProtG-items { + + list RsNexthopToProtG-list { + config "false"; + key "tDn"; + + uses ip_RsNexthopToProtG_source-group; + description "Protection Group Attachment list"; + } + description "Protection Group Attachment"; + } + } + + grouping ipv4_NexthopStub-group { + description "IPv4 Nexthop"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Nexthop interface, force the packet that matches + // this prefix on this interface + leaf nhIf { + config "false"; + + type nw_IfId; + description "Nexthop Interface"; + } + leaf nhAddr { + config "false"; + type address_Ip; + description "Nexthop Address"; + } + + // Nexthop vrf @@@ This is marked unspecified if the nexthop is in + // @@@ the same vrf as route + leaf nhVrf { + config "false"; + + type l3_VrfName; + description "Nexthop VRF"; + } + leaf rwEncap { + config "false"; + type string; + description "Rewrite Encapsulation"; + } + + // Nexthop flags + leaf flags { + config "false"; + + type ip_NhFlags; + description "Rnh Flags"; + } + + // Operational state + leaf operSt { + config "false"; + + type ip_OperSt; + description "Operational State"; + } + + container rsnexthopToNexthopDef-items { + + list RsNexthopToNexthopDef-list { + config "false"; + key "tDn"; + + uses ip_RsNexthopToNexthopDef_source-group; + description "Nexthop Def Attachment list"; + } + description "Nexthop Def Attachment"; + } + + container rsnexthopToProtG-items { + + list RsNexthopToProtG-list { + config "false"; + key "tDn"; + + uses ip_RsNexthopToProtG_source-group; + description "Protection Group Attachment list"; + } + description "Protection Group Attachment"; + } + } + + grouping ipv4_RouteStat-group { + description "IPv4 Static Route"; + + // Ephemeral data + leaf contextName { + config "false"; + type string; + description "Context Name"; + } + + // Ephemeral data + leaf contextId { + config "false"; + type uint32; + description "Context Id"; + } + + // Ephemeral data + leaf prefixMask { + config "false"; + type string; + description "Prefix Mask"; + } + + // Ephemeral data + leaf nhPrefixMask { + config "false"; + type string; + description "Next Hop Prefix Mask"; + } + + // Ephemeral data + leaf vrfInfo { + config "false"; + type string; + description "vrf Info"; + } + + // Ephemeral data + leaf intrInfo { + config "false"; + type string; + description "Interface Info"; + } + + // Ephemeral data + leaf uribStat { + config "false"; + type string; + description "Urib State"; + } + + // Ephemeral data + leaf nhopUribStat { + config "false"; + type string; + description "Next Hop Urib State"; + } + + // Ephemeral data + leaf trackObjNum { + config "false"; + type string; + description "Track object number"; + } + + // Ephemeral data + leaf trackObjState { + config "false"; + type string; + description "Track Object State"; + } + } + + grouping ipv4_VrfIfBriefStats-group { + description "IPv4 Vrf Level Brief Interface Statistics"; + + // Ephemeral data + leaf interfaceId { + config "false"; + + type nw_IfId; + description "Interface Name"; + } + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "IPv4 Address"; + } + + // Ephemeral data + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Ephemeral data + leaf protSt { + config "false"; + + type nw_AdminSt; + description "Protocol State"; + } + + // Ephemeral data + leaf linkSt { + config "false"; + + type nw_AdminSt; + description "Link State"; + } + + // Ephemeral data + leaf secAddrList { + config "false"; + type string; + description "Seconday Address List"; + } + } + + grouping ipv4_IpPacketsPerSecond-group { + description "IPv4 Packets per second config"; + + // Type of the PPS traffic which is thresholded + leaf ipPpsType { + + type ipv4_IpPpsTypes; + description "Packets per second type"; + } + leaf ipPpsThresholdSize { + type uint32 { + range "1..30000"; + } + description "Packets per second size"; + } + leaf ipPpsThresholdLogInterval { + type uint32 { + range "1..60"; + } + default "1"; + description "Packets per second log interval"; + } + } + + grouping ipv4_Client-group { + description "IPv4 Client"; + + // Ephemeral data + leaf clientName { + config "false"; + type string; + description "Client Name"; + } + + // Ephemeral data + leaf clientUuid { + config "false"; + type int32; + description "Client uuid"; + } + + // Ephemeral data + leaf clientPid { + config "false"; + type int32; + description "Client Pid"; + } + + // Ephemeral data + leaf clientExtPid { + config "false"; + type uint32; + description "Client Extended Pid"; + } + + // Ephemeral data + leaf clientProtocol { + config "false"; + type uint8; + description "Client Protocol"; + } + + // Ephemeral data + leaf clientIndex { + config "false"; + type uint16; + description "Client Index"; + } + + // Ephemeral data + leaf clientContextId { + config "false"; + type uint32; + description "Client Context Id"; + } + + // client mts sap + // Ephemeral data + leaf clientMtsSap { + config "false"; + + type ipv4_ClientMtsSapType; + description "Client Data Mts Sap"; + } + + // client flag + // Ephemeral data + leaf clientFlag { + config "false"; + + type ipv4_ClientFlagType; + description "Client Flag"; + } + + // Ephemeral data + leaf clientDataMsgSuccess { + config "false"; + type uint64; + description "Client Data Msg Send Successful"; + } + + // Ephemeral data + leaf clientDataMsgFail { + config "false"; + type uint64; + description "Client Data Msg Send Failed"; + } + + // Ephemeral data + leaf clientRcvFunName { + config "false"; + type string; + description "Client Receive Function Name"; + } + } + + grouping ipv4_IPLoadSharing-group { + description "IPv4 Load-sharing"; + + // load share mode for 'ip load-sharing' cli, there are four modes + // - 1. {address source-destination} + // cli: ip load-sharing address source-destination gre-outer + // concatenation rotate 1 universal-id 2 + // - 2. {address destination port destination} + // cli: ip load-sharing address source-destination gre + // concatenation rotate 1 universal-id 2 + // - 3. {address source-destination gre-key} + // cli: ip load-sharing address destination port destination + // rotate 1 universal-id 2 + // - 4. {address source-destination port source-destination} + // cli: ip load-sharing address source-destination port + // source-destination concatenation + // - 5. {address source-destination gtpu-teid} + // cli: ip load-sharing address source-destination gtpu + // concatenation rotate 1 universal-id 2 + leaf loadShareMode { + + type ip_LoadShareFormat; + description "Load sharing mode"; + } + leaf universalID { + type uint32 { + range "0..4294967295"; + } + description "Universal-ID(Random seed)"; + } + + // whether gre-outer hash is enabled + leaf greOuterHash { + + type nw_AdminSt; + default "disabled"; + description "GRE Outer Hash"; + } + leaf udfOffset { + type uint16 { + range "0..127"; + } + description "source-destination udf"; + } + leaf udfLength { + type uint16 { + range "0..32"; + } + description "source-destination udf length"; + } + + // whether concatenation is enabled + leaf concatenation { + + type nw_AdminSt; + default "disabled"; + description "Concatenation"; + } + leaf rotate { + type uint16 { + range "1..63"; + } + default "32"; + description "Rotate"; + } + + // whether ecmploadsharing is enabled. + // Not supported on n9k today, defined for future use + leaf ecmpLoadSharing { + + type nw_AdminSt; + default "disabled"; + description "ECMP load sharing"; + } + } + + grouping ipv4_LoadSharingStat-group { + description "IPv4 load-sharing statistics"; + + // Ephemeral data + leaf univerIdRanSeed { + config "false"; + type uint32; + description "Universal Id Random Seed"; + } + + // Ephemeral data + leaf ipLoadshareOption { + config "false"; + type string; + description "IP Load Share Option"; + } + + // Ephemeral data + leaf hashFlag { + config "false"; + + type nw_AdminSt; + description "GRE-Outer Hash"; + } + + // Ephemeral data + leaf concat { + config "false"; + + type nw_AdminSt; + description "Concatenation"; + } + leaf rotate { + config "false"; + type uint16 { + range "1..63"; + } + default "32"; + description "Rotate"; + } + } + + grouping ipv4_IpTrafficStat-group { + description "IP Software Processed Traffic Stat"; + + // Ephemeral data + leaf received { + config "false"; + type uint32; + description "Traffic Received"; + } + + // Ephemeral data + leaf sent { + config "false"; + type uint32; + description "Traffic Sent"; + } + + // Ephemeral data + leaf consumed { + config "false"; + type uint32; + description "Traffic Consumed"; + } + + // Ephemeral data + leaf fwdUcast { + config "false"; + type uint32; + description "Forwarded Unicast"; + } + + // Ephemeral data + leaf fwdMcast { + config "false"; + type uint32; + description "Forwarded Multicast"; + } + + // Ephemeral data + leaf fwdLabel { + config "false"; + type uint32; + description "Forwarded Label"; + } + + // Ephemeral data + leaf ingressMcecFwdPkts { + config "false"; + type uint32; + description "Ingress mcec forward"; + } + + // Ephemeral data + leaf optsEnd { + config "false"; + type uint32; + description "OPTS End"; + } + + // Ephemeral data + leaf optsNop { + config "false"; + type uint32; + description "OPTS Nop"; + } + + // Ephemeral data + leaf optsBsec { + config "false"; + type uint32; + description "OPTS Basic Security"; + } + + // Ephemeral data + leaf optsLsrr { + config "false"; + type uint32; + description "OPTS Loose Source Route"; + } + + // Ephemeral data + leaf optsTimestamp { + config "false"; + type uint32; + description "OPTS Timestamp"; + } + + // Ephemeral data + leaf optsEsec { + config "false"; + type uint32; + description "OPTS Extended Security"; + } + + // Ephemeral data + leaf optsRecordRoute { + config "false"; + type uint32; + description "OPTS Record Route"; + } + + // Ephemeral data + leaf optsStrsrcRoute { + config "false"; + type uint32; + description "OPTS Strict Source Route"; + } + + // Ephemeral data + leaf optsAlert { + config "false"; + type uint32; + description "OPTS Alert"; + } + + // Ephemeral data + leaf optsOther { + config "false"; + type uint32; + description "OPTS Other"; + } + + // Ephemeral data + leaf frag { + config "false"; + type uint32; + description "Fragments Received"; + } + + // Ephemeral data + leaf fragmented { + config "false"; + type uint32; + description "Fragments Sent"; + } + + // Ephemeral data + leaf outFrag { + config "false"; + type uint32; + description "Fragments Created"; + } + + // Ephemeral data + leaf fragDrop { + config "false"; + type uint32; + description "Fragments Dropped"; + } + + // Ephemeral data + leaf cantFrag { + config "false"; + type uint32; + description "Packets with Dont Fragment Bit"; + } + + // Ephemeral data + leaf reasm { + config "false"; + type uint32; + description "Packets Reassembled"; + } + + // Ephemeral data + leaf fragTO { + config "false"; + type uint32; + description "Fragments Timed Out"; + } + } + + grouping ipv4_IpTrafficErrStat-group { + description "IP Software Processed Traffic Stat"; + + // Ephemeral data + leaf badCsum { + config "false"; + type uint32; + description "Error Bad Checksum"; + } + + // Ephemeral data + leaf tooSmall { + config "false"; + type uint32; + description "Error Packet Too Small"; + } + + // Ephemeral data + leaf badVer { + config "false"; + type uint32; + description "Error Bad Version"; + } + + // Ephemeral data + leaf badHLen { + config "false"; + type uint32; + description "Error Bad Header Length"; + } + + // Ephemeral data + leaf badLen { + config "false"; + type uint32; + description "Error Bad Packet Length"; + } + + // Ephemeral data + leaf badDest { + config "false"; + type uint32; + description "Error Bad Destination"; + } + + // Ephemeral data + leaf badTTL { + config "false"; + type uint32; + description "Error Bad TTL"; + } + + // Ephemeral data + leaf cantFwd { + config "false"; + type uint32; + description "Error Could Not Forward"; + } + + // Ephemeral data + leaf outDrop { + config "false"; + type uint32; + description "Error No Buffer Dropped"; + } + + // Ephemeral data + leaf badEncap { + config "false"; + type uint32; + description "Error Bad Encapsulation"; + } + + // Ephemeral data + leaf noRoute { + config "false"; + type uint32; + description "Eroor No route"; + } + + // Ephemeral data + leaf noProto { + config "false"; + type uint32; + description "Error Non-Existent Protocol"; + } + + // Ephemeral data + leaf badOptions { + config "false"; + type uint32; + description "Error Bad Options"; + } + + // Ephemeral data + leaf vinciMigPkts { + config "false"; + type uint32; + description "Vinci Migration Packet Count"; + } + + // Ephemeral data + leaf snoopSuccess { + config "false"; + type uint32; + description "Packets Snooped"; + } + + // Ephemeral data + leaf sviIodDown { + config "false"; + type uint32; + description "Packets On Down Svi"; + } + + // Ephemeral data + leaf restartPktDrop { + config "false"; + type uint32; + description "Restart Packet Drop Count"; + } + + // Ephemeral data + leaf mbufErrCount { + config "false"; + type uint32; + description "MBUF Pull Up Fail"; + } + + // Ephemeral data + leaf badCntxtIdDrop { + config "false"; + type uint32; + description "Bad Context Id Drop Count"; + } + + // Ephemeral data + leaf rpfDrop { + config "false"; + type uint32; + description "Rpf Drop Count"; + } + + // Ephemeral data + leaf badGwMacDrop { + config "false"; + type uint32; + description "Bad GW MAC Drop Count"; + } + + // Ephemeral data + leaf ipsOptionFail { + config "false"; + type uint32; + description "Ingress Option Processing Fail"; + } + + // Ephemeral data + leaf natInDrop { + config "false"; + type uint32; + description "NAT Inside Drop Count"; + } + + // Ephemeral data + leaf natOutDrop { + config "false"; + type uint32; + description "NAT Outside Drop Count"; + } + + // Ephemeral data + leaf ipsMfwdFail { + config "false"; + type uint32; + description "Ingress Mforward Failed"; + } + + // Ephemeral data + leaf ipsLispDrop { + config "false"; + type uint32; + description "Ingress Lisp Drop"; + } + + // Ephemeral data + leaf ipsLispDecapDrop { + config "false"; + type uint32; + description "Ingress Lips Decap Drop"; + } + + // Ephemeral data + leaf ipsLispEncapDrop { + config "false"; + type uint32; + description "Ingress Lisp Encap Drop"; + } + + // Ephemeral data + leaf ipsLispEncap { + config "false"; + type uint32; + description "Ingress Lisp Encap"; + } + + // Ephemeral data + leaf ipsMfwdCopyDrop { + config "false"; + type uint32; + description "Ingress Mfwd Copy Drop"; + } + + // Ephemeral data + leaf ipsRaReassDrop { + config "false"; + type uint32; + description "Ingress RA/Reass Drop"; + } + + // Ephemeral data + leaf ipsIcmpRedirProcDrop { + config "false"; + type uint32; + description "Ingress ICMP Redirect Processing Drop"; + } + + // Ephemeral data + leaf ipsIfmgrInitFail { + config "false"; + type uint32; + description "Ingress Ifmgr Init Drop"; + } + + // Ephemeral data + leaf ipsInvalidFilter { + config "false"; + type uint32; + description "Ingress Invalid Filter Drop"; + } + + // Ephemeral data + leaf ipsInvalidL2msg { + config "false"; + type uint32; + description "Ingress Invalid L2 Msg Drop"; + } + + // Ephemeral data + leaf aclIngressDrop { + config "false"; + type uint32; + description "ACL Filter Ingress Drops"; + } + + // Ephemeral data + leaf aclEgressDrop { + config "false"; + type uint32; + description "ACL Filter Egree Drop"; + } + + // Ephemeral data + leaf aclDirBcastDrop { + config "false"; + type uint32; + description "ACL Filter Directed Broadcsat Drop"; + } + } + + grouping ipv4_ICMPTrafficStat-group { + description "ICMP Software Processed Traffic Stat"; + + // Ephemeral data + leaf txRedir { + config "false"; + type uint32; + description "Transmission Redirect"; + } + + // Ephemeral data + leaf txUnreach { + config "false"; + type uint32; + description "Transmission Unreachable"; + } + + // Ephemeral data + leaf txEchoReq { + config "false"; + type uint32; + description "Transmission Echo Request"; + } + + // Ephemeral data + leaf txEchoReply { + config "false"; + type uint32; + description "Transmission Echo Reply"; + } + + // Ephemeral data + leaf txMaskReq { + config "false"; + type uint32; + description "Transmission Mask Request"; + } + + // Ephemeral data + leaf txMaskReply { + config "false"; + type uint32; + description "Transmission Mask Reply"; + } + + // Ephemeral data + leaf txInfoReq { + config "false"; + type uint32; + description "Transmission Info Request"; + } + + // Ephemeral data + leaf txInfoReply { + config "false"; + type uint32; + description "Transmission Info Reply"; + } + + // Ephemeral data + leaf txParamProb { + config "false"; + type uint32; + description "Transmission Parameter Problem"; + } + + // Ephemeral data + leaf txSrcQuench { + config "false"; + type uint32; + description "Transmission Source Quench"; + } + + // Ephemeral data + leaf txTstampReq { + config "false"; + type uint32; + description "Transmission Timestamp Request"; + } + + // Ephemeral data + leaf txTstampReply { + config "false"; + type uint32; + description "Transmission Timestamp Reply"; + } + + // Ephemeral data + leaf txTstampXceed { + config "false"; + type uint32; + description "Transmission Timestamp Exceeded"; + } + + // Ephemeral data + leaf txRtrSolicit { + config "false"; + type uint32; + description "Transmission Router Solicitation"; + } + + // Ephemeral data + leaf txRtrAdvert { + config "false"; + type uint32; + description "Transmission Router Advertisement"; + } + + // Ephemeral data + leaf outBadLen { + config "false"; + type uint32; + description "Output Bad Length Drop"; + } + + // Ephemeral data + leaf outEncapFail { + config "false"; + type uint32; + description "Output Encapsulation Fail Drop"; + } + + // Ephemeral data + leaf outXmitFail { + config "false"; + type uint32; + description "Output Xmit Fail Drop"; + } + + // Ephemeral data + leaf icmpOrigReq { + config "false"; + type uint32; + description "ICMP Originate Req"; + } + + // Ephemeral data + leaf redirOrigReq { + config "false"; + type uint32; + description "Redirected Originated Req"; + } + + // Ephemeral data + leaf outErr { + config "false"; + type uint32; + description "Orginate Deny Resource Fail"; + } + + // Ephemeral data + leaf oldShortIp { + config "false"; + type uint32; + description "Originate Deny Short Ip"; + } + + // Ephemeral data + leaf oldIcmp { + config "false"; + type uint32; + description "Originate Deny Icmp"; + } + + // Ephemeral data + leaf errorDrop { + config "false"; + type uint32; + description "Originatte Deny other error"; + } + + // Ephemeral data + leaf rxRedir { + config "false"; + type uint32; + description "Reception Redirect"; + } + + // Ephemeral data + leaf rxUnreach { + config "false"; + type uint32; + description "Reception Unreachable"; + } + + // Ephemeral data + leaf rxEchoReq { + config "false"; + type uint32; + description "Reception Echo Request"; + } + + // Ephemeral data + leaf rxEchoReply { + config "false"; + type uint32; + description "Reception Echo Reply"; + } + + // Ephemeral data + leaf rxMaskReq { + config "false"; + type uint32; + description "Reception Mask Request"; + } + + // Ephemeral data + leaf rxMaskReply { + config "false"; + type uint32; + description "Reception Mask Reply"; + } + + // Ephemeral data + leaf rxInfoReq { + config "false"; + type uint32; + description "Reception Info Request"; + } + + // Ephemeral data + leaf rxInfoReply { + config "false"; + type uint32; + description "Reception Info Reply"; + } + + // Ephemeral data + leaf rxParamProb { + config "false"; + type uint32; + description "Reception Parameter Problem"; + } + + // Ephemeral data + leaf rxSrcQuench { + config "false"; + type uint32; + description "Reception Source Quench"; + } + + // Ephemeral data + leaf rxTstampReq { + config "false"; + type uint32; + description "Reception Timsetamp Request"; + } + + // Ephemeral data + leaf rxTstampReply { + config "false"; + type uint32; + description "Reception Timestamp Reply"; + } + + // Ephemeral data + leaf rxTimeXceed { + config "false"; + type uint32; + description "Reception Time Exceeded"; + } + + // Ephemeral data + leaf rxRtrSolicit { + config "false"; + type uint32; + description "Reception Router Solicit"; + } + + // Ephemeral data + leaf rxRtrAdvert { + config "false"; + type uint32; + description "Reception Router Advertisement"; + } + + // Ephemeral data + leaf rxFormatError { + config "false"; + type uint32; + description "Reception Format Error"; + } + + // Ephemeral data + leaf rxCsumError { + config "false"; + type uint32; + description "Reception Checksum Error"; + } + + // Ephemeral data + leaf icmpLispProcessed { + config "false"; + type uint32; + description "ICMP Lisp Processed"; + } + + // Ephemeral data + leaf icmpNoClients { + config "false"; + type uint32; + description "ICMP No Clients"; + } + + // Ephemeral data + leaf icmpConsumed { + config "false"; + type uint32; + description "ICMP Consumed"; + } + + // Ephemeral data + leaf icmpReplies { + config "false"; + type uint32; + description "ICMP replies"; + } + + // Ephemeral data + leaf icmpReplyDropInvldAddr { + config "false"; + type uint32; + description "ICMP Replies Drop - Invalid Address"; + } + + // Ephemeral data + leaf icmpReplyDropInactAddr { + config "false"; + type uint32; + description "ICMP Replies Drop - Inactive Address"; + } + + // Ephemeral data + leaf statsLastReset { + config "false"; + type string; + description "Statistics last Rest"; + } + } + + grouping ipv4_RFC4293TrafficStat-group { + description "RFC 4293: IP Software Processed Traffic Stat"; + + // Ephemeral data + leaf inrcv { + config "false"; + type uint32; + description "Reception Packets Received"; + } + + // Ephemeral data + leaf inoctet { + config "false"; + type uint32; + description "Reception Bytes Received"; + } + + // Ephemeral data + leaf inhdrerr { + config "false"; + type uint32; + description "Reception Inhdrerrors"; + } + + // Ephemeral data + leaf innoroutes { + config "false"; + type uint32; + description "Reception Innoroutes"; + } + + // Ephemeral data + leaf inaddrerr { + config "false"; + type uint32; + description "Reception Inaddrerrors"; + } + + // Ephemeral data + leaf innoproto { + config "false"; + type uint32; + description "Reception Unknown Protos"; + } + + // Ephemeral data + leaf intruncated { + config "false"; + type uint32; + description "Reception Truncated Packets"; + } + + // Ephemeral data + leaf inforwdgrams { + config "false"; + type uint32; + description "Reception Inforwdgrams"; + } + + // Ephemeral data + leaf reasmreqds { + config "false"; + type uint32; + description "Reception Fragments Reassemble Requested"; + } + + // Ephemeral data + leaf reasmoks { + config "false"; + type uint32; + description "Reception Fragments Reassembled"; + } + + // Ephemeral data + leaf reasmfails { + config "false"; + type uint32; + description "Reception Fragments Dropped"; + } + + // Ephemeral data + leaf indiscards { + config "false"; + type uint32; + description "Reception Fragments Discard"; + } + + // Ephemeral data + leaf indelivers { + config "false"; + type uint32; + description "Reception Fragments Deliver"; + } + + // Ephemeral data + leaf inMcastPkts { + config "false"; + type uint32; + description "Reception Multicast Packets"; + } + + // Ephemeral data + leaf inMcastBytes { + config "false"; + type uint32; + description "Reception Multicast Bytes"; + } + + // Ephemeral data + leaf inBcastPkts { + config "false"; + type uint32; + description "Reception Broadcast Packets"; + } + + // Ephemeral data + leaf outRequest { + config "false"; + type uint32; + description "Transmission Requests"; + } + + // Ephemeral data + leaf outNoRoutes { + config "false"; + type uint32; + description "Transmission No Routes"; + } + + // Ephemeral data + leaf outForwdGrams { + config "false"; + type uint32; + description "Transmission Forward Stats"; + } + + // Ephemeral data + leaf outDiscards { + config "false"; + type uint32; + description "Transmission Fragments Discarded"; + } + + // Ephemeral data + leaf outFragReqds { + config "false"; + type uint32; + description "Transmission Fragments Requested"; + } + + // Ephemeral data + leaf outFragOks { + config "false"; + type uint32; + description "Transmission Fragments Ok"; + } + + // Ephemeral data + leaf outFragFails { + config "false"; + type uint32; + description "Transmission Fragments Failed"; + } + + // Ephemeral data + leaf outFragCreates { + config "false"; + type uint32; + description "Transmission Fragments Created"; + } + + // Ephemeral data + leaf outTransmits { + config "false"; + type uint32; + description "Transmission Packets Transmits"; + } + + // Ephemeral data + leaf outBytes { + config "false"; + type uint32; + description "Transmission Bytes Sent"; + } + + // Ephemeral data + leaf outMcastPkts { + config "false"; + type uint32; + description "Transmission Multicast Packets sent"; + } + + // Ephemeral data + leaf outMcastBytes { + config "false"; + type uint32; + description "Transmission Multicast Bytes sent"; + } + + // Ephemeral data + leaf outBcastPkts { + config "false"; + type uint32; + description "Transmission Broadcast Packets"; + } + + // Ephemeral data + leaf outBcastBytes { + config "false"; + type uint32; + description "Transmission Broadcast Bytes"; + } + } + + grouping ipv6_Entity-group { + description "IPv6 Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per ipv6 instance information. There is + // only one instance of ipv6 running in the system today + container inst-items { + + uses ipv6_Inst-group; + description "IPv6 Instance"; + } + } + + grouping ipv6_Inst-group { + description "IPv6 Instance"; + + // ipv6 access-list match local + leaf accessListMatchLocal { + + type nw_AdminSt; + default "disabled"; + description "Access-List Match Local"; + } + + // static neighbor outside subnet + leaf staticNeighborOutsideSubnet { + + type nw_AdminSt; + default "disabled"; + description "Static Neighbor Outside Subnet "; + } + + // Queue 1 packet when triggered NS is sent + leaf queuePackets { + + type nw_AdminSt; + default "disabled"; + description "Queue-packets"; + } + + // Switch ND packets received on core ports + leaf switchPackets { + + type ip_SwitchPktTarget; + description "Switch-packets"; + } + + // Drop fragmented ND packets + leaf dropNdFragments { + + type nw_AdminSt; + default "disabled"; + description "Drop ND Fragments "; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Objectification of IPv6 route statistics + // Ephemeral data + container mtustats-items { + + uses ipv6_IPv6MtuCacheStatGlobal-group; + description "IPv6 global MTU cache statistics"; + } + + // Objectification of IPv6 Client statistics + // Ephemeral data + container clientstats-items { + + // Ephemeral data + list IPv6Clients-list { + config "false"; + key "clientName clientProtocol"; + + uses ipv6_IPv6Clients-group; + description "Registered clients with IPv6 process list"; + } + description "Registered clients with IPv6 process"; + } + + // Domain (vrf) information + container dom-items { + list Dom-list { + key "name"; + + uses ipv6_Dom-group; + description "IPV6 Domain list"; + } + description "IPV6 Domain"; + } + + // Objectification of IPv6 Fragments statistics + // Ephemeral data + container fragstats-items { + + // Ephemeral data + list IPv6Fragments-list { + config "false"; + key "srcAddr"; + + uses ipv6_IPv6Fragments-group; + description "IPv6 queued fragments list"; + } + description "IPv6 queued fragments"; + } + container logs-items { + list IPv6EventLogs-list { + key "eventType"; + + uses ipv6_IPv6EventLogs-group; + description "IPv6 Event History Logging list"; + } + description "IPv6 Event History Logging"; + } + + // Holds ipv6 global statistics + // Ephemeral data + container pktqstats-items { + + uses ipv6_IPv6InstStat-group; + description "IPv6 global instance statistics"; + } + + // Objectification of IPv6 neighbor statistics + // Ephemeral data + container ipv6stats-items { + + // Ephemeral data + list IPv6Stat-list { + config "false"; + key "ftmName"; + + uses ipv6_IPv6Stat-group; + description "IPv6 global statistics list"; + } + description "IPv6 global statistics"; + } + + // Objectification of IPv6 interface statistics + // Ephemeral data + container trafficstats-items { + + uses ipv6_IPv6TrafficStat-group; + description "IPv6 traffic statistics"; + } + } + + grouping ipv6_IPv6MtuCacheStatGlobal-group { + description "IPv6 global MTU cache statistics"; + + // Ephemeral data + leaf outstandingEntries { + config "false"; + type uint32; + description "Outstanding Entries"; + } + + // Ephemeral data + leaf expiredEntries { + config "false"; + type uint64; + description "Expired Entries"; + } + + // Ephemeral data + leaf purgedEntries { + config "false"; + type uint64; + description "Purged Entries"; + } + + // Ephemeral data + leaf internalErrors { + config "false"; + type uint64; + description "Internal Errors"; + } + + // Ephemeral data + leaf pktTooBig { + config "false"; + type uint64; + description "Packet-Too-Big Messages Received"; + } + + // Ephemeral data + leaf cacheMisses { + config "false"; + type uint64; + description "Cache misses"; + } + + // Ephemeral data + leaf cacheUpdates { + config "false"; + type uint64; + description "Cache updates"; + } + + // Ephemeral data + leaf smallMtuAdv { + config "false"; + type uint64; + description "Too small MTU advertised"; + } + + // Ephemeral data + leaf cacheNoUpdates { + config "false"; + type uint64; + description "Cache No Updates"; + } + } + + grouping ipv6_IPv6Clients-group { + description "Registered clients with IPv6 process"; + + // Ephemeral data + leaf clientName { + config "false"; + type string; + description "IPv6: Client name"; + } + + // Ephemeral data + leaf clientStatus { + config "false"; + type string; + description "IPv6: Client status"; + } + + // Ephemeral data + leaf clientPid { + config "false"; + type int32; + description "IPv6: Client pid"; + } + + // Ephemeral data + leaf clientExtPid { + config "false"; + type int32; + description "IPv6: Client extended pid"; + } + + // Ephemeral data + leaf clientProtocol { + config "false"; + type int32; + description "IPv6: Client protocol"; + } + + // Ephemeral data + leaf clientPibIndex { + config "false"; + type int32; + description "IPv6: Client pib index"; + } + + // Ephemeral data + leaf clientUuid { + config "false"; + type int32; + description "IPv6: Client Uuid"; + } + + // Ephemeral data + leaf clientRoutingVrf { + config "false"; + type int32; + description "IPv6: Client routing vrf id"; + } + + // Ephemeral data + leaf clientRoutingFlag { + config "false"; + type int32; + description "IPv6: Client routing flag id"; + } + + // Ephemeral data + leaf clientCtrlMtsSap { + config "false"; + type int32; + description "IPv6: Client control Mts Sap"; + } + + // Ephemeral data + leaf clientDataMtsSap { + config "false"; + type int32; + description "IPv6: Client Data MTS Sap"; + } + + // Ephemeral data + leaf destUnreachSent { + config "false"; + type int32; + description "IPv6: IPC messages to control queue"; + } + + // Ephemeral data + leaf destUnreachRcvd { + config "false"; + type int32; + description "IPv6: failed client IPC messages to control queue"; + } + + // Ephemeral data + leaf adminProhibSent { + config "false"; + type int32; + description "IPv6: IPC messages to data queue"; + } + + // Ephemeral data + leaf adminProhibRcvd { + config "false"; + type int32; + description "IPv6: failed IPC messages to data queue"; + } + + // Ephemeral data + leaf clientIfExtIndex { + config "false"; + type int32; + description "IPv6: Client interface extended index"; + } + + // Ephemeral data + leaf clientRecvFn { + config "false"; + type string; + description "IPv6: Client received function"; + } + + // Ephemeral data + leaf clientRecvHex { + config "false"; + type string; + description "IPv6: Client received Hex"; + } + } + + grouping ipv6_Dom-group { + description "IPV6 Domain"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + container mtustats-items { + + uses ipv6_IPv6MtuCacheStat-group; + description "IPv6 MTU cache statistics"; + } + + // ipv6 route static bfd + container rtstaticbfd-items { + list RtStaticBfd-list { + key "intf nexthop"; + + uses ipv6_RtStaticBfd-group; + description "IPV6 route static bfd list"; + } + description "IPV6 route static bfd"; + } + + // This object holds ipv6 information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses ipv6_If-group; + description "IPV6 Interface list"; + } + description "IPV6 Interface"; + } + + // Objectification of IPv6 route statistics + // Ephemeral data + container procstats-items { + + uses ipv6_IPv6ProcessStat-group; + description "IPv6 process statistics"; + } + + // Static route definitions + container rt-items { + list Route-list { + key "prefix"; + + uses ipv6_Route-group; + description "IPv6 Static Route list"; + } + description "IPv6 Static Route"; + } + + // Objectification of IPv6 route statistics + // Ephemeral data + container routestats-items { + + uses ipv6_IPv6RouteStat-group; + description "IPv6 Route Statistics"; + } + } + + grouping ipv6_IPv6MtuCacheStat-group { + description "IPv6 MTU cache statistics"; + + // Ephemeral data + container addr-items { + + // Ephemeral data + list IPv6MtuCacheDestStat-list { + config "false"; + key "pathDestination"; + + uses ipv6_IPv6MtuCacheDestStat-group; + description "IPv6 MTU cache destination statistics list"; + } + description "IPv6 MTU cache destination statistics"; + } + } + + grouping ipv6_IPv6MtuCacheDestStat-group { + description "IPv6 MTU cache destination statistics"; + + // Ephemeral data + leaf pathDestination { + config "false"; + type address_Ipv6; + description "Path destination address"; + } + + // Ephemeral data + leaf pathMtu { + config "false"; + type uint16; + description "Path MTU"; + } + + // Ephemeral data + leaf outgoingIod { + config "false"; + type string; + description "Outgoing IOD"; + } + + // Ephemeral data + leaf smallMtuReceived { + config "false"; + type string; + description "Too small MTU received"; + } + + // Ephemeral data + leaf bigMtuReeived { + config "false"; + type string; + description "Too big MTU received"; + } + + // Ephemeral data + leaf smallMtu { + config "false"; + type uint16; + description "Minimum mtu received less than the v6 minimum mtu"; + } + + // Ephemeral data + leaf lastMtuUpdate { + config "false"; + type string; + description "Last MTU update"; + } + } + + grouping ipv6_RtStaticBfd-group { + description "IPV6 route static bfd"; + + // interface value. + leaf intf { + + type nw_IfId; + description "Interface"; + } + leaf nexthop { + type address_Ip; + description "Nexthop Address"; + } + } + + grouping ipv6_If-group { + description "IPV6 Interface"; + + // Handle ipv6 address use-link-local-address" + leaf useLinkLocalAddr { + + type nw_AdminSt; + default "disabled"; + description "IPv6 Address Use Link Local Address"; + } + + // Handle ipv6 link-local use-bia + leaf llAddrUseBia { + + type nw_AdminSt; + default "disabled"; + description "IPv6 Link Local Use BIA"; + } + + // Handle ipv6 urpf info" + leaf urpf { + + type ip_UrpfT; + description "IPv6 URPF Info"; + } + + // Handle ipv6 forward" + leaf forward { + + type nw_AdminSt; + default "disabled"; + description "IPv6 forward"; + } + + // IPv6 Stateless address autoconfig + leaf autoconfig { + + type nw_AdminSt; + default "disabled"; + description "IPv6 Stateless address autoconfig"; + } + + // adds default route and the nh would be fetched from RA source address + leaf defaultRoute { + + type nw_AdminSt; + default "disabled"; + description "Default Route Addition with Nexthop as RA Source Address"; + } + leaf llAddr { + type address_Ip; + description "IPv6 Link Local Address"; + } + + // To Handle the config fault for this MO + leaf configError { + config "false"; + + type ipv6_ConfigErr; + default "noerror"; + description "Config error"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Operational state + leaf operSt { + config "false"; + + type ip_OperSt; + description "Operational State"; + } + + // Operational state qualifier + leaf operStQual { + config "false"; + + type ip_UnnumberedOperStQual; + description "Operational State Qualifier"; + } + + // Interface address + container addr-items { + list Addr-list { + key "addr"; + + uses ipv6_Addr-group; + description "IPV6 Address list"; + } + description "IPV6 Address"; + } + + // Link local Interface address + container lladdr-items { + list LLaddr-list { + key "addr"; + + uses ipv6_LLaddr-group; + description "IPV6 Link Local Address list"; + } + description "IPV6 Link Local Address"; + } + + // IPv6 Neighbor Address + container nghbr-items { + list Neighbor-list { + key "addr"; + + uses ipv6_Neighbor-group; + description "IPV6 Neighbor Address list"; + } + description "IPV6 Neighbor Address"; + } + + // Objectification of IPv6 interface statistics + // Ephemeral data + container ifstats-items { + + uses ipv6_IPv6IfStat-group; + description "IPv6 interface statistics"; + } + + // Objectification of IPv6 neighbor statistics + container nbrstats-items { + list IPv6NeighborStat-list { + config "false"; + key "ngbrAddr"; + + uses ipv6_IPv6NeighborStat-group; + description "IPv6 neighbour statistics list"; + } + description "IPv6 neighbour statistics"; + } + + // Route map entries + container rpol-items { + + uses rtmap_RmapPolicy-group; + description "interface Route map Policy"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping ipv6_Addr-group { + description "IPV6 Address"; + leaf aggregatePrefixLength { + type uint16 { + range "0..127"; + } + description "Prefix-Length for AM Route Aggregation"; + } + leaf addr { + type address_Ip; + description "Address"; + } + + // Type of the address + leaf type { + + type ip_AddrT; + description "Type"; + } + + // Address controls + leaf ctrl { + + type ip_AddrControl; + description "Controls"; + } + leaf vpcPeer { + type address_Ip; + description "VPC Peer"; + } + + // Ip address preference + leaf pref { + + type ip_Preference; + description "Preference"; + } + + // Route tag + leaf tag { + + type rt_Tag; + description "Route Tag"; + } + + // Operational state + leaf operSt { + config "false"; + + type ip_OperSt; + description "Operational State"; + } + + // Operational state qualifier + leaf operStQual { + config "false"; + + type ip_AddrOperStQual; + description "Operational State Qualifier"; + } + + container rsipAddr-items { + + list RsIpAddr-list { + key "tDn"; + + uses ip_RsIpAddr_source-group; + description "IF Policy Attachement list"; + } + description "IF Policy Attachement"; + } + + container rsrtDefIpAddr-items { + + list RsRtDefIpAddr-list { + key "tDn"; + + uses ip_RsRtDefIpAddr_source-group; + description "Route Def Attachment list"; + } + description "Route Def Attachment"; + } + + container rsaddrToIpDef-items { + + list RsAddrToIpDef-list { + key "tDn"; + + uses ip_RsAddrToIpDef_source-group; + description "IpDef attachment list"; + } + description "IpDef attachment"; + } + } + + grouping ipv6_LLaddr-group { + description "IPV6 Link Local Address"; + leaf addr { + type address_Ip; + description "Address"; + } + + // Type of the address + leaf type { + + type ip_AddrT; + description "Type"; + } + + // Address controls + leaf ctrl { + + type ip_AddrControl; + description "Controls"; + } + leaf vpcPeer { + type address_Ip; + description "VPC Peer"; + } + + // Ip address preference + leaf pref { + + type ip_Preference; + description "Preference"; + } + + // Route tag + leaf tag { + + type rt_Tag; + description "Route Tag"; + } + + // Operational state + leaf operSt { + config "false"; + + type ip_OperSt; + description "Operational State"; + } + + // Operational state qualifier + leaf operStQual { + config "false"; + + type ip_AddrOperStQual; + description "Operational State Qualifier"; + } + + container rsipAddr-items { + + list RsIpAddr-list { + key "tDn"; + + uses ip_RsIpAddr_source-group; + description "IF Policy Attachement list"; + } + description "IF Policy Attachement"; + } + + container rsrtDefIpAddr-items { + + list RsRtDefIpAddr-list { + key "tDn"; + + uses ip_RsRtDefIpAddr_source-group; + description "Route Def Attachment list"; + } + description "Route Def Attachment"; + } + + container rsaddrToIpDef-items { + + list RsAddrToIpDef-list { + key "tDn"; + + uses ip_RsAddrToIpDef_source-group; + description "IpDef attachment list"; + } + description "IpDef attachment"; + } + } + + grouping ipv6_Neighbor-group { + description "IPV6 Neighbor Address"; + leaf neighborMac { + type address_Mac; + description "IPv6 neighbor MAC Address"; + } + + // To Handle the config fault for this MO + leaf configError { + config "false"; + + type ipv6_ConfigErr; + default "noerror"; + description "Config error"; + } + leaf addr { + type address_Ip; + description "Address"; + } + + // Type of the address + leaf type { + + type ip_AddrT; + description "Type"; + } + + // Address controls + leaf ctrl { + + type ip_AddrControl; + description "Controls"; + } + leaf vpcPeer { + type address_Ip; + description "VPC Peer"; + } + + // Ip address preference + leaf pref { + + type ip_Preference; + description "Preference"; + } + + // Route tag + leaf tag { + + type rt_Tag; + description "Route Tag"; + } + + // Operational state + leaf operSt { + config "false"; + + type ip_OperSt; + description "Operational State"; + } + + container rsipAddr-items { + + list RsIpAddr-list { + key "tDn"; + + uses ip_RsIpAddr_source-group; + description "IF Policy Attachement list"; + } + description "IF Policy Attachement"; + } + + container rsrtDefIpAddr-items { + + list RsRtDefIpAddr-list { + key "tDn"; + + uses ip_RsRtDefIpAddr_source-group; + description "Route Def Attachment list"; + } + description "Route Def Attachment"; + } + + container rsaddrToIpDef-items { + + list RsAddrToIpDef-list { + key "tDn"; + + uses ip_RsAddrToIpDef_source-group; + description "IpDef attachment list"; + } + description "IpDef attachment"; + } + } + + grouping ipv6_IPv6IfStat-group { + description "IPv6 interface statistics"; + leaf id { + config "false"; + type string; + description "Interface ID"; + } + + // Ephemeral data + leaf ifName { + config "false"; + type string; + description "Interface Name"; + } + + // Ephemeral data + leaf ifProtoState { + config "false"; + type string; + description "Protocol state"; + } + + // Ephemeral data + leaf ifLinkState { + config "false"; + type string; + description "Link state"; + } + + // Ephemeral data + leaf ifAdminState { + config "false"; + type string; + description "Administrative state"; + } + + // Ephemeral data + leaf ifIod { + config "false"; + type uint32; + description "Interface IOD"; + } + + // Ephemeral data + leaf ifFwdStatus { + config "false"; + type boolean; + description "Interface forwarding status"; + } + + // Ephemeral data + leaf ifIpv6Enabled { + config "false"; + type string; + description "IPv6 enabled/disabled"; + } + + // Ephemeral data + leaf ifAddr { + config "false"; + type string; + description "IPv6 address"; + } + + // Ephemeral data + leaf ifAddrSubnet { + config "false"; + type address_Ip; + description "Address Subnet"; + } + + // Ephemeral data + leaf ifAnycastAddr { + config "false"; + type string; + description "Anycast configured address"; + } + + // Ephemeral data + leaf ifLLaddr { + config "false"; + type address_Ip; + description "IPv6 link-local address"; + } + + // Ephemeral data + leaf ifLinkLocalConfigStatus { + config "false"; + type string; + description "Link local configuration status"; + } + + // Ephemeral data + leaf ifLinkLocalState { + config "false"; + type string; + description "Link local address state"; + } + + // Ephemeral data + leaf ifVIPAddr { + config "false"; + type string; + description "Virtual ip address"; + } + + // Ephemeral data + leaf ifMcastRoutingStatus { + config "false"; + type string; + description "Multicast routing enabled"; + } + + // Ephemeral data + leaf ifReportLLStatus { + config "false"; + type string; + description "Send local reports to MLD"; + } + + // Ephemeral data + leaf ifMcastGroupLocallyJoined { + config "false"; + type string; + description "Multicast group locally joined"; + } + + // Ephemeral data + leaf ifMcastSrcGrpAddr { + config "false"; + type string; + description "Multicast (S,G) entries joined"; + } + + // Ephemeral data + leaf ifmtu { + config "false"; + type uint32; + description "Mtu"; + } + + // Ephemeral data + leaf ifUcastRevPathFwdMode { + config "false"; + type string; + description "IPv6 unicast reverse path forwarding"; + } + + // Ephemeral data + leaf ifUcastRevPathFwdFlag { + config "false"; + type string; + description "IPv6 unicast reverse path forwarding flag"; + } + + // Ephemeral data + leaf ifLoadSharing { + config "false"; + type string; + description "IPv6 load sharing"; + } + + // Ephemeral data + leaf ifStatLastReset { + config "false"; + type string; + description "IPv6 interface statistics last reset"; + } + + // Ephemeral data + leaf ifAclInbound { + config "false"; + type string; + description "ACL inbound"; + } + + // Ephemeral data + leaf ifAclOutbound { + config "false"; + type string; + description "ACL outbound"; + } + + // Ephemeral data + leaf ifUnspecifiedSrc { + config "false"; + type uint32; + description "Unspecified source"; + } + + // Ephemeral data + leaf ifTotalPktRxTentativeAddr { + config "false"; + type uint32; + description "Total packet received on tentative address"; + } + + // Ephemeral data + leaf ifTotalPktRxInvalidAddrState { + config "false"; + type uint32; + description "Total Packet received on invalid address state"; + } + + // Ephemeral data + leaf ifTotalPktRxDuplicateState { + config "false"; + type uint32; + description "Total packet received on duplicate state"; + } + + // Ephemeral data + leaf ifAnycastPktTCP { + config "false"; + type uint32; + description "Anycast packet arrived on TCP"; + } + + // Ephemeral data + leaf ifDeliverInterfaceDown { + config "false"; + type uint32; + description "Deliver interface Down"; + } + + // Ephemeral data + leaf ifFragmentedNdDrops { + config "false"; + type uint32; + description "Fragmented ND Drops"; + } + + // Ephemeral data + leaf rpUcastPktsForwarded { + config "false"; + type uint32; + description "RP unicast packets forwarded"; + } + + // Ephemeral data + leaf rpUcastPktsOriginated { + config "false"; + type uint32; + description "RP unicast packets originated"; + } + + // Ephemeral data + leaf rpUcastPktsConsumed { + config "false"; + type uint32; + description "RP unicast packets consumed"; + } + + // Ephemeral data + leaf rpUcastBytesForwarded { + config "false"; + type uint32; + description "RP unicast bytes forwarded"; + } + + // Ephemeral data + leaf rpUcastBytesOriginated { + config "false"; + type uint32; + description "RP unicast bytes originated"; + } + + // Ephemeral data + leaf rpUcastBytesConsumed { + config "false"; + type uint32; + description "RP unicast bytes consumed"; + } + + // Ephemeral data + leaf rpMcastPktsForwarded { + config "false"; + type uint32; + description "RP multicast packets forwarded"; + } + + // Ephemeral data + leaf rpMcastPktsOriginated { + config "false"; + type uint32; + description "RP multicast packets originated"; + } + + // Ephemeral data + leaf rpMcastPktsConsumed { + config "false"; + type uint32; + description "RP multicast packets consumed"; + } + + // Ephemeral data + leaf rpMcastBytesForwarded { + config "false"; + type uint32; + description "RP multicast bytes forwarded"; + } + + // Ephemeral data + leaf rpMcastBytesOriginated { + config "false"; + type uint32; + description "RP multicast bytes originated"; + } + + // Ephemeral data + leaf rpMcastBytesConsumed { + config "false"; + type uint32; + description "RP multicast bytes consumed"; + } + } + + grouping ipv6_IPv6NeighborStat-group { + description "IPv6 neighbour statistics"; + leaf ngbrAddr { + config "false"; + type address_Ipv6; + description "Neighbor address"; + } + } + + grouping ipv6_IPv6ProcessStat-group { + description "IPv6 process statistics"; + + // Ephemeral data + leaf procVRFId { + config "false"; + type uint32; + description "VRF id"; + } + + // Ephemeral data + leaf procAutoDiscard { + config "false"; + type string; + description "Auto discard"; + } + + // Ephemeral data + leaf procAutoDiscardAdded { + config "false"; + type string; + description "Auto discard added"; + } + + // Ephemeral data + leaf procStaticDiscard { + config "false"; + type string; + description "Static discard"; + } + + // Ephemeral data + leaf procStaticDefaultCount { + config "false"; + type uint32; + description "Number of static default route configured"; + } + + // Ephemeral data + leaf procIODList { + config "false"; + type string; + description "IOD and intrface index list"; + } + + // Ephemeral data + leaf procLocalAddrList { + config "false"; + type string; + description "Local address list"; + } + } + + grouping ipv6_Route-group { + description "IPv6 Static Route"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf prefix { + type address_Ip; + description "Prefix"; + } + + // Route preference, the administrative distance assigned + // to this route + leaf pref { + + type rt_Preference; + description "Preference"; + } + + // Route tag + leaf tag { + + type rt_Tag; + description "Tag"; + } + + // Policy tag + leaf pcTag { + + type actrl_PcTag; + description "PC Tag"; + } + + // Route ctrl + leaf ctrl { + + type ip_RtControl; + description "Controls"; + } + + // Nexthops for the static route + container nh-items { + list Nexthop-list { + key "nhIf nhAddr nhVrf"; + + uses ipv6_Nexthop-group; + description "IPv6 Nexthop list"; + } + description "IPv6 Nexthop"; + } + + // Temporary Nexthop stub created until the Spine proxy + // IP address is determined. + container nhs-items { + list NexthopStub-list { + config "false"; + key "nhIf nhAddr nhVrf"; + + uses ipv6_NexthopStub-group; + description "IPv6 next-hop stub list"; + } + description "IPv6 next-hop stub"; + } + + container rsrouteToRouteDef-items { + + list RsRouteToRouteDef-list { + config "false"; + key "tDn"; + + uses ip_RsRouteToRouteDef_source-group; + description "Route Def Attachment list"; + } + description "Route Def Attachment"; + } + + container rsrouteToIfConn-items { + + list RsRouteToIfConn-list { + config "false"; + key "tDn"; + + uses ip_RsRouteToIfConn_source-group; + description "Route if Attachment list"; + } + description "Route if Attachment"; + } + } + + grouping ipv6_Nexthop-group { + description "IPv6 Nexthop"; + leaf rtname { + type string; + description "Next hop name"; + } + leaf tag { + type uint32; + description "tag value"; + } + leaf pref { + type uint8; + description "Route preference"; + } + leaf object { + type uint32; + description "Object to be tracked"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Nexthop interface, force the packet that matches + // this prefix on this interface + leaf nhIf { + + type nw_IfId; + description "Nexthop Interface"; + } + leaf nhAddr { + type address_Ip; + description "Nexthop Address"; + } + + // Nexthop vrf @@@ This is marked unspecified if the nexthop is in + // @@@ the same vrf as route + leaf nhVrf { + + type l3_VrfName; + description "Nexthop VRF"; + } + leaf rwEncap { + type string; + description "Rewrite Encapsulation"; + } + + // Nexthop flags + leaf flags { + config "false"; + + type ip_NhFlags; + description "Rnh Flags"; + } + + // Operational state + leaf operSt { + config "false"; + + type ip_OperSt; + description "Operational State"; + } + + container rsnexthopToNexthopDef-items { + + list RsNexthopToNexthopDef-list { + config "false"; + key "tDn"; + + uses ip_RsNexthopToNexthopDef_source-group; + description "Nexthop Def Attachment list"; + } + description "Nexthop Def Attachment"; + } + + container rsnexthopToProtG-items { + + list RsNexthopToProtG-list { + config "false"; + key "tDn"; + + uses ip_RsNexthopToProtG_source-group; + description "Protection Group Attachment list"; + } + description "Protection Group Attachment"; + } + } + + grouping ipv6_NexthopStub-group { + description "IPv6 next-hop stub"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Nexthop interface, force the packet that matches + // this prefix on this interface + leaf nhIf { + config "false"; + + type nw_IfId; + description "Nexthop Interface"; + } + leaf nhAddr { + config "false"; + type address_Ip; + description "Nexthop Address"; + } + + // Nexthop vrf @@@ This is marked unspecified if the nexthop is in + // @@@ the same vrf as route + leaf nhVrf { + config "false"; + + type l3_VrfName; + description "Nexthop VRF"; + } + leaf rwEncap { + config "false"; + type string; + description "Rewrite Encapsulation"; + } + + // Nexthop flags + leaf flags { + config "false"; + + type ip_NhFlags; + description "Rnh Flags"; + } + + // Operational state + leaf operSt { + config "false"; + + type ip_OperSt; + description "Operational State"; + } + + container rsnexthopToNexthopDef-items { + + list RsNexthopToNexthopDef-list { + config "false"; + key "tDn"; + + uses ip_RsNexthopToNexthopDef_source-group; + description "Nexthop Def Attachment list"; + } + description "Nexthop Def Attachment"; + } + + container rsnexthopToProtG-items { + + list RsNexthopToProtG-list { + config "false"; + key "tDn"; + + uses ip_RsNexthopToProtG_source-group; + description "Protection Group Attachment list"; + } + description "Protection Group Attachment"; + } + } + + grouping ipv6_IPv6RouteStat-group { + description "IPv6 Route Statistics"; + + // Ephemeral data + container pfx-items { + + // Ephemeral data + list IPv6RouteStatPfx-list { + config "false"; + key "rtPrefix rtNextHop"; + + uses ipv6_IPv6RouteStatPfx-group; + description "IPv6 Route Statistics list"; + } + description "IPv6 Route Statistics"; + } + } + + grouping ipv6_IPv6RouteStatPfx-group { + description "IPv6 Route Statistics"; + + // Ephemeral data + leaf rtPrefix { + config "false"; + type address_Ip; + description "Route prefix and mask len"; + } + + // Ephemeral data + leaf rtNextHop { + config "false"; + type address_Ip; + description "Next hop IP address/prefix"; + } + + // Ephemeral data + leaf rtRealNextHop { + config "false"; + type string; + description "Real next-hop from u6rib resolve"; + } + + // Ephemeral data + leaf rtRealNextHopIod { + config "false"; + type string; + description "Iod from u6rib resolution"; + } + + // Ephemeral data + leaf rtInterface { + config "false"; + type string; + description "Interface static routes"; + } + + // Ephemeral data + leaf rtPreference { + config "false"; + type uint32; + description "Configured route preference"; + } + + // Ephemeral data + leaf rtNhVrfName { + config "false"; + type string; + description "Next hop VRF name"; + } + + // Ephemeral data + leaf rtResolveTableId { + config "false"; + type uint32; + description "Resolve table id"; + } + + // Ephemeral data + leaf rtTrackObjNum { + config "false"; + type uint32; + description "Track object number"; + } + + // Ephemeral data + leaf rtTrackObjState { + config "false"; + type string; + description "Tracking enabled"; + } + + // Ephemeral data + leaf rtRnhSentToUrib { + config "false"; + type string; + description "Route next hop sent to urib"; + } + + // Ephemeral data + leaf rtBfdEnabled { + config "false"; + type string; + description "BFD enabled"; + } + } + + grouping ipv6_IPv6Fragments-group { + description "IPv6 queued fragments"; + + // Ephemeral data + leaf srcAddr { + config "false"; + type address_Ipv6; + description "Source address"; + } + + // Ephemeral data + leaf dstAddr { + config "false"; + type address_Ipv6; + description "Destination address"; + } + + // Ephemeral data + leaf fragId { + config "false"; + type int32; + description "Fragment id"; + } + + // Ephemeral data + leaf fragOffset { + config "false"; + type int32; + description "Fragment offset"; + } + + // Ephemeral data + leaf fragMFlag { + config "false"; + type int32; + description "Fragment m-falg"; + } + + // Ephemeral data + leaf fragNextHeader { + config "false"; + type int32; + description "Fragment next header"; + } + + // Ephemeral data + leaf fragPayloadLen { + config "false"; + type int32; + description "Fragment payload length"; + } + + // Ephemeral data + leaf fragExpirationTime { + config "false"; + type int32; + description "Fragment expires in msec"; + } + } + + grouping ipv6_IPv6EventLogs-group { + description "IPv6 Event History Logging"; + + // Type of Event + leaf eventType { + + type ipv6_IPv6EventType; + description "Event Log Type"; + } + + // Type of Event LogSize + leaf logSize { + + type ipv6_IPv6EventLogSize; + description "Event Log Size"; + } + } + + grouping ipv6_IPv6InstStat-group { + description "IPv6 global instance statistics"; + + // Ephemeral data + leaf queuePacket { + config "false"; + type string; + description "IPv6 queue packet"; + } + } + + grouping ipv6_IPv6Stat-group { + description "IPv6 global statistics"; + + // Ephemeral data + leaf ftmName { + config "false"; + type string; + description "FTM timer"; + } + + // Ephemeral data + leaf ftmTimeSecond { + config "false"; + type uint32; + description "FTM tv_sec"; + } + + // Ephemeral data + leaf ftmTimeNanoSecond { + config "false"; + type uint32; + description "FTM tv_nsec"; + } + + // Ephemeral data + leaf ftCount { + config "false"; + type uint64; + description "FTM ft count"; + } + } + + grouping ipv6_IPv6TrafficStat-group { + description "IPv6 traffic statistics"; + + // Ephemeral data + leaf statLastReset { + config "false"; + type string; + description "Traffic statistics last reset time(uptime)"; + } + + // Ephemeral data + leaf ucastFragOriginated { + config "false"; + type uint64; + description "RP Unicast fragments originated"; + } + + // Ephemeral data + leaf mcastFragOriginated { + config "false"; + type uint64; + description "Multicast fragments originated"; + } + + // Ephemeral data + leaf ucastFragConsumed { + config "false"; + type uint64; + description "Unicast fragments consumed"; + } + + // Ephemeral data + leaf mcastFragConsumed { + config "false"; + type uint64; + description "Multicast fragments consumed"; + } + + // Ephemeral data + leaf ingressMcecFwdPkts { + config "false"; + type uint32; + description "Ingress mcec forward packets"; + } + + // Ephemeral data + leaf ingressPktsVinciMigration { + config "false"; + type uint32; + description "Ingress packets during Vinci migration"; + } + + // Ephemeral data + leaf errBadVersion { + config "false"; + type uint64; + description "Error bad version"; + } + + // Ephemeral data + leaf errRouteLookupFailed { + config "false"; + type uint64; + description "Error route lookup failed"; + } + + // Ephemeral data + leaf errHopLimitExceeded { + config "false"; + type uint64; + description "Error hop limit exceeded"; + } + + // Ephemeral data + leaf errIngressIfMgrInitDrops { + config "false"; + type uint32; + description "Error ingress interface manager init drops"; + } + + // Ephemeral data + leaf errRpfDrop { + config "false"; + type uint32; + description "Error rpf drops"; + } + + // Ephemeral data + leaf errOptionHeader { + config "false"; + type uint64; + description "Error option header"; + } + + // Ephemeral data + leaf errPayloadLenTooSmall { + config "false"; + type uint64; + description "Error payload length too small"; + } + + // Ephemeral data + leaf errPMFailed { + config "false"; + type uint64; + description "Error pm failed"; + } + + // Ephemeral data + leaf errMbufError { + config "false"; + type uint64; + description "MBUF errors"; + } + + // Ephemeral data + leaf errEncapError { + config "false"; + type uint64; + description "Encapsulation errors"; + } + + // Ephemeral data + leaf errPktsDroppedDestIfDown { + config "false"; + type uint64; + description "Packets dropped dut to destination interface down"; + } + + // Ephemeral data + leaf pktsRecvRx { + config "false"; + type uint64; + description "Packets received at ingress"; + } + + // Ephemeral data + leaf bytesRecvRx { + config "false"; + type uint64; + description "Bytes received at ingress"; + } + + // Ephemeral data + leaf headerErrorsRx { + config "false"; + type uint32; + description "Header errors of packets at ingress"; + } + + // Ephemeral data + leaf noRoutesRx { + config "false"; + type uint32; + description "No routes for packets at ingress"; + } + + // Ephemeral data + leaf addrErrorRx { + config "false"; + type uint32; + description "Address error in packets at ingress"; + } + + // Ephemeral data + leaf unknownProtoRx { + config "false"; + type uint32; + description "Unknown protocol in packets at ingress"; + } + + // Ephemeral data + leaf truncatedPktsRx { + config "false"; + type uint32; + description "Truncated packets at ingress"; + } + + // Ephemeral data + leaf forwardgramsRx { + config "false"; + type uint64; + description "Forwardgrams at ingress"; + } + + // Ephemeral data + leaf reassemblyRequiredRx { + config "false"; + type uint32; + description "Reassembly required at ingress"; + } + + // Ephemeral data + leaf reassemblySuccessfulRx { + config "false"; + type uint32; + description "Reassembly successful at ingress"; + } + + // Ephemeral data + leaf reassemblyFailedRx { + config "false"; + type uint32; + description "Reassembly failed at ingress"; + } + + // Ephemeral data + leaf discardedPktsRx { + config "false"; + type uint32; + description "Discarded packets at ingress"; + } + + // Ephemeral data + leaf deliveredPktsRx { + config "false"; + type uint64; + description "Delivered packets at ingress"; + } + + // Ephemeral data + leaf mcastPktsRx { + config "false"; + type uint64; + description "Multicast packets at ingress"; + } + + // Ephemeral data + leaf mcastBytesRx { + config "false"; + type uint64; + description "Multicast bytes at ingress"; + } + + // Ephemeral data + leaf pktsSentTx { + config "false"; + type uint64; + description "Packets sent at egress"; + } + + // Ephemeral data + leaf bytesSentTx { + config "false"; + type uint64; + description "Bytes sent at egress"; + } + + // Ephemeral data + leaf sentRequestsTx { + config "false"; + type uint64; + description "sent requests at egress"; + } + + // Ephemeral data + leaf noRoutesTx { + config "false"; + type uint32; + description "No routes for packets at egress"; + } + + // Ephemeral data + leaf forwardgramsTx { + config "false"; + type uint64; + description "Forwardgrams at egress"; + } + + // Ephemeral data + leaf discardedPktsTx { + config "false"; + type uint32; + description "Discarded packets at egress"; + } + + // Ephemeral data + leaf fragRequiredTx { + config "false"; + type uint32; + description "Fragmentation required at egress"; + } + + // Ephemeral data + leaf fragSuccesfulTx { + config "false"; + type uint32; + description "Fragmentation successfully done at egress"; + } + + // Ephemeral data + leaf fragFailedTx { + config "false"; + type uint32; + description "Fragmentation failed at egress"; + } + + // Ephemeral data + leaf fragCreatesTx { + config "false"; + type uint32; + description "Fragcreates at egress"; + } + + // Ephemeral data + leaf transmitsTx { + config "false"; + type uint64; + description "Transmits at egress"; + } + + // Ephemeral data + leaf mcastPktsTx { + config "false"; + type uint64; + description "Multicast packets at egress"; + } + + // Ephemeral data + leaf mcastBytesTx { + config "false"; + type uint64; + description "Multicast bytes at egress"; + } + + // Ephemeral data + leaf rpUcastPktsForwarded { + config "false"; + type uint32; + description "RP unicast packets forwarded"; + } + + // Ephemeral data + leaf rpUcastPktsOriginated { + config "false"; + type uint32; + description "RP unicast packets originated"; + } + + // Ephemeral data + leaf rpUcastPktsConsumed { + config "false"; + type uint32; + description "RP unicast packets consumed"; + } + + // Ephemeral data + leaf rpUcastBytesForwarded { + config "false"; + type uint32; + description "RP unicast bytes forwarded"; + } + + // Ephemeral data + leaf rpUcastBytesOriginated { + config "false"; + type uint32; + description "RP unicast bytes originated"; + } + + // Ephemeral data + leaf rpUcastBytesConsumed { + config "false"; + type uint32; + description "RP unicast bytes consumed"; + } + + // Ephemeral data + leaf rpMcastPktsForwarded { + config "false"; + type uint32; + description "RP multicast packets forwarded"; + } + + // Ephemeral data + leaf rpMcastPktsOriginated { + config "false"; + type uint32; + description "RP multicast packets originated"; + } + + // Ephemeral data + leaf rpMcastPktsConsumed { + config "false"; + type uint32; + description "RP multicast packets consumed"; + } + + // Ephemeral data + leaf rpMcastBytesForwarded { + config "false"; + type uint32; + description "RP multicast bytes forwarded"; + } + + // Ephemeral data + leaf rpMcastBytesOriginated { + config "false"; + type uint32; + description "RP multicast bytes originated"; + } + + // Ephemeral data + leaf rpMcastBytesConsumed { + config "false"; + type uint32; + description "RP multicast bytes consumed"; + } + } + + grouping kcmgr_Entity-group { + description "keychain manager Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + container keychains-items { + + uses kcmgr_Keychains-group; + description "Keychains"; + } + } + + grouping kcmgr_Keychains-group { + description "Keychains"; + + // Holds key chain info + container classickeychain-items { + list ClassicKeychain-list { + key "keychainName"; + + uses kcmgr_ClassicKeychain-group; + description "keychain list"; + } + description "keychain"; + } + + // Holds key chain info + container macseckeychain-items { + list MacsecKeychain-list { + key "keychainName"; + + uses kcmgr_MacsecKeychain-group; + description "Macsec keychain list"; + } + description "Macsec keychain"; + } + + container macsecpsk-items { + + uses kcmgr_Macsecpsk-group; + description "Macsecpresharedkey no show"; + } + + // Holds key chain info + container tunnelencryptkeychain-items { + list TunnelencryptKeychain-list { + key "keychainName"; + + uses kcmgr_TunnelencryptKeychain-group; + description "Tunnelencrypt keychain list"; + } + description "Tunnelencrypt keychain"; + } + + container tunnelencryptpsk-items { + + uses kcmgr_Tunnelencryptpsk-group; + description "Tunnelencryptpresharedkey no show"; + } + } + + grouping kcmgr_ClassicKeychain-group { + description "keychain"; + + leaf keychainName { + + type kcmgr_name; + description "Keychain name of classic keychain"; + } + + // Holds Classic keychain Key information + container classickeyid-items { + list Key-list { + key "keyId"; + + uses kcmgr_Key-group; + description "Key list"; + } + description "Key"; + } + } + + grouping kcmgr_Key-group { + description "Key"; + + leaf keyId { + + type kcmgr_key; + description "keyId of classic key chain"; + } + + leaf encryptType { + + type kcmgr_encryptionTypeClassic; + description "encryption type value based on user input"; + } + + leaf keyString { + + type kcmgr_keyString; + description "keyString provided by user for the keychain"; + } + + leaf encryptedType { + config "false"; + + type kcmgr_encryptionTypeClassic; + description "encryption type used for encryption of classic keychain"; + } + + leaf encryptedKeyString { + config "false"; + + type kcmgr_keyString; + description "encrypted keyString of classic keychain"; + } + + leaf keystringConfigError { + config "false"; + + type kcmgr_ConfigErr; + description "config Error associated with the keystring"; + } + + leaf cryptoAlgo { + + type kcmgr_cryptoAlgoClassic; + description "cryptographic Algorithm used in key"; + } + + // Holds accept-lifetime of keychain + container sendlifetime-items { + + uses kcmgr_Sendlifetime-group; + description "Sendlifetime"; + } + + // Holds accept-lifetime of keychain + container acceptlifetime-items { + + uses kcmgr_Acceptlifetime-group; + description "Acceptlifetime"; + } + } + + grouping kcmgr_Sendlifetime-group { + description "Sendlifetime"; + + leaf local { + + type kcmgr_timeZone; + description "local timezone notification"; + } + + leaf startTime { + + type kcmgr_timestamp; + description "HH:MM:SS Start Time of lifetime"; + } + + leaf startDay { + + type kcmgr_day; + description "starting Day of Lifetime for the keychain"; + } + + leaf startMonth { + + type kcmgr_month; + description "starting month of Lifetime for the keychain"; + } + + leaf startYear { + + type kcmgr_year; + description "starting Year of Lifetime for the keychain"; + } + + leaf duration { + + type kcmgr_duration; + description "duration period of lifetime"; + } + + leaf infinite { + + type kcmgr_adminSt; + description "Lifetime has no endtime"; + } + + leaf endTime { + + type kcmgr_timestamp; + description "HH:MM:SS End Time of lifetime"; + } + + leaf endDay { + + type kcmgr_day; + description "Ending date of lifetime for the keychain"; + } + + leaf endMonth { + + type kcmgr_month; + description "Ending month of lifetime for the keychain"; + } + + leaf endYear { + + type kcmgr_year; + description "Ending Year of lifetime for the keychain"; + } + } + + grouping kcmgr_Acceptlifetime-group { + description "Acceptlifetime"; + + leaf local { + + type kcmgr_timeZone; + description "local timezone notification"; + } + + leaf startTime { + + type kcmgr_timestamp; + description "HH:MM:SS Start Time of lifetime"; + } + + leaf startDay { + + type kcmgr_day; + description "starting Day of Lifetime for the keychain"; + } + + leaf startMonth { + + type kcmgr_month; + description "starting month of Lifetime for the keychain"; + } + + leaf startYear { + + type kcmgr_year; + description "starting Year of Lifetime for the keychain"; + } + + leaf duration { + + type kcmgr_duration; + description "duration period of lifetime"; + } + + leaf infinite { + + type kcmgr_adminSt; + description "Lifetime has no endtime"; + } + + leaf endTime { + + type kcmgr_timestamp; + description "HH:MM:SS End Time of lifetime"; + } + + leaf endDay { + + type kcmgr_day; + description "Ending date of lifetime for the keychain"; + } + + leaf endMonth { + + type kcmgr_month; + description "Ending month of lifetime for the keychain"; + } + + leaf endYear { + + type kcmgr_year; + description "Ending Year of lifetime for the keychain"; + } + } + + grouping kcmgr_MacsecKeychain-group { + description "Macsec keychain"; + + leaf keychainName { + + type kcmgr_name; + description "Keychain name of macseckeychain"; + } + + // Holds Macsec Key information + container macseckeyid-items { + list MacsecKeyId-list { + key "keyId"; + + uses kcmgr_MacsecKeyId-group; + description "macsecKeyId list"; + } + description "macsecKeyId"; + } + } + + grouping kcmgr_MacsecKeyId-group { + description "macsecKeyId"; + + leaf keyId { + + type kcmgr_keyHexId; + description "keyId of macseckeychain"; + } + + leaf keyHexString { + + type kcmgr_keyString; + description "keystring of macseckeychain"; + } + + leaf encryptType { + + type kcmgr_encryptionTypeMacsec; + description "Encryption type of macseckeychain"; + } + + leaf encryptedKeyString { + config "false"; + + type kcmgr_keyString; + description "key string of macseckeychain after encryption"; + } + + leaf encryptedType { + config "false"; + + type kcmgr_encryptionTypeMacsec; + description "Encryption type used for encryption of macseckeystring"; + } + + leaf keystringConfigError { + config "false"; + + type kcmgr_ConfigErr; + description "config Error associated with the keystring"; + } + + leaf cryptographicAlgo { + + type kcmgr_cryptographicAlgoAes; + description "cryptographicAlgo of macseckeychain"; + } + + // Holds Macsec sendlifetime + container macsecsendlifetime-items { + + uses kcmgr_MacsecSendlifetime-group; + description "MacsecSendlifetime"; + } + } + + grouping kcmgr_MacsecSendlifetime-group { + description "MacsecSendlifetime"; + + leaf local { + + type kcmgr_timeZone; + description "local timezone notification"; + } + + leaf startTime { + + type kcmgr_timestamp; + description "HH:MM:SS Start Time of lifetime"; + } + + leaf startDay { + + type kcmgr_day; + description "starting Day of Lifetime for the keychain"; + } + + leaf startMonth { + + type kcmgr_month; + description "starting month of Lifetime for the keychain"; + } + + leaf startYear { + + type kcmgr_year; + description "starting Year of Lifetime for the keychain"; + } + + leaf duration { + + type kcmgr_duration; + description "duration period of lifetime"; + } + + leaf infinite { + + type kcmgr_adminSt; + description "Lifetime has no endtime"; + } + + leaf endTime { + + type kcmgr_timestamp; + description "HH:MM:SS End Time of lifetime"; + } + + leaf endDay { + + type kcmgr_day; + description "Ending date of lifetime for the keychain"; + } + + leaf endMonth { + + type kcmgr_month; + description "Ending month of lifetime for the keychain"; + } + + leaf endYear { + + type kcmgr_year; + description "Ending Year of lifetime for the keychain"; + } + } + + grouping kcmgr_Macsecpsk-group { + description "Macsecpresharedkey no show"; + + leaf pskNoshow { + + type kcmgr_adminSt; + description "macsec-psk hide them in show "; + } + } + + grouping kcmgr_TunnelencryptKeychain-group { + description "Tunnelencrypt keychain"; + + leaf keychainName { + + type kcmgr_name; + description "Keychain name of tunnelencrypt keychain"; + } + + // Holds Tunnelencrypt Key information + container tunnelencryptkeyid-items { + list TunnelencryptKeyId-list { + key "keyId"; + + uses kcmgr_TunnelencryptKeyId-group; + description "TunnelencryptKeyId list"; + } + description "TunnelencryptKeyId"; + } + } + + grouping kcmgr_TunnelencryptKeyId-group { + description "TunnelencryptKeyId"; + + leaf keyId { + + type kcmgr_keyHexId; + description "keyId of Tunnel encrypt keychain"; + } + + leaf keyHexString { + + type kcmgr_keyString; + description "key string of Tunnel encrypt keychain"; + } + + leaf encryptType { + + type kcmgr_encryptionTypeTunnelEncrypt; + description "Encryption type of Tunnel encrypt keychain"; + } + + leaf encryptedKeyString { + config "false"; + + type kcmgr_keyString; + description "key string of Tunnel encrypt keychain after encryption"; + } + + leaf encryptedType { + config "false"; + + type kcmgr_encryptionTypeMacsec; + description "Encryption type used for encryption of tunnelencrypt keystring"; + } + + leaf keystringConfigError { + config "false"; + + type kcmgr_ConfigErr; + description "config Error associated with the keystring"; + } + + leaf cryptographicAlgo { + + type kcmgr_cryptographicAlgoAes; + description "cryptographicAlgo of Tunnel encrypt keychain"; + } + + // Holds TunnelEncrypt sendlifetime + container tunnelencryptsendlifetime-items { + + uses kcmgr_TunnelencryptSendlifetime-group; + description "TunnelencryptSendlifetime"; + } + } + + grouping kcmgr_TunnelencryptSendlifetime-group { + description "TunnelencryptSendlifetime"; + + leaf local { + + type kcmgr_timeZone; + description "local timezone notification"; + } + + leaf startTime { + + type kcmgr_timestamp; + description "HH:MM:SS Start Time of lifetime"; + } + + leaf startDay { + + type kcmgr_day; + description "starting Day of Lifetime for the keychain"; + } + + leaf startMonth { + + type kcmgr_month; + description "starting month of Lifetime for the keychain"; + } + + leaf startYear { + + type kcmgr_year; + description "starting Year of Lifetime for the keychain"; + } + + leaf duration { + + type kcmgr_duration; + description "duration period of lifetime"; + } + + leaf infinite { + + type kcmgr_adminSt; + description "Lifetime has no endtime"; + } + + leaf endTime { + + type kcmgr_timestamp; + description "HH:MM:SS End Time of lifetime"; + } + + leaf endDay { + + type kcmgr_day; + description "Ending date of lifetime for the keychain"; + } + + leaf endMonth { + + type kcmgr_month; + description "Ending month of lifetime for the keychain"; + } + + leaf endYear { + + type kcmgr_year; + description "Ending Year of lifetime for the keychain"; + } + } + + grouping kcmgr_Tunnelencryptpsk-group { + description "Tunnelencryptpresharedkey no show"; + + leaf pskNoshow { + + type kcmgr_adminSt; + description "tunnelencrypt-psk hide them in show "; + } + } + + grouping ethpm_Entity-group { + description "Ethernet Port Manager Entity"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This class shall store the global configuration + // for a running EthPM instance. We have single EthPM + // in a system + container inst-items { + + uses ethpm_Inst-group; + description "Ethernet Port Manager Instance"; + } + } + + grouping ethpm_Inst-group { + description "Ethernet Port Manager Instance"; + leaf vlanTagNative { + type boolean; + description "Tag Native Vlan"; + } + + // System default layer + leaf systemDefaultLayer { + + type l1_Layer; + description "System Default Layer"; + } + + // System default admin st + leaf systemDefaultAdminSt { + + type l1_AdminSt; + description "System Default Admin St"; + } + + // System jumbo Mtu + leaf systemJumboMtu { + + type l1_Mtu; + description "System Jumbo MTU"; + } + + // System Interface Shutdown + leaf systemIfAdminState { + + type ethpm_SystemIfAdminState; + description "System Interface Admin State"; + } + + // System logging event + leaf logEvent { + + type l1_LogEventBitmap; + description "Logging Interface events"; + } + leaf allowUnsupportedSfp { + type boolean; + default "true"; + description "Allow Unsupported SFP"; + } + + // Interface syslog info + leaf ifSyslogInfo { + + type ethpm_SyslogInfo; + description "Interface Syslog Info"; + } + + // Admin link-up syslog level + leaf adminLinkUpSyslogLevel { + + type ethpm_SyslogLevel; + description "Admin Link-Up Syslog Level"; + } + + // Admin link-down syslog level + leaf adminLinkDownSyslogLevel { + + type ethpm_SyslogLevel; + description "Admin Link-Down Syslog Level"; + } + leaf chassisInfraIPv6addr { + type address_Ipv6; + description "Chassis infra IPv6 address"; + } + + // Chassis infra vlan + leaf chassisInfraVlan { + + type ethpm_infraVlan; + description "Chassis infra vlan id"; + } + + // Chassis infra adaptor vlan + leaf chassisInfraAdaptorVlan { + + type ethpm_infraVlan; + description "Chassis infra adaptor vlan id"; + } + + // Chassis infra EPDS port no + leaf chassisInfraEpdsPortNo { + + type ethpm_epdsPortNo; + description "Chassis infra EPDS port no"; + } + leaf chassisMgmtInst { + type string; + description "Chassis MGMT instance"; + } + + // Chassis MGMT fabric no + leaf chassisMgmtInstFabricNo { + + type ethpm_mgmtInstFabricNo; + description "Chassis MGMT fabric no"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + container runtime-items { + + uses ethpm_InstRuntime-group; + description "Instance Entity"; + } + + // Global Error-disable recovery related configuration + container errdisrecover-items { + + uses ethpm_ErrDisRecover-group; + description "Error Disable Recovery Policy"; + } + + // This object stores the runtime state of vlan inside ethpm + container vlan-items { + list Vlan-list { + config "false"; + key "id"; + + uses ethpm_Vlan-group; + description "Vlan list"; + } + description "Vlan"; + } + + // This object stores the runtime state associated + // with a module inside ethpm + container module-items { + list Module-list { + config "false"; + key "id"; + + uses ethpm_Module-group; + description "Module list"; + } + description "Module"; + } + } + + grouping ethpm_InstRuntime-group { + description "Instance Entity"; + leaf staticRMacCfgRefCount { + config "false"; + type uint32; + description "Static Router MAC Config Reference Count"; + } + leaf pvlanTrunkCfgRefCount { + config "false"; + type uint32; + description "PVLAN Trunk Config Reference Count"; + } + leaf dot1qRefCount { + config "false"; + type uint32; + description "Dot1q Config Reference Count"; + } + leaf ethertypeRefCount { + config "false"; + type uint32; + description "Ether Type Config Reference Count"; + } + leaf l3SatportRefCount { + config "false"; + type uint32; + description "L3 Satellite Port Reference Count"; + } + leaf snmpIfTblLastChange { + config "false"; + type union { + type string; + type uint64; + } + description "Snmp if Table Last Change"; + } + leaf issuPacerRefCount { + config "false"; + type uint32; + description "ISSU Pacer Reference Count"; + } + leaf featurePongState { + config "false"; + type uint8; + description "Feature Pong Status"; + } + leaf slowdrainCongCoreConfChkState { + config "false"; + type uint8; + description "Slow Drain Congestion Core Conf Check State"; + } + leaf slowdrainCongEdgeConfChkState { + config "false"; + type uint8; + description "Slow Drain Congestion Edge Conf Check State"; + } + leaf slowdrainPausConfChkState { + config "false"; + type uint8; + description "Slow Drain Congestion Core Conf-Check Status"; + } + leaf slowdrainPausEdgeConfChkState { + config "false"; + type uint8; + description "Slow Drain Pause Edge Conf-Check Status"; + } + leaf eeeRefCount { + config "false"; + type uint32; + description "EEE Reference Count"; + } + leaf fabpathCfgRefCount { + config "false"; + type uint32; + description "Fabric Path Config Lock Reference Count"; + } + leaf dceSwId { + config "false"; + type uint32; + description "DCE Switch ID"; + } + leaf lifLoopbackDone { + config "false"; + type boolean; + description "LIF Loopback Done"; + } + leaf numBundles { + config "false"; + type uint32; + description "Number of Bundles"; + } + + // bundle If list + leaf bundleIfList { + config "false"; + + type ethpm_IfBundleList1024; + description "Bundle Interface List"; + } + + // Configured loopback interfaces + leaf lbIfs { + config "false"; + + type ethpm_LbBitmap; + description "Configured Loopback Interfaces"; + } + } + + grouping ethpm_ErrDisRecover-group { + description "Error Disable Recovery Policy"; + + // Error disable recovery interval + leaf errDisRecovIntvl { + + type ethpm_ErrDisRecovIntvl; + description "Error Disable Recovery Interval"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + container Event-items { + list Event-list { + key "event"; + + uses ethpm_Event-group; + description "Error Disabled Recovery Event list"; + } + description "Error Disabled Recovery Event"; + } + + container rserrDisRecoverPolCons-items { + + uses ethpm_RsErrDisRecoverPolCons_source-group; + description "ErrDisableRecovery Policy Attachment"; + } + } + + grouping ethpm_Event-group { + description "Error Disabled Recovery Event"; + + // Error disable event type + leaf event { + + type ethpm_ErrDisEvent; + description "Event"; + } + leaf detect { + type boolean; + default "true"; + description "Detection Enabled"; + } + leaf recover { + type boolean; + default "false"; + description "Recovery Enabled"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + } + + grouping ethpm_Vlan-group { + description "Vlan"; + + // vlan id TODO: how do we add properties to rn + // for objects owned by process? Currently + // compilation seems to fails if owner="oper" + leaf id { + config "false"; + + type l2_DomId; + description "Vlan ID"; + } + leaf numIf { + config "false"; + type uint32; + description "Number of Interfaces"; + } + leaf flag { + config "false"; + type uint32; + description "Vlan Flags"; + } + + // shut state of vlan + leaf shutState { + config "false"; + + type l1_AdminSt; + description "Shut State of VLAN"; + } + + // state of vlan + leaf state { + config "false"; + + type l2_DomAdminSt; + description "Operational State of VLAN"; + } + } + + grouping ethpm_Module-group { + description "Module"; + leaf id { + config "false"; + type uint8; + description "Module ID"; + } + leaf numPortTypes { + config "false"; + type uint32; + description "Number of Port-Types"; + } + leaf swCardId { + config "false"; + type uint16; + description "Software Card ID"; + } + + // cfgd ports + leaf cfgdPorts { + config "false"; + + type ethpm_PortBitmap; + description "Configured Ports"; + } + leaf flags { + config "false"; + type uint32; + description "Module Flags"; + } + leaf runtimeNumPorts { + config "false"; + type uint8; + description "Runtime Number of Ports"; + } + + // module type + leaf moduleType { + config "false"; + + type l1_Module; + description "Module Type"; + } + leaf isOffline { + config "false"; + type boolean; + description "Module Offline Status"; + } + leaf lcNodeAddress { + config "false"; + type uint32; + description "LC Node Address"; + } + leaf portCfgSap { + config "false"; + type uint16; + description "Port Config SAP"; + } + + // runtime ports + leaf runtimePorts { + config "false"; + + type ethpm_PortBitmap; + description "Runtime Ports"; + } + } + + grouping im_Breakout-group { + description "Interface Breakout"; + container module-items { + list Mod-list { + key "id"; + + uses im_Mod-group; + description "Module list"; + } + description "Module"; + } + } + + grouping im_Mod-group { + description "Module"; + leaf id { + type uint8 { + range "1..32"; + } + description "Module Id"; + } + + // Front-panel port + container fport-items { + list FpP-list { + key "id"; + + uses im_FpP-group; + description "Front Panel Port list"; + } + description "Front Panel Port"; + } + } + + grouping im_FpP-group { + description "Front Panel Port"; + leaf id { + type uint8 { + range "1..108"; + } + description "Front Panel port id"; + } + + // Breakout Map + leaf breakoutMap { + + type im_BreakoutMapT; + description "Breakout Map"; + } + } + + grouping im_Entity-group { + description "Interface Manager Entity"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This class shall store the global configuration + // for a running GIM instance. We have single GIM + // in a system + container inst-items { + + uses im_Inst-group; + description "Interface Manager Instance"; + } + } + + grouping im_Inst-group { + description "Interface Manager Instance"; + + leaf mode100M { + + type im_Mode100M; + description "Mode 100M"; + } + + leaf modeHwProfile { + config "false"; + + type im_ModeHwProfile; + description "Mode 4C, 2C+4Q"; + } + + // default VDC state + leaf vdcSt { + config "false"; + + type l1_VdcSt; + description "Default VDC State"; + } + + leaf BreakoutProfile { + config "false"; + + type im_BreakoutProfile; + description "Breakout Profile"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // This class shall store the software/feature capability + // information for the GIM instance + container cap-items { + list Capability-list { + config "false"; + key "id"; + + uses im_Capability-group; + description "Capability list"; + } + description "Capability"; + } + + // This object stores the runtime state associated + // with a module inside GIM + container module-items { + list Module-list { + config "false"; + key "id"; + + uses im_Module-group; + description "Module list"; + } + description "Module"; + } + } + + grouping im_Capability-group { + description "Capability"; + leaf id { + config "false"; + type uint32; + description "Capability Id"; + } + leaf autoInstCpbl { + config "false"; + type boolean; + description "Auto-Install Capability"; + } + leaf isInstalled { + config "false"; + type boolean; + description "Installed State"; + } + } + + grouping im_Module-group { + description "Module"; + leaf id { + config "false"; + type uint8; + description "Module Id"; + } + leaf numPorts { + config "false"; + type uint8; + description "Number of Port"; + } + + // Module type + leaf moduleType { + config "false"; + + type l1_Module; + description "Module Type"; + } + leaf swCardId { + config "false"; + type uint16; + description "Software Card Id"; + } + leaf lcNodeAddress { + config "false"; + type uint32; + description "LC Node Address"; + } + leaf portCfgSap { + config "false"; + type uint16; + description "Port Config Sap"; + } + leaf isPresent { + config "false"; + type boolean; + description "Module Presence Status"; + } + leaf runtimeFlag { + config "false"; + type uint8; + description "Runtime Flag"; + } + leaf moduleInitiEvalFlag { + config "false"; + type uint32; + description "Module Initialize Evaluation Flag"; + } + leaf lcExceptionFlag { + config "false"; + type uint32; + description "LC Exception Flag"; + } + leaf lcInsertPldSz { + config "false"; + type uint32; + description "LC Insertion Payload Size"; + } + + // This object stores the information about + // different port-types in a module + container portinfo-items { + list PortInfo-list { + config "false"; + key "phyLayer"; + + uses im_PortInfo-group; + description "Information on different port-types in a module list"; + } + description "Information on different port-types in a module"; + } + } + + grouping im_PortInfo-group { + description "Information on different port-types in a module"; + + // Physical Layer + leaf phyLayer { + config "false"; + + type l1_PhyLayer; + description "Physical Layer"; + } + leaf numPorts { + config "false"; + type uint8; + description "Number of Ports"; + } + leaf type { + config "false"; + type uint8; + description "Specific Type of the Object or Component"; + } + } + + grouping pc_Entity-group { + description "Port Channel Entity"; + + // This object holds per port channel instance information + container pc-items { + + uses pc_Inst-group; + description "Port Channel Instance"; + } + } + + grouping pc_Inst-group { + description "Port Channel Instance"; + + // Hash distribution type + leaf hashDist { + + type pc_PCHashDist; + description "Hash Distribution Type"; + } + + // Load defer timeout + leaf loadDeferTime { + + type pc_LoadDeferTime; + description "Load Defer Timeout"; + } + + // Max number of port-channels + leaf maxChannels { + config "false"; + + type pc_NumChannels; + description "Max Number of Port-channels"; + } + + // Number of used port-channels + leaf usedChannels { + config "false"; + + type pc_NumChannels; + description "Number of Used Port-channels"; + } + + // Number of free port-channels + leaf freeChannels { + config "false"; + + type pc_NumChannels; + description "Number of Free Port-channels"; + } + + // Percentage of used port-channels + leaf pcntChannels { + config "false"; + + type pc_PcntChannels; + description "Percentage of Used Port-channels"; + } + } + + grouping flexlink_Flexlink-group { + description "Flexlink configuration and management"; + container if-items { + list Interface-list { + key "id"; + + uses flexlink_Interface-group; + description "Interface configuration and management for Flexlink list"; + } + description "Interface configuration and management for Flexlink"; + } + } + + grouping flexlink_Interface-group { + description "Interface configuration and management for Flexlink"; + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface ID"; + } + + // switchport backup interface + leaf backupIntf { + + type nw_IfId; + description "Backup Interface configuration for flexlink"; + } + leaf fastConv { + type enumeration { + enum disabled { + value 0; + description "Disabled"; + } + enum enabled { + value 1; + description "Enabled"; + } + } + default "disabled"; + description "multicast fast-convergence configuration for flexlink"; + } + + // switchport backup interface preemption mode + leaf preemptionMode { + + type flexlink_Mode; + description "switchport backup interface preemption mode configuration for flexlink"; + } + + // switchport backup interface preemption delay + leaf preemptionDelay { + + type flexlink_Delay; + description "switchport backup interface preemption delay configuration for flexlink"; + } + } + + grouping l2fm_Entity-group { + description "l2fm"; + + // mac-learn + leaf macLearn { + + type l2fm_Learning; + description "mac-learn Enable Disable"; + } + + leaf macLoopDetect { + + type l2fm_LoopDetect; + description "mac loop-detect port-down enable Disable"; + } + + leaf macGuardVpcPeergwMac { + + type l2fm_GuardVpcPeergwMac; + description "mac guard vpc peer GW Mac Enable Disable"; + } + + leaf macMoveNotification { + + type l2fm_MacMoveNotification; + description "mac move notification Enable disable"; + } + + // Holds macMove trap information + container macmovetrap-items { + + uses l2fm_MacMoveTrap-group; + description "Mac Move Trap"; + } + } + + grouping l2fm_MacMoveTrap-group { + description "Mac Move Trap"; + leaf macMoveAddress { + config "false"; + type address_Mac; + description "Mac Move Address"; + } + leaf macMoveVlanNumber { + config "false"; + type uint32; + description "Mac Move Vlan Number"; + } + leaf macMoveFromPortID { + config "false"; + type uint32; + description "Mac Move From Port ID"; + } + leaf macMoveToPortID { + config "false"; + type uint32; + description "Mac Move To Port ID"; + } + leaf macMoveTime { + config "false"; + type string; + description "Mac Move Time"; + } + } + + grouping l2pt_L2protocol-group { + description "L2 Protocol Tunneling configuration and management"; + + leaf cos { + + type l2pt_Cos; + description "L2PT Cos Value"; + } + container if-items { + list If-list { + key "id"; + + uses l2pt_If-group; + description "Interface configuration and management for L2PT list"; + } + description "Interface configuration and management for L2PT"; + } + } + + grouping l2pt_If-group { + description "Interface configuration and management for L2PT"; + leaf id { + type string; + description "Interface ID"; + } + + container tunnel-items { + + uses l2pt_Tunnel-group; + description "Tunneling Protocols on Interface"; + } + } + + grouping l2pt_Tunnel-group { + description "Tunneling Protocols on Interface"; + leaf cdp { + type boolean; + description "Cisco Discovery Protocol"; + } + leaf stp { + type boolean; + description "Spanning Tree Protocol"; + } + leaf stpBridge { + type boolean; + description "Spanning Tree Protocol Bridge"; + } + leaf vtp { + type boolean; + description "VLAN Trunking Protocol"; + } + leaf lldp { + type boolean; + description "Link Layer Discovery Protocol"; + } + leaf lacp { + type boolean; + description "Link Aggregation Control Protocol"; + } + leaf doubleTag { + type boolean; + description "Enable or Disable Double Tag for L2PT"; + } + + leaf cdpShutThreshold { + + type l2pt_Threshold; + description "Shut Threshold for Cisco Discovery Protocol"; + } + + leaf stpShutThreshold { + + type l2pt_Threshold; + description "Shut Threshold for Spanning Tree Protocol"; + } + + leaf stpBridgeShutThreshold { + + type l2pt_Threshold; + description "Shut Threshold for Spanning Tree Protocol Bridge"; + } + + leaf vtpShutThreshold { + + type l2pt_Threshold; + description "Shut Threshold for VLAN Trunking Protocol"; + } + + leaf lldpShutThreshold { + + type l2pt_Threshold; + description "Shut Threshold for Link Layer Discovery Protocol"; + } + + leaf lacpShutThreshold { + + type l2pt_Threshold; + description "Shut Threshold for Link Aggregation Control Protocol"; + } + + leaf cdpDropThreshold { + + type l2pt_Threshold; + description "Drop Threshold for Cisco Discovery Protocol"; + } + + leaf stpDropThreshold { + + type l2pt_Threshold; + description "Drop Threshold for Spanning Tree Protocol"; + } + + leaf stpBridgeDropThreshold { + + type l2pt_Threshold; + description "Drop Threshold for Spanning Tree Protocol Bridge"; + } + + leaf vtpDropThreshold { + + type l2pt_Threshold; + description "Drop Threshold for VLAN Trunking Protocol"; + } + + leaf lldpDropThreshold { + + type l2pt_Threshold; + description "Drop Threshold for Link Layer Discovery Protocol"; + } + + leaf lacpDropThreshold { + + type l2pt_Threshold; + description "Drop Threshold for Link Aggregation Control Protocol"; + } + } + + grouping l2rib_Entity-group { + description "L2RIB Entity"; + + // Global L2RIB instance configuration and operation state. + // There is only one instance of L2RIB at any time. + container inst-items { + + uses l2rib_Inst-group; + description "L2RIB Instance"; + } + } + + grouping l2rib_Inst-group { + description "L2RIB Instance"; + + // L2RIB EVPN Host MAC Mobility Object + container evpn-items { + + uses l2rib_EvpnMACmob-group; + description "EVPN MAC mobility cfg"; + } + + container clients-items { + + uses l2rib_Clients-group; + description "This model is container of L2RIB clients"; + } + + container producers-items { + + uses l2rib_Producers-group; + description "This model is container of L2RIB producers"; + } + + container registrations-items { + + uses l2rib_Registrations-group; + description "L2RIB Registrations"; + } + + container topology-items { + + uses l2rib_Topology-group; + description "Topology Object"; + } + } + + grouping l2rib_EvpnMACmob-group { + description "EVPN MAC mobility cfg"; + leaf ddMoves { + type uint16 { + range "1..1000"; + } + default "5"; + description "Dup Detect MAC num-moves (def:5)"; + } + leaf ddDuration { + type uint16 { + range "2..36000"; + } + default "180"; + description "Dup Detect MAC duration secs (def:180)"; + } + leaf drTimeout { + type uint16 { + range "0..1800"; + } + default "30"; + description "Dup MAC Recover timeout secs (def:30)"; + } + leaf drRetryCnt { + type uint16 { + range "0..3000"; + } + default "3"; + description "Dup MAC Recover retry cnt (def:3)"; + } + } + + grouping l2rib_Clients-group { + description "This model is container of L2RIB clients"; + container client-items { + list Client-list { + config "false"; + key "id"; + + uses l2rib_Client-group; + description "This model containes information a L2RIB client list"; + } + description "This model containes information a L2RIB client"; + } + } + + grouping l2rib_Client-group { + description "This model containes information a L2RIB client"; + leaf id { + config "false"; + type uint8; + description "Client identifier"; + } + leaf uuid { + config "false"; + type uint32; + description "Client universally unique identifier"; + } + leaf name { + config "false"; + type string; + description "Client process suffix"; + } + } + + grouping l2rib_Producers-group { + description "This model is container of L2RIB producers"; + container prod-items { + list Producer-list { + config "false"; + key "name id clientId objType"; + + uses l2rib_Producer-group; + description "Producer list"; + } + description "Producer"; + } + } + + grouping l2rib_Producer-group { + description "Producer"; + leaf name { + config "false"; + type string; + description "Producer Name"; + } + leaf id { + config "false"; + type uint32; + description "Producer identifier"; + } + leaf clientId { + config "false"; + type uint8; + description "Client identifier"; + } + leaf objType { + config "false"; + type string; + description "Type of object"; + } + leaf adminDist { + config "false"; + type uint32; + description "Admin distance"; + } + leaf purgeTime { + config "false"; + type uint32; + description "Producer purge timer"; + } + + leaf state { + config "false"; + + type l2rib_ProducerStT; + description "Producer state"; + } + leaf flags { + config "false"; + type uint32; + description "Producer Flags"; + } + } + + grouping l2rib_Registrations-group { + description "L2RIB Registrations"; + container client-items { + list RegClient-list { + config "false"; + key "name"; + + uses l2rib_RegClient-group; + description "Global Registraion Entries list"; + } + description "Global Registraion Entries"; + } + } + + grouping l2rib_RegClient-group { + description "Global Registraion Entries"; + leaf id { + config "false"; + type uint8; + description "Client identifier"; + } + leaf name { + config "false"; + type string; + description "Client process suffix"; + } + container topo-items { + list RegTopo-list { + config "false"; + key "id objType"; + + uses l2rib_RegTopo-group; + description "Registrations identified based on topology list"; + } + description "Registrations identified based on topology"; + } + } + + grouping l2rib_RegTopo-group { + description "Registrations identified based on topology"; + leaf id { + config "false"; + type string; + description "Topology identifier"; + } + leaf objType { + config "false"; + type string; + description "Object type"; + } + leaf prodName { + config "false"; + type string; + description "Producer name"; + } + } + + grouping l2rib_Topology-group { + description "Topology Object"; + + // This object holds the topology information + container topo-items { + list Topo-list { + config "false"; + key "topoId"; + + uses l2rib_Topo-group; + description "This model contains information of topology object list"; + } + description "This model contains information of topology object"; + } + } + + grouping l2rib_Topo-group { + description "This model contains information of topology object"; + leaf topoId { + config "false"; + type uint32; + description "Topology identifier"; + } + leaf name { + config "false"; + type string; + description "Topology name"; + } + leaf txId { + config "false"; + type uint32; + description "Transaction ID for Topology Ack"; + } + leaf rcvdAck { + config "false"; + type boolean; + description "Flag to Indicate Topology Ack"; + } + + // flags + leaf flags { + config "false"; + + type l2rib_TopoFlagsT; + description " Topology operational flags"; + } + + // sub flags + leaf subFlags { + config "false"; + + type l2rib_TopoSubFlagsT; + description "Topology operational sub category flags"; + } + + // This object holds the VNI attributes of topology + container vni_attr-items { + + uses l2rib_TopoVniAttr-group; + description "This model contains VNI attributes of topology"; + } + + // This object holds the EVI attributes of topology + container evi_attr-items { + + uses l2rib_TopoEviAttr-group; + description "This model contains EVI attributes of topology"; + } + + container mac-items { + + uses l2rib_Mac-group; + description + "This model is contianer of all Mac-routes under + a topology."; + } + + container macip-items { + + uses l2rib_MacIp-group; + description + "This model is container of all Mac-Ip route + objects under a topology"; + } + + container floodlist-items { + + uses l2rib_FloodList-group; + description "Flood-List"; + } + } + + grouping l2rib_TopoVniAttr-group { + description "This model contains VNI attributes of topology"; + leaf id { + config "false"; + type uint32; + description "virtual network identifier"; + } + + // Topology Type + leaf topoType { + config "false"; + + type l2rib_TopoTypeT; + description "Topology Type"; + } + + // Encap Type + leaf encapType { + config "false"; + + type l2rib_EncapTypeT; + description "Encapsulation type of VNI"; + } + leaf iod { + config "false"; + type uint32; + description "Ordinial information of VNI "; + } + leaf ifHdl { + config "false"; + type uint32; + description "Handle value of nve interface"; + } + leaf vtepIp { + config "false"; + type address_Ip; + description "VTEP IP address information of VNI"; + } + leaf emulatedVtepIp { + config "false"; + type address_Ip; + description "Emulated VTEP IP address information of VNI"; + } + leaf emulatedRoIp { + config "false"; + type address_Ip; + description "virtual ip address used for re-origination"; + } + leaf vrfId { + config "false"; + type uint32; + description "Value of vrf id for vni"; + } + leaf rMac { + config "false"; + type address_Mac; + description "Local Router MAC (For L3 VNIs)"; + } + leaf vMac { + config "false"; + type address_Mac; + description "Local Virtual MAC (For L3 VNIs)"; + } + leaf vMacRo { + config "false"; + type address_Mac; + description "Local Virtual MAC RO (For L3 VNIs)"; + } + } + + grouping l2rib_TopoEviAttr-group { + description "This model contains EVI attributes of topology"; + leaf id { + config "false"; + type uint32; + description "EVI identifier information"; + } + + // Topology Type + leaf topoType { + config "false"; + + type l2rib_TopoTypeT; + description "Topology Type"; + } + + // Encap Type + leaf encapType { + config "false"; + + type l2rib_EncapTypeT; + description "Encapsulation type of EVI"; + } + leaf ifHdl { + config "false"; + type uint32; + description "Handle value of nve interface"; + } + leaf vtepIp { + config "false"; + type address_Ip; + description "VTEP IP address information of VNI"; + } + leaf emulatedVtepIp { + config "false"; + type address_Ip; + description "Emulated VTEP IP address information of VNI"; + } + leaf bdLabel { + config "false"; + type uint32; + description "BD Label informa of EVI"; + } + } + + grouping l2rib_Mac-group { + description + "This model is contianer of all Mac-routes under + a topology."; + container mac_entry-items { + list MacEntry-list { + config "false"; + key "macAddr"; + + uses l2rib_MacEntry-group; + description "This model contains information of each mac-route list"; + } + description "This model contains information of each mac-route"; + } + } + + grouping l2rib_MacEntry-group { + description "This model contains information of each mac-route"; + leaf macAddr { + config "false"; + type address_Mac; + description "Physical address of mac-route"; + } + container prod-items { + list MacProducer-list { + config "false"; + key "producer"; + + uses l2rib_MacProducer-group; + description "Mac Producer Object list"; + } + description "Mac Producer Object"; + } + } + + grouping l2rib_MacProducer-group { + description "Mac Producer Object"; + leaf topoId { + config "false"; + type uint32; + description "Topology identifier"; + } + leaf macAddr { + config "false"; + type address_Mac; + description "MAC address of mac route object"; + } + leaf producer { + config "false"; + type string; + description "Name of mac route producer"; + } + + leaf flags { + config "false"; + + type l2rib_MacRtFlagsT; + description "List of flags enabled for mac-route"; + } + + leaf genericFlags { + config "false"; + + type l2rib_GenericFlagsT; + description "Generic flags of l2rib object"; + } + leaf seqNo { + config "false"; + type uint32; + description "Sequence Number"; + } + leaf nh { + config "false"; + type string; + description "List of next-hop address"; + } + + leaf rtResolution { + config "false"; + + type l2rib_MacRtResolutionT; + description "MAC route resolution"; + } + leaf fwdSt { + config "false"; + type string; + description "Forwarding state"; + } + leaf sentTo { + config "false"; + type string; + description "List of clients notified about object"; + } + leaf esi { + config "false"; + type string; + description "Ethernet-segment identifier"; + } + leaf pcInfo { + config "false"; + type string; + description "Name of port channel Interface"; + } + leaf siteOrigin { + config "false"; + type string; + description "Site of origin"; + } + leaf plNh { + config "false"; + type string; + description "Resultant next hop of path-list category"; + } + } + + grouping l2rib_MacIp-group { + description + "This model is container of all Mac-Ip route + objects under a topology"; + container macip_entry-items { + list MacIpEntry-list { + config "false"; + key "macAddr ip"; + + uses l2rib_MacIpEntry-group; + description "This model contais information of mac-ip entry list"; + } + description "This model contais information of mac-ip entry"; + } + } + + grouping l2rib_MacIpEntry-group { + description "This model contais information of mac-ip entry"; + leaf macAddr { + config "false"; + type address_Mac; + description "Mac address of mac-ip route"; + } + leaf ip { + config "false"; + type address_Ip; + description "Ip address of mac-ip route"; + } + container prod-items { + list MacIpProducer-list { + config "false"; + key "producer"; + + uses l2rib_MacIpProducer-group; + description "Mac Ip Producer Object list"; + } + description "Mac Ip Producer Object"; + } + } + + grouping l2rib_MacIpProducer-group { + description "Mac Ip Producer Object"; + leaf topoId { + config "false"; + type uint32; + description "Topology identifier"; + } + leaf macAddr { + config "false"; + type address_Mac; + description "Mac address of mac-ip route"; + } + leaf hostIp { + config "false"; + type address_Ip; + description "Ip Address"; + } + leaf producer { + config "false"; + type string; + description "Mac Route Producer"; + } + + leaf flags { + config "false"; + + type l2rib_MacIpRtFlagsT; + description "List of flags enabled in mac-ip route"; + } + + leaf genericFlags { + config "false"; + + type l2rib_GenericFlagsT; + description "Generic flags of l2rib object"; + } + leaf seqNo { + config "false"; + type uint32; + description "Sequence Number"; + } + leaf peerId { + config "false"; + type uint32; + description "Peer Id"; + } + leaf peerIfIdx { + config "false"; + type uint64; + description "Peer interface index"; + } + leaf nh { + config "false"; + type string; + description "List of next hop address"; + } + leaf sentTo { + config "false"; + type string; + description "List of clients notified about object"; + } + leaf esi { + config "false"; + type string; + description "Ethernet-segment identifier"; + } + leaf pcInfo { + config "false"; + type string; + description "Name of port channel interface"; + } + leaf siteOrigin { + config "false"; + type string; + description "Site of origin"; + } + leaf l3TopoId { + config "false"; + type uint32; + description "Layer 3 topology identifier"; + } + } + + grouping l2rib_FloodList-group { + description "Flood-List"; + container fl-items { + list Fl-list { + config "false"; + key "ip"; + + uses l2rib_Fl-group; + description "Flood list Object list"; + } + description "Flood list Object"; + } + } + + grouping l2rib_Fl-group { + description "Flood list Object"; + leaf topoId { + config "false"; + type uint32; + description "Topology identifier"; + } + leaf ip { + config "false"; + type address_Ip; + description "Ip address of flood-list entry"; + } + leaf serviceNode { + config "false"; + type boolean; + description "Service Node"; + } + leaf peerId { + config "false"; + type uint32; + description "Peer identifier information"; + } + leaf sentTo { + config "false"; + type string; + description "List of clients notified about object"; + } + } + + grouping portsecurity_PortSecurity-group { + description "Port Security configuration and management at interface"; + + // DN: sys/portsecurity/table + container table-items { + + uses portsecurity_PortSecurityTable-group; + description "MAC Address Table for Secure Entries"; + } + + // DN: sys/portsecurity/if-[if] + container if-items { + list PortSecurityIf-list { + key "if"; + + uses portsecurity_PortSecurityIf-group; + description "Port Security configuration and management at interface list"; + } + description "Port Security configuration and management at interface"; + } + } + + grouping portsecurity_PortSecurityTable-group { + description "MAC Address Table for Secure Entries"; + + // DN: sys/portsecurity/table/vlan-[vlan-x]-mac- + container vlan-items { + list MacEntry-list { + config "false"; + key "vlan macAddress"; + + uses portsecurity_MacEntry-group; + description "Secure mac address entry list"; + } + description "Secure mac address entry"; + } + } + + grouping portsecurity_MacEntry-group { + description "Secure mac address entry"; + leaf macAddress { + config "false"; + type address_Mac; + description "Secure MAC address value"; + } + leaf vlan { + config "false"; + type string; + description "Vlan for secure Mac entry"; + } + + leaf if { + config "false"; + + type nw_IfId; + description "Interface id of Secure MAC entry"; + } + leaf static { + config "false"; + type boolean; + description "Secure MAC entry is static if true"; + } + leaf sticky { + config "false"; + type boolean; + description "Secure MAC entry is sticky if true"; + } + } + + grouping portsecurity_PortSecurityIf-group { + description "Port Security configuration and management at interface"; + + // portsecurity if id + leaf if { + + type nw_IfId; + description "Interface id of port with Port Security"; + } + leaf portSecurity { + type boolean; + default "false"; + description "Enable or disable Port Security on interface"; + } + leaf aging { + type uint16 { + range "0..1440"; + } + default "0"; + description "Aging time of mac addresses on interface"; + } + + leaf agingType { + + type portsecurity_AgingType; + description "Aging type of mac addresses on interface"; + } + + leaf violation { + + type portsecurity_ViolationMode; + description "Security violation modes"; + } + leaf maximum { + type uint16 { + range "1..1025"; + } + default "1"; + description "Maximum number of secure mac addresses on interface"; + } + leaf sticky { + type boolean; + default "false"; + description "Enable or disable sticky secure addresses on interface"; + } + + // DN: sys/portsecurity/if-[if]/vlan-[vlan-x] + container vlan-items { + list PortSecurityVlan-list { + key "vlanId"; + + uses portsecurity_PortSecurityVlan-group; + description "Port Security configuration and management for specific VLAN at interface list"; + } + description "Port Security configuration and management for specific VLAN at interface"; + } + + // DN: sys/portsecurity/if-[if]/mac-[macAddress] + container mac-items { + list SecureMac-list { + key "macAddress"; + + uses portsecurity_SecureMac-group; + description "Static secure MAC at interface list"; + } + description "Static secure MAC at interface"; + } + } + + grouping portsecurity_PortSecurityVlan-group { + description "Port Security configuration and management for specific VLAN at interface"; + leaf vlanId { + type string; + description "VLAN id for Port Security"; + } + leaf vlanMaximum { + type uint16 { + range "0..1025"; + } + description "Per VLAN maximum number of secure mac addresses on interface"; + } + + // DN: sys/portsecurity/if-[if]/vlan-[vlan-x]/mac-[macAddress] + container mac-items { + list SecureMacEntry-list { + key "macAddress"; + + uses portsecurity_SecureMacEntry-group; + description "Static secure MAC at interface list"; + } + description "Static secure MAC at interface"; + } + } + + grouping portsecurity_SecureMacEntry-group { + description "Static secure MAC at interface"; + leaf macAddress { + type address_Mac; + description "Static secure MAC address on interface"; + } + } + + grouping portsecurity_SecureMac-group { + description "Static secure MAC at interface"; + leaf macAddress { + type address_Mac; + description "Static secure MAC address on interface"; + } + } + + grouping pvlan_PrivateVlan-group { + description "Private VLAN (PVLAN) configuration and management"; + + // Fex Trunk Enable + leaf fexTrunk { + + type nw_AdminSt; + default "disabled"; + description "Enable or disable PVLANs for FEX trunk"; + } + + // Abstraction for a layer-1 interface in the system. + // The properties apply to all types of interfaces DN: sys/pvlan/svi-[[CEncapType]] + container svi-items { + list Svi-list { + key "if"; + + uses pvlan_Svi-group; + description "SVI configuration for propagating L3 capabilities to secondary VLANs list"; + } + description "SVI configuration for propagating L3 capabilities to secondary VLANs"; + } + + // Abstraction for a layer-1 interface in the system. + // The properties apply to all types of interfaces DN: sys/pvlan/if-[[CIfIdType]] + container if-items { + list If-list { + key "if"; + + uses pvlan_If-group; + description "PVLAN port configurations list"; + } + description "PVLAN port configurations"; + } + + // Layer2 private-vlan domain DN: sys/pvlan/vlan-[[CEncapType]] + container vlan-items { + list Vlan-list { + key "id"; + + uses pvlan_Vlan-group; + description "VLAN configuration and operation for PVLAN list"; + } + description "VLAN configuration and operation for PVLAN"; + } + } + + grouping pvlan_Svi-group { + description "SVI configuration for propagating L3 capabilities to secondary VLANs"; + + leaf if { + + type nw_IfId; + description "Interface id of port with PVLAN"; + } + + leaf secondaryVlans { + + type l2_VlanBitmap; + description "Secondary VLANS of the PVLAN domain"; + } + } + + grouping pvlan_If-group { + description "PVLAN port configurations"; + + // pvlan if id + leaf if { + + type nw_IfId; + description "Interface id of port with PVLAN"; + } + + // access DN: sys/pvlan/if-[[CIfIdType]]/access + container access-items { + + uses pvlan_Access-group; + description "PVLAN access mode configurations on port"; + } + + // trunk DN: sys/pvlan/if-[[CIfIdType]]/trunk + container trunk-items { + + uses pvlan_Trunk-group; + description "PVLAN Trunk configuration tables"; + } + } + + grouping pvlan_Access-group { + description "PVLAN access mode configurations on port"; + + // access promiscuous port mapping DN: sys/pvlan/if-[[CIfIdType]]/access/promiscuous + container promiscuous-items { + + uses pvlan_AccessPromiscuous-group; + description "PVLAN promiscuous port configurations"; + } + + // DN: sys/pvlan/if-[[CIfIdType]]/access/secondary can be isolated or community + container secondary-items { + + uses pvlan_AccessSecondary-group; + description "Host VLAN access port configurations for isolated or community"; + } + } + + grouping pvlan_AccessPromiscuous-group { + description "PVLAN promiscuous port configurations"; + leaf primaryVlan { + type string; + description "Primary VLAN of a PVLAN domain"; + } + + leaf secondaryVlans { + + type l2_VlanBitmap; + description "Secondary VLANS of the PVLAN domain"; + } + } + + grouping pvlan_AccessSecondary-group { + description "Host VLAN access port configurations for isolated or community"; + leaf primaryVlan { + type string; + description "Primary VLAN of a PVLAN domain"; + } + leaf secondaryVlan { + type string; + description "Secondary VLAN configured as host VLAN"; + } + } + + grouping pvlan_Trunk-group { + description "PVLAN Trunk configuration tables"; + leaf nativeVlan { + type string; + default "vlan-1"; + description "Native VLAN on PVLAN trunk"; + } + + leaf trunkAllowedVlans { + + type l2_VlanBitmap; + description "Trunk Allowed VLANs on PVLAN trunk"; + } + + // trunk promiscous port mapping DN: sys/pvlan/if-[[CIfIdType]]/trunk/promiscuous + container promiscuous-items { + + uses pvlan_TrunkPromiscuousTable-group; + description "PVLAN Promiscuous Trunk Table"; + } + + // trunk secondary port mapping DN: sys/pvlan/if-[[CIfIdType]]/trunk/secondary + container secondary-items { + + uses pvlan_TrunkSecondaryTable-group; + description "PVLAN Isolated Trunk Table"; + } + } + + grouping pvlan_TrunkPromiscuousTable-group { + description "PVLAN Promiscuous Trunk Table"; + + // trunk promiscous vlan mapping entries DN: sys/pvlan/if-[[CIfIdType]]/trunk/promiscuous/primary-[[CEncapType]] + container primary-items { + list TrunkPromiscuousEntry-list { + key "primaryVlan"; + + uses pvlan_TrunkPromiscuousEntry-group; + description "PVLAN Promiscuous Trunk Entry list"; + } + description "PVLAN Promiscuous Trunk Entry"; + } + } + + grouping pvlan_TrunkPromiscuousEntry-group { + description "PVLAN Promiscuous Trunk Entry"; + leaf primaryVlan { + type string; + description "Primary VLAN of a PVLAN domain"; + } + + leaf secondaryVlans { + + type l2_VlanBitmap; + description "Secondary VLANS of the PVLAN domain"; + } + } + + grouping pvlan_TrunkSecondaryTable-group { + description "PVLAN Isolated Trunk Table"; + + // trunk secondary vlan mapping entries DN: sys/pvlan/if-[[CIfIdType]]/trunk/secondary/primary-[[CEncapType]] secondary can only be isolated + container primary-items { + list TrunkSecondaryEntry-list { + key "primaryVlan"; + + uses pvlan_TrunkSecondaryEntry-group; + description "PVLAN Isolated Trunk Entry list"; + } + description "PVLAN Isolated Trunk Entry"; + } + } + + grouping pvlan_TrunkSecondaryEntry-group { + description "PVLAN Isolated Trunk Entry"; + leaf primaryVlan { + type string; + description "Primary VLAN of a PVLAN domain"; + } + leaf secondaryVlan { + type string; + description "Isolated VLAN of the PVLAN domain"; + } + } + + grouping pvlan_Vlan-group { + description "VLAN configuration and operation for PVLAN"; + leaf id { + type string; + description "VLAN ID in a PVLAN"; + } + + // Private Vlan Type (Primary, Community, Isolated) + leaf pvlanType { + + type l2_PvlanTypes; + description "Type of VLAN in a PVLAN: Primary, Community or Isolated"; + } + + // Association of primary to secondary vlans + leaf association { + + type l2_VlanBitmap; + description "Association of Primay VLAN to Secondary VLANs in a PVLAN"; + } + } + + grouping vlanmgr_Entity-group { + description "Vlan Manager Entity"; + + leaf name { + config "false"; + + type naming_Name256 { + length "0..128"; + } + description "Name of the Entity of VlanMgr"; + } + + // This objects hold per vlan-mgr instance information. There is only + // one instance of vlan-mgr running in the system today + container inst-items { + + uses vlanmgr_Inst-group; + description "Vlan Manager Instance"; + } + } + + grouping vlanmgr_Inst-group { + description "Vlan Manager Instance"; + leaf longName { + type boolean; + default "false"; + description "Enable or Disable long name of 128 characters for VLAN"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "0..128"; + } + description "Name of the Instance of VlanMgr"; + } + + leaf vdcId { + config "false"; + + type l2_VdcId; + description "Virtual Device Context ID"; + } + + // DomainMbrIf class + container dommbr-items { + list DomMbrIf-list { + config "false"; + key "ifIdx"; + + uses l2_DomMbrIf-group; + description "Domain Member Interface list"; + } + description "Domain Member Interface"; + } + } + + grouping l2_DomMbrIf-group { + description "Domain Member Interface"; + + // if-index (Secondary Key) + leaf ifIdx { + config "false"; + + type nw_IfId; + description "Interface Index"; + } + + // create-flag to track interface creation status + leaf createFlag { + config "false"; + + type l2_CreateState; + description "Create Flag"; + } + + // bundle_port_state to track port-channel's operational status + leaf bundlePortSt { + config "false"; + + type l1_OperSt; + description "Bundle Port State"; + } + + // phy-port-state to track port's physical state + leaf phyPortState { + config "false"; + + type l1_OperSt; + description "Physical Port State"; + } + + // pm-port-state to track port's protocol state + leaf pmPortState { + config "false"; + + type l1_OperSt; + description "Protocol State"; + } + + // port's access vlan + leaf accessVlan { + config "false"; + + type l2_DomId; + description "Access VLAN"; + } + + // port's native vlan + leaf nativeVlan { + config "false"; + + type l2_DomId; + description "Native VLAN"; + } + + // pm-port-mode to track port's mode (access, trunk etc) + leaf pmPortMode { + config "false"; + + type l1_Mode; + description "Port Mode"; + } + + // allowed-vlan-bitmap used to track vlans that are configured on the interface + leaf allowedVlanBmp { + config "false"; + + type l2_VlanBitmap; + description "Allowed Vlan Bitmap"; + } + + // up-vlan-bitmap used to track vlans that are up on the interface + leaf trunkPortUpVlanBmp { + config "false"; + + type l2_VlanBitmap; + description "Trunk Port Up Vlan Bitmap"; + } + + leaf name { + config "false"; + + type naming_Name; + description "Name"; + } + } + + grouping nvo_Eps-group { + description "Container object for NVO endpoint."; + leaf vxlanUDPPort { + type uint16 { + range "1024..65535"; + } + default "4789"; + description "VxLAN UDP Port. Allowed value range is 1024-65535"; + } + container oper_peer-items { + list OperPeer-list { + config "false"; + key "ip"; + + uses nvo_OperPeer-group; + description "Object containing operational information of peers learnt through segment routing encapsulation list"; + } + description "Object containing operational information of peers learnt through segment routing encapsulation"; + } + + container evpnmulticast-items { + + uses nvo_EvpnMulticast-group; + description "Enabler for Advertise EVPN Multicast."; + } + + container multisite-items { + + uses nvo_EvpnMultisiteBordergw-group; + description "Configuration of EVPN Multisite Border Gateway."; + } + container stormcontrol-items { + list EvpnStormControl-list { + key "name"; + + uses nvo_EvpnStormControl-group; + description "Evpn Storm-control information list"; + } + description "Evpn Storm-control information"; + } + container epId-items { + list Ep-list { + key "epId"; + + uses nvo_Ep-group; + description "Endpoint for Network Virtualization Overlay Object. list"; + } + description "Endpoint for Network Virtualization Overlay Object."; + } + } + + grouping nvo_OperPeer-group { + description "Object containing operational information of peers learnt through segment routing encapsulation"; + leaf ip { + config "false"; + type address_Ip; + description "Indicates IP address of learnt peer"; + } + leaf upTime { + config "false"; + type union { + type string; + type uint64; + } + description "Indicates NVE peer uptime in POSIX format"; + } + leaf createTs { + config "false"; + type union { + type string; + type uint64; + } + description "Indicates the time at which the peer was first discovered in POSIX format"; + } + + leaf operSt { + config "false"; + + type nvo_PeerStateT; + description "Indicates the operational state of the peer"; + } + container peer_adj-items { + list PeerAdjacency-list { + config "false"; + key "eviId"; + + uses nvo_PeerAdjacency-group; + description "Object containing operational information of peer adjacencies list"; + } + description "Object containing operational information of peer adjacencies"; + } + } + + grouping nvo_PeerAdjacency-group { + description "Object containing operational information of peer adjacencies"; + leaf eviId { + config "false"; + type uint32; + description "Indicates the EVI adjacent to the peer."; + } + leaf egressLbl { + config "false"; + type uint32; + description "Indicates the egress MPLS label for this adjacency"; + } + + leaf ownership { + config "false"; + + type nvo_OwnershipT; + description "Indicates the ownership type of the peer adjacency"; + } + + leaf operSt { + config "false"; + + type nvo_PeerStateT; + description "Indicates the operational state of the peer adjancency"; + } + } + + grouping nvo_EvpnMulticast-group { + description "Enabler for Advertise EVPN Multicast."; + + leaf state { + + type nvo_EvpnMcastStT; + description "Advertise EVPN Multicast State."; + } + } + + grouping nvo_EvpnMultisiteBordergw-group { + description "Configuration of EVPN Multisite Border Gateway."; + + leaf state { + + type nvo_MultisiteStateT; + description "Configures the state of EVPN Multisite Border-gateway."; + } + leaf siteId { + type uint64; + description "Configuration of EVPN Multisite Border Gateway."; + } + + leaf dciAdvertisePip { + + type nvo_DciAdvertisePipStateT; + description "Enables/disables advertise PIP towards DCI in EVPN Multisite Border-gateway setup."; + } + + leaf splitHorizonPerSite { + + type nvo_SplitHorizonPerSiteStateT; + description "Enables/disables the per-site split-horizon feature on an EVPN Multisite anycast border gateway."; + } + leaf delayRestoreTime { + type uint16 { + range "30..1000"; + } + default "180"; + description "Delay-Restore Time."; + } + leaf dfElectionTime { + type decimal64 { + fraction-digits 6; + range "1..3"; + } + default "3"; + description "DF election time for anycast border gateways. Only one fractional digit supported"; + } + } + + grouping nvo_EvpnStormControl-group { + description "Evpn Storm-control information"; + + leaf name { + + type nvo_EvpnSiteName; + description "Broadcast or Multicast or Unicast Name"; + } + leaf floatlevel { + type decimal64 { + fraction-digits 6; + range "0..100"; + } + description "Storm Suppression float Level"; + } + } + + grouping nvo_Ep-group { + description "Endpoint for Network Virtualization Overlay Object."; + + leaf epId { + + type nvo_EpIdT; + description "Network Virtualization Overlay Endpoint (NVE) ID"; + } + + leaf adminSt { + + type nw_AdminSt; + default "disabled"; + description "Administrative Up or Down state of the NVE."; + } + leaf descr { + type string; + description "Description for the NVE"; + } + + leaf sourceInterface { + + type nw_IfId; + description "Source Interface associated with the NVE."; + } + + leaf anycastIntf { + + type nw_IfId; + description "Anycast Source Interface associated with the NVE."; + } + + leaf multisiteBordergwInterface { + + type nw_IfId; + description "Interface representing the Multisite Border Gateway."; + } + leaf holdDownTime { + type uint16 { + range "1..1500"; + } + default "180"; + description "Hold Down Time."; + } + + leaf mcastRtSrcIntf { + + type nw_IfId; + description "mcast-routing source interface"; + } + + leaf hostReach { + + type nvo_HostReachT; + default "Flood-and-learn"; + description "Host Reachability Protocol."; + } + leaf suppressARP { + type boolean; + description "Suppress ARP."; + } + leaf suppressMacRoute { + type boolean; + description "Suppress MAC Route."; + } + + leaf mcastGroupL2 { + + type mcast_GrpIp; + description "Base multicast group address for L2."; + } + + leaf mcastGroupL3 { + + type mcast_GrpIp; + description "Base multicast group address for L3."; + } + leaf ingressReplProtoBGP { + type boolean; + description "VxLAN Ingress Replication Protocol BGP."; + } + leaf advertiseVmac { + type boolean; + default "false"; + description "Enable or disable Virtual MAC Advertisement in VPC mode."; + } + leaf virtualMac { + type address_Mac; + description "Custom Virtual Router MAC address configuration for VPC VxLAN."; + } + leaf controllerId { + type uint32; + default "0"; + description "Controller ID (applicable when host reachability proto is controller)."; + } + + leaf cfgSrc { + + type nvo_CfgSrcT; + default "unknown"; + description "Enable or disable VxLAN configuration via controller."; + } + + leaf encapType { + + type nvo_EncapT; + default "unknown"; + description "Encapsulation Type."; + } + leaf autoRemapReplicationServers { + type boolean; + description "Configures auto remapping of VNIs for controller-based replication servers."; + } + + leaf operState { + config "false"; + + type l2_DomOperSt; + description "Operational State of the NVE."; + } + + leaf operStSrcLoopbackIntf { + config "false"; + + type l2_DomOperSt; + description "Operational State Up or Down of NVE Source Loopback Interface."; + } + + leaf operStAnycastSrcIntf { + config "false"; + + type l2_DomOperSt; + description "Operational State Up or Down of NVE Anycast Source Loopback Interface."; + } + + leaf operStMultisiteBrdrGwLoopbackIntf { + config "false"; + + type l2_DomOperSt; + description "Operational State Up or Down of Multisite Border Gateway Loopback Interface."; + } + + leaf adminStMultisiteBrdrGwLoopackIntf { + config "false"; + + type nw_AdminSt; + description "Administrative State Up or Down of Multisite Border Gateway Loopback Interface."; + } + + leaf operEncapType { + config "false"; + + type nvo_EncapT; + default "unknown"; + description "Operational encapsulation type."; + } + leaf mac { + config "false"; + type address_Mac; + description "Local Router MAC address"; + } + leaf virtualRtrMac { + config "false"; + type address_Mac; + description "Virtual Router MAC address for VPC VxLAN."; + } + leaf virtualRtrMacReorig { + config "false"; + type address_Mac; + description "Virtual Router Re-origination MAC address for Multisite VxLAN."; + } + + leaf learningMode { + config "false"; + + type nvo_HostLearnModeT; + description "Indicates the host learning mode (Control plane or data plane)."; + } + leaf holdUpTime { + config "false"; + type uint16; + description "The time for which the Source Interface will be held operationally Up in VPC mode during bring-down."; + } + + leaf holdDownTimerExpiryTime { + config "false"; + + type nvo_ETimeStamp; + description "Indicates the time after which the hold down timer will expire (in milliseconds)."; + } + + leaf holdUpTimerExpiryTime { + config "false"; + + type nvo_ETimeStamp; + description "Indicates the time after which the hold up timer will expire (in milliseconds)."; + } + + leaf delayRestoreMsBrdrGwExpiryTime { + config "false"; + + type nvo_ETimeStamp; + description "Time when delay restore for Multisite Border Gateway Loopback Interface will expire."; + } + leaf vpcVIPNotified { + config "false"; + type boolean; + description "Flag to indicate that Virtual IP configuration for the NVE source interface has been enabled in VPC mode."; + } + leaf primaryIp { + config "false"; + type address_Ipv4; + description "Primary IP of NVE Source Loopback Interface."; + } + leaf secondaryIp { + config "false"; + type address_Ipv4; + description "The Lowest Secondary IP of NVE Source Loopback Interface."; + } + leaf primaryIpv6 { + config "false"; + type address_Ipv6; + description "Primary IPv6 of NVE Source Loopback Interface."; + } + leaf secondaryIpv6 { + config "false"; + type address_Ipv6; + description "Secondary IPv6 of NVE Source Loopback Interface."; + } + leaf multisiteBrdrGwIntfIp { + config "false"; + type address_Ipv4; + description "IPv4 address assigned to Multisite Border Gateway Interface Loopback."; + } + + container redundancygrp-items { + + uses nvo_RedundancyGrp-group; + description "Redundancy Group under NVE"; + } + + container peers-items { + + uses nvo_Peers-group; + description "Parent object for all peers."; + } + + container nws-items { + + uses nvo_Nws-group; + description "Container object for Virtual Network Entries (VNIs)."; + } + + // Commented out + // + // + // + // + // + // + // + // Ephemeral data + container cntrs-items { + + uses nvo_Counters-group; + description "Counters for Nve Interface, VNI, peers."; + } + + container rsoperSourceInterface-items { + + uses nvo_RsOperSourceInterface_source-group; + description "Operational Up/Down status of the Source Interface."; + } + } + + grouping nvo_RedundancyGrp-group { + description "Redundancy Group under NVE"; + + leaf state { + + type nvo_RedundancyGrpStT; + description "Redundancy Group State"; + } + container group-items { + list RedundancyGrpIp-list { + key "ip"; + + uses nvo_RedundancyGrpIp-group; + description "Redundancy Group IP under NVE interface list"; + } + description "Redundancy Group IP under NVE interface"; + } + } + + grouping nvo_RedundancyGrpIp-group { + description "Redundancy Group IP under NVE interface"; + leaf ip { + type address_Ipv4; + description "Redundancy Group IP"; + } + } + + grouping nvo_Peers-group { + description "Parent object for all peers."; + container st_ir_peer-items { + list StIRPeer-list { + config "false"; + key "ip"; + + uses nvo_StIRPeer-group; + description "Object containing operational properties for Static Ingress Replication Peer. list"; + } + description "Object containing operational properties for Static Ingress Replication Peer."; + } + container dyn_ir_peer-items { + list DyIRPeer-list { + config "false"; + key "ip"; + + uses nvo_DyIRPeer-group; + description "Object containing operational properties for a dynamically learnt BGP Ingress Replication Peer. list"; + } + description "Object containing operational properties for a dynamically learnt BGP Ingress Replication Peer."; + } + container dy_peer-items { + list DyPeer-list { + config "false"; + key "ip"; + + uses nvo_DyPeer-group; + description "Object containing operational properties for a dynamically learnt peer (BGP-RNH or dataplane). list"; + } + description "Object containing operational properties for a dynamically learnt peer (BGP-RNH or dataplane)."; + } + + // Commented out + // + // + // + // + // + // + // + container st_peer-items { + list StPeer-list { + key "ip"; + + uses nvo_StPeer-group; + description "Object containing operational properties for Controller-learnt Peer. list"; + } + description "Object containing operational properties for Controller-learnt Peer."; + } + } + + grouping nvo_StIRPeer-group { + description "Object containing operational properties for Static Ingress Replication Peer."; + leaf ip { + config "false"; + type address_Ip; + description "Indicates Peer IP for Static IR Peer."; + } + + leaf state { + config "false"; + + type nvo_PeerStateT; + description "Indicates the NVE Peer Up or Down state."; + } + leaf upStateTransitionTs { + config "false"; + type union { + type string; + type uint64; + } + description "Indicates NVE Peer uptime in seconds."; + } + leaf createTs { + config "false"; + type union { + type string; + type uint64; + } + description "Indicates the time at which the peer was first discovered."; + } + + // Commented out + // + // + // + // + // + // + // + // Ephemeral data + container cntrs-items { + + uses nvo_Counters-group; + description "Counters for Nve Interface, VNI, peers."; + } + } + + grouping nvo_Counters-group { + description "Counters for Nve Interface, VNI, peers."; + + // Ephemeral data + leaf txUcastpkts { + config "false"; + type uint64; + description "Indicates transmitted unicast packets."; + } + + // Ephemeral data + leaf txUcastbytes { + config "false"; + type uint64; + description "Indicates transmitted unicast bytes."; + } + + // Ephemeral data + leaf txMcastpkts { + config "false"; + type uint64; + description "Indicates transmitted multicast packets."; + } + + // Ephemeral data + leaf txMcastbytes { + config "false"; + type uint64; + description "Indicates transmitted multicast bytes."; + } + + // Ephemeral data + leaf rxUcastpkts { + config "false"; + type uint64; + description "Indicates received Unicast packets."; + } + + // Ephemeral data + leaf rxUcastbytes { + config "false"; + type uint64; + description "Indicates received Unicast bytes."; + } + + // Ephemeral data + leaf rxMcastpkts { + config "false"; + type uint64; + description "Indicates received Multicast packets."; + } + + // Ephemeral data + leaf rxMcastbytes { + config "false"; + type uint64; + description "Indicates received Multicast Bytes."; + } + } + + grouping nvo_DyIRPeer-group { + description "Object containing operational properties for a dynamically learnt BGP Ingress Replication Peer."; + leaf ip { + config "false"; + type address_Ip; + description "Indicates Peer IP for BGP IR Peer."; + } + + leaf state { + config "false"; + + type nvo_PeerStateT; + description "Indicates the NVE Peer Up or Down state."; + } + leaf upStateTransitionTs { + config "false"; + type union { + type string; + type uint64; + } + description "Indicates NVE Peer uptime in seconds."; + } + leaf createTs { + config "false"; + type union { + type string; + type uint64; + } + description "Indicates the time at which the peer was first discovered."; + } + + // Commented out + // + // + // + // + // + // + // + // Ephemeral data + container cntrs-items { + + uses nvo_Counters-group; + description "Counters for Nve Interface, VNI, peers."; + } + } + + grouping nvo_DyPeer-group { + description "Object containing operational properties for a dynamically learnt peer (BGP-RNH or dataplane)."; + leaf ip { + config "false"; + type address_Ip; + description "Indicates Peer IP for BGP-RNH or dataplane learnt peer."; + } + + leaf state { + config "false"; + + type nvo_PeerStateT; + description "Indicates the NVE Peer Up or Down state."; + } + leaf upStateTransitionTs { + config "false"; + type union { + type string; + type uint64; + } + description "Indicates NVE Peer uptime in seconds."; + } + leaf mac { + config "false"; + type address_Mac; + description "Indicates Peer MAC address."; + } + + leaf firstVNI { + config "false"; + + type nvo_VniT; + description "Indicates the first VNI on which the NVE peer was learnt."; + } + leaf createTs { + config "false"; + type union { + type string; + type uint64; + } + description "Indicates the time at which the peer was first discovered."; + } + + // Commented out + // + // + // + // + // + // + // + // Ephemeral data + container cntrs-items { + + uses nvo_Counters-group; + description "Counters for Nve Interface, VNI, peers."; + } + } + + grouping nvo_StPeer-group { + description "Object containing operational properties for Controller-learnt Peer."; + leaf ip { + type address_Ipv4; + description "Indicates Peer IP for Controller-learnt Peer."; + } + + leaf type { + + type tunnel_EpT; + description "NVO Peer type (mcast/physical)."; + } + leaf peerId { + type uint32; + description "Internal use only. Please leave unspecified."; + } + + leaf state { + config "false"; + + type nvo_PeerStateT; + description "Indicates the NVE Peer Up or Down state."; + } + leaf upStateTransitionTs { + config "false"; + type union { + type string; + type uint64; + } + description "Indicates NVE Peer uptime in seconds."; + } + leaf mac { + config "false"; + type address_Mac; + description "Indicates Peer MAC address."; + } + + leaf firstVNI { + config "false"; + + type nvo_VniT; + description "Indicates the first VNI on which the NVE peer was learnt."; + } + leaf createTs { + config "false"; + type union { + type string; + type uint64; + } + description "Indicates the time at which the peer was first discovered."; + } + + // Commented out + // + // + // + // + // + // + // + // Ephemeral data + container cntrs-items { + + uses nvo_Counters-group; + description "Counters for Nve Interface, VNI, peers."; + } + } + + grouping nvo_Nws-group { + description "Container object for Virtual Network Entries (VNIs)."; + container vni-items { + list Nw-list { + key "vni"; + + uses nvo_Nw-group; + description "Object containing configurable properties for a single Virtual Network ID (VNI). list"; + } + description "Object containing configurable properties for a single Virtual Network ID (VNI)."; + } + container opervni-items { + list OperNw-list { + config "false"; + key "vni"; + + uses nvo_OperNw-group; + description "Object containing operational properties for a single Virtual Network ID (VNI). list"; + } + description "Object containing operational properties for a single Virtual Network ID (VNI)."; + } + container vnis-items { + list NwRange-list { + key "vniRangeMin vniRangeMax"; + + uses nvo_NwRange-group; + description "Object containing configurable properties for a range of Virtual Network IDs (VNIs). list"; + } + description "Object containing configurable properties for a range of Virtual Network IDs (VNIs)."; + } + } + + grouping nvo_Nw-group { + description "Object containing configurable properties for a single Virtual Network ID (VNI)."; + + leaf vni { + + type nvo_VniT; + description "Configure Virtual Network ID"; + } + + leaf suppressARP { + + type nvo_SuppressARPT; + description "Enable or disable ARP suppression for VNI(s)."; + } + + leaf mcastGroup { + + type mcast_GrpIp; + description "Configures multicast group address for VNI(s)."; + } + leaf associateVrfFlag { + type boolean; + description "Configures VNI(s) as L3 VNI."; + } + leaf isLegacyMode { + type boolean; + description "Indicates whether Multicast group configuration for the VNI(s) is configured in legacy mode or not."; + } + + leaf multisiteIngRepl { + + type nvo_MultisiteIngReplStateT; + description "Enable or disable Multisite Ingress Replication for VNI(s)."; + } + leaf spineAnyCastGw { + type boolean; + description "Enable or disable spine anycast gateway for VNI(s)."; + } + + // This property is hidden (secure="yes") and used only for internal validation. + // Following are the expected values - + // non-CLI/non-Controller DME agents (eg. NetConf/RestConf) - "0" + // CLI - "cli" + // Controller - "controller" + leaf cfgSrc { + + type nvo_CfgSrcT; + default "unknown"; + description "Internal system property. Not intended for external use."; + } + container peervtep-items { + list PeerVtep-list { + key "ip"; + + uses nvo_PeerVtep-group; + description "Peer-VTEP for VNI(s) list"; + } + description "Peer-VTEP for VNI(s)"; + } + + container IngRepl-items { + + uses nvo_IngRepl-group; + description "Object containing Ingress Replication configuration for VNI(s)."; + } + } + + grouping nvo_PeerVtep-group { + description "Peer-VTEP for VNI(s)"; + leaf ip { + type address_Ip; + description "Configures the IP address for Peer-VTEP."; + } + } + + grouping nvo_IngRepl-group { + description "Object containing Ingress Replication configuration for VNI(s)."; + + leaf proto { + + type nvo_IngReplProtoT; + description "Configure VxLAN Ingress Replication mode."; + } + + // This property is required specifically for configuring replication + // servers from the controller. When its value is replicationServer, it + // signifies that the static peers downloaded from controller should + // programmed wth vni hashing. This property directly maps to the + // replicationMode property in BdEntry MO in the aggregate model. + // And since this property is to be set only from the controller, it has + // been defined as hidden. So it will not be visible in REST/Netconf or + // any other external interface. + leaf replMode { + + type nvo_ReplModeT; + description "Replication Mode. For internal use only."; + } + container config_st_ir_peer-items { + list ConfigStIRPeer-list { + key "ip"; + + uses nvo_ConfigStIRPeer-group; + description "Configuration for Static Ingress Replication (IR) Peer. list"; + } + description "Configuration for Static Ingress Replication (IR) Peer."; + } + } + + grouping nvo_ConfigStIRPeer-group { + description "Configuration for Static Ingress Replication (IR) Peer."; + leaf ip { + type address_Ipv4; + description "Peer IP configuration for Static IR Peer."; + } + } + + grouping nvo_OperNw-group { + description "Object containing operational properties for a single Virtual Network ID (VNI)."; + + // Operational properties + leaf vni { + config "false"; + + type nvo_VniT; + description "Virtual Network ID."; + } + + leaf epId { + config "false"; + + type nvo_EpIdT; + description "Network Virtualization Overlay endpoint (NVE) ID."; + } + + leaf operMcastGroup { + config "false"; + + type mcast_GrpIp; + description "Indicates the multicast group address."; + } + leaf operSupprARP { + config "false"; + type boolean; + description "Indicates state of ARP suppression for VNI(s)."; + } + + leaf state { + config "false"; + + type nvo_VniStateT; + description "Indicates VNI Up or Down state."; + } + + leaf mode { + config "false"; + + type nvo_HostLearnModeT; + description "Indicates VNI Host reachability mode."; + } + + leaf type { + config "false"; + + type nvo_VniTypeT; + description "Indicates if VNI is in L2 or L3 type."; + } + leaf vlanBD { + config "false"; + type string; + description "Indicates the VLAN associated to VNI."; + } + + // Commented out + // + // + // + // + // + // + // + // Ephemeral data + container cntrs-items { + + uses nvo_Counters-group; + description "Counters for Nve Interface, VNI, peers."; + } + } + + grouping nvo_NwRange-group { + description "Object containing configurable properties for a range of Virtual Network IDs (VNIs)."; + + leaf vniRangeMin { + + type nvo_VniT; + description "Configures the minimum value for the VNI range."; + } + + leaf vniRangeMax { + + type nvo_VniT; + description "Configures the maximum value for the VNI range."; + } + leaf isMcastRange { + type boolean; + description "Indicates if the multicast group configuration is a range."; + } + + leaf suppressARP { + + type nvo_SuppressARPT; + description "Enable or disable ARP suppression for VNI(s)."; + } + + leaf mcastGroup { + + type mcast_GrpIp; + description "Configures multicast group address for VNI(s)."; + } + leaf associateVrfFlag { + type boolean; + description "Configures VNI(s) as L3 VNI."; + } + leaf isLegacyMode { + type boolean; + description "Indicates whether Multicast group configuration for the VNI(s) is configured in legacy mode or not."; + } + + leaf multisiteIngRepl { + + type nvo_MultisiteIngReplStateT; + description "Enable or disable Multisite Ingress Replication for VNI(s)."; + } + leaf spineAnyCastGw { + type boolean; + description "Enable or disable spine anycast gateway for VNI(s)."; + } + + // This property is hidden (secure="yes") and used only for internal validation. + // Following are the expected values - + // non-CLI/non-Controller DME agents (eg. NetConf/RestConf) - "0" + // CLI - "cli" + // Controller - "controller" + leaf cfgSrc { + + type nvo_CfgSrcT; + default "unknown"; + description "Internal system property. Not intended for external use."; + } + container peervtep-items { + list PeerVtep-list { + key "ip"; + + uses nvo_PeerVtep-group; + description "Peer-VTEP for VNI(s) list"; + } + description "Peer-VTEP for VNI(s)"; + } + + container IngRepl-items { + + uses nvo_IngRepl-group; + description "Object containing Ingress Replication configuration for VNI(s)."; + } + } + + grouping l3_Ctx-group { + description "Context"; + + // parameter used by node to enforce filter rules + leaf pcEnfPref { + + type fv_PcEnfPref; + description "Policy Control Enforcement"; + } + + // Type of the context + leaf type { + + type l3_CtxT; + description "Type"; + } + + // It represents the classId for the multicast traffic + // terminating on this context + leaf pcTag { + + type actrl_PcTag; + description "PC Tag"; + } + + // Local managment class id + leaf mgmtPcTag { + + type actrl_PcTag; + description "Management PC Tag"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Vrf Id. Its a Policyelemnt owned ID used for resource tracking purpose + leaf resourceId { + config "false"; + + type l3_VrfId; + description "VRF ID"; + } + + // vrf id + leaf id { + config "false"; + + type l3_VrfId; + description "VRF ID"; + } + leaf encap { + type string; + description "Encapsulation"; + } + leaf descr { + type string; + description "Description"; + } + + // Scope of the context. It identifies the classId + // pool and all the epg/bd classIds belonging to + // this context needs to be allocated from this pool + leaf scope { + config "false"; + + type actrl_ScopeId; + description "Scope"; + } + + // Controller Id + leaf ctrlrId { + + type aggregate_ControllerID; + description "Controller ID"; + } + + // SecurityLabel + leaf secLbl { + config "false"; + + type actrl_SecLbl; + description "Security Label"; + } + + // vrf Admin State + leaf adminState { + + type l3_VrfAdminState; + description "Admin State"; + } + + // vrf Oper State + leaf operState { + config "false"; + + type l3_VrfOperState; + description "Operational State"; + } + + // oper state reason + leaf operStQual { + config "false"; + + type l3_VrfOperStateQual; + description "Operational State Qualifier"; + } + + // old oper state reason + leaf oldOperStQual { + config "false"; + + type l3_VrfOperStateQual; + description "Old Operational State Qualifier"; + } + leaf gsdbCtx { + config "false"; + type uint32; + description "GSDB Context"; + } + leaf pending { + config "false"; + type boolean; + description "Pending"; + } + leaf v4TibValid { + config "false"; + type boolean; + description "IPV4 Table Validity"; + } + leaf v4TibId { + config "false"; + type uint32; + description "IPV4 Table ID"; + } + leaf v4TibName { + config "false"; + type string; + description "IPV4 Table Name"; + } + leaf v4TibPending { + config "false"; + type boolean; + description "IPV4 Table Pending"; + } + + // ipv4 table Oper State + leaf v4TibOperState { + config "false"; + + type l3_VrfOperState; + description "IPV4 Table Operational State"; + } + + // ipv4 table oper state reason + leaf v4TibOperStQual { + config "false"; + + type l3_VrfOperStateQual; + description "IPV4 Table Operational State Qualifier"; + } + + // ipv4 table old oper state reason + leaf v4TibOldOperStQual { + config "false"; + + type l3_VrfOperStateQual; + description "IPV4 Old Operational State Qualifier"; + } + leaf v6TibValid { + config "false"; + type boolean; + description "IPV6 Table Validity"; + } + leaf v6TibId { + config "false"; + type uint32; + description "IPV6 Table ID"; + } + leaf v6TibName { + config "false"; + type string; + description "IPV6 Table Name"; + } + leaf v6TibPending { + config "false"; + type boolean; + description "IPV6 Table Pending"; + } + + // ipv6 table Oper State + leaf v6TibOperState { + config "false"; + + type l3_VrfOperState; + description "IPV6 Table Operational State"; + } + + // ipv6 table oper state reason + leaf v6TibOperStQual { + config "false"; + + type l3_VrfOperStateQual; + description "IPV6 Table Operational State Qualifer"; + } + + // ipv6 table old oper state reason + leaf v6TibOldOperStQual { + config "false"; + + type l3_VrfOperStateQual; + description "IPV6 Table Operational State Qualifer"; + } + leaf createTs { + config "false"; + type union { + type string; + type uint64; + } + description "Creation Timestamp"; + } + leaf lastChgdTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last State Change Timestamp"; + } + + // bgp route distinguisher + leaf bgpRd { + config "false"; + + type l3_BgpRdBytes; + description "BGP Route Distinguisher"; + } + leaf bgpRdDisp { + config "false"; + type string; + description "BGP Route Distinguisher for Display"; + } + leaf prtclBmp { + config "false"; + type uint32; + description "Protocol Bitmap"; + } + leaf oui { + type string; + description "OUI"; + } + leaf vpnId { + type string; + description "Configure VPN ID"; + } + + // Prefix list entry definition + container pfx-items { + list PfxEntry-list { + config "false"; + key "addr"; + + uses actrl_PfxEntry-group; + description "Prefix Entry list"; + } + description "Prefix Entry"; + } + + // Abstraction of epm database + container db-items { + list Db-list { + config "false"; + key "type"; + + uses epm_Db-group; + description "Database list"; + } + description "Database"; + } + + // Routed management interface + container mgmt-items { + list RtdMgmtIf-list { + key "id"; + + uses mgmt_RtdMgmtIf-group; + description "Routed Management Interface list"; + } + description "Routed Management Interface"; + } + + container rtdbgexpUserCtx-items { + + list RtDbgexpUserCtx-list { + config "false"; + key "tDn"; + + uses dbgexp_RtDbgexpUserCtx_target-group; + description "Relation to L3 Context Export Policy list"; + } + description "Relation to L3 Context Export Policy"; + } + + container rtfvEPgDefToL3Dom-items { + + list RtFvEPgDefToL3Dom-list { + config "false"; + key "tDn"; + + uses fv_RtFvEPgDefToL3Dom_target-group; + description "EPgDef to L3 Domain Attachment list"; + } + description "EPgDef to L3 Domain Attachment"; + } + + container rsctxToEpP-items { + + list RsCtxToEpP-list { + key "tDn"; + + uses l3_RsCtxToEpP_source-group; + description "Epp Attachment list"; + } + description "Epp Attachment"; + } + } + + grouping actrl_PfxEntry-group { + description "Prefix Entry"; + leaf addr { + config "false"; + type address_Ip; + description "Address"; + } + + // Policy tag + leaf pcTag { + config "false"; + + type actrl_PcTag; + description "PC Tag"; + } + + // Prefix operational state + leaf operSt { + config "false"; + + type actrl_OperSt; + description "Operational State"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping mgmt_RtdMgmtIf-group { + description "Routed Management Interface"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type l1_AdminSt; + description "Admin State"; + } + + container rtpseudoIf-items { + + uses dhcp_RtPseudoIf_target-group; + description "Pseudo Interface"; + } + + container rsrtdMgmtConf-items { + + uses mgmt_RsRtdMgmtConf_source-group; + } + + container rsl3If-items { + + list RsL3If-list { + key "tDn"; + + uses l3_RsL3If_source-group; + description "L3 Interface Attachment list"; + } + description "L3 Interface Attachment"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping l3_Inst-group { + description "Overlay Instance"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Vrf Id. Its a Policyelemnt owned ID used for resource tracking purpose + leaf resourceId { + config "false"; + + type l3_VrfId; + description "VRF ID"; + } + + // vrf id + leaf id { + config "false"; + + type l3_VrfId; + description "VRF ID"; + } + leaf encap { + type string; + description "Encapsulation"; + } + leaf descr { + type string; + description "Description"; + } + + // Scope of the context. It identifies the classId + // pool and all the epg/bd classIds belonging to + // this context needs to be allocated from this pool + leaf scope { + config "false"; + + type actrl_ScopeId; + description "Scope"; + } + + // Controller Id + leaf ctrlrId { + + type aggregate_ControllerID; + description "Controller ID"; + } + + // SecurityLabel + leaf secLbl { + config "false"; + + type actrl_SecLbl; + description "Security Label"; + } + + // vrf Admin State + leaf adminState { + + type l3_VrfAdminState; + description "Admin State"; + } + + // vrf Oper State + leaf operState { + config "false"; + + type l3_VrfOperState; + description "Operational State"; + } + + // oper state reason + leaf operStQual { + config "false"; + + type l3_VrfOperStateQual; + description "Operational State Qualifier"; + } + + // old oper state reason + leaf oldOperStQual { + config "false"; + + type l3_VrfOperStateQual; + description "Old Operational State Qualifier"; + } + leaf gsdbCtx { + config "false"; + type uint32; + description "GSDB Context"; + } + leaf pending { + config "false"; + type boolean; + description "Pending"; + } + leaf v4TibValid { + config "false"; + type boolean; + description "IPV4 Table Validity"; + } + leaf v4TibId { + config "false"; + type uint32; + description "IPV4 Table ID"; + } + leaf v4TibName { + config "false"; + type string; + description "IPV4 Table Name"; + } + leaf v4TibPending { + config "false"; + type boolean; + description "IPV4 Table Pending"; + } + + // ipv4 table Oper State + leaf v4TibOperState { + config "false"; + + type l3_VrfOperState; + description "IPV4 Table Operational State"; + } + + // ipv4 table oper state reason + leaf v4TibOperStQual { + config "false"; + + type l3_VrfOperStateQual; + description "IPV4 Table Operational State Qualifier"; + } + + // ipv4 table old oper state reason + leaf v4TibOldOperStQual { + config "false"; + + type l3_VrfOperStateQual; + description "IPV4 Old Operational State Qualifier"; + } + leaf v6TibValid { + config "false"; + type boolean; + description "IPV6 Table Validity"; + } + leaf v6TibId { + config "false"; + type uint32; + description "IPV6 Table ID"; + } + leaf v6TibName { + config "false"; + type string; + description "IPV6 Table Name"; + } + leaf v6TibPending { + config "false"; + type boolean; + description "IPV6 Table Pending"; + } + + // ipv6 table Oper State + leaf v6TibOperState { + config "false"; + + type l3_VrfOperState; + description "IPV6 Table Operational State"; + } + + // ipv6 table oper state reason + leaf v6TibOperStQual { + config "false"; + + type l3_VrfOperStateQual; + description "IPV6 Table Operational State Qualifer"; + } + + // ipv6 table old oper state reason + leaf v6TibOldOperStQual { + config "false"; + + type l3_VrfOperStateQual; + description "IPV6 Table Operational State Qualifer"; + } + leaf createTs { + config "false"; + type union { + type string; + type uint64; + } + description "Creation Timestamp"; + } + leaf lastChgdTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last State Change Timestamp"; + } + + // bgp route distinguisher + leaf bgpRd { + config "false"; + + type l3_BgpRdBytes; + description "BGP Route Distinguisher"; + } + leaf bgpRdDisp { + config "false"; + type string; + description "BGP Route Distinguisher for Display"; + } + leaf prtclBmp { + config "false"; + type uint32; + description "Protocol Bitmap"; + } + leaf oui { + type string; + description "OUI"; + } + leaf vpnId { + type string; + description "Configure VPN ID"; + } + + // Ftag tree, fabric multicast tree to direct the tenant flood + // and multicast traffic over the fabric + container tree-items { + list Tree-list { + config "false"; + key "id"; + + uses fmcast_Tree-group; + description "Multicast Tree list"; + } + description "Multicast Tree"; + } + + // Layer3 Domain (aka vrf) container for routing protocols + container dom-items { + list Dom-list { + key "name"; + + uses rtctrl_Dom-group; + description "Domain list"; + } + description "Domain"; + } + + // Abstraction of epm database + container db-items { + list Db-list { + config "false"; + key "type"; + + uses epm_Db-group; + description "Database list"; + } + description "Database"; + } + + // Shard chaining policy + container shchp-items { + list ShardChP-list { + config "false"; + key "af"; + + uses topoctrl_ShardChP-group; + description "Shard Chain Policy list"; + } + description "Shard Chain Policy"; + } + + // Routed management interface + container mgmt-items { + list RtdMgmtIf-list { + key "id"; + + uses mgmt_RtdMgmtIf-group; + description "Routed Management Interface list"; + } + description "Routed Management Interface"; + } + + container rtfvEPgDefToL3Dom-items { + + list RtFvEPgDefToL3Dom-list { + config "false"; + key "tDn"; + + uses fv_RtFvEPgDefToL3Dom_target-group; + description "EPgDef to L3 Domain Attachment list"; + } + description "EPgDef to L3 Domain Attachment"; + } + + container rsvrfMbr-items { + + list RsVrfMbr-list { + key "tDn"; + + uses l3_RsVrfMbr_source-group; + description "VRF Membership Association list"; + } + description "VRF Membership Association"; + } + + container rsvrfPolicyAtt-items { + + uses l3_RsVrfPolicyAtt_source-group; + description "Vrf Reference to Analytics policy."; + } + + container rsvrfMonitorAtt-items { + + uses l3_RsVrfMonitorAtt_source-group; + description "Vrf Reference to Analytics monitor."; + } + } + + grouping fmcast_Tree-group { + description "Multicast Tree"; + + // Id + leaf id { + config "false"; + + type fmcast_Id; + description "Tree Id"; + } + + // Multicast root for this tree, identified by the node + // ip address + leaf root { + config "false"; + + type mcast_Root; + description "Root"; + } + + // Administrative state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Adminitrative State"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping rtctrl_Dom-group { + description "Domain"; + leaf rd { + type mtx_array_community; + description "Route Distinguisher"; + } + leaf operRd { + config "false"; + type mtx_array_community; + description "Operational Route Distinguisher"; + } + leaf encap { + type string; + description "Encapsulation of MPLS"; + } + leaf operSecondaryRd { + config "false"; + type mtx_array_community; + description "Operational Secondary RD for vxlan multisite border gateway"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern "[A-Za-z0-9!@#$\\^\\*=\\+\\{\\}\\.;:_-]{1,32}"; + } + description "Name"; + } + + // This object holds per address family bgp vrf information + container af-items { + list DomAf-list { + key "type"; + + uses rtctrl_DomAf-group; + description "Address Family Domain list"; + } + description "Address Family Domain"; + } + } + + grouping rtctrl_DomAf-group { + description "Address Family Domain"; + + // Type + leaf type { + + type bgp_AfT; + description "Type"; + } + + // This object holds policy to control vpn af + // information for a given vrf + container ctrl-items { + list AfCtrl-list { + key "type"; + + uses rtctrl_AfCtrl-group; + description "Virtual Private Network Control Policy list"; + } + description "Virtual Private Network Control Policy"; + } + + container maxrts-items { + + uses l3_MaxRoutes-group; + description "Maximum Routes Policy"; + } + } + + grouping rtctrl_AfCtrl-group { + description "Virtual Private Network Control Policy"; + + // Type + leaf type { + + type bgp_AfT; + description "Type"; + } + + // Route policy holds all route policy entries and route controls + container rttp-items { + list RttP-list { + key "type"; + + uses rtctrl_RttP-group; + description "Route Policy list"; + } + description "Route Policy"; + } + } + + grouping l3_MaxRoutes-group { + description "Maximum Routes Policy"; + + // Maximum number of routes allowed + leaf maxRt { + + type l3_MaxLmt; + description "Maximum number of routes allowed"; + } + + // Threshold at which warning is issued when number of + // routes crosses the threshold + leaf thresh { + + type l3_MaxRtThresh; + description "Threshold percentage at which to generate a warning"; + } + + leaf reinstall { + + type l3_MaxRtThresh; + description "Reinstall previous rejected route due to over maximum route limit"; + } + + leaf action { + + type l3_MaxRtAct; + description "Action to do when warning message limit is exceeded"; + } + } + + grouping topoctrl_ShardChP-group { + description "Shard Chain Policy"; + + // Address family for chaining + leaf af { + config "false"; + + type nw_AddrF; + description "Address Family"; + } + + // Redundancy node, determines the node to go to in case of + // a local node failure + leaf node { + config "false"; + + type topoctrl_ShardChNode; + description "Node"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping ipfib_Entity-group { + description "Ipfib Entity Information"; + + // Holds per domain (vrf) information + // Ephemeral data + container dom-items { + + // Ephemeral data + list Dom-list { + config "false"; + key "name"; + + uses ipfib_Dom-group; + description "Domain: Virtual Router Context (VRF) list"; + } + description "Domain: Virtual Router Context (VRF)"; + } + } + + grouping ipfib_Dom-group { + description "Domain: Virtual Router Context (VRF)"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + container label-items { + + // Ephemeral data + list Label-list { + config "false"; + key "label"; + + uses ipfib_Label-group; + description "The push/swap label for the given FEC list"; + } + description "The push/swap label for the given FEC"; + } + + // Holds route information for a particular destination address + // Ephemeral data + container pfx-items { + + // Ephemeral data + list Route-list { + config "false"; + key "pfxAddr"; + + uses ipfib_Route-group; + description "Prefix Info list"; + } + description "Prefix Info"; + } + } + + grouping ipfib_Label-group { + description "The push/swap label for the given FEC"; + + // Ephemeral data + leaf label { + config "false"; + type uint32; + description "Segment Routing Label value"; + } + leaf tableId { + config "false"; + type uint32; + description "Prefix/Table ID. Usually the VRF Id"; + } + + leaf fectype { + config "false"; + + type ipfib_FecType; + description "The type of Forwarding Equivalence Class"; + } + leaf fec { + config "false"; + type string; + description "Typicaly the Destination IP address"; + } + + // Ephemeral data + container nh-items { + + // Ephemeral data + list MplsNextHopInfo-list { + config "false"; + key "nhAddr"; + + uses ipfib_MplsNextHopInfo-group; + description "NextHop adjacency information for label entries list"; + } + description "NextHop adjacency information for label entries"; + } + } + + grouping ipfib_MplsNextHopInfo-group { + description "NextHop adjacency information for label entries"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf nhAddr { + config "false"; + type address_Ip; + description + "NextHop IP address. It could be a connected or a + remote Next Hop"; + } + + // Outgoing interface + // Ephemeral data + leaf nhIntf { + config "false"; + + type nw_IfId; + description + "NextHop Interface ID. The port on the switch + where the next hop ip address is learnt"; + } + + // drop, receive, attached + // Ephemeral data + leaf routeType { + config "false"; + + type ipfib_SpecialAdj; + description + "Special route type. Marks if its a + drop/direct/supervisor route"; + } + + // Ephemeral data + leaf partialInst { + config "false"; + type string; + description "Identifies if the route is partially installed"; + } + + // Ephemeral data + leaf outLabel { + config "false"; + type string; + description "Outgoing label Stack for MPLS next hops"; + } + + // MPLS label operation + // Ephemeral data + leaf outOperation { + config "false"; + + type ipfib_OutOperEnum; + description + "Operation performed on outgoing packets for MPLS next hops. + Push/Swap/Pop"; + } + } + + grouping ipfib_Route-group { + description "Prefix Info"; + + // Ephemeral data + leaf pfxAddr { + config "false"; + type address_Ip; + description "Prefix address. IPv4 or IPv6"; + } + + leaf addrType { + config "false"; + + type ipfib_AddressType; + description "Address Family. Ipv4 or Ipv6"; + } + leaf partialInst { + config "false"; + type boolean; + description "Identifies if the prefix is partially installed."; + } + + // Ephemeral data + container nh-items { + + // Ephemeral data + list RouteNextHopInfo-list { + config "false"; + key "nhAddr"; + + uses ipfib_RouteNextHopInfo-group; + description "NextHop adjacency information list"; + } + description "NextHop adjacency information"; + } + } + + grouping ipfib_RouteNextHopInfo-group { + description "NextHop adjacency information"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf nhAddr { + config "false"; + type address_Ip; + description + "NextHop IP address. It could be a connected or a + remote Next Hop"; + } + + // Outgoing interface + // Ephemeral data + leaf nhIntf { + config "false"; + + type nw_IfId; + description + "NextHop Interface ID. The port on the switch + where the next hop ip address is learnt"; + } + + // drop, receive, attached + // Ephemeral data + leaf routeType { + config "false"; + + type ipfib_SpecialAdj; + description + "Special route type. Marks if its a + drop/direct/supervisor route"; + } + + // Ephemeral data + leaf partialInst { + config "false"; + type string; + description "Identifies if the route is partially installed"; + } + + // Ephemeral data + leaf outLabel { + config "false"; + type string; + description "Outgoing label Stack for MPLS next hops"; + } + + // MPLS label operation + // Ephemeral data + leaf outOperation { + config "false"; + + type ipfib_OutOperEnum; + description + "Operation performed on outgoing packets for MPLS next hops. + Push/Swap/Pop"; + } + } + + grouping l3vm_Entity-group { + description "L3VM Entity"; + + // as-format type + leaf asFormat { + + type l3vm_AsFormatType; + description "Specifies the Autonomous system number (ASN) notation to asdot format"; + } + leaf vrfmemberchangeretainl3cfg { + type boolean; + default "true"; + description "vrf member change retain l3 config"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Interface Object for L3VM + container if-items { + list L3vmIf-list { + key "id"; + + uses l3vm_L3vmIf-group; + description "L3VM related information for the interface list"; + } + description "L3VM related information for the interface"; + } + + // This objects hold per l3vm instance information. There is only + // one instance of l3vm running in the system today + container inst-items { + + uses l3vm_Inst-group; + description "L3VM Instance"; + } + } + + grouping l3vm_L3vmIf-group { + description "L3VM related information for the interface"; + leaf soo { + type mtx_array_community; + description "Site Of Origin information for the interface"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping l3vm_Inst-group { + description "L3VM Instance"; + leaf vrfAllocId { + config "false"; + type uint32; + description "Allocated VRF ID"; + } + leaf tblAllocId { + config "false"; + type uint32; + description "Allocated Table ID"; + } + leaf featureSet { + config "false"; + type uint32; + description "Feature Set Bitmap"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + config "false"; + + type nw_InstCtrl; + description "Controls"; + } + + // DomainMbrIf class + container dommbr-items { + list DomMbrIf-list { + config "false"; + key "id"; + + uses l3_DomMbrIf-group; + description "Domain Member Interface list"; + } + description "Domain Member Interface"; + } + + // This objects hold runtime information on l3vm tables + container tbl-items { + list Tbl-list { + config "false"; + key "id"; + + uses l3vm_Tbl-group; + description "Table Entity list"; + } + description "Table Entity"; + } + } + + grouping l3_DomMbrIf-group { + description "Domain Member Interface"; + + // ifindex + leaf id { + config "false"; + + type nw_IfId; + description "Interface ID"; + } + leaf iod { + config "false"; + type uint32; + description "IOD"; + } + + // vrfId + leaf vrfId { + config "false"; + + type l3_VrfId; + description "VRF ID"; + } + + // old vrfId + leaf oldVrfId { + config "false"; + + type l3_VrfId; + description "Old VRF ID"; + } + + // vrf name + leaf vrfName { + config "false"; + + type l3_VrfName; + description "VRF Name"; + } + + // old vrf name + leaf oldVrfName { + config "false"; + + type l3_VrfName; + description "Old VRF Name"; + } + leaf gsdbCtx { + config "false"; + type uint32; + description "GSDB Context"; + } + + // gsdb context type + leaf gsdbCtxType { + config "false"; + + type l3_VrfGsdbCtxType; + description "GSDB Context Type"; + } + + leaf name { + config "false"; + + type naming_Name; + description "Name"; + } + } + + grouping l3vm_Tbl-group { + description "Table Entity"; + leaf id { + config "false"; + type uint32; + description "Table ID"; + } + leaf gsdbCtx { + config "false"; + type uint32; + description "GSDB Context"; + } + leaf rtLmtMax { + config "false"; + type uint32; + description "Maximum Number of Routes Supported"; + } + leaf rtLmtWarn { + config "false"; + type uint32; + description "Route Warning Limit"; + } + leaf rtLmtWarnOnly { + config "false"; + type boolean; + description "Route Limit Warning Only"; + } + leaf rtLmtWarnPct { + config "false"; + type uint8; + description "Route Limit Warning Threshold (percentage)"; + } + leaf rtLmtReinstPct { + config "false"; + type uint8; + description "Route Limit Reinstall Threshold (percentage)"; + } + } + + grouping urib_Entity4-group { + description "Urib ipv4 root element"; + + // Specific to v4 + container table4-items { + list Table4-list { + config "false"; + key "vrfName"; + + uses urib_Table4-group; + description "IPv4 urib table. list"; + } + description "IPv4 urib table."; + } + } + + grouping urib_Table4-group { + description "IPv4 urib table."; + + leaf vrfName { + config "false"; + + type l3_VrfName; + description "VRF name"; + } + + leaf routeCount { + config "false"; + + type urib_Counter32; + description "Total number of route in this table"; + } + + // Specific to v4 + // Ephemeral data + container recursivenexthop4-items { + + // Ephemeral data + list RecursiveNextHop4-list { + config "false"; + key "prefix"; + + uses urib_RecursiveNextHop4-group; + description "ipv4 recursive next-hop list"; + } + description "ipv4 recursive next-hop"; + } + + // Specific to v4 + // Ephemeral data + container route4-items { + + // Ephemeral data + list Route4-list { + config "false"; + key "prefix"; + + uses urib_Route4-group; + description "ipv4 route list"; + } + description "ipv4 route"; + } + + // Specific to v4 cached summary + // Ephemeral data + container summary-items { + + uses urib_SummaryTable4-group; + description "IPv4 urib table cached summary."; + } + + // ==================================== IPv4 urib table non cached summary ======================================= Specific to v4 non cached summary (including per protocol path counts) + // Ephemeral data + container summarydb-items { + + uses urib_SummaryTable4DB-group; + description "IPv4 urib table non cached summary."; + } + } + + grouping urib_RecursiveNextHop4-group { + description "ipv4 recursive next-hop"; + + // Ephemeral data + leaf prefix { + config "false"; + type address_Ip; + description "RNH address with mask"; + } + + // Ephemeral data + leaf uptime { + config "false"; + + type urib_TimeStr; + description "Elapsed time since this RNH has been added/modified."; + } + + // Ephemeral data + leaf multipath { + config "false"; + type boolean; + description "Used for eibgp mixed-path purpose"; + } + + // Ephemeral data + leaf owner { + config "false"; + type string; + description "The owners of this RNH"; + } + + // Ephemeral data + leaf restricted { + config "false"; + type boolean; + description "In restricted mode, i.e. cannot be resolved with the default route 0/0"; + } + + // Ephemeral data + leaf staleOwner { + config "false"; + type string; + description "The stale owners of this RNH"; + } + + // Ephemeral data + leaf upathEpoch { + config "false"; + type uint32; + description "Epoch of the unicast path"; + } + + // Ephemeral data + leaf refCount { + config "false"; + type uint32; + description "The reference count of this RNH"; + } + + // Ephemeral data + leaf pendingUfdm { + config "false"; + type boolean; + description "Waiting to be send to UFDM."; + } + + // Ephemeral data + leaf pendingCC { + config "false"; + type boolean; + description "Waiting to be send to UFDM for inconsistency check"; + } + + // Ephemeral data + leaf upathResolvedClients { + config "false"; + type string; + description "The routing protocols want to resolve this RNH with unicast paths"; + } + + // Ephemeral data + leaf mpathEpoch { + config "false"; + type uint32; + description "Epoch of the path used for multicast purpose"; + } + + // Ephemeral data + leaf mpathResolvedClients { + config "false"; + type string; + description "The routing protocols want to resolve this RNH with the paths for multicast purpose"; + } + + // Specific to v4 + // Ephemeral data + container rnhpath4-items { + + // Ephemeral data + list RecursiveNextHopPath4-list { + config "false"; + key "id"; + + uses urib_RecursiveNextHopPath4-group; + description "IPv4 recursive next-hop resolved path. list"; + } + description "IPv4 recursive next-hop resolved path."; + } + } + + grouping urib_RecursiveNextHopPath4-group { + description "IPv4 recursive next-hop resolved path."; + + // Ephemeral data + leaf id { + config "false"; + type uint32; + description "Unique id among all paths of the recursive next-hop. Only used internally."; + } + + // Ephemeral data + leaf pathType { + config "false"; + type string; + description "Path used for unicast or multicast purpose"; + } + + // Ephemeral data + leaf address { + config "false"; + type address_Ip; + description "Resolved RNH path address."; + } + + // Ephemeral data + leaf vrf { + config "false"; + + type l3_VrfName; + description "VRF name of the resolved RNH path."; + } + + // Ephemeral data + leaf interfaceName { + config "false"; + type string; + description "Interface name of the resolved RNH path."; + } + + // Ephemeral data + leaf bindinglabel { + config "false"; + type uint32; + description "SRTE binding label of the resolved RNH path."; + } + + // Ephemeral data + leaf segmentId { + config "false"; + type uint32; + description "Client provided segment ID. 0 means not set."; + } + + // Ephemeral data + leaf tunnelId { + config "false"; + type uint32; + description "Client provided tunnel ID. 0 means not set."; + } + + // Ephemeral data + leaf vtepIpAddress { + config "false"; + type address_Ip; + description "VxLAN VTEP IP address."; + } + + // Ephemeral data + leaf vtepUnderlayVrfId { + config "false"; + type uint32; + description "VxLAN VTEP underlay VRF ID."; + } + + // Ephemeral data + leaf labelStack { + config "false"; + type string; + description "MPLS label stack of the resolved RNH path.."; + } + + // Ephemeral data + leaf labelType { + config "false"; + type string; + description "Label stack type of the resolved RNH path.."; + } + } + + grouping urib_Route4-group { + description "ipv4 route"; + + // Ephemeral data + leaf prefix { + config "false"; + type address_Ip; + description "Route address with mask"; + } + + // Ephemeral data + leaf uBestNextHopCount { + config "false"; + type uint32; + description "Number of unicast best next hop"; + } + + // Ephemeral data + leaf mBestNextHopCount { + config "false"; + type uint32; + description "Number of multicast best next hop"; + } + + // Ephemeral data + leaf flags { + config "false"; + type uint32; + description "Route flags."; + } + + // Ephemeral data + leaf sortKey { + config "false"; + type uint32; + description "Eibgp mixed-path sort key."; + } + + // Ephemeral data + leaf pendingUfdm { + config "false"; + type boolean; + description "Waiting to be send to UFDM."; + } + + // Ephemeral data + leaf pendingHw { + config "false"; + type boolean; + description "UFDM sent, waiting for ack from HW."; + } + + // Specific to v4 + // Ephemeral data + container nh4-items { + + // Ephemeral data + list NextHop4-list { + config "false"; + key "id"; + + uses urib_NextHop4-group; + description "IPV4 next hop. list"; + } + description "IPV4 next hop."; + } + } + + grouping urib_NextHop4-group { + description "IPV4 next hop."; + + // Ephemeral data + leaf id { + config "false"; + type uint32; + description "Unique id among all nh of the route. Only used internally."; + } + + // Ephemeral data + leaf address { + config "false"; + type address_Ip; + description "Next-hop address."; + } + + // Ephemeral data + leaf bindinglabel { + config "false"; + type uint32; + description "SRTE binding label"; + } + + // Ephemeral data + leaf isBest { + config "false"; + type boolean; + description "Is the next-hop in the best list"; + } + + // Ephemeral data + leaf vrf { + config "false"; + + type l3_VrfName; + description "VRF name."; + } + + // Ephemeral data + leaf interfaceName { + config "false"; + type string; + description "Interface name."; + } + + // Ephemeral data + leaf owner { + config "false"; + type string; + description "local, attached-export, static or unknown."; + } + + // Ephemeral data + leaf preference { + config "false"; + type uint32; + description "Preference."; + } + + // Ephemeral data + leaf metric { + config "false"; + type uint32; + description "Metric."; + } + + // Ephemeral data + leaf uptime { + config "false"; + + type urib_TimeStr; + description "Elapsed time since this next hop has been added/modified."; + } + + // Ephemeral data + leaf routeType { + config "false"; + type string; + description "Type."; + } + + // Ephemeral data + leaf tag { + config "false"; + type uint32; + description "Client defined tag."; + } + + // Ephemeral data + leaf segmentId { + config "false"; + type uint32; + description "Client provided segment ID. 0 means not set."; + } + + // Ephemeral data + leaf segidType { + config "false"; + type string; + description "Client provided segment type. 0 means not set."; + } + + // Ephemeral data + leaf sourceId { + config "false"; + type uint32; + description "Client provided source ID. 0 means not set."; + } + + // Ephemeral data + leaf tunnelId { + config "false"; + type uint32; + description "Client provided tunnel ID. 0 means not set."; + } + + // Support for VXLAN encap type only with EVPN + // Ephemeral data + leaf encapType { + config "false"; + + type urib_NextHopEncapType; + description "Either VXLAN or none."; + } + + // Ephemeral data + leaf vtepIpAddress { + config "false"; + type address_Ip; + description "VxLAN VTEP IP address."; + } + + // Ephemeral data + leaf vtepUnderlayVrfId { + config "false"; + type uint32; + description "VxLAN VTEP underlay VRF ID."; + } + + // Ephemeral data + leaf labelStack { + config "false"; + type string; + description "MPLS label stack."; + } + + // Ephemeral data + leaf nhlfeOwner { + config "false"; + type string; + description "nhlfe owner name."; + } + + // Internal use. + // Urib doesn't know how to interpret client data + // Ephemeral data + leaf clientData { + config "false"; + + type urib_YesNo; + description "Yes if client put data in the next-hop."; + } + + // Ephemeral data + leaf recursiveNextHopPrefix { + config "false"; + type address_Ip; + description "Recursive nexthop."; + } + + // Ephemeral data + leaf xriBgpOrigin { + config "false"; + type string; + description "Extended route information comming from BGP."; + } + + // Ephemeral data + leaf xriBgpPeer { + config "false"; + type string; + description "Extended route information comming from BGP."; + } + + // Ephemeral data + leaf tlv { + config "false"; + type string; + description "Type-Length-Value; client provided opaque data."; + } + + // Ephemeral data + leaf tlvExtentedCommunity { + config "false"; + type string; + description "Type-Length-Value."; + } + + // Ephemeral data + leaf tlvAttachExport { + config "false"; + type string; + description "Type-Length-Value."; + } + + // Ephemeral data + leaf flags { + config "false"; + type uint32; + description "Flags, each bit has a different meaning."; + } + + // Ephemeral data + leaf nhlfeFlags { + config "false"; + type uint32; + description "Next-hop Label Forwarding flags."; + } + + // Ephemeral data + leaf tlvType { + config "false"; + type uint32; + description "Type-Length-Value type."; + } + + // Specific to v4 + // Ephemeral data + container srv6info4-items { + + uses urib_NextHopSrv6Info4-group; + description "Srv6 info associated with an IPv4 next hop."; + } + } + + grouping urib_NextHopSrv6Info4-group { + description "Srv6 info associated with an IPv4 next hop."; + + // Ephemeral data + leaf sourceIp { + config "false"; + type address_Ip; + description "Source IP adress used for SRv6 encapsulation."; + } + + // Ephemeral data + leaf functionId { + config "false"; + type uint64; + description "Function ID used for handling SRv6 routes."; + } + + // Ephemeral data + leaf bindingSid { + config "false"; + type address_Ip; + description "Binding SID used for SRv6-TE."; + } + + // Specific to v4 + // Ephemeral data + container remotesid4-items { + + // Ephemeral data + list NextHopSrv6RemoteSid4-list { + config "false"; + key "id"; + + uses urib_NextHopSrv6RemoteSid4-group; + description "Remote SID used for an IPv4 next hop. list"; + } + description "Remote SID used for an IPv4 next hop."; + } + } + + grouping urib_NextHopSrv6RemoteSid4-group { + description "Remote SID used for an IPv4 next hop."; + + // Ephemeral data + leaf id { + config "false"; + type uint32; + description "Unique id among all remote SID of a next-hop. Only used internally."; + } + + // Ephemeral data + leaf remoteSid { + config "false"; + type address_Ip; + description "Remote SID used for SRv6 next-hops."; + } + } + + grouping urib_SummaryTable4-group { + description "IPv4 urib table cached summary."; + + // Ephemeral data + leaf route_total { + config "false"; + type uint32; + description "Total route count."; + } + + // Ephemeral data + leaf uroute_total { + config "false"; + type uint32; + description "unicast route count."; + } + + // Ephemeral data + leaf path_total { + config "false"; + type uint32; + description "Total path count."; + } + + // Ephemeral data + leaf mpath_total { + config "false"; + type uint32; + description "multicast path count."; + } + + // Ephemeral data + leaf routesPerSubnet { + config "false"; + type string; + description "Total number of route per mask in this table"; + } + } + + grouping urib_SummaryTable4DB-group { + description "IPv4 urib table non cached summary."; + + // Ephemeral data + leaf bestPathsPerProtocol { + config "false"; + type string; + description "Total number of best paths per protocol in this table"; + } + + // Ephemeral data + leaf backupPathsPerProtocol { + config "false"; + type string; + description "Total number of backup paths per protocol in this table"; + } + + // Ephemeral data + leaf route_total { + config "false"; + type uint32; + description "Total route count."; + } + + // Ephemeral data + leaf uroute_total { + config "false"; + type uint32; + description "unicast route count."; + } + + // Ephemeral data + leaf path_total { + config "false"; + type uint32; + description "Total path count."; + } + + // Ephemeral data + leaf mpath_total { + config "false"; + type uint32; + description "multicast path count."; + } + + // Ephemeral data + leaf routesPerSubnet { + config "false"; + type string; + description "Total number of route per mask in this table"; + } + } + + grouping urib_Entity6-group { + description "Urib ipv6 root element"; + + // Specific to v6 + container table6-items { + list Table6-list { + config "false"; + key "vrfName"; + + uses urib_Table6-group; + description "IPv6 urib table list"; + } + description "IPv6 urib table"; + } + } + + grouping urib_Table6-group { + description "IPv6 urib table"; + + leaf vrfName { + config "false"; + + type l3_VrfName; + description "VRF name"; + } + + leaf routeCount { + config "false"; + + type urib_Counter32; + description "Total number of route in this table"; + } + + // Specific to v6 + // Ephemeral data + container recursivenexthop6-items { + + // Ephemeral data + list RecursiveNextHop6-list { + config "false"; + key "prefix"; + + uses urib_RecursiveNextHop6-group; + description "ipv6 recursive next-hop list"; + } + description "ipv6 recursive next-hop"; + } + + // Specific to v6 + // Ephemeral data + container route6-items { + + // Ephemeral data + list Route6-list { + config "false"; + key "prefix"; + + uses urib_Route6-group; + description "ipv6 urib route list"; + } + description "ipv6 urib route"; + } + + // =============================================================================================================== Specific to v6 cached summary + // Ephemeral data + container summary-items { + + uses urib_SummaryTable6-group; + description "IPv6 urib table cached summary."; + } + + // ==================================== IPv6 urib table non cached summary ======================================= Specific to v6 non cached summary (including per protocol path counts) + // Ephemeral data + container summarydb-items { + + uses urib_SummaryTable6DB-group; + description "IPv6 urib table non cached summary."; + } + } + + grouping urib_RecursiveNextHop6-group { + description "ipv6 recursive next-hop"; + + // Ephemeral data + leaf prefix { + config "false"; + type address_Ip; + description "RNH address with mask"; + } + + // Ephemeral data + leaf uptime { + config "false"; + + type urib_TimeStr; + description "Elapsed time since this RNH has been added/modified."; + } + + // Ephemeral data + leaf multipath { + config "false"; + type boolean; + description "Used for eibgp mixed-path purpose"; + } + + // Ephemeral data + leaf owner { + config "false"; + type string; + description "The owners of this RNH"; + } + + // Ephemeral data + leaf restricted { + config "false"; + type boolean; + description "In restricted mode, i.e. cannot be resolved with the default route 0/0"; + } + + // Ephemeral data + leaf staleOwner { + config "false"; + type string; + description "The stale owners of this RNH"; + } + + // Ephemeral data + leaf upathEpoch { + config "false"; + type uint32; + description "Epoch of the unicast path"; + } + + // Ephemeral data + leaf refCount { + config "false"; + type uint32; + description "The reference count of this RNH"; + } + + // Ephemeral data + leaf pendingUfdm { + config "false"; + type boolean; + description "Waiting to be send to UFDM."; + } + + // Ephemeral data + leaf pendingCC { + config "false"; + type boolean; + description "Waiting to be send to UFDM for inconsistency check"; + } + + // Ephemeral data + leaf upathResolvedClients { + config "false"; + type string; + description "The routing protocols want to resolve this RNH with unicast paths"; + } + + // Ephemeral data + leaf mpathEpoch { + config "false"; + type uint32; + description "Epoch of the path used for multicast purpose"; + } + + // Ephemeral data + leaf mpathResolvedClients { + config "false"; + type string; + description "The routing protocols want to resolve this RNH with the paths for multicast purpose"; + } + + // Specific to v6 + // Ephemeral data + container rnhpath6-items { + + // Ephemeral data + list RecursiveNextHopPath6-list { + config "false"; + key "id"; + + uses urib_RecursiveNextHopPath6-group; + description "IPv6 recursive next-hop resolved path. list"; + } + description "IPv6 recursive next-hop resolved path."; + } + } + + grouping urib_RecursiveNextHopPath6-group { + description "IPv6 recursive next-hop resolved path."; + + // Ephemeral data + leaf id { + config "false"; + type uint32; + description "Unique id among all paths of the recursive next-hop. Only used internally."; + } + + // Ephemeral data + leaf pathType { + config "false"; + type string; + description "Path used for unicast or multicast purpose"; + } + + // Ephemeral data + leaf address { + config "false"; + type address_Ip; + description "Resolved RNH path address."; + } + + // Ephemeral data + leaf vrf { + config "false"; + + type l3_VrfName; + description "VRF name of the resolved RNH path."; + } + + // Ephemeral data + leaf interfaceName { + config "false"; + type string; + description "Interface name of the resolved RNH path."; + } + + // Ephemeral data + leaf bindinglabel { + config "false"; + type uint32; + description "SRTE binding label of the resolved RNH path."; + } + + // Ephemeral data + leaf segmentId { + config "false"; + type uint32; + description "Client provided segment ID. 0 means not set."; + } + + // Ephemeral data + leaf tunnelId { + config "false"; + type uint32; + description "Client provided tunnel ID. 0 means not set."; + } + + // Ephemeral data + leaf vtepIpAddress { + config "false"; + type address_Ip; + description "VxLAN VTEP IP address."; + } + + // Ephemeral data + leaf vtepUnderlayVrfId { + config "false"; + type uint32; + description "VxLAN VTEP underlay VRF ID."; + } + + // Ephemeral data + leaf labelStack { + config "false"; + type string; + description "MPLS label stack of the resolved RNH path.."; + } + + // Ephemeral data + leaf labelType { + config "false"; + type string; + description "Label stack type of the resolved RNH path.."; + } + } + + grouping urib_Route6-group { + description "ipv6 urib route"; + + // Ephemeral data + leaf prefix { + config "false"; + type address_Ip; + description "Route address with mask"; + } + + // Ephemeral data + leaf uBestNextHopCount { + config "false"; + type uint32; + description "Number of unicast best next hop"; + } + + // Ephemeral data + leaf mBestNextHopCount { + config "false"; + type uint32; + description "Number of multicast best next hop"; + } + + // Ephemeral data + leaf flags { + config "false"; + type uint32; + description "Route flags."; + } + + // Ephemeral data + leaf sortKey { + config "false"; + type uint32; + description "Eibgp mixed-path sort key."; + } + + // Ephemeral data + leaf pendingUfdm { + config "false"; + type boolean; + description "Waiting to be send to UFDM."; + } + + // Ephemeral data + leaf pendingHw { + config "false"; + type boolean; + description "UFDM sent, waiting for ack from HW."; + } + + // Specific to v6 + // Ephemeral data + container nh6-items { + + // Ephemeral data + list NextHop6-list { + config "false"; + key "id"; + + uses urib_NextHop6-group; + description "ipv6 next hop list"; + } + description "ipv6 next hop"; + } + } + + grouping urib_NextHop6-group { + description "ipv6 next hop"; + + // Ephemeral data + leaf id { + config "false"; + type uint32; + description "Unique id among all nh of the route. Only used internally."; + } + + // Ephemeral data + leaf address { + config "false"; + type address_Ip; + description "Next-hop address."; + } + + // Ephemeral data + leaf bindinglabel { + config "false"; + type uint32; + description "SRTE binding label"; + } + + // Ephemeral data + leaf isBest { + config "false"; + type boolean; + description "Is the next-hop in the best list"; + } + + // Ephemeral data + leaf vrf { + config "false"; + + type l3_VrfName; + description "VRF name."; + } + + // Ephemeral data + leaf interfaceName { + config "false"; + type string; + description "Interface name."; + } + + // Ephemeral data + leaf owner { + config "false"; + type string; + description "local, attached-export, static or unknown."; + } + + // Ephemeral data + leaf preference { + config "false"; + type uint32; + description "Preference."; + } + + // Ephemeral data + leaf metric { + config "false"; + type uint32; + description "Metric."; + } + + // Ephemeral data + leaf uptime { + config "false"; + + type urib_TimeStr; + description "Elapsed time since this next hop has been added/modified."; + } + + // Ephemeral data + leaf routeType { + config "false"; + type string; + description "Type."; + } + + // Ephemeral data + leaf tag { + config "false"; + type uint32; + description "Client defined tag."; + } + + // Ephemeral data + leaf segmentId { + config "false"; + type uint32; + description "Client provided segment ID. 0 means not set."; + } + + // Ephemeral data + leaf segidType { + config "false"; + type string; + description "Client provided segment type. 0 means not set."; + } + + // Ephemeral data + leaf sourceId { + config "false"; + type uint32; + description "Client provided source ID. 0 means not set."; + } + + // Ephemeral data + leaf tunnelId { + config "false"; + type uint32; + description "Client provided tunnel ID. 0 means not set."; + } + + // Support for VXLAN encap type only with EVPN + // Ephemeral data + leaf encapType { + config "false"; + + type urib_NextHopEncapType; + description "Either VXLAN or none."; + } + + // Ephemeral data + leaf vtepIpAddress { + config "false"; + type address_Ip; + description "VxLAN VTEP IP address."; + } + + // Ephemeral data + leaf vtepUnderlayVrfId { + config "false"; + type uint32; + description "VxLAN VTEP underlay VRF ID."; + } + + // Ephemeral data + leaf labelStack { + config "false"; + type string; + description "MPLS label stack."; + } + + // Ephemeral data + leaf nhlfeOwner { + config "false"; + type string; + description "nhlfe owner name."; + } + + // Internal use. + // Urib doesn't know how to interpret client data + // Ephemeral data + leaf clientData { + config "false"; + + type urib_YesNo; + description "Yes if client put data in the next-hop."; + } + + // Ephemeral data + leaf recursiveNextHopPrefix { + config "false"; + type address_Ip; + description "Recursive nexthop."; + } + + // Ephemeral data + leaf xriBgpOrigin { + config "false"; + type string; + description "Extended route information comming from BGP."; + } + + // Ephemeral data + leaf xriBgpPeer { + config "false"; + type string; + description "Extended route information comming from BGP."; + } + + // Ephemeral data + leaf tlv { + config "false"; + type string; + description "Type-Length-Value; client provided opaque data."; + } + + // Ephemeral data + leaf tlvExtentedCommunity { + config "false"; + type string; + description "Type-Length-Value."; + } + + // Ephemeral data + leaf tlvAttachExport { + config "false"; + type string; + description "Type-Length-Value."; + } + + // Ephemeral data + leaf flags { + config "false"; + type uint32; + description "Flags, each bit has a different meaning."; + } + + // Ephemeral data + leaf nhlfeFlags { + config "false"; + type uint32; + description "Next-hop Label Forwarding flags."; + } + + // Ephemeral data + leaf tlvType { + config "false"; + type uint32; + description "Type-Length-Value type."; + } + + // Specific to v6 + // Ephemeral data + container srv6info6-items { + + uses urib_NextHopSrv6Info6-group; + description "Srv6 info associated with an IPv6 next hop."; + } + } + + grouping urib_NextHopSrv6Info6-group { + description "Srv6 info associated with an IPv6 next hop."; + + // Ephemeral data + leaf sourceIp { + config "false"; + type address_Ip; + description "Source IP adress used for SRv6 encapsulation."; + } + + // Ephemeral data + leaf functionId { + config "false"; + type uint64; + description "Function ID used for handling SRv6 routes."; + } + + // Ephemeral data + leaf bindingSid { + config "false"; + type address_Ip; + description "Binding SID used for SRv6-TE."; + } + + // Specific to v6 + // Ephemeral data + container remotesid6-items { + + // Ephemeral data + list NextHopSrv6RemoteSid6-list { + config "false"; + key "id"; + + uses urib_NextHopSrv6RemoteSid6-group; + description "Remote SID used for an IPv6 next hop. list"; + } + description "Remote SID used for an IPv6 next hop."; + } + } + + grouping urib_NextHopSrv6RemoteSid6-group { + description "Remote SID used for an IPv6 next hop."; + + // Ephemeral data + leaf id { + config "false"; + type uint32; + description "Unique id among all remote SID of a next-hop. Only used internally."; + } + + // Ephemeral data + leaf remoteSid { + config "false"; + type address_Ip; + description "Remote SID used for SRv6 next-hops."; + } + } + + grouping urib_SummaryTable6-group { + description "IPv6 urib table cached summary."; + + // Ephemeral data + leaf route_total { + config "false"; + type uint32; + description "Total route count."; + } + + // Ephemeral data + leaf uroute_total { + config "false"; + type uint32; + description "unicast route count."; + } + + // Ephemeral data + leaf path_total { + config "false"; + type uint32; + description "Total path count."; + } + + // Ephemeral data + leaf mpath_total { + config "false"; + type uint32; + description "multicast path count."; + } + + // Ephemeral data + leaf routesPerSubnet { + config "false"; + type string; + description "Total number of route per mask in this table"; + } + } + + grouping urib_SummaryTable6DB-group { + description "IPv6 urib table non cached summary."; + + // Ephemeral data + leaf bestPathsPerProtocol { + config "false"; + type string; + description "Total number of best paths per protocol in this table"; + } + + // Ephemeral data + leaf backupPathsPerProtocol { + config "false"; + type string; + description "Total number of backup paths per protocol in this table"; + } + + // Ephemeral data + leaf route_total { + config "false"; + type uint32; + description "Total route count."; + } + + // Ephemeral data + leaf uroute_total { + config "false"; + type uint32; + description "unicast route count."; + } + + // Ephemeral data + leaf path_total { + config "false"; + type uint32; + description "Total path count."; + } + + // Ephemeral data + leaf mpath_total { + config "false"; + type uint32; + description "multicast path count."; + } + + // Ephemeral data + leaf routesPerSubnet { + config "false"; + type string; + description "Total number of route per mask in this table"; + } + } + + grouping uribv4_Entity-group { + description "IPv4 Unicast Routing Information Base Entity"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Domain (vrf) information + container dom-items { + list Dom-list { + config "false"; + key "name"; + + uses uribv4_Dom-group; + description "Domain list"; + } + description "Domain"; + } + } + + grouping uribv4_Dom-group { + description "Domain"; + + // Operational state + leaf operSt { + config "false"; + + type rib_DomOperSt; + description "TBD"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + container db-items { + list Db-list { + config "false"; + key "type"; + + uses uribv4_Db-group; + description "Database list"; + } + description "Database"; + } + } + + grouping uribv4_Db-group { + description "Database"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type of the repository + leaf type { + config "false"; + + type rib_DbT; + description "Type"; + } + + // Route + container rt-items { + list Route-list { + config "false"; + key "prefix"; + + uses uribv4_Route-group; + description "Route list"; + } + description "Route"; + } + } + + grouping uribv4_Route-group { + description "Route"; + leaf prefix { + config "false"; + type address_Ip; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // URIB next-hop database record + container nh-items { + list Nexthop-list { + config "false"; + key "owner addr if vrf"; + + uses uribv4_Nexthop-group; + description "Nexthop Record list"; + } + description "Nexthop Record"; + } + + // URIB route ownership record + container owner-items { + list RouteOwner-list { + config "false"; + key "owner"; + + uses uribv4_RouteOwner-group; + description "Route Owner list"; + } + description "Route Owner"; + } + } + + grouping uribv4_Nexthop-group { + description "Nexthop Record"; + + // Owner + leaf owner { + config "false"; + + type rib_OwnerT; + description "Nexthop Owner"; + } + leaf addr { + config "false"; + type address_Ip; + description "Nexthop Address"; + } + + // Nexthop interface + leaf if { + config "false"; + + type nw_IfId; + description "Nexthop Interface"; + } + + // Nexthop vrf + leaf vrf { + config "false"; + + type l3_VrfName; + description "Nexthop VRF"; + } + + // NH type + leaf type { + config "false"; + + type rib_NhT; + description "TBD"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping uribv4_RouteOwner-group { + description "Route Owner"; + + // Owner's name + leaf owner { + config "false"; + + type rib_OwnerT; + description "TBD"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // URIB next-hop database record + container nh-items { + list Nexthop-list { + config "false"; + key "owner addr if vrf"; + + uses uribv4_Nexthop-group; + description "Nexthop Record list"; + } + description "Nexthop Record"; + } + + container rsrouteOwnerToNexthopAtt-items { + + list RsRouteOwnerToNexthopAtt-list { + key "tDn"; + + uses uribv4_RsRouteOwnerToNexthopAtt_source-group; + } + } + } + + grouping uribv6_Entity-group { + description "Unicast Routing Information Base Entity"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Domain (vrf) information + container dom-items { + list Dom-list { + config "false"; + key "name"; + + uses uribv6_Dom-group; + description "Domain list"; + } + description "Domain"; + } + } + + grouping uribv6_Dom-group { + description "Domain"; + + // Operational state + leaf operSt { + config "false"; + + type rib_DomOperSt; + description "TBD"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + container db-items { + list Db-list { + config "false"; + key "type"; + + uses uribv6_Db-group; + description "Database list"; + } + description "Database"; + } + } + + grouping uribv6_Db-group { + description "Database"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type of the repository + leaf type { + config "false"; + + type rib_DbT; + description "Type"; + } + + // Route + container rt-items { + list Route-list { + config "false"; + key "prefix"; + + uses uribv6_Route-group; + description "Route list"; + } + description "Route"; + } + } + + grouping uribv6_Route-group { + description "Route"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf prefix { + config "false"; + type address_Ip; + } + + // URIB next-hop database record + container nh-items { + list Nexthop-list { + config "false"; + key "owner addr if vrf"; + + uses uribv6_Nexthop-group; + description "Nexthop record list"; + } + description "Nexthop record"; + } + + // URIB route ownership record + container owner-items { + list RouteOwner-list { + config "false"; + key "owner"; + + uses uribv6_RouteOwner-group; + description "Route Owner list"; + } + description "Route Owner"; + } + } + + grouping uribv6_Nexthop-group { + description "Nexthop record"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Owner + leaf owner { + config "false"; + + type rib_OwnerT; + description "Nexthop Owner"; + } + leaf addr { + config "false"; + type address_Ip; + description "Nexthop Address"; + } + + // Nexthop interface + leaf if { + config "false"; + + type nw_IfId; + description "Nexthop Interface"; + } + + // Nexthop vrf + leaf vrf { + config "false"; + + type l3_VrfName; + description "Nexthop VRF"; + } + + // NH type + leaf type { + config "false"; + + type rib_NhT; + description "TBD"; + } + } + + grouping uribv6_RouteOwner-group { + description "Route Owner"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Owner's name + leaf owner { + config "false"; + + type rib_OwnerT; + description "TBD"; + } + + // URIB next-hop database record + container nh-items { + list Nexthop-list { + config "false"; + key "owner addr if vrf"; + + uses uribv6_Nexthop-group; + description "Nexthop record list"; + } + description "Nexthop record"; + } + + container rsrouteOwnerToNexthopAtt-items { + + list RsRouteOwnerToNexthopAtt-list { + key "tDn"; + + uses rib_RsRouteOwnerToNexthopAtt_source-group; + } + } + } + + grouping licensemanager_LicenseManager-group { + description + "LicenseManager node, used as a placeholder for + uniformity"; + + container inst-items { + + uses licensemanager_Inst-group; + description + "Inst node, used to indicate the instance of a + LicenseManager MO"; + } + } + + grouping licensemanager_Inst-group { + description + "Inst node, used to indicate the instance of a + LicenseManager MO"; + + container globalstatus-items { + + uses licensemanager_GlobalStatus-group; + description "Holds global properties for license manager"; + } + } + + grouping licensemanager_GlobalStatus-group { + description "Holds global properties for license manager"; + } + + grouping mmode_Entity-group { + description "MMODE Entity"; + + // This objects holds per mmode instance information. There is + // only one instance of mmode running in the system today + container inst-items { + + uses mmode_Inst-group; + description "MMODE Instance"; + } + + // This objects holds maintenance mode profile. + container profile-items { + list Profile-list { + key "profType"; + + uses mmode_Profile-group; + description "MMODE Profile list"; + } + description "MMODE Profile"; + } + } + + grouping mmode_Inst-group { + description "MMODE Instance"; + + // Maintenance mode action + leaf modeAction { + + type mmode_MaintModeActionType; + description "Maintenance Mode Action"; + } + + // Maintenance mode action status + leaf modeActionStatus { + config "false"; + + type mmode_MaintModeActionStatusType; + description "Maintenance Mode Action Status"; + } + leaf modeSwitchInProgress { + config "false"; + type boolean; + description "Maintenance Mode Switch In Progress"; + } + + // Maintenance system mode value + leaf sysMode { + config "false"; + + type mmode_MaintModeType; + description "Maintenance System Mode"; + } + + // Maintenance mode timeout value + leaf timeout { + + type mmode_TimeoutInterval; + description "Timeout"; + } + leaf onReloadResetReasonHwError { + type boolean; + description "On-Reload Reset-Reason Harware Error"; + } + leaf onReloadResetReasonSvcFailure { + type boolean; + description "On-Reload Reset-Reason Critical Service Failure"; + } + leaf onReloadResetReasonKernFailure { + type boolean; + description "On-Reload Reset-Reason Kernel Panic"; + } + leaf onReloadResetReasonWdogTimeout { + type boolean; + description "On-Reload Reset-Reason Watchdog Timeout"; + } + leaf onReloadResetReasonFatalError { + type boolean; + description "On-Reload Reset-Reason Fatal Error"; + } + leaf onReloadResetReasonLcFailure { + type boolean; + description "On-Reload Reset-Reason LC Failure"; + } + leaf onReloadResetReasonManualReload { + type boolean; + description "On-Reload Reset-Reason Manual Reload"; + } + leaf onReloadResetReasonMaintenance { + type boolean; + description "On-Reload Reset-Reason Maintenance Mode"; + } + leaf onReloadResetReasonAnyOther { + type boolean; + description "On-Reload Reset-Reason Any Other Reset"; + } + leaf snapshotDelay { + type uint16; + default "120"; + description "Snapshot Delay Time"; + } + leaf maintDelay { + type uint16; + default "120"; + description "Maintenance Delay Time"; + } + leaf useCustomProfile { + type boolean; + description "Use Custom Profile"; + } + } + + grouping mmode_Profile-group { + description "MMODE Profile"; + + // Maintenance profile type + leaf profType { + + type mmode_MaintProfileType; + description "Maintenance Profile Type"; + } + + // This objects holds maintenance mode profile entries. + container entry-items { + list ProfileEntry-list { + key "sequence"; + + uses mmode_ProfileEntry-group; + description "MMODE Profile Entry list"; + } + description "MMODE Profile Entry"; + } + } + + grouping mmode_ProfileEntry-group { + description "MMODE Profile Entry"; + leaf sequence { + type uint16; + description "Profile Entry Sequence Number"; + } + leaf parentSequence { + type uint16; + default "0"; + description "Profile Entry Parent Sequence Number"; + } + leaf configCmd { + type string; + description "Config Command to be applied"; + } + leaf configCmdValid { + config "false"; + type boolean; + description "Config Command is Valid"; + } + } + + grouping nw_Vdc-group { + description "VDC"; + leaf name { + type string { + length "0..63"; + } + default "switch"; + description "VDC name"; + } + + // vdc ID + leaf id { + + type l2_VdcId { + range "1"; + } + description "ID Property has READ-Create access."; + } + + container limres-items { + + uses resmgr_LimRes-group; + description "Resource configuration"; + } + } + + grouping resmgr_LimRes-group { + description "Resource configuration"; + leaf vlanMin { + type uint16 { + range "16..4094"; + } + default "16"; + description "Minimum VLANs to allocate"; + } + leaf vlanMax { + type uint16 { + range "16..4094"; + } + default "4094"; + description "Maximum VLANs to allocate"; + } + leaf vrfMin { + type uint16 { + range "2..4096"; + } + default "2"; + description "Minimum vrf resources to allocate"; + } + leaf vrfMax { + type uint16 { + range "2..4096"; + } + default "4096"; + description "Maximum vrf resources to allocate"; + } + leaf poMin { + type uint16 { + range "0..511"; + } + default "0"; + description "Minimum port channels to allocate"; + } + leaf poMax { + type uint16 { + range "0..511"; + } + default "511"; + description "Maximum port channels to allocate"; + } + leaf u4rtMemMin { + type uint16 { + range "1..768"; + } + default "248"; + description "Minimum route memory to allocate for unicast Ipv4"; + } + leaf u4rtMemMax { + type uint16 { + range "1..768"; + } + default "248"; + description "Maximum route memory to allocate for unicast Ipv4"; + } + leaf u6rtMemMin { + type uint16 { + range "1..512"; + } + default "96"; + description "Minimum route memory to allocate for unicast Ipv6"; + } + leaf u6rtMemMax { + type uint16 { + range "1..512"; + } + default "96"; + description "Maximum route memory to allocate for unicast Ipv6"; + } + leaf m4rtMemMin { + type uint16 { + range "3..150"; + } + default "58"; + description "Minimum route memory to allocate for multicast Ipv4"; + } + leaf m4rtMemMax { + type uint16 { + range "3..150"; + } + default "58"; + description "Maxiimum route memory to allocate for multicast Ipv4"; + } + leaf m6rtMemMin { + type uint16 { + range "3..20"; + } + default "8"; + description "Minimum route memory to allocate for multicast Ipv6"; + } + leaf m6rtMemMax { + type uint16 { + range "3..20"; + } + default "8"; + description "Maximum route memory to allocate for multicast Ipv6"; + } + } + + grouping nxsdk_Entity-group { + description "Nx-sdk Manager"; + + // This objects hold per service-name Inst information + container inst-items { + list Inst-list { + key "serviceName"; + + uses nxsdk_Inst-group; + description "NxSDK service name instances list"; + } + description "NxSDK service name instances"; + } + + // This objects hold per remote port information + container remoteport-items { + list RemotePort-list { + key "port"; + + uses nxsdk_RemotePort-group; + description "NxSDK remote port instance list"; + } + description "NxSDK remote port instance"; + } + + // This objects hold profile information + container profile-items { + list Profile-list { + key "profileName"; + + uses nxsdk_Profile-group; + description "NxSDK profile list"; + } + description "NxSDK profile"; + } + } + + grouping nxsdk_Inst-group { + description "NxSDK service name instances"; + leaf serviceName { + type string { + length "0..20"; + } + description "NxSDK service name"; + } + leaf profileName { + type string { + length "0..20"; + } + description "Name of the profile"; + } + + leaf serviceSt { + config "false"; + + type nxsdk_ServiceSt; + description "NxSDK service name error state"; + } + } + + grouping nxsdk_RemotePort-group { + description "NxSDK remote port instance"; + leaf port { + type uint16 { + range "50002..51000"; + } + description "Remote port value"; + } + + leaf vrfName { + + type l3_VrfName { + length "0..32"; + } + description "VRF name"; + } + leaf certificate { + type string { + length "0..64"; + } + description "Certificate Trustpoint Label to secure nxsdk remote sessions"; + } + + leaf remotePortSt { + config "false"; + + type nxsdk_ServiceSt; + description "NxSDK remote port state"; + } + container remotesvcinst-items { + list RemoteSvcInst-list { + key "serviceName"; + + uses nxsdk_RemoteSvcInst-group; + description "Remote service name instances list"; + } + description "Remote service name instances"; + } + } + + grouping nxsdk_RemoteSvcInst-group { + description "Remote service name instances"; + leaf serviceName { + type string { + length "0..20"; + } + description "NxSDK service name"; + } + leaf profileName { + type string { + length "0..20"; + } + description "Name of the profile"; + } + + leaf serviceSt { + config "false"; + + type nxsdk_ServiceSt; + description "NxSDK service name error state"; + } + } + + grouping nxsdk_Profile-group { + description "NxSDK profile"; + leaf profileName { + type string { + length "0..20"; + } + description "Name of the Profile"; + } + + leaf systemStateMod { + + type nxsdk_SecLevel; + description "Modify the state of the system to Permit/Throttle all write API calls"; + } + } + + grouping pktmgr_Entity-group { + description "Pktmgr Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This objects hold per pktmgr instance information. There is + // only one instance of pktmgr running in the system today + container inst-items { + + uses pktmgr_Inst-group; + description "Pktmgr Instance"; + } + } + + grouping pktmgr_Inst-group { + description "Pktmgr Instance"; + + // logging level enabling + leaf loggingLevel { + + type arp_LoggingLevel; + default "critical"; + description "Logging Level"; + } + + // Setting Rate-limit + leaf rateLimitDirection { + + type pktmgr_RateLimitDirection; + description "Rate Limit Direction"; + } + + // Default value handled in local MO type + leaf rateLimitPps { + + // Type is a Local-MO-Defined-Type + type pktmgr_RateLimitPps_Inst_rateLimitPps; + description "Rate Limit Pps"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // Interfce MO + container if-items { + list If-list { + key "id"; + + uses pktmgr_If-group; + description "Pktmgr Instance list"; + } + description "Pktmgr Instance"; + } + } + + grouping pktmgr_If-group { + description "Pktmgr Instance"; + + leaf rateLimitDirection { + + type pktmgr_RateLimitDirection; + description "Rate Limit Direction"; + } + + // Default value handled in local MO type + leaf rateLimitPps { + + // Type is a Local-MO-Defined-Type + type pktmgr_RateLimitPps_If_rateLimitPps; + description "Rate Limit Pps"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping proc_System-group { + description "System Process Information"; + + // Maximum memory allocated for the system + leaf maxMemAlloc { + config "false"; + + type proc_ProcMem; + description "Maximum Memory Allocated"; + } + leaf upTs { + config "false"; + type string; + description "Up Time of the device"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + + // Process entry in the system + container proc-items { + list Proc-list { + config "false"; + key "id"; + + uses proc_Proc-group; + description "Process list"; + } + description "Process"; + } + + // System core list + container syscore-items { + + uses proc_SysCore-group; + description "system cores"; + } + + // System load statistics + container sysload-items { + + uses proc_SysLoad-group; + description "system load"; + } + + // System cpu summary statistics + container syscpusummary-items { + + uses proc_SysCpuSummary-group; + description "system cpu"; + } + + // System memory statistics + container sysmem-items { + + uses proc_SysMem-group; + description "system memory"; + } + } + + grouping proc_Proc-group { + description "Process"; + + // Process id + leaf id { + config "false"; + + type proc_ProcId; + description "Process ID"; + } + + // State of the process + leaf operSt { + config "false"; + + type proc_OperSt; + description "Operational State"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_SysCore-group { + description "system cores"; + leaf numOfCores { + config "false"; + type uint32; + description "Number of cores"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + + // System core details + container core-items { + list Core-list { + config "false"; + key "processId"; + + uses proc_Core-group; + description "system core list"; + } + description "system core"; + } + } + + grouping proc_Core-group { + description "system core"; + leaf processId { + config "false"; + type uint32; + description "Process ID"; + } + leaf vdcId { + config "false"; + type uint32; + description "VDC Id"; + } + leaf moduleNumber { + config "false"; + type uint32; + description "Module Number"; + } + leaf instanceNumber { + config "false"; + type uint32; + description "Instance Number"; + } + leaf processName { + config "false"; + type string; + description "Process Name"; + } + leaf date { + config "false"; + type string; + description "Date"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_SysLoad-group { + description "system load"; + leaf loadAverage1m { + config "false"; + type decimal64 { + fraction-digits 6; + } + description + "Load average of the cpu in the system for + a 1 minute preiod of time, represented as float"; + } + leaf loadAverage5m { + config "false"; + type decimal64 { + fraction-digits 6; + } + description + "Load average of the cpu in the system for + a 5 minute preiod of time, represented as float"; + } + leaf loadAverage15m { + config "false"; + type decimal64 { + fraction-digits 6; + } + description + "Load average of the cpu in the system for + a 15 minute preiod of time, represented as float"; + } + leaf loadAverage5sec { + config "false"; + type decimal64 { + fraction-digits 6; + } + description + "Load average of the cpu in the system for + a 5 second preiod of time, represented as float"; + } + leaf totalProc { + config "false"; + type uint32; + description + "Total number of the processes in the system, + represented as an integer"; + } + leaf runProc { + config "false"; + type uint32; + description + "Total number of the running processes in + the system, represented as an integer"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_SysCpuSummary-group { + description "system cpu"; + leaf user { + config "false"; + type decimal64 { + fraction-digits 6; + } + description + "Overall CPU usage by the user processes in + the system, represented as a float"; + } + leaf kernel { + config "false"; + type decimal64 { + fraction-digits 6; + } + description + "Overall CPU usage by the kernel processes in + the system, represented as a float"; + } + leaf idle { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "Overall CPU idle in the system, represented as a float"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + + // System cpu history statistics + container syscpuhistory-items { + list SysCpuHistory-list { + config "false"; + key "durationname"; + + uses proc_SysCpuHistory-group; + description "system cpu history list"; + } + description "system cpu history"; + } + + // System cpu statistics + container syscpu-items { + list SysCpu-list { + config "false"; + key "id"; + + uses proc_SysCpu-group; + description "system cpu list"; + } + description "system cpu"; + } + } + + grouping proc_SysCpuHistory-group { + description "system cpu history"; + + // cpu history duration name + leaf durationname { + config "false"; + + type proc_CpuHistoryDurationName; + description + "cpu history duration name, it can be last60seconds, + last60minutes, last60hours"; + } + + // history data + leaf usage { + config "false"; + + type proc_CpuHistoryList; + description + "Overall CPU usage in the system for the + last duration time (60sec/60min/60hours)"; + } + + // minimum usage data + leaf usageMin { + config "false"; + + type proc_PerUsage; + description "Minimum of cpu usage for the last duration time (60sec/60min/60hours)"; + } + leaf usageAvg { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "Average of cpu usage for the last duration time (60sec/60min/60hours)"; + } + + // maximum usage data + leaf usageMax { + config "false"; + + type proc_PerUsage; + description "Maximum of cpu usage for the last duration time (60sec/60min/60hours)"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_SysCpu-group { + description "system cpu"; + leaf id { + config "false"; + type string; + description + " CPU id/name present in the system, + represented as string"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + + // System cpu statistics + container kernel-items { + + uses proc_Kernel-group; + description "system kernel"; + } + + // System cpu statistics + container total-items { + + uses proc_Total-group; + description "system total"; + } + + // User cpu statistics + container user-items { + + uses proc_User-group; + description "system user"; + } + + // System cpu statistics + container nice-items { + + uses proc_Nice-group; + description "system nice"; + } + + // System cpu statistics + container idle-items { + + uses proc_Idle-group; + description "system total"; + } + + // System cpu statistics + container wait-items { + + uses proc_Wait-group; + description "system wait"; + } + + // System cpu statistics + container irq-items { + + uses proc_Irq-group; + description "system Irq"; + } + + // System cpu statistics + container softirq-items { + + uses proc_Softirq-group; + description "system Irq"; + } + } + + grouping proc_Kernel-group { + description "system kernel"; + leaf avg { + config "false"; + type uint16; + description + "Overall CPU usage by the kernel processes in + this CPU, represented as a float"; + } + leaf min { + config "false"; + type uint16; + description + "Overall CPU usage by the kernel processes in + this CPU, represented as a float"; + } + leaf max { + config "false"; + type uint16; + description "cpu kernel max"; + } + leaf minInstant { + config "false"; + type uint64; + description "cpu kernel min instant"; + } + leaf maxInstant { + config "false"; + type uint64; + description "cpu kernel max instant"; + } + leaf stats { + config "false"; + type uint64; + description "cpu kernel stats"; + } + leaf pct { + config "false"; + type uint16; + description "cpu instantaneous kernel stats"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_Total-group { + description "system total"; + leaf avg { + config "false"; + type uint16; + description "cpu total stat"; + } + leaf min { + config "false"; + type uint16; + description "cpu total min"; + } + leaf max { + config "false"; + type uint16; + description "cpu Total max"; + } + leaf minInstant { + config "false"; + type uint64; + description "cpu Total min instant"; + } + leaf maxInstant { + config "false"; + type uint64; + description "cpu Total max instant"; + } + leaf stats { + config "false"; + type uint64; + description "cpu Total stats"; + } + leaf pct { + config "false"; + type uint16; + description "cpu instantaneous total stats"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_User-group { + description "system user"; + leaf avg { + config "false"; + type uint16; + description "cpu user stat"; + } + leaf min { + config "false"; + type uint16; + description "cpu user min"; + } + leaf max { + config "false"; + type uint16; + description "cpu User max"; + } + leaf minInstant { + config "false"; + type uint64; + description "cpu User min instant"; + } + leaf maxInstant { + config "false"; + type uint64; + description "cpu User max instant"; + } + leaf stats { + config "false"; + type uint64; + description "cpu User stats"; + } + leaf pct { + config "false"; + type uint16; + description "cpu instantaneous User stats"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_Nice-group { + description "system nice"; + leaf avg { + config "false"; + type uint16; + description "cpu nice stat"; + } + leaf min { + config "false"; + type uint16; + description "cpu nice min"; + } + leaf max { + config "false"; + type uint16; + description "cpu nice max"; + } + leaf minInstant { + config "false"; + type uint64; + description "cpu nice min instant"; + } + leaf maxInstant { + config "false"; + type uint64; + description "cpu nice max instant"; + } + leaf stats { + config "false"; + type uint64; + description "cpu nice stats"; + } + leaf pct { + config "false"; + type uint16; + description "cpu instantaneous nice stats"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_Idle-group { + description "system total"; + leaf avg { + config "false"; + type uint16; + description "cpu idle stat"; + } + leaf min { + config "false"; + type uint16; + description "cpu idle min"; + } + leaf max { + config "false"; + type uint16; + description "cpu idle max"; + } + leaf minInstant { + config "false"; + type uint64; + description "cpu Idle min instant"; + } + leaf maxInstant { + config "false"; + type uint64; + description "cpu Idle max instant"; + } + leaf stats { + config "false"; + type uint64; + description "cpu idle stats"; + } + leaf pct { + config "false"; + type uint16; + description "cpu instantaneous idle stats"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_Wait-group { + description "system wait"; + leaf avg { + config "false"; + type uint16; + description "cpu wait stat"; + } + leaf min { + config "false"; + type uint16; + description "cpu wait min"; + } + leaf max { + config "false"; + type uint16; + description "cpu wait max"; + } + leaf minInstant { + config "false"; + type uint64; + description "cpu wait min instant"; + } + leaf maxInstant { + config "false"; + type uint64; + description "cpu wait max instant"; + } + leaf stats { + config "false"; + type uint64; + description "cpu wait stats"; + } + leaf pct { + config "false"; + type uint16; + description "cpu instantaneous wait stats"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_Irq-group { + description "system Irq"; + leaf avg { + config "false"; + type uint16; + description "cpu irq stat"; + } + leaf min { + config "false"; + type uint16; + description "cpu irq min"; + } + leaf max { + config "false"; + type uint16; + description "cpu irq max"; + } + leaf minInstant { + config "false"; + type uint64; + description "cpu irq min instant"; + } + leaf maxInstant { + config "false"; + type uint64; + description "cpu irq max instant"; + } + leaf stats { + config "false"; + type uint64; + description "cpu irq stats"; + } + leaf pct { + config "false"; + type uint16; + description "cpu instantaneous irq stats"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_Softirq-group { + description "system Irq"; + leaf avg { + config "false"; + type uint16; + description "cpu softirq stat"; + } + leaf min { + config "false"; + type uint16; + description "cpu softirq min"; + } + leaf max { + config "false"; + type uint16; + description "cpu softirq max"; + } + leaf minInstant { + config "false"; + type uint64; + description "cpu softirq min instant"; + } + leaf maxInstant { + config "false"; + type uint64; + description "cpu softirq max instant"; + } + leaf stats { + config "false"; + type uint64; + description "cpu softirq stats"; + } + leaf pct { + config "false"; + type uint16; + description "cpu instantaneous softirq stats"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_SysMem-group { + description "system memory"; + leaf total { + config "false"; + type uint64; + description "Total memory in the system represented as an integer"; + } + leaf reserved { + config "false"; + type uint64; + description "Reserved memory for system use, in Kilobytes"; + } + leaf memstatus { + config "false"; + type string; + description "Memory status of the overall system. Indicates OK or not OK"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + + // System memory Usage + container sysmemusage-items { + + uses proc_SysMemUsage-group; + description "system memory usage"; + } + + // System Free memory + container sysmemfree-items { + + uses proc_SysMemFree-group; + description "system free memory"; + } + + // System Used memory + container sysmemused-items { + + uses proc_SysMemUsed-group; + description "system used memory"; + } + } + + grouping proc_SysMemUsage-group { + description "system memory usage"; + leaf min { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "percentage of system memory used. Recorded minimum value."; + } + leaf timemin { + config "false"; + type uint64; + description "Time stamp at when minimum memory usage was recorded."; + } + leaf max { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "percentage of system memory used. Recorded maximum value."; + } + leaf timemax { + config "false"; + type uint64; + description "Time stamp at when maximum memory usage recorded."; + } + leaf avg { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "Average usage of system memory."; + } + leaf curr { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "percentage of system memory used at this instant."; + } + leaf interval { + config "false"; + type string; + description "Interval at which data is collected."; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_SysMemFree-group { + description "system free memory"; + leaf min { + config "false"; + type uint64; + description "Recorded minimum free memory of system."; + } + leaf timemin { + config "false"; + type uint64; + description "Time stamp at when minimum free memory recorded."; + } + leaf max { + config "false"; + type uint64; + description "Recorded maximum free memory of system."; + } + leaf timemax { + config "false"; + type uint64; + description "Time stamp at when maximum free memory recorded."; + } + leaf avg { + config "false"; + type uint64; + description "Average free memory of system."; + } + leaf curr { + config "false"; + type uint64; + description "Free memory of the system at this instant."; + } + leaf interval { + config "false"; + type string; + description "Interval at which data is collected."; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_SysMemUsed-group { + description "system used memory"; + leaf min { + config "false"; + type uint64; + description "Recorded minimum used memory of system."; + } + leaf timemin { + config "false"; + type uint64; + description "Time stamp at when minimum system memory is used."; + } + leaf max { + config "false"; + type uint64; + description "Recorded maximum used memory of system."; + } + leaf timemax { + config "false"; + type uint64; + description "Time stamp at when maximum system memory is used."; + } + leaf avg { + config "false"; + type uint64; + description "Average used memory of system."; + } + leaf curr { + config "false"; + type uint64; + description "Used memory of the system at this instant."; + } + leaf interval { + config "false"; + type string; + description "Interval at which data is collected."; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping proc_ExitProcEntity-group { + description "Exit Proc Entity"; + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + + // Service entry in the system + container proc-items { + list ExitProcEntry-list { + config "false"; + key "key"; + + uses proc_ExitProcEntry-group; + description "Exit Process Entry list"; + } + description "Exit Process Entry"; + } + } + + grouping proc_ExitProcEntry-group { + description "Exit Process Entry"; + leaf key { + config "false"; + type uint32; + description "key index"; + } + leaf pid { + config "false"; + type uint32; + description "Current pid of process."; + } + leaf procName { + config "false"; + type string; + description "Name of the process."; + } + leaf exitReason { + config "false"; + type uint32; + description "service last exit reason"; + } + leaf exitTime { + config "false"; + type uint64; + description "Epoch time at when process exited."; + } + leaf sysmgrSvc { + config "false"; + type boolean; + description "Is process owned by sysmgr?"; + } + leaf normalExit { + config "false"; + type boolean; + description "Is a normal exit?"; + } + leaf coreExist { + config "false"; + type boolean; + description "Core existence in system."; + } + } + + grouping proc_Entity-group { + description "Process Entity"; + + // Maximum memory allocated for the system + // Ephemeral data + leaf maxMemAlloc { + config "false"; + + type proc_ProcMem; + description "Maximum Memory Allocated"; + } + + // Free memory in the system + // Ephemeral data + leaf memFree { + config "false"; + + type proc_ProcMem; + description "Free Memory"; + } + + // CPU Usage in the system + // Ephemeral data + leaf cpuPct { + config "false"; + + type proc_PerUsage; + description "CPU Usage"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + + // Process entry in the system + // Ephemeral data + container process-items { + + // Ephemeral data + list Entry-list { + config "false"; + key "id"; + + uses proc_Entry-group; + description "Process Entry list"; + } + description "Process Entry"; + } + } + + grouping proc_Entry-group { + description "Process Entry"; + + // Process id + // Ephemeral data + leaf id { + config "false"; + + type proc_ProcId; + description "Process id of process. Represented in an integer value"; + } + + // Process name + // Ephemeral data + leaf processName { + config "false"; + + type proc_ProcessName; + description "Process name represented as a string"; + } + + // Start count of the process + // Ephemeral data + leaf startCnt { + config "false"; + + type proc_StartCnt; + description "Number of times the process is started"; + } + + // Program counter + // Ephemeral data + leaf pc { + config "false"; + + type proc_ProgCntr; + description "Address of the program counter represented in integer."; + } + + // Stack pointer + // Ephemeral data + leaf esp { + config "false"; + + type proc_Stack; + description "Process stack pointer represented as an integer address"; + } + + // Process Type + leaf processType { + config "false"; + + type proc_ProcessType; + description "Type to indicate whether the process is a vdc-local/vdc-global/non-sysmgr, represented as an enum"; + } + + // Maximum memory allocated for a process + // Ephemeral data + leaf maxMemAlloc { + config "false"; + + type proc_ProcMem; + description "Maximum memory allocated by the process"; + } + + // Maximum memory used by a process + leaf memUsed { + config "false"; + + type proc_ProcMem; + description "Maximum memory used by the process"; + } + + // Operational state for a process + // Ephemeral data + leaf operState { + config "false"; + + type proc_OperState; + description "State to indicate process status[up/down], represented as an enum"; + } + + // Physical memory used by a process + // Ephemeral data + leaf phyMem { + config "false"; + + type proc_ProcMem; + description "Actual real physical memory used by the process (ram)"; + } + + // Ephemeral data + leaf procArg { + config "false"; + type string; + description "Argument list passed to the process"; + } + + // Ephemeral data + leaf startTime { + config "false"; + type uint64; + description "Start time of process,reported as nano seconds since unix epoch."; + } + + // Ephemeral data + leaf upTime { + config "false"; + type uint64; + description "Amount of time elapsed sine process started,expressed in timetick."; + } + + // Ephemeral data + leaf cpuUsgUsr { + config "false"; + type uint64; + description "Amount of CPU time used in user mode, expressed in timetick."; + } + + // Ephemeral data + leaf cpuUsgSys { + config "false"; + type uint64; + description "Amount of CPU time used in kernal mode, expressed in timetick."; + } + + // Process CPU utilization + // Ephemeral data + leaf cpuUtil { + config "false"; + + type proc_PerUsage; + description "Overall CPU time consumed by this process expressed in percentage."; + } + + // Process Memory Utilization + // Ephemeral data + leaf memUtil { + config "false"; + + type proc_PerUsage; + description "Utilization of RAM by this process expressed in percentage."; + } + + // Ephemeral data + leaf cpuUtil5sec { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "CPU Utilization of the process for the last 5 second, represented as percent"; + } + + // Ephemeral data + leaf cpuUtil1min { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "CPU Utilization of the process for the last 1 minute, represented as percent"; + } + + // Ephemeral data + leaf cpuUtil5min { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "CPU Utilization of the process for the last 5 minute, represented as percent"; + } + + // Priority of the process + // Ephemeral data + leaf priority { + config "false"; + + type proc_ProcPriority; + description "priority of the process, with which it is started"; + } + + // Ephemeral data + leaf avgCpuUtil { + config "false"; + type uint32; + description "Average CPU Util for the process in microsecond"; + } + + leaf name { + config "false"; + + type naming_Name256; + description "Name"; + } + } + + grouping rpm_Entity-group { + description "Route Policy Map Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + container inst-items { + + uses rpm_Inst-group; + description "Instance of route policy map"; + } + + // Route control rule for extended community lists + container rtextcom-items { + list Rule-list { + key "name"; + + uses rtextcom_Rule-group; + description "Rule list"; + } + description "Rule"; + } + + // Route control rule for access lists + container accesslist-items { + list Rule-list { + key "name"; + + uses rtlist_Rule-group; + description "Rule list"; + } + description "Rule"; + } + + // Route control rule for mac-lists + container maclist-items { + list RuleMac-list { + key "name"; + + uses rtmaclist_RuleMac-group; + description "Mac Rule list"; + } + description "Mac Rule"; + } + + // Route map rule + container rtmap-items { + list Rule-list { + key "name"; + + uses rtmap_Rule-group; + description "Rule list"; + } + description "Rule"; + } + + // Expanded Community List + container expcommlist-items { + list ExpandedComList-list { + key "regex expcommname"; + + uses rtmap_ExpandedComList-group; + description "Rule list"; + } + description "Rule"; + } + + // Route control rule for V4 prefix lists + container pfxlistv4-items { + list RuleV4-list { + key "name"; + + uses rtpfx_RuleV4-group; + description "IPv4 Rule list"; + } + description "IPv4 Rule"; + } + + // Route control rule for V6 prefix lists + container pfxlistv6-items { + list RuleV6-list { + key "name"; + + uses rtpfx_RuleV6-group; + description "IPv6 Rule list"; + } + description "IPv6 Rule"; + } + + // Route control rule for regular community lists + container rtregcom-items { + list Rule-list { + key "name"; + + uses rtregcom_Rule-group; + description "Rule list"; + } + description "Rule"; + } + } + + grouping rpm_Inst-group { + description "Instance of route policy map"; + + // Object to hold RPM policy data stored at interface level + container rpmif-items { + list RpmIf-list { + key "id"; + + uses rpm_RpmIf-group; + description "RPM policy data at Interface level list"; + } + description "RPM policy data at Interface level"; + } + + // Object to hold RPM v6 policy data stored at interface level + container rpmv6if-items { + list Rpmv6If-list { + key "id"; + + uses rpm_Rpmv6If-group; + description "RPM v6 policy data at Interface level list"; + } + description "RPM v6 policy data at Interface level"; + } + } + + grouping rpm_RpmIf-group { + description "RPM policy data at Interface level"; + + leaf id { + + type nw_IfId; + description "Interface id over which the pbr policy is configured"; + } + leaf rmapname { + type string { + length "0..63"; + } + description "IP Route map Policy Name"; + } + + // Config error in this MO + leaf configError { + config "false"; + + type rpm_ConfigErr; + description "config Error associated with this MO"; + } + } + + grouping rpm_Rpmv6If-group { + description "RPM v6 policy data at Interface level"; + + leaf id { + + type nw_IfId; + description "Interface id over which the pbr policy is configured"; + } + leaf rmapname { + type string { + length "0..63"; + } + description "IP Route map Policy Name"; + } + + // Config error in this MO + leaf configError { + config "false"; + + type rpm_ConfigErr; + description "config Error associated with this MO"; + } + } + + grouping rtextcom_Rule-group { + description "Rule"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Type of the community list [regular | extended] + leaf type { + + type rtcom_ComT; + default "extended"; + description "Type"; + } + + // Mode + leaf mode { + + type rtcom_Mode; + description "Mode"; + } + + // Extended community list entry + container ent-items { + list Entry-list { + key "order"; + + uses rtextcom_Entry-group; + description "Entry list"; + } + description "Entry"; + } + + container rtExtCommAtt-items { + + uses rtmap_RtExtCommAtt_target-group; + description "Extended Community Attachment"; + } + } + + grouping rtextcom_Entry-group { + description "Entry"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Order + leaf order { + + type rtflt_Order { + range "1..4294967294"; + } + description "Order"; + } + + // Action + leaf action { + + type rtflt_Action; + description "Action"; + } + leaf regex { + type string { + pattern ".*[^a-zA-Z~!#%@`;]{0,63}.*"; + } + description "Regular Expression"; + } + + // Item in the community list + container item-items { + list Item-list { + key "scope community"; + + uses rtextcom_Item-group; + description "Item list"; + } + description "Item"; + } + + // Extended Rmac community + container extrmac-items { + + uses rtextcom_ExtRmac-group; + description "Extended community Router MAC"; + } + } + + grouping rtextcom_Item-group { + description "Item"; + + // type + leaf type { + + type rtextcom_Type; + description "Type"; + } + + // Scope + leaf scope { + + type rtextcom_Scope; + description "Scope"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf community { + type mtx_array_community; + description "Community"; + } + } + + grouping rtextcom_ExtRmac-group { + description "Extended community Router MAC"; + leaf commRmac { + type address_Mac; + description "RMAC Community Value"; + } + } + + grouping rtlist_Rule-group { + description "Rule"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Prefix list entry definition + container ent-items { + list Entry-list { + key "order"; + + uses rtlist_Entry-group; + description "Entry list"; + } + description "Entry"; + } + + container rtrtmapRtDstAccAtt-items { + + list RtRtmapRtDstAccAtt-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtDstAccAtt_target-group; + description "Access List Attachment list"; + } + description "Access List Attachment"; + } + + container rtrtmapRtDstV6AccAtt-items { + + list RtRtmapRtDstV6AccAtt-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtDstV6AccAtt_target-group; + description "Access List Attachment list"; + } + description "Access List Attachment"; + } + + container rtrtmapRtAsPathAccAtt-items { + + list RtRtmapRtAsPathAccAtt-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtAsPathAccAtt_target-group; + description "Access List Attachment list"; + } + description "Access List Attachment"; + } + } + + grouping rtlist_Entry-group { + description "Entry"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Order + leaf order { + + type rtflt_Order { + range "1..4294967294"; + } + description "Order"; + } + + // Action + leaf action { + + type rtflt_Action; + description "Action"; + } + leaf regex { + type string { + pattern ".*[^a-zA-Z~!#%@`;]{0,63}.*"; + } + description "Regular Expression"; + } + } + + grouping rtmaclist_RuleMac-group { + description "Mac Rule"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Prefix list entry definition + container ent-items { + list Entry-list { + key "order"; + + uses rtmaclist_Entry-group; + description "Entry list"; + } + description "Entry"; + } + + container rtrtmapRtMacListAtt-items { + + list RtRtmapRtMacListAtt-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtMacListAtt_target-group; + description "Mac List list"; + } + description "Mac List"; + } + } + + grouping rtmaclist_Entry-group { + description "Entry"; + leaf macAddr { + type address_Mac; + description "Mac Address"; + } + leaf macAddrMask { + type address_Mac; + description "Mac Address Mask"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Order + leaf order { + + type rtflt_Order { + range "1..4294967294"; + } + description "Order"; + } + + // Action + leaf action { + + type rtflt_Action; + description "Action"; + } + } + + grouping rtmap_Rule-group { + description "Rule"; + + // Route map pbr-statistics + leaf pbrStatistics { + + type rtmap_AdminSt; + description "Route map pbr-statistics"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + // Route map entries + container ent-items { + list Entry-list { + key "order"; + + uses rtmap_Entry-group; + description "Entry list"; + } + description "Entry"; + } + } + + grouping rtmap_Entry-group { + description "Entry"; + + // Load Sharing v4 + leaf loadShareV4 { + + type rtmap_AdminSt; + description "Load Sharing V4"; + } + + // Load Sharing v6 + leaf loadShareV6 { + + type rtmap_AdminSt; + description "Load Sharing V6"; + } + + // Force Order v4 + leaf forceOrderV4 { + + type rtmap_AdminSt; + description "Force Order V4"; + } + + // Force Order v6 + leaf forceOrderV6 { + + type rtmap_AdminSt; + description "Force Order V6"; + } + + // Drop On Fail v4 + leaf dropOnFailV4 { + + type rtmap_AdminSt; + description "Drop On Fail V4 for v4 nexthop"; + } + + // Drop On Fail v6 + leaf dropOnFailV6 { + + type rtmap_AdminSt; + description "Drop On Fail V6 for v6 nexthop"; + } + + // Next Hop Type V4 + leaf verifyAvailabilityV4 { + + type rtmap_AdminSt; + description "Next Hop with V4 Verify Availability"; + } + + // Next Hop Type V6 + leaf verifyAvailabilityV6 { + + type rtmap_AdminSt; + description "Next Hop with V6 Verify Availability"; + } + + // Config error in this MO + leaf configError { + config "false"; + + type rtmap_ConfigErr; + description "config Error associated with this MO"; + } + + leaf descr { + + type naming_Descr { + length "0..90"; + } + description "descr"; + } + + // Order + leaf order { + + type rtflt_Order { + range "1..4294967294"; + } + description "Order"; + } + + // Action + leaf action { + + type rtflt_Action; + description "Action"; + } + + // Match rule based on regular communities + container mregcomm-items { + + uses rtmap_MatchRegComm-group; + description "Match on Regular Community"; + } + + // Match rule based on extended communities + container mextcomm-items { + + uses rtmap_MatchExtComm-group; + description "Match on Extended Community"; + } + + // Match rule based on route destinations + container mrtdst-items { + + uses rtmap_MatchRtDst-group; + description "Match on Route Destination"; + } + + // Match rule based on IPv6 route destinations + container mrtdstv6-items { + + uses rtmap_MatchRtDstV6-group; + description "Match on V6 Route Destination"; + } + + // Match rule based on ipv4 multicast attributes + container mipv4mcast-items { + + uses rtmap_MatchIPv4Mcast-group; + description "Match on IPv4 Multicast attributes"; + } + + // Match rule based on ipv6 multicast attributes + container mipv6mcast-items { + + uses rtmap_MatchIPv6Mcast-group; + description "Match on IPv6 Multicast attributes"; + } + + // Match rule based on route nexthops + container mrtnh-items { + + uses rtmap_MatchRtNh-group; + description "Match on Route Nexthop"; + } + + // Match rule based on route nexthops ipv6 + container mrtnhv6-items { + + uses rtmap_MatchRtNhV6-group; + description "Match on Route Nexthop Ipv6"; + } + + // Match rule based on route sources + container mrtsrc-items { + + uses rtmap_MatchRtSrc-group; + description "Match on Route Source"; + } + + // Match rule based on route sources ipv6 + container mrtsrcv6-items { + + uses rtmap_MatchRtSrcV6-group; + description "Match on Route Source ipv6"; + } + + // Match rule based on route types + container mrttype-items { + list MatchRtType-list { + key "routeT"; + + uses rtmap_MatchRtType-group; + description "Match on Route Types list"; + } + description "Match on Route Types"; + } + + // Match rule based on route tag + container mrttag-items { + list MatchRtTag-list { + key "tag"; + + uses rtmap_MatchRtTag-group; + description "Match on Route Tag list"; + } + description "Match on Route Tag"; + } + + // Match rule based on source protocol + container msrcprot-items { + list MatchSrcProto-list { + key "proto"; + + uses rtmap_MatchSrcProto-group; + description "Match on Route ASN list"; + } + description "Match on Route ASN"; + } + + // Match rule based on pervasive routes + container mrtpervasive-items { + + uses rtmap_MatchRtPervasive-group; + description "Match on Route Pervasive"; + } + + // Match rule based on AS Path Access List + container mrtacclist-items { + + uses rtmap_MatchAsPathAccessList-group; + description "Match on AS Path Access List"; + } + + // Match rule based on route metric + container mrtmetric-items { + list MatchRtMetric-list { + key "measure deviation"; + + uses rtmap_MatchRtMetric-group; + description "Match on Route Metric list"; + } + description "Match on Route Metric"; + } + + // Match rule based on route asn + container mrtasn-items { + list MatchRtAsn-list { + key "asn"; + + uses rtmap_MatchRtAsn-group; + description "Match on Route Asn list"; + } + description "Match on Route Asn"; + } + + // Match rule based on route Interface + container mrtif-items { + list MatchRtIf-list { + key "id"; + + uses rtmap_MatchRtIf-group; + description "Match on Route Interface list"; + } + description "Match on Route Interface"; + } + + // Match rule based on Ospf-area + container mrtospf-items { + list MatchRtOspf-list { + key "area"; + + uses rtmap_MatchRtOspf-group; + description "Match on Ospf Area ID list"; + } + description "Match on Ospf Area ID"; + } + + // Match rule based on mac-list + container mrtmaclist-items { + + uses rtmap_MatchRtMacList-group; + description "Match on Mac-list"; + } + + // Route map Continue + container scontinue-items { + + uses rtmap_Continue-group; + description "Entry"; + } + + // Set rule based on regular communities + container sregcomm-items { + + uses rtmap_SetRegComm-group; + description "Set Regular Community"; + } + + // Set rule based on generic extended communities + container sextcomm-items { + + uses rtmap_SetExtComm-group; + description "Set Extended Community"; + } + + // Set rule based on cost communities + container sextcommcost-items { + list SetExtCommCost-list { + key "commCrit commId"; + + uses rtmap_SetExtCommCost-group; + description "Set Extcommunity Cost list"; + } + description "Set Extcommunity Cost "; + } + + // Set rule based on color community + container sextcommcolor-items { + + uses rtmap_SetExtCommColor-group; + description "Set Extcommunity Color "; + } + + // Set rule based on rmac community + container sextcommrmac-items { + + uses rtmap_SetExtCommRmac-group; + description "Set Extcommunity RMAC "; + } + + // Set rule based on community list (for deletion) + container scommlist-items { + + uses rtmap_SetCommList-group; + description "Set Community"; + } + + // Set rule based on community list (for deletion) + container sextcommlist-items { + + uses rtmap_SetExtCommList-group; + description "Set Ext Community"; + } + + // Set rule based on route targets communities + container srtt-items { + + uses rtmap_SetRttComm-group; + description "Set Route Target Community"; + } + + // Set rule based on route distance + container srtdist-items { + + uses rtmap_SetRtDist-group; + description "Set Route Distance"; + } + + // Set rule based on route tag + container srttag-items { + + uses rtmap_SetRtTag-group; + description "Set Route Tag"; + } + + // Set rule based on weight + container sweight-items { + + uses rtmap_SetWeight-group; + description "Set Weight"; + } + + // Set rule based on label-index + container slblindex-items { + + uses rtmap_SetLabelIndex-group; + description "Set LabelIndex"; + } + + // Set rule based on preference + container spref-items { + + uses rtmap_SetPref-group; + description "Set Preference"; + } + + // Set rule based on metric + container smetric-items { + + uses rtmap_SetMetric-group; + description "Set Metric"; + } + + // Set rule based on metric type + container smetrict-items { + + uses rtmap_SetMetricType-group; + description "Set Metric Type"; + } + + container sdamp-items { + + uses rtmap_SetDampeningType-group; + description "Set Dampening"; + } + + container sprec-items { + + uses rtmap_SetPrecedence-group; + description "Set Precedence"; + } + + container sprecv6-items { + + uses rtmap_SetV6Precedence-group; + description "Set IPv6 Precedence"; + } + + // Set rule based on ospf-nssa + container snssa-items { + + uses rtmap_SetOspfNssa-group; + description "Set Ospf Nssa"; + } + + // Set rule based on ospf forwarding address + container sfwdaddr-items { + + uses rtmap_SetOspfFwdAddr-group; + description "Set Ospf Forwarding Address"; + } + + // Set rule based on next hop + container nh-items { + list SetNh-list { + key "addr"; + + uses rtmap_SetNh-group; + description "Set Nexthop list"; + } + description "Set Nexthop"; + } + + // Set rule based on next hop peer-address + container nhpa-items { + + uses rtmap_SetNhPeerAddr-group; + description "Set Nexthop Peer Address"; + } + + // Set rule based on as-path prepend + container setaspathprepend-items { + + uses rtmap_SetPrepend-group; + description "Set Prepend"; + } + + // Set Prepend Last As + container setaspathlastas-items { + + uses rtmap_SetPrependLastAs-group; + description "Set Prepend Last As"; + } + + // Set Prepend Tag + container setaspathtag-items { + + uses rtmap_SetAsPathTag-group; + description "Set As Path Tag"; + } + + // Set rule based on origin type + container origin-items { + + uses rtmap_SetOrigin-group; + description "Set Origin Type"; + } + + // Set rule based on evpn gateway ipaddr + container sevpn-items { + + uses rtmap_SetEvpn-group; + description "Set Evpn Gateway Ip Addr and Ether Tag"; + } + + // Set Path Selection + container spselect-items { + + uses rtmap_SetPathSelection-group; + description "Set As Path Tag"; + } + + // set Interface + container sintf-items { + list SetIntf-list { + key "if"; + + uses rtmap_SetIntf-group; + description "Set Interface for route-map list"; + } + description "Set Interface for route-map"; + } + } + + grouping rtmap_MatchRegComm-group { + description "Match on Regular Community"; + + // Type + leaf type { + + type rtmap_MatchT; + description "Type"; + } + + // criteria + leaf criteria { + + type rtmap_Criteria; + description "Criteria"; + } + + container rsregCommAtt-items { + + list RsRegCommAtt-list { + key "tDn"; + + uses rtmap_RsRegCommAtt_source-group; + description "Regular Community Attachment list"; + } + description "Regular Community Attachment"; + } + } + + grouping rtmap_MatchExtComm-group { + description "Match on Extended Community"; + + // Type + leaf type { + + type rtmap_MatchT; + default "ext-community"; + description "Type"; + } + + // criteria + leaf criteria { + + type rtmap_Criteria; + description "Criteria"; + } + + container rsextCommAtt-items { + + list RsExtCommAtt-list { + key "tDn"; + + uses rtmap_RsExtCommAtt_source-group; + description "Extended Community Attachment list"; + } + description "Extended Community Attachment"; + } + } + + grouping rtmap_MatchRtDst-group { + description "Match on Route Destination"; + + // Config error in this MO + leaf configError { + config "false"; + + type rtmap_ConfigErr; + description "config Error associated with this MO"; + } + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-dst"; + description "Type"; + } + + container rsrtDstAtt-items { + + list RsRtDstAtt-list { + key "tDn"; + + uses rtmap_RsRtDstAtt_source-group; + description "Prefix List Attachment list"; + } + description "Prefix List Attachment"; + } + + container rsrtDstAccAtt-items { + + list RsRtDstAccAtt-list { + key "tDn"; + + uses rtmap_RsRtDstAccAtt_source-group; + description "Access List Attachment list"; + } + description "Access List Attachment"; + } + } + + grouping rtmap_MatchRtDstV6-group { + description "Match on V6 Route Destination"; + + // Config error in this MO + leaf configError { + config "false"; + + type rtmap_ConfigErr; + description "config Error associated with this MO"; + } + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-dst-v6"; + description "Type"; + } + + container rsrtDstV6Att-items { + + list RsRtDstV6Att-list { + key "tDn"; + + uses rtmap_RsRtDstV6Att_source-group; + description "IPv6 Prefix List Attachment list"; + } + description "IPv6 Prefix List Attachment"; + } + + container rsrtDstV6AccAtt-items { + + list RsRtDstV6AccAtt-list { + key "tDn"; + + uses rtmap_RsRtDstV6AccAtt_source-group; + description "Access List Attachment list"; + } + description "Access List Attachment"; + } + } + + grouping rtmap_MatchIPv4Mcast-group { + description "Match on IPv4 Multicast attributes"; + + // Type + leaf type { + config "false"; + + type rtmap_MatchT; + default "rt-ipv4-mcast"; + description "Type"; + } + leaf groupAddr { + type address_Ip; + description "multicast group prefix"; + } + leaf groupStartAddr { + type address_Ip; + description "multicast group start range"; + } + leaf groupEndAddr { + type address_Ip; + description "multicast group end range"; + } + leaf rp { + type address_Ip; + description "multicast rendezvous prefix"; + } + + // rp type ASM/Bidir + leaf rpType { + + type rtmap_rpTypeT; + description "rp type ASM/Bidir"; + } + leaf sourceAddr { + type address_Ip; + description "multicast source prefix"; + } + } + + grouping rtmap_MatchIPv6Mcast-group { + description "Match on IPv6 Multicast attributes"; + + // Type + leaf type { + config "false"; + + type rtmap_MatchT; + default "rt-ipv4-mcast"; + description "Type"; + } + leaf groupAddr { + type address_Ip; + description "multicast group prefix"; + } + leaf groupStartAddr { + type address_Ip; + description "multicast group start range"; + } + leaf groupEndAddr { + type address_Ip; + description "multicast group end range"; + } + leaf rp { + type address_Ip; + description "multicast rendezvous prefix"; + } + + // rp type ASM/Bidir + leaf rpType { + + type rtmap_rpTypeT; + description "rp type ASM/Bidir"; + } + leaf sourceAddr { + type address_Ip; + description "multicast source prefix"; + } + } + + grouping rtmap_MatchRtNh-group { + description "Match on Route Nexthop"; + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-nh"; + description "Type"; + } + + container rsrtNhAtt-items { + + list RsRtNhAtt-list { + key "tDn"; + + uses rtmap_RsRtNhAtt_source-group; + description "Prefix List Attachment list"; + } + description "Prefix List Attachment"; + } + } + + grouping rtmap_MatchRtNhV6-group { + description "Match on Route Nexthop Ipv6"; + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-nh-v6"; + description "Type"; + } + + container rsrtNhV6Att-items { + + list RsRtNhV6Att-list { + key "tDn"; + + uses rtmap_RsRtNhV6Att_source-group; + description "Prefix List Attachment Ipv6 list"; + } + description "Prefix List Attachment Ipv6"; + } + } + + grouping rtmap_MatchRtSrc-group { + description "Match on Route Source"; + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-src"; + description "Type"; + } + + container rsrtSrcAtt-items { + + list RsRtSrcAtt-list { + key "tDn"; + + uses rtmap_RsRtSrcAtt_source-group; + description "Prefix List Attachment list"; + } + description "Prefix List Attachment"; + } + } + + grouping rtmap_MatchRtSrcV6-group { + description "Match on Route Source ipv6"; + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-src-v6"; + description "Type"; + } + + container rsrtSrcV6Att-items { + + list RsRtSrcV6Att-list { + key "tDn"; + + uses rtmap_RsRtSrcV6Att_source-group; + description "Prefix List Attachment list"; + } + description "Prefix List Attachment"; + } + } + + grouping rtmap_MatchRtType-group { + description "Match on Route Types"; + + // Route types + leaf routeT { + + type rtmap_RouteT; + description "Route Type"; + } + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-type"; + description "Type"; + } + } + + grouping rtmap_MatchRtTag-group { + description "Match on Route Tag"; + + // Route tag + leaf tag { + + type rtmap_RouteTag; + description "Route Tag"; + } + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-tag"; + description "Type"; + } + } + + grouping rtmap_MatchSrcProto-group { + description "Match on Route ASN"; + leaf proto { + type string { + length "1..32"; + } + description "Match Source Protocol"; + } + + // Type + leaf type { + + type rtmap_MatchT; + default "src-proto"; + description "Type"; + } + } + + grouping rtmap_MatchRtPervasive-group { + description "Match on Route Pervasive"; + + // Route pervasive + leaf pervasive { + + type rtmap_RoutePervasive; + description "Pervasive"; + } + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-pervasive"; + description "Type"; + } + } + + grouping rtmap_MatchAsPathAccessList-group { + description "Match on AS Path Access List"; + + // Type + leaf type { + + type rtmap_MatchT; + default "as-path"; + description "Type"; + } + + container rsrtAsPathAccAtt-items { + + list RsRtAsPathAccAtt-list { + key "tDn"; + + uses rtmap_RsRtAsPathAccAtt_source-group; + description "Access List Attachment list"; + } + description "Access List Attachment"; + } + } + + grouping rtmap_MatchRtMetric-group { + description "Match on Route Metric"; + + // Route metric measure + leaf measure { + + type rtmap_CommunityVal; + description "Route Metric Measure"; + } + + // Route metric deviation + leaf deviation { + + type rtmap_CommunityVal; + description "Route Metric Deviation"; + } + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-metric"; + description "Type"; + } + } + + grouping rtmap_MatchRtAsn-group { + description "Match on Route Asn"; + leaf asn { + type string; + description "Route Asn"; + } + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-asn"; + description "Type"; + } + } + + grouping rtmap_MatchRtIf-group { + description "Match on Route Interface"; + + // Route asn + leaf id { + + type nw_IfId; + description "Route If"; + } + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-if"; + description "Type"; + } + } + + grouping rtmap_MatchRtOspf-group { + description "Match on Ospf Area ID"; + + // Route ospf + leaf area { + + type rtmap_OSPFArea; + description "OSPF Area"; + } + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-ospf"; + description "Type"; + } + } + + grouping rtmap_MatchRtMacList-group { + description "Match on Mac-list"; + + // Type + leaf type { + + type rtmap_MatchT; + default "rt-mac-list"; + description "Type"; + } + + container rsrtMacListAtt-items { + + list RsRtMacListAtt-list { + key "tDn"; + + uses rtmap_RsRtMacListAtt_source-group; + description "Mac List list"; + } + description "Mac List"; + } + } + + grouping rtmap_Continue-group { + description "Entry"; + + // Continue + leaf continue { + + type rtmap_Order; + description "continue"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "continue"; + description "Type"; + } + } + + grouping rtmap_SetRegComm-group { + description "Set Regular Community"; + + // Add To Existing Community + leaf additive { + + type rtmap_AdminSt; + description "Add To Existing Community"; + } + + // No Community Attribute + leaf noCommAttr { + + type rtmap_AdminSt; + description "No Community Attribute"; + } + + // Type + leaf type { + + type rtmap_SetT; + description "Type"; + } + + // Set criteria + leaf setCriteria { + + type rtmap_SetCriteria; + description "Criteria"; + } + + // List of community values + container scomm-items { + list SetCommItem-list { + key "community"; + + uses rtmap_SetCommItem-group; + description "Set Community Item list"; + } + description "Set Community Item"; + } + + // Item in the community list + container item-items { + list Item-list { + key "community"; + + uses rtregcom_Item-group; + description "Item list"; + } + description "Item"; + } + } + + grouping rtmap_SetCommItem-group { + description "Set Community Item"; + leaf community { + type mtx_array_community; + description "Community"; + } + } + + grouping rtregcom_Item-group { + description "Item"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf community { + type mtx_array_community; + description "Community"; + } + } + + grouping rtmap_SetExtComm-group { + description "Set Extended Community"; + + // Add To Existing Community + leaf additive { + + type rtmap_AdminSt; + description "Add To Existing Community"; + } + + // No Community Attribute + leaf noCommAttr { + + type rtmap_AdminSt; + description "No Community Attribute"; + } + + leaf scope { + + type rtextcom_Scope; + description "Scope"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "ext-gen-community"; + description "Type"; + } + + // Set criteria + leaf setCriteria { + + type rtmap_SetCriteria; + description "Criteria"; + } + + // Item in the community list + container item-items { + list Item-list { + key "scope community"; + + uses rtextcom_Item-group; + description "Item list"; + } + description "Item"; + } + + // List of community values + container scomm-items { + list SetCommItem-list { + key "community"; + + uses rtmap_SetCommItem-group; + description "Set Community Item list"; + } + description "Set Community Item"; + } + } + + grouping rtmap_SetExtCommCost-group { + description "Set Extcommunity Cost "; + + // Set criteria for IGP or Pre-bestpath + leaf commCrit { + + type rtmap_SetCriteria; + description "Criteria"; + } + + // Community Id + leaf commId { + + type rtmap_CommunityId; + description "Community Id"; + } + + // Community Value + leaf commValue { + + type rtmap_CommunityVal; + description "Community Value"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "extcommunity-cost"; + description "Type"; + } + + // Set criteria + leaf setCriteria { + + type rtmap_SetCriteria; + description "Criteria"; + } + } + + grouping rtmap_SetExtCommColor-group { + description "Set Extcommunity Color "; + leaf commValue { + type uint32 { + range "1..4294967295"; + } + description "Color Community Value"; + } + } + + grouping rtmap_SetExtCommRmac-group { + description "Set Extcommunity RMAC "; + leaf commRmac { + type address_Mac; + description "RMAC Community Value"; + } + } + + grouping rtmap_SetCommList-group { + description "Set Community"; + leaf name { + type string { + pattern ".*[!-~]{1,63}.*"; + } + description "Community list Name to configure"; + } + + // Delete Matching Communities + leaf delete { + + type rtmap_AdminSt; + description "Delete Matching Communities"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "list-community"; + description "Type"; + } + + // Set criteria + leaf setCriteria { + + type rtmap_SetCriteria; + description "Criteria"; + } + } + + grouping rtmap_SetExtCommList-group { + description "Set Ext Community"; + leaf name { + type string { + pattern ".*[!-~]{1,63}.*"; + } + description "Ext Community list Name to configure"; + } + + // Delete Matching Communities + leaf delete { + + type rtmap_AdminSt; + description "Delete Matching Ext Communities"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "list-extcommunity"; + description "Type"; + } + + // Set criteria + leaf setCriteria { + + type rtmap_SetCriteria; + description "Criteria"; + } + } + + grouping rtmap_SetRttComm-group { + description "Set Route Target Community"; + + // Add To Existing Community + leaf additive { + + type rtmap_AdminSt; + description "Add To Existing Community"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "rtt-community"; + description "Type"; + } + + // Set criteria + leaf setCriteria { + + type rtmap_SetCriteria; + description "Criteria"; + } + + // Item in the community list + container item-items { + list Item-list { + key "scope community"; + + uses rtextcom_Item-group; + description "Item list"; + } + description "Item"; + } + + // List of community values + container scomm-items { + list SetCommItem-list { + key "community"; + + uses rtmap_SetCommItem-group; + description "Set Community Item list"; + } + description "Set Community Item"; + } + } + + grouping rtmap_SetRtDist-group { + description "Set Route Distance"; + + // Route Administrative Distance for IGP or EBGP + leaf dist { + + type rtmap_RouteDist; + description "Distance"; + } + + // Route Administrative Distance for Internal + leaf distI { + + type rtmap_RouteDist; + description "Distance internal"; + } + + // Route Administrative Distance for local + leaf distL { + + type rtmap_RouteDist; + description "Distance local"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "rt-dist"; + description "Type"; + } + } + + grouping rtmap_SetRtTag-group { + description "Set Route Tag"; + + // Tag value + leaf tag { + + type rtmap_RouteTag; + description "Tag"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "rt-tag"; + description "Type"; + } + } + + grouping rtmap_SetWeight-group { + description "Set Weight"; + + // Weight value + leaf weight { + + type rtmap_Weight; + description "Weight"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "rt-weight"; + description "Type"; + } + } + + grouping rtmap_SetLabelIndex-group { + description "Set LabelIndex"; + + // Label Index value + leaf index { + + type rtmap_Index; + description "Label Index"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "rt-index"; + description "Type"; + } + } + + grouping rtmap_SetPref-group { + description "Set Preference"; + + // Preference value + leaf localPref { + + type rtmap_LocalPref; + description "Local Preference"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "local-pref"; + description "Type"; + } + } + + grouping rtmap_SetMetric-group { + description "Set Metric"; + + // Metric value for bandwidth + leaf metric { + + type rtmap_MetricS; + description "Metric"; + } + + // Metric value for delay + leaf metricD { + + type rtmap_MetricD; + description "Metric delay"; + } + + // Metric value for reliability + leaf metricR { + + type rtmap_MetricR; + description "Metric rlblty"; + } + + // Metric value for load + leaf metricL { + + type rtmap_MetricL; + description "Metric load"; + } + + // Metric value for mtu + leaf metricM { + + type rtmap_MetricM; + description "Metric mtu"; + } + + // is BGP config + leaf isBGP { + + type rtmap_Proto; + description "is BGP config"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "metric"; + description "Type"; + } + } + + grouping rtmap_SetMetricType-group { + description "Set Metric Type"; + + // Metric Type + leaf metricT { + + type rtmap_MetricT; + description "Metric Type"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "metric-type"; + description "Type"; + } + } + + grouping rtmap_SetDampeningType-group { + description "Set Dampening"; + + // Dampening Halflife + leaf halflife { + + type rtmap_HalfLife; + description "Dampening Halfife"; + } + + // Dampening Reuse + leaf reuse { + + type rtmap_Reuse; + description "Dampening Reuse"; + } + + // Dampening Supress + leaf supress { + + type rtmap_Supress; + description "Dampening Supress"; + } + + // Dampening Duration + leaf duration { + + type rtmap_Duration; + description "Dampening Duration"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "dampening"; + description "Type"; + } + } + + grouping rtmap_SetPrecedence-group { + description "Set Precedence"; + + // Precedence Name + leaf precname { + + type rtmap_PrecName; + description "Precedence Name"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "ip-prec"; + description "Type"; + } + } + + grouping rtmap_SetV6Precedence-group { + description "Set IPv6 Precedence"; + + // Precedence Name + leaf precname { + + type rtmap_PrecName; + description "Precedence Name"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "ipv6-prec"; + description "Type"; + } + } + + grouping rtmap_SetOspfNssa-group { + description "Set Ospf Nssa"; + + // Type + leaf type { + + type rtmap_SetT; + default "ospf-nssa"; + description "Type"; + } + } + + grouping rtmap_SetOspfFwdAddr-group { + description "Set Ospf Forwarding Address"; + leaf fwdAddr { + type address_Ip; + description "Forwarding Address"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "ospf-fwd-addr"; + description "Type"; + } + } + + grouping rtmap_SetNh-group { + description "Set Nexthop"; + leaf addr { + type address_Ip; + description "Address"; + } + + // Config error in this MO + leaf configError { + config "false"; + + type rtmap_ConfigErr; + description "config Error associated with this MO"; + } + leaf trackId { + type uint32 { + range "1..512"; + } + description "Track id for Next Hop VA Address"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "ip-nh"; + description "Type"; + } + } + + grouping rtmap_SetNhPeerAddr-group { + description "Set Nexthop Peer Address"; + + // IPv4 Next hop peer address + leaf v4PeerAddr { + + type rtmap_AdminSt; + description "Set Next Hop V4 Peer Address"; + } + + // IPv6 Next hop peer address + leaf v6PeerAddr { + + type rtmap_AdminSt; + description "Set Next Hop V6 Peer Address"; + } + + // IPv4 Next hop Unchanged + leaf v4Unchange { + + type rtmap_AdminSt; + description "Set IPv4 Next Hop Unchanged"; + } + + // IPv6 Next hop Unchanged + leaf v6Unchange { + + type rtmap_AdminSt; + description "Set IPv6 Next Hop Unchanged"; + } + + // IPv4 Next hop Redist Unchanged + leaf v4RedistUnchange { + + type rtmap_AdminSt; + description "Set IPv4 Next Hop Redist Unchanged"; + } + + // IPv6 Next hop Redist Unchanged + leaf v6RedistUnchange { + + type rtmap_AdminSt; + description "Set IPv6 Next Hop Redist Unchanged"; + } + + // Config error in this MO + leaf configError { + config "false"; + + type rtmap_ConfigErr; + description "config Error associated with this MO"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "nh-pa"; + description "Type"; + } + } + + grouping rtmap_SetPrepend-group { + description "Set Prepend"; + leaf as { + type string { + pattern ".*[0-9 \\.]*"; + } + description "As Path Prepend"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "prepend"; + description "Type"; + } + } + + grouping rtmap_SetPrependLastAs-group { + description "Set Prepend Last As"; + + // As Path Last As + leaf lastas { + + type rtmap_RouteLastAs; + description "LastAs"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "lastas"; + description "Type"; + } + } + + grouping rtmap_SetAsPathTag-group { + description "Set As Path Tag"; + + // Set as path + leaf tag { + + type rtmap_AdminSt; + description "Set as path tag"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "as-pathtag"; + description "Type"; + } + } + + grouping rtmap_SetOrigin-group { + description "Set Origin Type"; + + // Metric Type + leaf originT { + + type rtmap_OriginT; + description "Origin Type"; + } + + // Remote ASN + leaf asn { + + type rtcom_AS; + description "Autonomous System Number"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "origin"; + description "Type"; + } + } + + grouping rtmap_SetEvpn-group { + description "Set Evpn Gateway Ip Addr and Ether Tag"; + leaf ip { + type address_Ip; + description "EVPN Gateway IP Address"; + } + + // Gateway-ip type + leaf gwType { + + type rtmap_GatewayT; + description "EVPN Gateway Address Type"; + } + } + + grouping rtmap_SetPathSelection-group { + description "Set As Path Tag"; + + // BGP path advertise + leaf psAdvertise { + + type rtmap_PsType; + description "Specifies BGP path Advertise"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "ps-adv"; + description "Type of set path selection"; + } + } + + grouping rtmap_SetIntf-group { + description "Set Interface for route-map"; + + leaf if { + + type nw_IfId; + description "set interface for route-map"; + } + + // Type + leaf type { + + type rtmap_SetT; + default "intf"; + description "Type of set interface selection"; + } + } + + grouping rtmap_ExpandedComList-group { + description "Rule"; + leaf regex { + type string { + length "0..63"; + } + description "Expanded Community list Regular Expression"; + } + leaf expcommname { + type string { + length "0..63"; + } + description "Expanded Community list Name"; + } + + // Deny or Permit + leaf action { + + type rtmap_Action; + description "Action"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping rtpfx_RuleV4-group { + description "IPv4 Rule"; + + // Mode + leaf mode { + + type rtpfx_IPv4Mode; + description "Mode of ipv4 prefix-list"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr { + length "0..90"; + } + description "descr"; + } + + // Prefix list entry definition + container ent-items { + list Entry-list { + key "order"; + + uses rtpfx_Entry-group; + description "Entry list"; + } + description "Entry"; + } + + container rtrtmapRtDstAtt-items { + + list RtRtmapRtDstAtt-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtDstAtt_target-group; + description "Prefix List Attachment list"; + } + description "Prefix List Attachment"; + } + + container rtrtmapRtDstV6Att-items { + + list RtRtmapRtDstV6Att-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtDstV6Att_target-group; + description "IPv6 Prefix List Attachment list"; + } + description "IPv6 Prefix List Attachment"; + } + + container rtrtmapRtNhAtt-items { + + list RtRtmapRtNhAtt-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtNhAtt_target-group; + description "Prefix List Attachment list"; + } + description "Prefix List Attachment"; + } + + container rtrtmapRtNhV6Att-items { + + list RtRtmapRtNhV6Att-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtNhV6Att_target-group; + description "Prefix List Attachment Ipv6 list"; + } + description "Prefix List Attachment Ipv6"; + } + + container rtrtmapRtSrcAtt-items { + + list RtRtmapRtSrcAtt-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtSrcAtt_target-group; + description "Prefix List Attachment list"; + } + description "Prefix List Attachment"; + } + + container rtrtmapRtSrcV6Att-items { + + list RtRtmapRtSrcV6Att-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtSrcV6Att_target-group; + description "Prefix List Attachment list"; + } + description "Prefix List Attachment"; + } + } + + grouping rtpfx_Entry-group { + description "Entry"; + leaf pfx { + type address_Ip; + description "Prefix"; + } + leaf mask { + type address_Ip; + description "mask"; + } + + // criteria, exact match or inexact match + leaf criteria { + + type rtpfx_Criteria; + description "Criteria"; + } + + // If the criteria is not an exact match, use a range to + // describe the prefix list range + leaf fromPfxLen { + + type l3_IpPfxLen; + description "Start of Prefix Length"; + } + + leaf toPfxLen { + + type l3_IpPfxLen; + description "End of Prefix Length"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Order + leaf order { + + type rtflt_Order { + range "1..4294967294"; + } + description "Order"; + } + + // Action + leaf action { + + type rtflt_Action; + description "Action"; + } + } + + grouping rtpfx_RuleV6-group { + description "IPv6 Rule"; + + // Mode + leaf mode { + + type rtpfx_IPv6Mode; + description "Mode of ipv6 prefix-list"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr { + length "0..90"; + } + description "descr"; + } + + // Prefix list entry definition + container ent-items { + list Entry-list { + key "order"; + + uses rtpfx_Entry-group; + description "Entry list"; + } + description "Entry"; + } + + container rtrtmapRtDstAtt-items { + + list RtRtmapRtDstAtt-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtDstAtt_target-group; + description "Prefix List Attachment list"; + } + description "Prefix List Attachment"; + } + + container rtrtmapRtDstV6Att-items { + + list RtRtmapRtDstV6Att-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtDstV6Att_target-group; + description "IPv6 Prefix List Attachment list"; + } + description "IPv6 Prefix List Attachment"; + } + + container rtrtmapRtNhAtt-items { + + list RtRtmapRtNhAtt-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtNhAtt_target-group; + description "Prefix List Attachment list"; + } + description "Prefix List Attachment"; + } + + container rtrtmapRtNhV6Att-items { + + list RtRtmapRtNhV6Att-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtNhV6Att_target-group; + description "Prefix List Attachment Ipv6 list"; + } + description "Prefix List Attachment Ipv6"; + } + + container rtrtmapRtSrcAtt-items { + + list RtRtmapRtSrcAtt-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtSrcAtt_target-group; + description "Prefix List Attachment list"; + } + description "Prefix List Attachment"; + } + + container rtrtmapRtSrcV6Att-items { + + list RtRtmapRtSrcV6Att-list { + config "false"; + key "tDn"; + + uses rtmap_RtRtmapRtSrcV6Att_target-group; + description "Prefix List Attachment list"; + } + description "Prefix List Attachment"; + } + } + + grouping rtregcom_Rule-group { + description "Rule"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Type of the community list [regular | extended] + leaf type { + + type rtcom_ComT; + description "Type"; + } + + // Mode + leaf mode { + + type rtcom_Mode; + description "Mode"; + } + + // Regular community list entry + container ent-items { + list Entry-list { + key "order"; + + uses rtregcom_Entry-group; + description "Entry list"; + } + description "Entry"; + } + + container rtRegCommAtt-items { + + uses rtmap_RtRegCommAtt_target-group; + description "Regular Community Attachment"; + } + } + + grouping rtregcom_Entry-group { + description "Entry"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Order + leaf order { + + type rtflt_Order { + range "1..4294967294"; + } + description "Order"; + } + + // Action + leaf action { + + type rtflt_Action; + description "Action"; + } + leaf regex { + type string { + pattern ".*[^a-zA-Z~!#%@`;]{0,63}.*"; + } + description "Regular Expression"; + } + + // Item in the community list + container item-items { + list Item-list { + key "community"; + + uses rtregcom_Item-group; + description "Item list"; + } + description "Item"; + } + } + + grouping srcintf_Entity-group { + description " IP Source Interface"; + container dns-items { + list DnsSrcIf-list { + key "vrf"; + + uses srcintf_DnsSrcIf-group; + description "DNS Source Interface list"; + } + description "DNS Source Interface"; + } + container tftp-items { + list Tftp-list { + key "vrf"; + + uses srcintf_Tftp-group; + description "TFTP Source Interface list"; + } + description "TFTP Source Interface"; + } + container ftp-items { + list Ftp-list { + key "vrf"; + + uses srcintf_Ftp-group; + description "FTP Source Interface list"; + } + description "FTP Source Interface"; + } + container telnet-items { + list Telnet-list { + key "vrf"; + + uses srcintf_Telnet-group; + description "Telnet Source Interface list"; + } + description "Telnet Source Interface"; + } + container ssh-items { + list Ssh-list { + key "vrf"; + + uses srcintf_Ssh-group; + description "SSH Source Interface list"; + } + description "SSH Source Interface"; + } + container ping-items { + list Ping-list { + key "vrf"; + + uses srcintf_Ping-group; + description "Ping Source Interface list"; + } + description "Ping Source Interface"; + } + container traceroute-items { + list Traceroute-list { + key "vrf"; + + uses srcintf_Traceroute-group; + description "Traceroute Source Interface list"; + } + description "Traceroute Source Interface"; + } + } + + grouping srcintf_DnsSrcIf-group { + description "DNS Source Interface"; + + // Source interface + leaf srcIf { + + type nw_IfId; + description "DNS Source Interface"; + } + + // vrf name + leaf vrf { + + type l3_VrfName; + description "DNS Source VRF"; + } + } + + grouping srcintf_Tftp-group { + description "TFTP Source Interface"; + + // Source interface + leaf srcIf { + + type nw_IfId; + description "TFTP Source Interface"; + } + + // vrf name + leaf vrf { + + type l3_VrfName; + description "TFTP Source VRF"; + } + } + + grouping srcintf_Ftp-group { + description "FTP Source Interface"; + + // Source interface + leaf srcIf { + + type nw_IfId; + description "FTP Source Interface"; + } + + // vrf name + leaf vrf { + + type l3_VrfName; + description "FTP Source VRF"; + } + } + + grouping srcintf_Telnet-group { + description "Telnet Source Interface"; + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Telnet Source Interface"; + } + + // vrf name + leaf vrf { + + type l3_VrfName; + description "Telnet Source VRF"; + } + } + + grouping srcintf_Ssh-group { + description "SSH Source Interface"; + + // Source interface + leaf srcIf { + + type nw_IfId; + description "SSH Source Interface"; + } + + // vrf name + leaf vrf { + + type l3_VrfName; + description "SSH Source VRF"; + } + } + + grouping srcintf_Ping-group { + description "Ping Source Interface"; + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Ping Source Interface"; + } + + // vrf name + leaf vrf { + + type l3_VrfName; + description "Ping Source VRF"; + } + } + + grouping srcintf_Traceroute-group { + description "Traceroute Source Interface"; + + // Source interface + leaf srcIf { + + type nw_IfId; + description "Traceroute Source Interface"; + } + + // vrf name + leaf vrf { + + type l3_VrfName; + description "Traceroute Source VRF"; + } + } + + grouping swpkgs_Install-group { + description "Software packages Install"; + + // Information about the packages present in the system + container rpminfo-items { + list RpmInfo-list { + config "false"; + key "name"; + + uses swpkgs_RpmInfo-group; + description "RPM Packages in the system list"; + } + description "RPM Packages in the system"; + } + } + + grouping swpkgs_RpmInfo-group { + description "RPM Packages in the system"; + leaf name { + config "false"; + type string; + description "Name of Package"; + } + + // Operational state of the package + leaf operSt { + config "false"; + + type swpkgs_OperState; + description "Operational status"; + } + + // Last Package action + leaf lastAction { + config "false"; + + type swpkgs_PackageAction; + description "Last action on the package"; + } + + // Last Action Result on the package + leaf lastActionResult { + config "false"; + + type swpkgs_PackageActionResult; + description "Result of last action"; + } + leaf lastActionFailedReason { + config "false"; + type string; + description "Last action failed reason"; + } + leaf signatureStatus { + config "false"; + type string; + description "Signature status of package"; + } + } + + grouping sysmgr_Entity-group { + description "Entity"; + + // System state + container sys-items { + + uses sysmgr_SysSt-group; + description "System State"; + } + + // Holds system control plane entity information + container sysCfg-items { + + uses sysmgr_SysCfgSt-group; + description "MDP Replay Ascii Configuration mode and Operational Data Publish Status"; + } + + // MO definition to configure sysmgr + container config-items { + + uses sysmgr_Config-group; + description "To configure sysmgr properties."; + } + + // Holder for cores policy + container core-items { + list Cores-list { + config "false"; + key "dest"; + + uses sysmgrp_Cores-group; + description "Core File Policy list"; + } + description "Core File Policy"; + } + } + + grouping sysmgr_SysSt-group { + description "System State"; + + // Sup state + container sup-items { + list SupSt-list { + config "false"; + key "type"; + + uses sysmgr_SupSt-group; + description "Supervisor State list"; + } + description "Supervisor State"; + } + + // Firmware state + container image-items { + list FwSt-list { + config "false"; + key "type"; + + uses sysmgr_FwSt-group; + description "Firmware State list"; + } + description "Firmware State"; + } + } + + grouping sysmgr_SupSt-group { + description "Supervisor State"; + + // Local/Remote + leaf type { + config "false"; + + type sysmgr_SupT; + description "Type"; + } + + // Oper state + leaf operSt { + config "false"; + + type sysmgr_SupSt; + description "Operational State"; + } + } + + grouping sysmgr_FwSt-group { + description "Firmware State"; + + // Type of the firmware + leaf type { + config "false"; + + type sysmgr_FwT; + description "Type"; + } + + // The firmware mode in which we are running, either + // it is recovery or regular mode + leaf mode { + config "false"; + + type sysmgr_FwMode; + description "Mode"; + } + } + + grouping sysmgr_SysCfgSt-group { + description "MDP Replay Ascii Configuration mode and Operational Data Publish Status"; + + // MDP Replay Ascii configuration mode + leaf cfgMode { + config "false"; + + type sysmgr_CfgMode; + description "MDP Replay Ascii Configuration State. ['init']-Initial, ['replay']-Configuration replay started, ['done']-Configuration replay completed."; + } + + // MDP operational data publish mode + leaf operDataMode { + config "false"; + + type sysmgr_OperDataMode; + description "MDP Operational Data Publish Mode State. ['init']-Initial, ['publish']-Data publish started, ['done']-System ready or Box Online."; + } + } + + grouping sysmgr_Config-group { + description "To configure sysmgr properties."; + + // Admin state to configure sysmgr param + leaf adminSt { + + type sysmgr_CfgAdminSt; + description "State to configure sysmgr properites"; + } + + leaf traceMask { + + type sysmgr_TraceMask; + description "Mask to set sysmgr log trace(in hex)"; + } + + // Operational state of trace setting + leaf operSt { + config "false"; + + type sysmgr_OperState; + description "Operational status set by sysmgr"; + } + + // Fast-reload timer value for network stabilization + // cli:sh system fast-reload stabilization-timer + leaf fastReloadTimer { + + type sysmgr_ReloadTimer; + description "Fast-reload timer value for network stabilization(in secs). Used only during fast-reload"; + } + + // MO definition to configure system cores + container systemcore-items { + + uses sysmgr_SystemCore-group; + description "sysmgr configure system cores"; + } + } + + grouping sysmgr_SystemCore-group { + description "sysmgr configure system cores"; + + // Admin state to configure sysmgr param + leaf adminSt { + + type sysmgr_CoreAdminSt; + description "State to configure sysmgr properites"; + } + + leaf uriType { + + type sysmgr_CoreUriType; + description "URI type of uri provided"; + } + leaf server { + type string; + description "Config server for shipping cores"; + } + leaf path { + type string; + description "Dir patch for shipping cores"; + } + leaf vrf { + type string; + description "VRF for shipping cores"; + } + + // Operational state of system core setting + leaf operSt { + config "false"; + + type sysmgr_OperState; + description "Operational status set by sysmgr"; + } + } + + grouping sysmgrp_Cores-group { + description "Core File Policy"; + leaf dest { + config "false"; + type string; + description "Destination"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + config "false"; + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + config "false"; + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping sysmgr_ShowVersion-group { + description "Show Version CLI"; + leaf copyRight { + config "false"; + type string; + description "Copy Right"; + } + leaf biosVersion { + config "false"; + type string; + description "Bios Version"; + } + leaf nxosVersion { + config "false"; + type string; + description "Nxos Version"; + } + leaf biosCompileTime { + config "false"; + type string; + description "Bios Compile Time"; + } + leaf nxosImageFile { + config "false"; + type string; + description "Nxos Image File"; + } + leaf nxosCompileTime { + config "false"; + type string; + description "Nxos Compile Time"; + } + leaf bootflashSize { + config "false"; + type uint32; + description "Bootflash Size"; + } + leaf kernelUptime { + config "false"; + type string; + description "Kernel Uptime"; + } + leaf lastResetTime { + config "false"; + type string; + description "Last Reset Time"; + } + leaf lastResetReason { + config "false"; + type string; + description "Last Reset Reason"; + } + leaf lastResetSysVersion { + config "false"; + type string; + description "Last Reset System Version"; + } + leaf lastResetService { + config "false"; + type string; + description "Last Reset Service"; + } + leaf plugin { + config "false"; + type string; + description "Plugin"; + } + leaf activePackage { + config "false"; + type string; + description "Active Package"; + } + } + + grouping tcpudp_Entity-group { + description "Tcpdp Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per tcpudp instance information. There is + // only one instance of tcpudp running in the system today + container inst-items { + + uses tcpudp_Inst-group; + description "Tcpudp Instance"; + } + } + + grouping tcpudp_Inst-group { + description "Tcpudp Instance"; + + // Set time to wait on new TCP connections + leaf synWaitTime { + + type tcpudp_SynwaitTime; + description "Set time to wait on new TCP connections"; + } + + // Enable path-MTU discovery on TCP + leaf pathMtuDiscovery { + + type nw_AdminSt; + default "disabled"; + description "Enable path-MTU discovery on TCP"; + } + + // Setting up TCP Maximum Segment Size in Bytes + leaf tcpMssBytes { + + type tcpudp_TCPMss; + description "Set the Tcp Mss Byte"; + } + + // Setting up TCP Socket Local Start Port Range + leaf tcpStartPortRange { + + type tcpudp_TcpStartPort; + description "Sockets Local Start Port Range"; + } + + // Setting up TCP Socket Local End Port Range + leaf tcpEndPortRange { + + type tcpudp_TcpEndPort; + description "Sockets Local End Port Range"; + } + + // Setting dscp value for ip dscp + leaf dscpLop { + + type tcpudp_DscpLop; + description "DSCP value for Locally Originated Packets"; + } + + container localport-items { + + uses tcpudp_LocalPort-group; + description "Sockets Local Port Range information"; + } + } + + grouping tcpudp_LocalPort-group { + description "Sockets Local Port Range information"; + + leaf kstackStartPort { + config "false"; + + type tcpudp_TcpStartPort; + description "Kstack Start Port:"; + } + + leaf kstackEndPort { + config "false"; + + type tcpudp_TcpEndPort; + description "Kstack End Port:"; + } + + leaf netstackStartPort { + config "false"; + + type tcpudp_TcpStartPort; + description "Netstack Start Port:"; + } + + leaf netstackEndPort { + config "false"; + + type tcpudp_TcpEndPort; + description "Netstack End Port:"; + } + + leaf natStartPort { + config "false"; + + type tcpudp_TcpStartPort; + description "Nat Start Port:"; + } + + leaf natEndPort { + config "false"; + + type tcpudp_TcpEndPort; + description "Nat End Port:"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping terminal_Terminal-group { + description "Terminal"; + + // Line MO is the MO inside which type of line either vty or console + // would be organize + container ln-items { + + uses terminal_Line-group; + description "line"; + } + } + + grouping terminal_Line-group { + description "line"; + + // Console MO is to consolidate the console specific MO and its + // properties which is propretary for the vsh session which is + // spawned via console port + container cons-items { + + uses terminal_Console-group; + description "line type console"; + } + + // VTY MO is to consolidate the VTY specific MO and its + // properties which is propretary for the vsh session which is + // spawned via mgmt/telnet ip to box + container vty-items { + + uses terminal_Vty-group; + description "line type vty"; + } + } + + grouping terminal_Console-group { + description "line type console"; + + // Organizes the exec timeout specific properties + container execTmeout-items { + + uses terminal_ExecTimeout-group; + description "Configure exec timeout of terminal"; + } + + // Organizes the console terminal width specific properties + container wdth-items { + + uses terminal_Width-group; + description "Configure terminal width"; + } + + // Organizes the console terminal length specific properties + container lgth-items { + + uses terminal_Length-group; + description "Number of lines to be displayed on terminal"; + } + + // Organizes the console terminal speed specific properties + container speed-items { + + uses terminal_Speed-group; + description "terminal console speed"; + } + + // Organizes the databits number properties + container databits-items { + + uses terminal_DataBits-group; + description "databits nums"; + } + + // Organizes the async line stopbits properties + container stopbits-items { + + uses terminal_StopBits-group; + description "async line stopbits"; + } + + // Organizes the terminal parity properties + container parity-items { + + uses terminal_Parity-group; + description "databits nums"; + } + } + + grouping terminal_ExecTimeout-group { + description "Configure exec timeout of terminal"; + + leaf timeout { + + type terminal_TimeoutT; + description "Configure exec timeout of terminal"; + } + } + + grouping terminal_Width-group { + description "Configure terminal width"; + + leaf termwidth { + + type terminal_TermSize { + range "51..511"; + } + description "Configure width of the display terminal"; + } + } + + grouping terminal_Length-group { + description "Number of lines to be displayed on terminal"; + + leaf termlength { + + type terminal_TermSize { + range "0..511"; + } + description "Configure number of lines to display on terminal"; + } + } + + grouping terminal_Speed-group { + description "terminal console speed"; + leaf speed { + type uint32 { + range "9600..115200"; + } + default "9600"; + description "console speed"; + } + } + + grouping terminal_DataBits-group { + description "databits nums"; + leaf dataBits { + type uint32 { + range "5..8"; + } + default "8"; + description "databits numbers"; + } + } + + grouping terminal_StopBits-group { + description "async line stopbits"; + leaf stopBits { + type uint32 { + range "1"; + } + default "1"; + description "async line stopbits"; + } + } + + grouping terminal_Parity-group { + description "databits nums"; + + leaf parity { + + type terminal_TermParity; + description "databits numbers"; + } + } + + grouping terminal_Vty-group { + description "line type vty"; + + // Organizes the exec timeout specific properties + container execTmeout-items { + + uses terminal_ExecTimeout-group; + description "Configure exec timeout of terminal"; + } + + // Organizes the VTY session's absolute timeout specific properties + container absTmeout-items { + + uses terminal_AbsTimeout-group; + description "Configure absolute timeout for terminal"; + } + + // Organizes the VTY session's limit specific properties + container ssLmt-items { + + uses terminal_SesLmt-group; + description "Configure session limit"; + } + + // Organizes the VTY session's logout warning specific properties + container lgoutWarning-items { + + uses terminal_LogoutWarning-group; + description "Logout warning time"; + } + } + + grouping terminal_AbsTimeout-group { + description "Configure absolute timeout for terminal"; + + leaf timeout { + + type terminal_TimeoutT; + description "Configure absolute timeout for terminal"; + } + } + + grouping terminal_SesLmt-group { + description "Configure session limit"; + + leaf sesLmt { + + type terminal_Limit { + range "1..64"; + } + description "Configure maximum number of concurrent vsh sessions allowed"; + } + } + + grouping terminal_LogoutWarning-group { + description "Logout warning time"; + + leaf lgtWarn { + + type terminal_Limit { + range "0..60"; + } + description "Configure logout warning time"; + } + } + + grouping terminal_TerminalLog-group { + description "Enable accounting log for all commands"; + } + + grouping tunnel_If-group { + description "Tunnel Interface"; + leaf src { + config "false"; + type address_Ip; + description "Tunnel Source IP"; + } + leaf dest { + config "false"; + type address_Ip; + description "Tunnel Destination IP"; + } + + // Tunnel type + leaf tType { + config "false"; + + type tunnel_TunnelQual; + description "Tunnel Type"; + } + + // Tunnel VRF name + leaf vrfName { + config "false"; + + type l3_VrfName; + description "VRF"; + } + + // Tunnel MTU + leaf cfgdMtu { + config "false"; + + type tunnel_ConfMtu; + description "MTU"; + } + + // Tunnel keep-alive period + leaf keepAlvIntvl { + config "false"; + + type tunnel_KeepAlvIntvl; + description "Keep Alive Interval"; + } + + // Tunnel keep-alive retries + leaf keepAlvRetries { + config "false"; + + type tunnel_KeepAlvRetries; + description "Keep Alive Retries"; + } + + // Tunnel administrative state + leaf adminSt { + config "false"; + + type tunnel_AdminSt; + description "Administrative State"; + } + + // Tunnel type + leaf type { + config "false"; + + type tunnel_EpT; + description "Endpoint Type"; + } + + // Tunnel layer: L2 or L3 + leaf tLayer { + config "false"; + + type tunnel_LayerT; + description "Layer"; + } + leaf mac { + config "false"; + type address_Mac; + description "Destination MAC"; + } + + // Tunnel operational state + leaf operSt { + config "false"; + + type tunnel_OperSt; + description "Operational State"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + config "false"; + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + config "false"; + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // @@@Relationship to policy providing physical configuration of + // the ports @@@rel-def + // name="IfConf" + // type="named" + // from="fv:RsCcepConn" + // to="fabric:HIfPol" + // cardinality="1-to-1" + // owner="management" + // mod="explicit" + // > + // layer2-port binding unknown"; + } + + // valid for n9knontahoe + leaf qosMinBuffer { + + type platform_QosMinBuffer; + description "qos min-buffer qos-group"; + } + + leaf switchingMode { + + type platform_SwitchingMode; + description "Corresponds to the global switching mode. Default is cut-through"; + } + + leaf switchingFabricSpeed { + + type platform_FabricSpeed; + description "Corresponds to the switching fabric speed."; + } + + leaf mcastNlb { + + type platform_McastNlb; + description "Used to enable/disable hardware profile multicast nlb"; + } + + leaf disParseErr { + + type platform_DisParseErr; + description "Used to disable/enable hardware profile disable parse-err"; + } + + leaf ipStatistics { + + type platform_IpStatistics; + description "Used to disable/enable hardware forwarding ip statistics"; + } + + leaf mldSnooping { + + type platform_MldSnooping; + description "Used to enable/disable system mld snooping"; + } + + leaf mcastDcsCheck { + + type platform_mcastDcsCheck; + description "Used to enable/disable system mcast DCS check"; + } + + leaf mcastFlexStats { + + type platform_McastFlexStats; + description "Used to enable/disable hardware profile multicast flex-stats"; + } + + leaf sviFlexStats { + + type platform_SviFlexStats; + description "Used to enable/disable hardware profile si flex-stats"; + } + + leaf sviAndSiFlexStats { + + type platform_SviAndSiFlexStats; + description "Used to enable/disable hardware profile sviandsi flex-stats"; + } + + leaf iRaclSize { + + type platform_tcamLabelSize; + description "To set the ingress RACL TCAM label size to 9 bits and the default value is 6 bits"; + } + + leaf iBdIfaclLblOpt { + + type platform_QosLabelOpt; + description "To optimize the ingress QOS Ingress BD IFACL label size"; + } + + leaf globalTxSpan { + + type platform_GlobalTxSpan; + description "Used to enable/disable hardware multicast global tx span"; + } + + leaf appliedRoutingMode { + config "false"; + + type platform_RoutingMode; + description "Actual routing mode that got applied"; + } + leaf ingRepRoundRobin { + type boolean; + description "Round-Robin hashing of underlay-paths for VXLAN ingress-replication peers"; + } + + // valid for n3ktoronly + leaf pbrSkipSelfIp { + + type nw_AdminSt; + default "disabled"; + description "Configure Skipping PBR for self-ip packets"; + } + + leaf mcastLpmMaxEntries { + + type platform_McastLpmMaxEntriesType; + description "Maximum limit for multicast LPM routes"; + } + + leaf systemFabricMode { + + type platform_FabricMode; + description "Corresponds to the system fabric mode"; + } + + leaf switchMode { + + type platform_SwitchMode; + description "Corresponds to the switch mode(N3K/N9K)"; + } + + leaf mroutingPerfMode { + + type platform_MroutingPerfMode; + description "Corresponds to enabling/disabling mrouting performance mode"; + } + + leaf mroutingDisableSecRouteUpd { + + type platform_MroutingDisableSecRouteUpd; + description "Corresponds to enabling/disabling second route update"; + } + + leaf mroutingDisableL2Upd { + + type platform_MroutingDisableL2Upd; + description "Corresponds to enabling/disabling l2 update"; + } + + leaf unicastTrace { + + type platform_UnicastTrace; + description "Used to enable/disable unicast trace"; + } + leaf hwLouResThreshold { + type uint16 { + range "1..50"; + } + default "5"; + description "Hardware Lou Resource Threshold value."; + } + leaf accessListMatchInnerHeader { + type enumeration { + enum disable { + value 0; + } + enum enable { + value 1; + } + } + default "disable"; + description "Used to enable/disable hardware access-list match inner-header"; + } + + leaf mplsAdjStatsMode { + + type platform_MplsStatsType; + description "Corresponds to MPLS Adjacency stats type"; + } + + leaf mplsCfgEcmpMode { + + type platform_MplsEcmpMode; + description "Used to enable/disable extended-ecmp for MPLS on RX-series Linecards N9K"; + } + leaf wrrUnicastBw { + type uint8 { + range "0..100"; + } + default "50"; + description "WRR Unicast Bandwidth Value"; + } + + leaf tcamSyslogThreshold { + + type platform_Percentage; + description "Specifies to generate a syslog entry when the specified maximum buffer size is exceeded for TCAM. The default is 90 percent of the total available shared buffer"; + } + + leaf mcastRaclBridge { + + type platform_AdminState; + description "Apply permit/drop for mcast bridged pkt"; + } + + leaf serviceTemplateName { + + type platform_TcamTemplateName; + description "Name of the user-defined service template"; + } + + // PIC related properties + leaf picCoreEnable { + + type platform_AdminState; + description "Configure PIC core"; + } + + // validinn3500pltfm + leaf openflowForwardPdu { + + type nw_AdminSt; + default "disabled"; + description "Configure openflow forward-pdu"; + } + + leaf cfgFault { + config "false"; + + type platform_entityCfgFault; + description "Entity Config Fault"; + } + leaf cfgFaultMsg { + config "false"; + type string { + length "0..2048"; + } + description "Entity Config Fault message"; + } + + leaf cfgFaultBmp { + config "false"; + + type platform_EntityCfgFaultBmp; + description "Entity config fault bit map"; + } + + container entityextd-items { + + uses platform_EntityExtended-group; + description "Platform Entity Extended Mo"; + } + + // Port-channel Load-Balance Related Properties + container pclb-items { + + uses platform_LoadBalance-group; + description "Port-Channel Load-Balance"; + } + + // Hardware Profile Related Properties + container profile-items { + + uses platform_Profile-group; + description "Platform Profile"; + } + + // congestion-control properties [default value = (0xFFFF * 208){no of cells * no of bytes for each cell}] + container globalrandomdetect-items { + + uses platform_GlobalRandomDetect-group; + description "Congestion-control Random-detect"; + } + + // TCAM resource utilization on the module + container mod-items { + list TcamStatsModule-list { + config "false"; + key "module"; + + uses platform_TcamStatsModule-group; + description "represents module for which TCAM resource utilization is required list"; + } + description "represents module for which TCAM resource utilization is required"; + } + container nve-items { + list NVE-list { + key "id"; + + uses platform_NVE-group; + description "Nve Configs list"; + } + description "Nve Configs"; + } + + container forwardingmode-items { + + uses platform_ForwardingMode-group; + description "Forwarding Mode Property"; + } + + // ECMP related properties + container ecmp-items { + + uses platform_Ecmp-group; + description "represents hardware related ecmp properties"; + } + + // IPL3 related properties + container ipl3-items { + + uses platform_IpL3-group; + description "represents platform config related ip L3 properties"; + } + + // Hardware Qos Related Properties + container qos-items { + + uses platform_Qos-group; + description "Hardware qos type"; + } + + // LLFC Wd Related Properties + container linklevelflowctrlwd-items { + + uses platform_LinkLevelFlowCtrlWd-group; + description "LLFC WD config"; + } + + // PFC Wd Related Properties + container priorflowctrlwd-items { + + uses platform_PriorFlowCtrlWd-group; + description "PFC WD config"; + } + + container wredqueue-items { + + uses platform_WredQueue-group; + description "Enable queue based ECN marking"; + } + + // Rate Limiter Related Properties + container ratelimiter-items { + + uses platform_RateLimiter-group; + description "Rate Limiter container for the platform entity "; + } + + // TCAM Template Related Properties + container template-items { + list TcamTemplate-list { + key "name"; + + uses platform_TcamTemplate-group; + description "Manages the user defined tcam template list"; + } + description "Manages the user defined tcam template"; + } + + // Proactive Consistency Checker Config Properties + container proactivecc-items { + + uses platform_ProactiveCC-group; + description "Proactive Consistency Checker"; + } + + // Container for all the BDs to hold platform data in the system. + container bd-items { + + uses platform_BdEntity-group; + description "Bridge domain"; + } + + // Container for all the interfaces in the system. + container intf-items { + + uses platform_Intf-group; + description "Interface"; + } + + // This object configs platform logging level + container loglevel-items { + + uses platform_LogLevel-group; + description "Config Platform logging level"; + } + + // Container for all the power off config data in the system. + container poweroffEntity-items { + + uses platform_PoweroffEntity-group; + description "Poweroff Module Config"; + } + + container sysmemth-items { + + uses platform_SysMemTh-group; + description "System Memory Threshold"; + } + + // Container for all the tcam regions in the system. + container tcamRegion-items { + + uses platform_TcamRegion-group; + description "Tcam region type"; + } + + container latencymonitor-items { + + uses platform_LatencyMonitor-group; + description "Latency Monitor Property"; + } + + container buffermonitor-items { + + uses platform_BufferMonitor-group; + description "Buffer Monitor Property"; + } + + container pfcmmubuffer-items { + + uses platform_PfcMmuBuffer-group; + description "Pfc mmu buffer Property"; + } + + // Container for all udf . + container udf-items { + + uses platform_UdfEntity-group; + description "UdfEntity"; + } + } + + grouping platform_EntityExtended-group { + description "Platform Entity Extended Mo"; + leaf ptpCorrHw { + type boolean; + default "true"; + description "Ptp frequnecy correction from hardware or software"; + } + + leaf siFlexStats { + + type platform_SiFlexStats; + description "Used to enable/disable hardware profile sub-interface flex-stats"; + } + + leaf iPaclIfaclLabelSize { + + type platform_iPaclIfaclTcamLabelSize; + description "To set the ingress IFACL TCAM label size to 6 bits and the default value is 5 bits"; + } + + leaf egrL2QosIfaclLabelSize { + + type platform_egrL2QosIfaclTcamLabelSize; + description "To set the EGRESS IFACL QOS label size to 6 bits and the default value is 5 bits"; + } + + leaf mcastNlbStickPc { + + type platform_McastNlbStickPc; + description "Used to enable/disable hardware profile multicast nlb on a stick Port Channel configuration"; + } + + leaf atomicUpdate { + + type platform_AtomicUpdate; + description "To optimize enable/disable atomic update"; + } + + leaf atomicUpdateStrict { + + type platform_AtomicUpdateStrict; + description "Strict check on TCAM size for using mutliple features"; + } + + leaf tcamDefaultResult { + + type platform_TcamDefaultResult; + description "Default access-list result during non-atomic hardware update"; + } + } + + grouping platform_LoadBalance-group { + description "Port-Channel Load-Balance"; + + leaf loadBalanceAlgo { + + type platform_LoadBalanceAlgo; + description "src-dst based load balancing parameters"; + } + + leaf concatenation { + + type platform_Concatenation; + description "Enable/Disable load-balancing concatenation parameter"; + } + + leaf rotate { + + type platform_Rotate; + description "Hash-input of load balancing rotate parameter"; + } + leaf fex { + type boolean; + description "fex based load balancing parameter"; + } + + leaf symmetry { + + type platform_Symmetry; + description "load balancing symmetry parameter"; + } + + leaf encapsulation { + + type platform_Encapsulation; + description "load balancing encapsulation parameter"; + } + } + + grouping platform_Profile-group { + description "Platform Profile"; + + // valid for MTC + leaf spanBufferThresh { + + type platform_ThresPercentage; + description "buffer span threshold"; + } + + leaf qosGrp0BufferThresh { + + type platform_ThresPercentage; + description "buffer qos group 0 threshold"; + } + + leaf qosGrp1BufferThresh { + + type platform_ThresPercentage; + description "buffer qos group 1 threshold"; + } + + leaf qosGrp2BufferThresh { + + type platform_ThresPercentage; + description "buffer qos group 2 threshold"; + } + + leaf qosGrp3BufferThresh { + + type platform_ThresPercentage; + description "buffer qos group 3 threshold"; + } + + leaf qosGrp4BufferThresh { + + type platform_ThresPercentage; + description "buffer qos group 4 threshold"; + } + + // Hardware Profile Related Properties + container module-items { + list Module-list { + key "moduleId"; + + uses platform_Module-group; + description "Module list"; + } + description "Module"; + } + + // Packet Drop Related Properties + container packetdrop-items { + + uses platform_PacketDrop-group; + description "Packet Drop config"; + } + } + + grouping platform_Module-group { + description "Module"; + + leaf moduleId { + + type platform_slotNumber; + description "Module number on the switch"; + } + + leaf infoPortThresh { + + type platform_portThresPercentage; + description "buffer info port-threshold threshold"; + } + + leaf infoPollInt { + + type platform_Interval; + description "buffer info poll-interval timer"; + } + leaf infoSyslogInt { + type uint32 { + range "0..100000"; + } + default "120"; + description "buffer info syslog-interval timer"; + } + } + + grouping platform_PacketDrop-group { + description "Packet Drop config"; + leaf preTriggerSampling { + type uint8 { + range "1..16"; + } + default "8"; + description "Packet Drop Pre-Sampling Rate"; + } + leaf postTriggerSampling { + type uint8 { + range "1..16"; + } + default "16"; + description "Packet Drop Post-Sampling Rate"; + } + + leaf dropTrigger { + + type platform_TriggerType; + description "Packet Drop Trigger"; + } + + leaf sourceScope { + + type platform_SourceScope; + description "Packet Drop Capture Scope"; + } + + leaf sourceInterface { + + type nw_IfId; + description "Capture Entity"; + } + leaf sourceInterfaceQosGrp { + type uint8 { + range "0..8"; + } + default "0"; + description "Capture Entity QosGroup"; + } + leaf captureCount { + type uint16 { + range "2..1024"; + } + default "304"; + description "Packet Drop Capture Count"; + } + leaf captureTimer { + type uint16 { + range "1..429"; + } + description "Packet Drop Capture Timer (Micro-Seconds)"; + } + leaf packetDropEnable { + type boolean; + default "false"; + description "Packet Drop Enable"; + } + + // Profile Related Properties + container dropprofile-items { + list DropProfile-list { + key "profileName"; + + uses platform_DropProfile-group; + description "Packet Drop config list"; + } + description "Packet Drop config"; + } + } + + grouping platform_DropProfile-group { + description "Packet Drop config"; + leaf profileName { + type string { + length "1..40"; + } + description "Packet Drop Profile Name"; + } + leaf startThreshold { + type uint16 { + range "0..65535"; + } + default "0"; + description "Packet Drop Profile Start-Threshold"; + } + leaf stopThreshold { + type uint16 { + range "0..65535"; + } + default "0"; + description "Packet Drop Profile Stop-Threshold"; + } + + // Profile Interface Related Properties + container profileinterface-items { + list ProfileInterface-list { + key "profileInterface"; + + uses platform_ProfileInterface-group; + description "Packet Drop config list"; + } + description "Packet Drop config"; + } + } + + grouping platform_ProfileInterface-group { + description "Packet Drop config"; + + leaf profileInterface { + + type nw_IfId; + description "Packet Drop Profile Interface"; + } + leaf qosGrp0 { + type boolean; + default "false"; + description "Packet Drop Profile Qosgrp 0"; + } + leaf qosGrp1 { + type boolean; + default "false"; + description "Packet Drop Profile Qosgrp 1"; + } + leaf qosGrp2 { + type boolean; + default "false"; + description "Packet Drop Profile Qosgrp 2"; + } + leaf qosGrp3 { + type boolean; + default "false"; + description "Packet Drop Profile Qosgrp 3"; + } + leaf qosGrp4 { + type boolean; + default "false"; + description "Packet Drop Profile Qosgrp 4"; + } + leaf qosGrp5 { + type boolean; + default "false"; + description "Packet Drop Profile Qosgrp 5"; + } + leaf qosGrp6 { + type boolean; + default "false"; + description "Packet Drop Profile Qosgrp 6"; + } + leaf qosGrp7 { + type boolean; + default "false"; + description "Packet Drop Profile Qosgrp 7"; + } + leaf monitorAllQgrps { + type boolean; + default "false"; + description "Packet Drop Profile Monitor Qgrp"; + } + } + + grouping platform_GlobalRandomDetect-group { + description "Congestion-control Random-detect"; + leaf minThreshold { + type uint32; + default "13631280"; + description "Global-buffer min Threshold"; + } + + leaf minThresholdUnit { + + type platform_ThresUnit; + description "Global-buffer max Threshold unit"; + } + leaf maxThreshold { + type uint32; + default "13631280"; + description "Global-buffer max Threshold"; + } + + leaf maxThresholdUnit { + + type platform_ThresUnit; + description "Global-buffer min Threshold unit"; + } + + leaf forwardNonEcn { + + type platform_ConfigState; + description "Forward non ECN capable traffic without WRED dropping"; + } + } + + grouping platform_TcamStatsModule-group { + description "represents module for which TCAM resource utilization is required"; + leaf module { + config "false"; + type uint16; + description "module number for which TCAM resource utilization is required"; + } + + // TCAM resource utilization on the asic instance + container inst-items { + list TcamStatsInst-list { + config "false"; + key "instance"; + + uses platform_TcamStatsInst-group; + description "represents aisc instance number on the module list"; + } + description "represents aisc instance number on the module"; + } + } + + grouping platform_TcamStatsInst-group { + description "represents aisc instance number on the module"; + leaf instance { + config "false"; + type uint16; + description "instance number"; + } + + // TCAM regions on the asic instance + container region-items { + list TcamStatsRegion-list { + config "false"; + key "regionName"; + + uses platform_TcamStatsRegion-group; + description "represents TCAM Region name on the asic instance list"; + } + description "represents TCAM Region name on the asic instance"; + } + } + + grouping platform_TcamStatsRegion-group { + description "represents TCAM Region name on the asic instance"; + leaf regionName { + config "false"; + type string; + description "TCAM region name"; + } + leaf regionSize { + config "false"; + type uint16; + description "carved size of TCAM region"; + } + + // TCAM utilization values for the regions + container utilization-items { + + uses platform_TcamResourceUtilization-group; + description "represents TCAM resouce utilization for the region"; + } + } + + grouping platform_TcamResourceUtilization-group { + description "represents TCAM resouce utilization for the region"; + leaf used { + config "false"; + type uint16; + description "overall used entries for the region"; + } + leaf free { + config "false"; + type uint16; + description "overall free entries for the region"; + } + leaf percent { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "overall percent utilization for the region"; + } + leaf ipv4Used { + config "false"; + type uint16; + description "number of ipv4 access-list entries in the region"; + } + leaf ipv4Percent { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "Ipv4 percent utilization of the region"; + } + leaf ipv6Used { + config "false"; + type uint16; + description "number of ipv6 access-list entries in the region"; + } + leaf ipv6Percent { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "Ipv6 percent utilization of the region"; + } + leaf macUsed { + config "false"; + type uint16; + description "number of mac access-list entries in the region"; + } + leaf macPercent { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "mac percent utilization of the region"; + } + leaf allUsed { + config "false"; + type uint16; + description "all used entries in the region"; + } + leaf allPercent { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "all percent utilization of the region"; + } + leaf otherUsed { + config "false"; + type uint16; + description "used other entries in the region"; + } + leaf otherPercent { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "other percent utilization of the region"; + } + } + + grouping platform_NVE-group { + description "Nve Configs"; + leaf id { + type uint16; + description "int nve"; + } + leaf ipmcIndexSize { + type uint32 { + range "1000..7000"; + } + default "3000"; + description "global ipmc index size"; + } + + leaf overlayVlanId { + + type l2_VlanBitmap; + description "nve overlay vlan id range"; + } + container infravlan-items { + list InfraVlan-list { + key "id"; + + uses platform_InfraVlan-group; + description "InfraVlan Config list"; + } + description "InfraVlan Config"; + } + + container qosmode-items { + + uses platform_QosMode-group; + description "NVE Qos mode configuration"; + } + } + + grouping platform_InfraVlan-group { + description "InfraVlan Config"; + + leaf id { + + type platform_infraVlanId; + description "Id for all vlans that are infravlan enabled"; + } + + leaf force { + + type platform_infraVlanForce; + description "Force flag if infra vlan added by force"; + } + } + + grouping platform_QosMode-group { + description "NVE Qos mode configuration"; + + leaf pipe { + + type platform_QosModePipe; + description "NVE Qos mode configuration"; + } + } + + grouping platform_ForwardingMode-group { + description "Forwarding Mode Property"; + + // description + leaf forwardingModeType { + + type platform_forwardingModeSelector; + description "Forwarding Mode Type"; + } + + leaf lpmEntryWarp { + + type platform_forwardingModeLpmEntryWarp; + description "Forwarding Mode Warp LPM Entry"; + } + + leaf hostEntryWarp { + + type platform_forwardingModeHostEntryWarp; + description "Forwarding Mode Warp Host Entry"; + } + + leaf l2EntryWarp { + + type platform_forwardingModeL2EntryWarp; + description "Forwarding Mode Warp L2 Entry"; + } + + leaf mcstEntryWarp { + + type platform_forwardingModeMcstEntryWarp; + description "Forwarding Mode Warp Mcast Entry"; + } + + leaf lpmEntryNormal { + + type platform_forwardingModeLpmEntryNormal; + description "Forwarding Mode Normal LPM Entry"; + } + + leaf mcstEntryNormal { + + type platform_forwardingModeMcstEntryNormal; + description "Forwarding Mode Normal Mcast Entry"; + } + + leaf fwdModeCfgFailed { + config "false"; + + type platform_forwardingModeConfigFailed; + description "Forwarding Mode Config Failed"; + } + } + + grouping platform_Ecmp-group { + description "represents hardware related ecmp properties"; + + leaf ecmpResilientMode { + + type platform_AdminState; + description "Configure ECMP resilient mode"; + } + + leaf ecmpReuse { + + type platform_AdminState; + description "Enable ECMP reuse to scale"; + } + + leaf ecmpAutoRecoveryThreshold { + + type platform_Percent; + description "Configure ECMP Auto recovery mode"; + } + } + + grouping platform_IpL3-group { + description "represents platform config related ip L3 properties"; + + leaf ipredirectHwDrop { + + type nw_AdminSt; + default "disabled"; + description "IP Redirect Hardware Drop Status"; + } + + leaf routingL3ScaleEnable { + + type platform_AdminState; + description "Configure Routing L3Scale"; + } + } + + grouping platform_Qos-group { + description "Hardware qos type"; + + // Buffer peak configuraion for counter0 classes + leaf bufPeakMonitorCnt0Class0 { + + type platform_ConfigureSt; + description "Used to configure/unconfigure buffer peak monitor for counter 0 class 0"; + } + + leaf bufPeakMonitorCnt0Class1 { + + type platform_ConfigureSt; + description "Used to configure/unconfigure buffer peak monitor for counter 0 class 1"; + } + + leaf bufPeakMonitorCnt0Class2 { + + type platform_ConfigureSt; + description "Used to configure/unconfigure buffer peak monitor for counter 0 class 2"; + } + + leaf bufPeakMonitorCnt0Class3 { + + type platform_ConfigureSt; + description "Used to configure/unconfigure buffer peak monitor for counter 0 class 3"; + } + + leaf bufPeakMonitorCnt0Class4 { + + type platform_ConfigureSt; + description "Used to configure/unconfigure buffer peak monitor for counter 0 class 4"; + } + + leaf bufPeakMonitorCnt0Class5 { + + type platform_ConfigureSt; + description "Used to configure/unconfigure buffer peak monitor for counter 0 class 5"; + } + + leaf bufPeakMonitorCnt0Class6 { + + type platform_ConfigureSt; + description "Used to configure/unconfigure buffer peak monitor for counter 0 class 6"; + } + + leaf bufPeakMonitorCnt0Class7 { + + type platform_ConfigureSt; + description "Used to configure/unconfigure buffer peak monitor for counter 0 class 7"; + } + leaf macIpgVal { + type uint16 { + range "12..63"; + } + default "12"; + description "To configure MAC IPG Value in bytes"; + } + leaf dppMaxNumPkts { + type uint32 { + range "1..1023"; + } + default "120"; + description "To configure the max number of packets to prioritize"; + } + leaf dppAgePeriod { + type uint32 { + range "5000..1000000"; + } + default "5000"; + description "To configure DPP aging period in microseconds"; + } + leaf etrapAgePeriod { + type uint32 { + range "1..1000000"; + } + default "50"; + description "To configure ETRAP aging period in microseconds"; + } + leaf etrapBandwidthThreshold { + type uint32 { + range "1..1073741824"; + } + default "500"; + description "To configure ETRAP aging period in bytes"; + } + leaf etrapByteCount { + type uint32 { + range "1..1048575"; + } + default "1048555"; + description "To configure number of bytes to become elephant flow"; + } + + // Per output queue drops configuration + leaf oqDropsType { + + type platform_OqDropsType; + description "Type of per output queue drops"; + } + + // AFD Profile configuration + leaf qosAfdNSBuffProfile { + + type platform_QosAfdBufferProfileOptions; + description "To configure approximate fair dropping profile"; + } + leaf qNoisePercent { + type uint16 { + range "0..100"; + } + default "20"; + description "To configure queue noise threshold in percentage"; + } + leaf pgHdrmReserve { + type uint8 { + range "20..100"; + } + default "100"; + description "Percent of Hdrm to reserve"; + } + leaf pgMinValue { + type uint8 { + range "0..32"; + } + default "0"; + description "PG Min Value"; + } + leaf pgNoMin { + type boolean; + default "false"; + description "PG no-min"; + } + + leaf classify { + + type platform_ConfigState; + description "Qos classification"; + } + + leaf ipg { + + type platform_ConfigState; + description "Include IPG in shape/police"; + } + + leaf pgShare { + + type platform_ConfigState; + default "Enabled"; + description "PG Shared Buffer Usage"; + } + leaf burstDetectMaxRecords { + type uint16 { + range "200..2000"; + } + default "1000"; + description "Configure the max number of burst records to monitor"; + } + + leaf burstDetectRiseThreshold { + + type platform_Threshold; + description "Threshold bytes to start monitoring burst"; + } + + leaf burstDetectRiseThreshUnit { + + type platform_ThreshUnit; + description "Units for rise-threshold value"; + } + + leaf burstDetectFallThreshold { + + type platform_Threshold; + description "Threshold bytes to stop monitoring burst"; + } + + leaf burstDetectFallThreshUnit { + + type platform_ThreshUnit; + description "Units for fall-threshold value"; + } + + leaf nsBufferProfile { + + type platform_BufferProfileOptions; + description "Qos NS Buffer Profile"; + } + + leaf eoqStatsClass { + + type platform_QosGroup; + description "Qos eoq Stats Class Qos Group"; + } + leaf nodropQueueYellowThresh { + type uint32; + default "0"; + description "No-drop PG's Queue yellow threshold"; + } + leaf nodropQueueGreenThresh { + type uint32; + default "0"; + description "No-drop PG's Queue green threshold"; + } + leaf nodropQueueGreenThreshFx { + type uint32; + default "0"; + description "No-drop PG's Queue green threshold for FX platforms"; + } + leaf nodropPgSize { + type uint32; + default "0"; + description "Configure No-drop Pool Group size"; + } + leaf nodropPgRedThresh { + type uint32; + default "0"; + description "Configure No-drop PG red threshold"; + } + leaf nodropPgYellowThresh { + type uint32; + default "0"; + description "Configure No-drop PG yellow threshold"; + } + leaf nodropPgGreenThresh { + type uint32; + default "0"; + description "Configure No-drop PG green threshold"; + } + leaf nodropPgSizeFx { + type uint32; + default "0"; + description "Configure No-drop Pool Group size for FX platforms"; + } + leaf cpuSize { + type uint16 { + range "0..1500"; + } + default "0"; + description "CPU Pool Group threshold"; + } + leaf lCpuSize { + type uint16 { + range "0..10000"; + } + default "0"; + description "LCPU Pool Group threshold"; + } + leaf spanSize { + type uint32 { + range "0..10000"; + } + default "0"; + description "Span Pool Group size"; + } + + leaf inputBufferPeak { + + type platform_PeakCountType; + description "peak counter type"; + } + + leaf mcQosGroup3Traffic { + + type platform_QosGroupVal; + description "Qos-group to which to divert qos-group-3 Multicast traffic"; + } + + leaf pfcMcDrop { + + type platform_ConfigState; + description "Drop mcast/bcast traffic on no-drop configured class"; + } + leaf ndResumeOffset { + type uint32; + default "0"; + description "Configure resume offset"; + } + leaf ndDynamicQlimit { + type uint32; + default "0"; + description "Configure q-limit factor"; + } + + // nodrop Innovium Related Properties + container slice-items { + list Slice-list { + key "sliceId"; + + uses platform_Slice-group; + description "Slice config list"; + } + description "Slice config"; + } + container counter-items { + list QosOqStatsConfiguration-list { + key "counterNumber"; + + uses platform_QosOqStatsConfiguration-group; + description "represents module for which TCAM resource utilization is required list"; + } + description "represents module for which TCAM resource utilization is required"; + } + + // Internal Interface Global Config Properties + container intlintfgblqosparams-items { + + uses platform_IntlIntfGblQosParams-group; + description "Internal Interface Global Config"; + } + } + + grouping platform_Slice-group { + description "Slice config"; + leaf sliceId { + type uint32 { + range "0..5"; + } + description "Slice number"; + } + leaf pgTotal { + type uint32 { + range "0..6720000"; + } + default "0"; + description "no-drop threshold PG size"; + } + leaf ndReservedSize { + type uint32 { + range "0..2240000"; + } + default "0"; + description "no-drop reserved size"; + } + leaf dReservedSize { + type uint32 { + range "0..2240000"; + } + default "0"; + description "drop reserved size"; + } + leaf isValid { + type boolean; + default "true"; + description "valid configuration"; + } + } + + grouping platform_QosOqStatsConfiguration-group { + description "represents module for which TCAM resource utilization is required"; + leaf counterNumber { + type uint16 { + range "0..9"; + } + description "Use per port counter number"; + } + + // Qos group for which queuing statistics is to be configured + leaf qosGrpForQueuingStatistics { + + type platform_QosGroupForQueuingStatistics; + description "Qos group for which queuing statistics is to be configured"; + } + + // Oq stats type + leaf oqStatsType { + + type platform_OqStatsType; + description "Type of per output queue statistics"; + } + } + + grouping platform_IntlIntfGblQosParams-group { + description "Internal Interface Global Config"; + + leaf pauseBufferSize { + + type platform_IntlIntfPauseSz; + description "HiGig Pause Buffer Size"; + } + + leaf pauseThreshold { + + type platform_IntlIntfPauseSz; + description "HiGig Pause Threshold"; + } + + leaf resumeThreshold { + + type platform_IntlIntfPauseSz; + description "HiGig Resume Threshold"; + } + + leaf ingressDynamic { + + type platform_DynamicLimit; + description "HiGig Ingress Dynamic Limit"; + } + + leaf egressDynamic { + + type platform_DynamicLimit; + description "HiGig Egress Dynamic Limit"; + } + } + + grouping platform_LinkLevelFlowCtrlWd-group { + description "LLFC WD config"; + + leaf llfcWdEnable { + + type platform_ConfigOnOff; + default "on"; + description "LLFC WD enabled"; + } + } + + grouping platform_PriorFlowCtrlWd-group { + description "PFC WD config"; + + leaf cfgMode { + + type platform_ConfigOnOff; + description "PFC WD enabled"; + } + leaf interval { + type uint16 { + range "100..1000"; + } + default "100"; + description "PFC WD poll interval"; + } + leaf shutdownMultiplier { + type uint8 { + range "1..10"; + } + default "1"; + description "PFC WD Shutdown multiplier"; + } + leaf autoRestoreMultiplier { + type uint8 { + range "0..100"; + } + default "10"; + description "PFC WD Auto shutdown multiplier"; + } + leaf fixedRestoreMultiplier { + type uint8 { + range "0..100"; + } + default "0"; + description "PFC WD Fixed shutdown multiplier"; + } + leaf internalIntfMultiplier { + type uint8 { + range "0..10"; + } + default "2"; + description "PFC WD Internal interface multiplier"; + } + + leaf forcedOn { + + type platform_ConfigOnOff; + description "PFC WD forced on"; + } + } + + grouping platform_WredQueue-group { + description "Enable queue based ECN marking"; + leaf qosGroup0 { + type boolean; + description "Enable queue based ECN marking for qos-group0"; + } + leaf qosGroup1 { + type boolean; + description "Enable queue based ECN marking for qos-group1"; + } + leaf qosGroup2 { + type boolean; + description "Enable queue based ECN marking for qos-group2"; + } + leaf qosGroup3 { + type boolean; + description "Enable queue based ECN marking for qos-group3"; + } + leaf qosGroup4 { + type boolean; + description "Enable queue based ECN marking for qos-group4"; + } + leaf qosGroup5 { + type boolean; + description "Enable queue based ECN marking for qos-group5"; + } + leaf qosGroup6 { + type boolean; + description "Enable queue based ECN marking for qos-group6"; + } + leaf qosGroup7 { + type boolean; + description "Enable queue based ECN marking for qos-group7"; + } + } + + grouping platform_RateLimiter-group { + description "Rate Limiter container for the platform entity "; + leaf rate { + type uint32 { + range "0..100000000"; + } + description "rate value in kbit per sec"; + } + leaf module { + type uint32; + description "module number for which rate is being configured"; + } + } + + grouping platform_TcamTemplate-group { + description "Manages the user defined tcam template"; + + leaf name { + + type platform_TcamTemplateName; + description "Name of the user-defined tcam template"; + } + + leaf refTemplate { + + type platform_RefTemplate; + description "Select a default template as reference"; + } + + // Template Tcam Span Qualify Udfs Subcmd + container udftcamtype-items { + list UdfTcamTemplate-list { + key "udfTcamType udfName"; + + uses platform_UdfTcamTemplate-group; + description "Manages the qualify udf tcam template list"; + } + description "Manages the qualify udf tcam template"; + } + } + + grouping platform_UdfTcamTemplate-group { + description "Manages the qualify udf tcam template"; + + leaf udfTcamType { + + type platform_UdfTcamType; + description "Select the tcam udf type"; + } + + leaf udfName { + + type platform_UdfName; + description "Name of the user-defined tcam udf"; + } + } + + grouping platform_ProactiveCC-group { + description "Proactive Consistency Checker"; + + leaf forwarding { + + type platform_AdminState; + description "Enable Forwarding Proactive-cc"; + } + leaf incrementalTimer { + type uint32 { + range "0..2147483647"; + } + default "10"; + description "Proactive-cc Incremental Session Timer in Seconds"; + } + leaf fulldbTimer { + type uint32 { + range "0..2147483647"; + } + default "86400"; + description "Proactive-cc Fulldb Period Timer in Seconds"; + } + } + + grouping platform_BdEntity-group { + description "Bridge domain"; + leaf descr { + config "false"; + type string; + description "Bridge Domain description"; + } + + // Layer2 Bridge-domain + container bd-items { + list Bd-list { + key "fabEncap"; + + uses platform_Bd-group; + description "vlan object list"; + } + description "vlan object"; + } + } + + grouping platform_Bd-group { + description "vlan object"; + leaf fabEncap { + type string; + description "Fabric Encapsulation for Bridge Domain"; + } + } + + grouping platform_Intf-group { + description "Interface"; + leaf descr { + config "false"; + type string; + description "Interface platform data"; + } + + // This object holds platfrom information at an + // interface level + container if-items { + list If-list { + key "id"; + + uses platform_If-group; + description "Platform data per interface list"; + } + description "Platform data per interface"; + } + } + + grouping platform_If-group { + description "Platform data per interface"; + leaf stormCtrlCpuArp { + type uint16 { + range "0..40000"; + } + default "0"; + description "set arp traffic rate on this interface"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + container mcast-items { + + uses platform_Multicast-group; + description "Multicast Slow Receive"; + } + + container eltmIf-items { + + uses eltm_If-group; + description "Eltm Interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping platform_Multicast-group { + description "Multicast Slow Receive"; + + leaf mcastSlowRcv { + + type platform_mcastSlowRcvState; + description "mcast slow-receiver port"; + } + } + + grouping eltm_If-group { + description "Eltm Interface"; + + // hw bd id (allocated for l3 ports, port-channels) + leaf hwBdId { + config "false"; + + type l2_DomOperId; + description "Hw Bd Id (allocated for L3 Ports, Port-channels)"; + } + } + + grouping platform_LogLevel-group { + description "Config Platform logging level"; + + // logging leve + leaf loggingLevel { + + type platform_LoggingLevel; + description "Logging Level"; + } + + // logging type + leaf loggingType { + config "false"; + + type platform_LoggingType; + description "Logging type"; + } + } + + grouping platform_PoweroffEntity-group { + description "Poweroff Module Config"; + leaf descr { + config "false"; + type string; + description "Poweroff config description"; + } + container poweroffModule-items { + list PoweroffModule-list { + key "id"; + + uses platform_PoweroffModule-group; + description "MO to hold config for all powered off modules list"; + } + description "MO to hold config for all powered off modules"; + } + } + + grouping platform_PoweroffModule-group { + description "MO to hold config for all powered off modules"; + + leaf id { + + type platform_moduleNumberSt; + description "Module identifier for power off property"; + } + + leaf poweroffStatus { + + type platform_poweroffSt; + description "Power off config state for the module [yes/no]"; + } + } + + grouping platform_SysMemTh-group { + description "System Memory Threshold"; + + // Minor System Memory Threshold + leaf memThMinor { + + type platform_SysMemThVal; + description "Minor System Memory Threshold"; + } + + // Severe System Memory Threshold + leaf memThSevere { + + type platform_SysMemThVal; + description "Severe System Memory Threshold"; + } + + // Critical System Memory Threshold + leaf memThCritical { + + type platform_SysMemThVal; + description "Critical System Memory Threshold"; + } + } + + grouping platform_TcamRegion-group { + description "Tcam region type"; + + leaf ingFlowRedirectSize { + + type platform_tcamRegionSize; + description "Size of Egress region in ACX"; + } + + leaf eRaclSize { + + type platform_tcamRegionSize; + description "Egress RACL TCAM region size"; + } + + leaf vpcConvergenceSize { + + type platform_tcamRegionSize; + description "VPC TCAM region size"; + } + + leaf raclLiteSize { + + type platform_tcamRegionSize; + description "RACL TCAM region size"; + } + + leaf ipv6IfaclSize { + + type platform_tcamRegionSize; + description "IPv6 Interface ACL TCAM region size"; + } + + leaf eIpv6RaclSize { + + type platform_tcamRegionSize; + description "Egress IPv6 RACL TCAM region size"; + } + + leaf ifaclLiteSize { + + type platform_tcamRegionSize; + description "Interface ACL Lite TCAM region size"; + } + + leaf vaclSize { + + type platform_tcamRegionSize; + description "Virtual ACL TCAM region size"; + } + + leaf ifaclSize { + + type platform_tcamRegionSize; + description "Interface ACL TCAM region size"; + } + + leaf eVaclSize { + + type platform_tcamRegionSize; + description "Egress VACL TCAM region size"; + } + + leaf qosSize { + + type platform_tcamRegionSize; + description "QOS TCAM region size"; + } + + leaf raclSize { + + type platform_tcamRegionSize; + description "RACL TCAM region size"; + } + + leaf ingFlowSize { + + type platform_flowTcamRegionSize; + description "Ingress Flow TCAM region size"; + } + + leaf natSize { + + type platform_tcamRegionSize; + description "NAT TCAM region size"; + } + + leaf tcpNatSize { + + type platform_TcpNatTcamRegionSize; + description "TCP NAT TCAM region size"; + } + + leaf macIfaclSize { + + type platform_tcamRegionSize; + description "MAC Interface ACL TCAM region size"; + } + + leaf eQosSize { + + type platform_tcamRegionSize; + description "Egress Qos TCAM region size"; + } + + leaf eIpv6QosSize { + + type platform_tcamRegionSize; + description "Egress IPV6 Qos TCAM region size"; + } + + leaf eMacQosSize { + + type platform_tcamRegionSize; + description "Egress Mac Qos TCAM region size"; + } + + leaf eQosLiteSize { + + type platform_tcamRegionSize; + description "Egress Qos Lite TCAM region size"; + } + + leaf ipsgSize { + + type platform_tcamRegionSize; + description "IPSG TCAM region size"; + } + + leaf ipv6QosSize { + + type platform_tcamRegionSize; + description "IPV6 QoS TCAM region size"; + } + + leaf ipv6RaclSize { + + type platform_tcamRegionSize; + description "IPV6 RACL TCAM region size"; + } + + leaf mcastBidirSize { + + type platform_tcamRegionSize; + description "MCAST BIDIR TCAM region size"; + } + + leaf macVqosSize { + + type platform_tcamRegionSize; + description "MAC VLAN QoS TCAM region size"; + } + + leaf fcoeIngressSize { + + type platform_tcamRegionSize; + description "Ingress FCoE Counters size"; + } + + leaf fcoeEgressSize { + + type platform_tcamRegionSize; + description "Egress FCoE Counters size"; + } + + leaf ifaclUdfSize { + + type platform_tcamRegionSize; + description "IPV4 IFACL SPAN UDF size"; + } + + leaf ipv6L3qosSize { + + type platform_tcamRegionSize; + description "IPV6 L3 QoS TCAM region size"; + } + + leaf ipv6VaclSize { + + type platform_tcamRegionSize; + description "IPV6 VACL TCAM region size"; + } + + leaf ipv6VqosSize { + + type platform_tcamRegionSize; + description "IPV6 VLAN QoS TCAM region size"; + } + + leaf macL3qosSize { + + type platform_tcamRegionSize; + description "MAC L3 QoS TCAM region size"; + } + + leaf macQosSize { + + type platform_tcamRegionSize; + description "MAC QoS TCAM region size"; + } + + leaf macVaclSize { + + type platform_tcamRegionSize; + description "MAC VACL TCAM region size"; + } + + leaf mplsSize { + + type platform_tcamRegionSize; + description "MPLS TCAM region size"; + } + + leaf openflowSize { + + type platform_tcamRegionSize; + description "OPENFLOW TCAM region size"; + } + + leaf openflowLiteSize { + + type platform_tcamRegionSize; + description "OPENFLOW Lite TCAM region size"; + } + + leaf qosIntraLiteSize { + + type platform_tcamRegionSize; + description "QoS Intra Lite TCAM region size"; + } + + leaf raclUdfSize { + + type platform_tcamRegionSize; + description "IPV4 RACL SPAN UDF TCAM region size"; + } + + leaf vaclLiteSize { + + type platform_tcamRegionSize; + description "VACL Lite TCAM region size"; + } + + leaf vqosSize { + + type platform_tcamRegionSize; + description "VLAN QoS TCAM region size"; + } + + leaf vqosIntraLiteSize { + + type platform_tcamRegionSize; + description "VLAN QoS Intra Lite TCAM region size"; + } + + leaf vxlanp2pSize { + + type platform_tcamRegionSize; + description "VXLAN P2P TCAM region size"; + } + + leaf mvpnSize { + + type platform_mvpnTcamRegionSize; + description "MVPN TCAM region size"; + } + + leaf coppSize { + + type platform_tcamRegionSize; + description "Ingress Copp TCAM region size"; + } + + leaf coppSystemSize { + + type platform_tcamRegionSize; + description "Copp System TCAM region size"; + } + + leaf l3qosIntraLiteSize { + + type platform_tcamRegionSize; + description "L3 QoS Intra Lite TCAM region size"; + } + + leaf sviSize { + + type platform_tcamRegionSize; + description "Ingress SVI Counters TCAM region size"; + } + + leaf arpaclSize { + + type platform_tcamRegionSize; + description "ARP ACL TCAM region size"; + } + + leaf pbrSize { + + type platform_tcamRegionSize; + description "IPV4 PBR TCAM region size"; + } + + leaf ipv6PbrSize { + + type platform_tcamRegionSize; + description "IPV6 PBR TCAM region size"; + } + + leaf supSize { + + type platform_tcamRegionSize; + description "SUP TCAM region size"; + } + + leaf qoslblSize { + + type platform_tcamRegionSize; + description "Qos Label TCAM region size"; + } + + leaf ipv6SpanSize { + + type platform_tcamRegionSize; + description "IPV6 SPAN TCAM region size"; + } + + leaf ipv6SpanL2Size { + + type platform_tcamRegionSize; + description "IPV6 L2 SPAN TCAM region size"; + } + + leaf ipv6SupSize { + + type platform_tcamRegionSize; + description "IPV6 SUP TCAM region size"; + } + + leaf fhsSize { + + type platform_tcamRegionSize; + description "FHS TCAM region size"; + } + + leaf n9kArpaclSize { + + type platform_tcamRegionSize; + description "n9k-arp-acl TCAM region size"; + } + leaf mplsDoublewide { + type boolean; + description "MPLS double-wide TCAM region"; + } + leaf openflowDoublewide { + type boolean; + description "Openflow double-wide TCAM region"; + } + + leaf cfgFault { + config "false"; + + type platform_TcamRegionCfgFault; + description "TcamRegion carving fault"; + } + leaf cfgFaultMsg { + config "false"; + type string { + length "1..2048"; + } + description "TcamRegion carving fault message"; + } + + leaf cfgFaultBmp { + config "false"; + + type platform_TcamRegionCfgFaultBmp; + description "TCAM region config fault bit map"; + } + leaf reinitDefaults { + config "false"; + type boolean; + description "Re-initializing default values"; + } + + // WARNING: MO Type "base:Uint32Array128" is unknown in the source model + /* + property { + MTEPKG platform; + MTEMO TcamRegion; + MTESRC /data/irvine/REL_9_3_13_59/app_bi/model/specific/mo/switch/platform/pltfm/tcam_region.xml; + name tcamRegionSizesArray0To127; + type base:Uint32Array128; + mod implicit; + owner oper; + label Tcam Region Sizes of regions 0-127 to be sent from backend(pltfm_config) to frontend; + } + */ + + + // WARNING: MO Type "base:Uint32Array128" is unknown in the source model + /* + property { + MTEPKG platform; + MTEMO TcamRegion; + MTESRC /data/irvine/REL_9_3_13_59/app_bi/model/specific/mo/switch/platform/pltfm/tcam_region.xml; + name tcamRegionSizesArray128To255; + type base:Uint32Array128; + mod implicit; + owner oper; + label Tcam Region Sizes of regions 128-255 to be sent from backend(pltfm_config) to frontend; + } + */ + + + container tcamregionextd-items { + + uses platform_TcamRegionExtended-group; + description "Tcam region type"; + } + } + + grouping platform_TcamRegionExtended-group { + description "Tcam region type"; + + leaf ingIfaclSize { + + type platform_ingIfaclTcamRegionSize; + description "Ingress Ifacl TCAM region size"; + } + + leaf ingRaclSize { + + type platform_ingRaclTcamRegionSize; + description "Ingress Racl TCAM region size"; + } + + leaf ingVlanQosSize { + + type platform_ingVlanTcamRegionSize; + description "Ingress L3VlanQos TCAM region size"; + } + + leaf ingSupSize { + + type platform_flowTcamRegionSize; + description "Ingress SUP TCAM region size"; + } + + leaf egrSupSize { + + type platform_EgrSupSize; + description "Egress SUP TCAM region size"; + } + + // hw-telemtry available in Innovium platform + leaf hwTelemetrySize { + + type platform_tcamRegionSize; + description "hw-telemetry TCAM region size"; + } + + // e-hw-telemtry available in Innovium platform + leaf egrHwTelemetrySize { + + type platform_tcamRegionSize; + description "e-hw-telemetry TCAM region size"; + } + + leaf ifaclAllSize { + + type platform_tcamRegionSize; + description "pacl-all TCAM region size"; + } + + leaf eIfaclAllSize { + + type platform_tcamRegionSize; + description "e-pacl-all TCAM region size"; + } + + leaf raclAllSize { + + type platform_tcamRegionSize; + description "racl-all TCAM region size"; + } + + leaf ingL2QosSize { + + type platform_tcamRegionSize; + description "ing-l2-qos TCAM region size"; + } + + leaf ingL2L3QosSize { + + type platform_tcamRegionSize; + description "ing-l2-l3-qos TCAM region size"; + } + + leaf spanSize { + + type platform_tcamRegionSize; + description "span TCAM region size"; + } + + leaf egrL2QosSize { + + type platform_tcamRegionSize; + description "egr-l2-qos TCAM region size"; + } + + leaf egrL3VlanQosSize { + + type platform_tcamRegionSize; + description "egr-l3-vlan-qos TCAM region size"; + } + + leaf ingRbaclSize { + + type platform_tcamRegionSize; + description "ing-rbacl TCAM region size"; + } + + leaf egrRaclSize { + + type platform_tcamRegionSize; + description "egr-racl TCAM region size"; + } + + leaf redirectV4Size { + + type platform_redirectV4TcamRegionSize; + description "redirect_v4 TCAM region size"; + } + + leaf spanTahSize { + + type platform_spanTahTcamRegionSize; + description "span Tahoe TCAM region size"; + } + + leaf ingL2SpanFilterSize { + + type platform_ingL2SpanFilterTcamRegionSize; + description "ing-l2-span-filter TCAM region size"; + } + + leaf ingL3SpanFilterSize { + + type platform_ingL3SpanFilterTcamRegionSize; + description "ing-l3-span-filter TCAM region size"; + } + + leaf ingL2QosTahSize { + + type platform_ingL2QosTahTcamRegionSize; + description "ing-l2-qos Tahoe TCAM region size"; + } + leaf ifaclPerPortStats { + type boolean; + default "false"; + description "ifacl region with per-port-stats "; + } + leaf ipv6IfaclPerPortStats { + type boolean; + default "false"; + description "ipv6-ifacl region with per-port-stats "; + } + leaf macIfaclPerPortStats { + type boolean; + default "false"; + description "mac-ifacl region with per-port-stats "; + } + leaf ifaclAllPerPortStats { + type boolean; + default "false"; + description "ifacl-all region with per-port-stats "; + } + leaf raclPerPortStats { + type boolean; + default "false"; + description "racl region with per-port-stats "; + } + leaf ipv6RaclPerPortStats { + type boolean; + default "false"; + description "ipv6-racl region with per-port-stats "; + } + leaf raclAllPerPortStats { + type boolean; + default "false"; + description "racl-all region with per-port-stats "; + } + leaf eRaclPerPortStats { + type boolean; + default "false"; + description "e-racl region with per-port-stats "; + } + leaf eIpv6RaclPerPortStats { + type boolean; + default "false"; + description "e-ipv6-racl region with per-port-stats "; + } + leaf eIfaclAllPerPortStats { + type boolean; + default "false"; + description "e-ifacl-all region with per-port-stats "; + } + + leaf cfgFault { + config "false"; + + type platform_TcamRegionCfgFault; + description "TcamRegion carving fault"; + } + leaf cfgFaultMsg { + config "false"; + type string { + length "1..2048"; + } + description "TcamRegion carving fault message"; + } + + leaf cfgFaultBmp { + config "false"; + + type platform_TcamRegionExtdCfgFaultBmp; + description "TCAM region config fault bit map"; + } + leaf reinitDefaults { + config "false"; + type boolean; + description "Re-initializing default values"; + } + + // WARNING: MO Type "base:Uint32Array128" is unknown in the source model + /* + property { + MTEPKG platform; + MTEMO TcamRegionExtended; + MTESRC /data/irvine/REL_9_3_13_59/app_bi/model/specific/mo/switch/platform/pltfm/tcam_region.xml; + name tcamRegionSizesArray0To127; + type base:Uint32Array128; + mod implicit; + owner oper; + label Tcam Region Sizes of regions 0-127 to be sent from backend(pltfm_config) to frontend; + } + */ + + + // WARNING: MO Type "base:Uint32Array128" is unknown in the source model + /* + property { + MTEPKG platform; + MTEMO TcamRegionExtended; + MTESRC /data/irvine/REL_9_3_13_59/app_bi/model/specific/mo/switch/platform/pltfm/tcam_region.xml; + name tcamRegionSizesArray128To255; + type base:Uint32Array128; + mod implicit; + owner oper; + label Tcam Region Sizes of regions 128-255 to be sent from backend(pltfm_config) to frontend; + } + */ + + leaf ifaclPerPortStatsOper { + type boolean; + default "false"; + description "ifacl region with per-port-stats (used for ISSU)"; + } + leaf ipv6IfaclPerPortStatsOper { + type boolean; + default "false"; + description "ipv6-ifacl region with per-port-stats (used for ISSU)"; + } + leaf macIfaclPerPortStatsOper { + type boolean; + default "false"; + description "mac-ifacl region with per-port-stats (used for ISSU)"; + } + leaf ifaclAllPerPortStatsOper { + type boolean; + default "false"; + description "ifacl-all region with per-port-stats (used for ISSU)"; + } + leaf raclPerPortStatsOper { + type boolean; + default "false"; + description "racl region with per-port-stats (used for ISSU)"; + } + leaf ipv6RaclPerPortStatsOper { + type boolean; + default "false"; + description "ipv6-racl region with per-port-stats (used for ISSU)"; + } + leaf raclAllPerPortStatsOper { + type boolean; + default "false"; + description "racl-all region with per-port-stats (used for ISSU)"; + } + leaf eRaclPerPortStatsOper { + type boolean; + default "false"; + description "e-racl region with per-port-stats (used for ISSU)"; + } + leaf eIpv6RaclPerPortStatsOper { + type boolean; + default "false"; + description "e-ipv6-racl region with per-port-stats (used for ISSU)"; + } + leaf eIfaclAllPerPortStatsOper { + type boolean; + default "false"; + description "e-ifacl-all region with per-port-stats (used for ISSU)"; + } + } + + grouping platform_LatencyMonitor-group { + description "Latency Monitor Property"; + + // description + leaf sampling { + + type platform_latencyMonitorSampling; + description "Latency Monitor Sampling"; + } + + leaf latencyMonitorThreshholdAvg { + + type platform_latencyMonitorThreshholdAv; + description "Average latency monitor threshold"; + } + + leaf latencyMonitorThreshholdMax { + + type platform_latencyMonitorThreshholdMx; + description "Maximum latency monitor threshold"; + } + + leaf latencyMonitorState { + + type platform_latencyMonitorSt; + description "Latency monitor state"; + } + } + + grouping platform_BufferMonitor-group { + description "Buffer Monitor Property"; + + // description + leaf sampling { + + type platform_bufferMonitorSampling; + description "Buffer Monitor Sampling"; + } + + leaf bufferMonitorThreshhold { + + type platform_bufferMonitorThreshhold; + description "Buffer monitor threshold"; + } + + leaf bufferMonitorState { + + type platform_bufferMonitorSt; + description "Buffer monitor state"; + } + + leaf bufferMonitorMode { + + type platform_bufferMonitorMd; + description "Buffer monitor mode"; + } + } + + grouping platform_PfcMmuBuffer-group { + description "Pfc mmu buffer Property"; + + // description + leaf mmuBufferState { + + type platform_pfcMmuBufferSt; + description "Pfc Buffer monitor state"; + } + + leaf bufferReservation { + + type platform_pfcMmuBufferRes; + description "Percentage of shared pool buffers to be reserved"; + } + + leaf cfgFault { + config "false"; + + type platform_pfcMmuCfgFault; + description "Fault handling for pfc mmu buffer config"; + } + } + + grouping platform_UdfEntity-group { + description "UdfEntity"; + leaf descr { + type string; + description "UdfEntity Description"; + } + container udf-items { + list Udf-list { + key "name"; + + uses platform_Udf-group; + description "Udf list"; + } + description "Udf"; + } + } + + grouping platform_Udf-group { + description "Udf"; + leaf name { + type string { + length "1..16"; + } + description "Udf Name"; + } + + leaf offsetBase { + + type platform_UdfOffsetBase; + description "Offset Base"; + } + leaf offsetPosition { + type uint8 { + range "0..127"; + } + description "offsetPosition from base 0-127"; + } + leaf offsetLength { + type uint8 { + range "1..2"; + } + description "offsetLength 1-2"; + } + leaf qualifySpan { + type boolean; + default "false"; + description "qualifySpan"; + } + leaf qualifySpanV6 { + type boolean; + default "false"; + description "qualifySpanV6"; + } + leaf qualifySpanV6L2 { + type boolean; + default "false"; + description "qualifySpanV6L2"; + } + leaf qualifyIfacl { + type boolean; + default "false"; + description "Configure UDFs to be qualified for IFACL region"; + } + leaf qualifyRacl { + type boolean; + default "false"; + description "Configure UDFs to be qualified for RACL region"; + } + leaf qualifyVacl { + type boolean; + default "false"; + description "Configure UDFs to be qualified for VACL region"; + } + leaf qualifyIpv6Racl { + type boolean; + default "false"; + description "Configure UDFs to be qualified for IPV6 RACL region"; + } + leaf qualifyRaclAll { + type boolean; + default "false"; + description "Configure UDFs to be qualified for RACL ALL region"; + } + leaf qualifySpanAll { + type boolean; + default "false"; + description "Configure UDFs to be qualified for SPAN ALL region"; + } + + // Fault handling related + leaf cfgFault { + config "false"; + + type platform_UdfCfgFault; + description "cfgFault"; + } + } + + grouping platform_Nexus9000v-group { + description "Nexus9000v Operational Data MO"; + + // Networking policy for virtual platform + container netpolicy-items { + + uses platform_NetPolicy-group; + description "Virtual platform networking policy"; + } + } + + grouping platform_NetPolicy-group { + description "Virtual platform networking policy"; + } + + grouping satm_Entity-group { + description "Satellite Manager Entity"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Discovered extended chassis + container dextch-items { + list DExtCh-list { + config "false"; + key "vendor model ser"; + + uses satm_DExtCh-group; + description "Discovered Extended Chassis list"; + } + description "Discovered Extended Chassis"; + } + + // Configure FEX + container fex-items { + list Fex-list { + key "id"; + + uses satm_Fex-group; + description "FEX Configuration list"; + } + description "FEX Configuration"; + } + + // Fabric port definition + container fabp-items { + list FabP-list { + config "false"; + key "id"; + + uses satm_FabP-group; + description "Fabric Port list"; + } + description "Fabric Port"; + } + } + + grouping satm_DExtCh-group { + description "Discovered Extended Chassis"; + + // Operational state + leaf operSt { + config "false"; + + type satm_ExtChOperSt; + description "Operational State"; + } + + // Extended chassis software version + leaf ver { + config "false"; + + type cap_Version; + description "Software Version"; + } + + // Switch software version + leaf swVer { + config "false"; + + type cap_Version; + description "Switch Software Version"; + } + + // Interim extended chassis software version + leaf intVer { + config "false"; + + type cap_Version; + description "Interim Software Version"; + } + + // Interim switch software version + leaf swIntVer { + config "false"; + + type cap_Version; + description "Interim Switch Software Version"; + } + + // Extended chassis software generation + leaf swGen { + config "false"; + + type satm_SwGen; + description "Software Generation"; + } + + // Control channel fabric port + leaf controlFPort { + config "false"; + + type nw_IfId; + description "Control Channel Fabric Port"; + } + + // The vendor manufacturing this device. + leaf vendor { + config "false"; + + type eqpt_Vendor; + description "Vendor"; + } + + // The device model + leaf model { + config "false"; + + type eqpt_Model; + description "Model"; + } + + // The device revision. + leaf rev { + config "false"; + + type eqpt_Revision; + description "Revision"; + } + + // The device serial number. + leaf ser { + config "false"; + + type eqpt_Serial; + description "Serial Number"; + } + + // Identifier for the item + leaf id { + config "false"; + + type eqpt_Id { + range "101..199"; + } + description "ID"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping satm_Fex-group { + description "FEX Configuration"; + leaf id { + type uint32 { + range "1..199"; + } + description "FEX number"; + } + leaf descr { + type string { + length "0..22"; + } + description "FEX description"; + } + leaf serialNumber { + type string { + length "0..20"; + } + description "Chassis serial number"; + } + } + + grouping satm_FabP-group { + description "Fabric Port"; + + // Interface ID of port + leaf id { + config "false"; + + type nw_IfId; + description "ID"; + } + + // Fabric port operational state + leaf operSt { + config "false"; + + type satm_OperSt; + description "Operational State"; + } + + // Extended chassis id + leaf extChId { + config "false"; + + type eqpt_ExtChId; + description "Extended Chassis ID"; + } + + // Fabric port FSM state + leaf fsmSt { + config "false"; + + type satm_FpFsmSt; + description "Fabric FSM State"; + } + leaf remoteLinkId { + config "false"; + type uint16; + description "Remote Link ID of the Fabric Port"; + } + + // Fabric port flags + leaf flags { + config "false"; + + type satm_FportFlags; + description "Fabric Port Flags"; + } + + // Satellite manager host port + container hostp-items { + list HostP-list { + config "false"; + key "id"; + + uses satm_HostP-group; + description "Host Port list"; + } + description "Host Port"; + } + + // Remote fcot definition + container remotefcot-items { + + uses satm_RemoteFcot-group; + description "Remote Fcot"; + } + + // Remote X2 fcot definition + container remotefcotx2-items { + + uses satm_RemoteFcotX2-group; + description "Remote X2 Fcot"; + } + } + + grouping satm_HostP-group { + description "Host Port"; + + // Interface ID of port + leaf id { + config "false"; + + type nw_IfId; + description "ID"; + } + + // Operational state + leaf operSt { + config "false"; + + type satm_HpOperSt; + description "Operational State"; + } + + // Fabric port + leaf fabricPort { + config "false"; + + type nw_IfId; + description "Fabric Port"; + } + } + + grouping satm_RemoteFcot-group { + description "Remote Fcot"; + leaf isFcotPresent { + config "false"; + type boolean; + description "Presence Status"; + } + + // Fcot state + leaf state { + config "false"; + + type ethpm_FcotState; + description "State"; + } + + // Fcot flags + leaf flags { + config "false"; + + type ethpm_FcotFlags; + description "Flags"; + } + + // Fcot type + leaf type { + config "false"; + + type ethpm_FcotType; + description "Type"; + } + leaf typeName { + config "false"; + type string; + description "Type Name"; + } + + // Transceiver type + leaf transceiverType { + config "false"; + + type ethpm_FcotTransceiverType; + description "Transceiver Type"; + } + leaf xcvrId { + config "false"; + type uint8; + description "Transceiver ID"; + } + leaf xcvrExtId { + config "false"; + type uint8; + description "Transceiver Extended ID"; + } + leaf connectType { + config "false"; + type uint8; + description "Connector Type"; + } + + // Xcvr code field + leaf xcvrCode { + config "false"; + + type ethpm_SfpXcvrCodeBytes; + description "Transceiver Code"; + } + leaf encoding { + config "false"; + type uint8; + description "Encoding"; + } + leaf brIn100MHz { + config "false"; + type uint8; + description "Baud Rate"; + } + leaf baseResvd1 { + config "false"; + type uint8; + description "Base Reserved Field"; + } + leaf distInKmFor9u { + config "false"; + type uint8; + description "Distance"; + } + leaf distIn100mFor9u { + config "false"; + type uint8; + description "Distance"; + } + leaf distIn10mFor50u { + config "false"; + type uint8; + description "Distance"; + } + leaf distIn10mFor60u { + config "false"; + type uint8; + description "Distance"; + } + leaf distIn1mForCu { + config "false"; + type uint8; + description "Distance"; + } + leaf baseResvd2 { + config "false"; + type uint8; + description "Base Reserved Field"; + } + leaf vendorName { + config "false"; + type string; + description "Vendor Name"; + } + leaf baseResvd3 { + config "false"; + type uint8; + description "Base Reserved Field"; + } + leaf vendorPn { + config "false"; + type string; + description "Vendor Part Number"; + } + leaf vendorRev { + config "false"; + type string; + description "Vendor Revision"; + } + + // Reserved field 4 + leaf baseResvd4 { + config "false"; + + type ethpm_SfpReserved4Array; + description "Base Reserved Field"; + } + leaf ccid { + config "false"; + type uint8; + description "CCID"; + } + + // Extended option + leaf extOption { + config "false"; + + type ethpm_SfpExtendedOptionBytes; + description "Extended Option"; + } + leaf brMaxMargin { + config "false"; + type uint8; + description "Baud Rate Maximum Margin"; + } + leaf brMinMargin { + config "false"; + type uint8; + description "Baud Rate Minimum Margin"; + } + leaf vendorSn { + config "false"; + type string; + } + leaf dateCode { + config "false"; + type string; + } + leaf diagMonType { + config "false"; + type uint8; + } + leaf enhOption { + config "false"; + type uint8; + } + leaf ccex { + config "false"; + type uint8; + } + + // Vendor data + leaf vendorData { + config "false"; + + type ethpm_X2VendorDataBytes; + description "TBD"; + } + leaf maxSpeed { + config "false"; + type uint32; + } + leaf minSpeed { + config "false"; + type uint32; + } + leaf fcotNum { + config "false"; + type uint8; + } + leaf gigEthCC { + config "false"; + type uint8; + } + leaf fCTxType { + config "false"; + type uint8; + } + } + + grouping satm_RemoteFcotX2-group { + description "Remote X2 Fcot"; + leaf isFcotPresent { + config "false"; + type boolean; + description "Presence Status"; + } + + // Fcot state + leaf state { + config "false"; + + type ethpm_FcotState; + description "State"; + } + + // Fcot flags + leaf flags { + config "false"; + + type ethpm_FcotFlags; + description "Flags"; + } + + // Fcot type + leaf type { + config "false"; + + type ethpm_FcotType; + description "Type"; + } + leaf typeName { + config "false"; + type string; + description "Type Name"; + } + + // Transceiver type + leaf transceiverType { + config "false"; + + type ethpm_FcotTransceiverType; + description "Transceiver Type"; + } + leaf connectType { + config "false"; + type uint8; + } + leaf bitEncoding { + config "false"; + type uint8; + } + + // Bit rate (Mbps) + leaf bitRateMbps { + config "false"; + + type ethpm_X2BitRateBytes; + description "TBD"; + } + leaf protocolType { + config "false"; + type uint8; + } + + // 10G eth code + leaf xgEthCode { + config "false"; + + type ethpm_X2XgEthCodeBytes; + description "TBD"; + } + + // Sonet SDH code + leaf sonetSdhCode { + config "false"; + + type ethpm_X2SonetSdhCodeBytes; + description "TBD"; + } + + // 10G fc code + leaf xgFcCode { + config "false"; + + type ethpm_X2XbFcCodeBytes; + description "TBD"; + } + + // Range + leaf range { + config "false"; + + type ethpm_X2RangeBytes; + description "TBD"; + } + + // Fibre type + leaf fibreType { + config "false"; + + type ethpm_X2FibreTypeBytes; + description "TBD"; + } + + // Wavelength channel 0 + leaf waveLenCh0 { + config "false"; + + type ethpm_X2WavelengthChannelBytes; + description "TBD"; + } + + // Wavelength channel 1 + leaf waveLenCh1 { + config "false"; + + type ethpm_X2WavelengthChannelBytes; + description "TBD"; + } + + // Wavelength channel 2 + leaf waveLenCh2 { + config "false"; + + type ethpm_X2WavelengthChannelBytes; + description "TBD"; + } + + // Wavelength channel 3 + leaf waveLenCh3 { + config "false"; + + type ethpm_X2WavelengthChannelBytes; + description "TBD"; + } + leaf vendorName { + config "false"; + type string; + } + leaf vendorPn { + config "false"; + type string; + } + leaf vendorRev { + config "false"; + type string; + } + leaf vendorSerNo { + config "false"; + type string; + } + leaf dateCode { + config "false"; + type string; + } + leaf fiveVStressEnv { + config "false"; + type uint8; + } + leaf ciscoPid { + config "false"; + type string; + } + leaf ciscoVid { + config "false"; + type string; + } + leaf ciscoSN { + config "false"; + type string; + } + leaf ciscoPN { + config "false"; + type string; + } + leaf ciscoRev { + config "false"; + type string; + } + + // Extended vendor specific info + leaf extVendorSpecific { + config "false"; + + type ethpm_X2ExtendedVendorSpecificInfoBytes; + description "TBD"; + } + leaf maxSpeed { + config "false"; + type uint32; + } + leaf minSpeed { + config "false"; + type uint32; + } + leaf fcotNum { + config "false"; + type uint8; + } + leaf fcotType { + config "false"; + type uint8; + } + leaf gigEthCC { + config "false"; + type uint8; + } + } + + grouping adjacency_Entity-group { + description "Adjacency Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + container inst-items { + + uses adjacency_Inst-group; + description "Adjacency Instance"; + } + } + + grouping adjacency_Inst-group { + description "Adjacency Instance"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + config "false"; + + type nw_InstCtrl; + description "Controls"; + } + + // Ephemeral data + container dom-items { + + // Ephemeral data + list Dom-list { + config "false"; + key "name"; + + uses adjacency_Dom-group; + description "Adjacency Domain list"; + } + description "Adjacency Domain"; + } + } + + grouping adjacency_Dom-group { + description "Adjacency Domain"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + container db-items { + + // Ephemeral data + list Db-list { + config "false"; + key "type"; + + uses adjacency_Db-group; + description "Database list"; + } + description "Database"; + } + } + + grouping adjacency_Db-group { + description "Database"; + + // Ephemeral data + leaf type { + config "false"; + + type adjacency_DbT; + description "Type"; + } + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + container if-items { + + // Ephemeral data + list If-list { + config "false"; + key "ifId"; + + uses adjacency_If-group; + description "Adjacency Interface list"; + } + description "Adjacency Interface"; + } + + // Ephemeral data + container subnetprefix-items { + + uses adjacency_SubnetPrefix-group; + description "Subnet Prefix"; + } + + // Ephemeral data + container aggrprefix-items { + + uses adjacency_AggregatePrefix-group; + description "Aggregate Prefix"; + } + } + + grouping adjacency_If-group { + description "Adjacency Interface"; + + // Ephemeral data + leaf ifId { + config "false"; + + type nw_IfId; + description "Logical Interface ID"; + } + + // Ephemeral data + container ip-items { + + // Ephemeral data + list AdjEp-list { + config "false"; + key "ip"; + + uses adjacency_AdjEp-group; + description "Adjacency list"; + } + description "Adjacency"; + } + } + + grouping adjacency_AdjEp-group { + description "Adjacency"; + leaf ip { + config "false"; + type address_Ip; + description "Address"; + } + + // Ephemeral data + leaf mac { + config "false"; + type address_Mac; + description "MAC"; + } + + // Ephemeral data + leaf operSt { + config "false"; + + type adjacency_AdjOperSt; + description "Operational State"; + } + + // Ephemeral data + leaf physIfId { + config "false"; + + type nw_IfId; + description "Physical Interface ID"; + } + + // Ephemeral data + leaf source { + config "false"; + type string; + description "Source"; + } + + // Flags that this ep has + // Ephemeral data + leaf flags { + config "false"; + + type adjacency_AdjFlags; + description "Flags"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping adjacency_SubnetPrefix-group { + description "Subnet Prefix"; + + // Ephemeral data + container if-items { + + // Ephemeral data + list IfSubnetPrfx-list { + config "false"; + key "ifId"; + + uses adjacency_IfSubnetPrfx-group; + description "Adjacency Interface list"; + } + description "Adjacency Interface"; + } + } + + grouping adjacency_IfSubnetPrfx-group { + description "Adjacency Interface"; + + // Ephemeral data + leaf ifId { + config "false"; + + type nw_IfId; + description "Logical Interface ID"; + } + + // Ephemeral data + container ip-items { + + // Ephemeral data + list SubPrfxEp-list { + config "false"; + key "ip"; + + uses adjacency_SubPrfxEp-group; + description "Subnet Prefix list"; + } + description "Subnet Prefix"; + } + } + + grouping adjacency_SubPrfxEp-group { + description "Subnet Prefix"; + leaf ip { + config "false"; + type address_Ip; + description "Address"; + } + + // Ephemeral data + leaf aggLen { + config "false"; + + type nw_Counter32; + description "Aggregate Length"; + } + + // Ephemeral data + leaf nhCount { + config "false"; + + type nw_Counter32; + description "nh count"; + } + } + + grouping adjacency_AggregatePrefix-group { + description "Aggregate Prefix"; + + // Ephemeral data + container if-items { + + // Ephemeral data + list IfAggrPrfx-list { + config "false"; + key "ifId"; + + uses adjacency_IfAggrPrfx-group; + description "Adjacency Interface list"; + } + description "Adjacency Interface"; + } + } + + grouping adjacency_IfAggrPrfx-group { + description "Adjacency Interface"; + + // Ephemeral data + leaf ifId { + config "false"; + + type nw_IfId; + description "Logical Interface ID"; + } + + // Ephemeral data + container ip-items { + + // Ephemeral data + list AggrPrfxEp-list { + config "false"; + key "ip"; + + uses adjacency_AggrPrfxEp-group; + description "Subnet Prefix list"; + } + description "Subnet Prefix"; + } + } + + grouping adjacency_AggrPrfxEp-group { + description "Subnet Prefix"; + leaf ip { + config "false"; + type address_Ip; + description "Address"; + } + + // Ephemeral data + leaf refCount { + config "false"; + + type nw_Counter32; + description "Reference count"; + } + } + + grouping arp_Entity-group { + description "ARP Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This object holds per arp instance information. There is + // only one instance of arp running in the system today + container inst-items { + + uses arp_Inst-group; + description "ARP Instance"; + } + } + + grouping arp_Inst-group { + description "ARP Instance"; + + // Timeout + leaf timeout { + + type arp_Timeout; + description "ARP Global Timeout"; + } + + // Evpn-Timeout + leaf evpn_timeout { + + type arp_EvpnTimeout; + description "Refresh in EVPN on host moves"; + } + + // Suppression Timeout - After enbaling the timer, If host + // doesn't speak in ARP/GARP within specified timeout L2 + // mode entries will be expired/deleted + leaf suppression_timeout { + + type arp_SuppressionTimeout; + description "Suppression Timeout"; + } + + // Off list Timeout + leaf offListTimeout { + + type arp_OffListTimeout; + description "Off-list timeout"; + } + + // RARP fabric forwarding + leaf rarpFabricFwding { + + type nw_AdminSt; + default "disabled"; + description "RARP Fabric Forwarding"; + } + + // RARP Fabric Fwding Rate + leaf rarpFabricFwdingRate { + + type arp_RarpForwadingRate; + description "RARP Fabric Forwarding Rate"; + } + + // ARP Cache Limit + leaf cacheLimit { + + type arp_ArpCacheLimit; + description "Cache Limit"; + } + + // ARP Cache SysLog Rate + leaf cacheSyslogRate { + + type arp_ArpCacheSyslogRate; + description "Cache Syslog Rate"; + } + + // COS for ARP packet + leaf ipArpCos { + + type arp_IpArpCos; + description "COS for ARP packet"; + } + + // ARP Logging Level + leaf loggingLevel { + + type arp_LoggingLevel; + description "Logging Level"; + } + + // Adjacency Manager Logging Level + leaf adjLoggingLevel { + + type arp_LoggingLevel; + description "Adjacency Events Logging Level"; + } + + leaf ipAdjRouteDistance { + + type arp_AdjRouteDist; + description "IP Adjacency Route Distance"; + } + + // Enable / Disable allow-static-arp-outside-subnet + leaf allowStaticArpOutsideSubnet { + + type nw_AdminSt; + default "disabled"; + description "Allow Static ARP Outside Subnet"; + } + + // Enable / Disable arp sw-replication + leaf arpUnnumSviSwReplication { + + type nw_AdminSt; + default "disabled"; + description "ARP Packets Replication In Software For Unnumbered SVI"; + } + + // Config error in this MO + leaf configErr { + config "false"; + + type arp_ConfigErrInst; + description "Config Error Inst"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Holds GlobalStats information + // Ephemeral data + container globalstats-items { + + uses arp_GlobalStats-group; + description "Global Statistics"; + } + + // This object holds the arp related statistics for L2 Interface + // Ephemeral data + container l2stats-items { + + uses arp_L2Stats-group; + description "This Object Holds The ARP Related Statistics For L2 Interface"; + } + + // This object holds per ARP domain (vrf) information + container dom-items { + list Dom-list { + key "name"; + + uses arp_Dom-group; + description "This Object Holds Per ARP Domain (vrf) Information list"; + } + description "This Object Holds Per ARP Domain (vrf) Information"; + } + + // IpV4 Glean throttling MO + container ipgleanthrottle-items { + + uses arp_Ipv4Throttle-group; + description "Ipv4 throttling"; + } + + // This object holds the size of the Log Tables for + // various types of ARP events + container evtLogs-items { + list EventLogs-list { + key "eventType"; + + uses arp_EventLogs-group; + description "ARP Event Logging list"; + } + description "ARP Event Logging"; + } + + // This object holds IP ARP Sync for VPC + container vpc-items { + + uses arp_Vpc-group; + description "Ip Arp Synchronize"; + } + + // Holds Suppression-cache table oper data + // Ephemeral data + container db-items { + + // Ephemeral data + list DbSupCache-list { + config "false"; + key "type"; + + uses arp_DbSupCache-group; + description " This Object Holds Suppression-Cache Database list"; + } + description " This Object Holds Suppression-Cache Database"; + } + } + + grouping arp_GlobalStats-group { + description "Global Statistics"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + // Ephemeral data + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + // Ephemeral data + leaf ctrl { + config "false"; + + type nw_InstCtrl; + description "Controls"; + } + + // Holds controller-statistics information + // Ephemeral data + container controllerstats-items { + + uses arp_ControllerStats-group; + description "ARP Controller Statistics"; + } + + // Holds VPC related statistics information + // Ephemeral data + container vpcstats-items { + + uses arp_VpcStats-group; + description "ARP VPC statistics"; + } + + // Holds Tunnel statistics information + // Ephemeral data + container tunnelstats-items { + + uses arp_TunnelStats-group; + description "ARP Tunnel statistics"; + } + + // Holds Suppression-cache related statistics + // Ephemeral data + container supcachestats-items { + + uses arp_SupCacheStats-group; + description "ARP suppression cache statistics"; + } + + // Holds open-flow error statistics + // Ephemeral data + container ofastats-items { + + uses arp_OfaStats-group; + description "ARP Open-flow Error statistics"; + } + } + + grouping arp_ControllerStats-group { + description "ARP Controller Statistics"; + + // Ephemeral data + leaf adjAddCount { + config "false"; + type uint64; + description "ARP Controller Adjacency Add Count"; + } + + // Ephemeral data + leaf adjDelCount { + config "false"; + type uint64; + description "ARP Controller Adjacency Delete Count"; + } + + // Ephemeral data + leaf adjAddErrorCount { + config "false"; + type uint64; + description "ARP Controller Adjacency Add Error Count"; + } + + // Ephemeral data + leaf adjDelErrorCount { + config "false"; + type uint64; + description "ARP Controller Adjacency Delete Error Count"; + } + } + + grouping arp_VpcStats-group { + description "ARP VPC statistics"; + + // Ephemeral data + leaf cfsPullDropSinceOff { + config "false"; + type uint64; + description "CFS request dropped as feature is off"; + } + + // Ephemeral data + leaf cfsPushDropSinceOff { + config "false"; + type uint64; + description "CFS push message drop as the feature is off"; + } + + // Ephemeral data + leaf sendIgnorePullReqCfsoe { + config "false"; + type uint64; + description "Ignore to send pull request using CFSoE as the feature is off"; + } + + // Ephemeral data + leaf sendIgnorePushMsgCfsoe { + config "false"; + type uint64; + description "Ignore to send push message using CFSoE as the feature is off"; + } + + // Ephemeral data + leaf imFailCFSPayload { + config "false"; + type uint64; + description "IM api failed while processing CFS payload"; + } + + // Ephemeral data + leaf mcecmFailCFSPayload { + config "false"; + type uint64; + description "MCECM api failed while processing CFS payload"; + } + + // Ephemeral data + leaf invalidMctPcCFSPayload { + config "false"; + type uint64; + description "Invalid MCT port-channel iod while processing CFS payload"; + } + + // Ephemeral data + leaf ptLookFailCFSPayload { + config "false"; + type uint64; + description "PT lookup failed while processing CFS payload"; + } + + // Ephemeral data + leaf cfsRspFailInvalidMct { + config "false"; + type uint64; + description "Sending CFS response failed due to invalid MCT iod while processing CFS payload"; + } + + // Ephemeral data + leaf cfsRspFailCfsPayload { + config "false"; + type uint64; + description "Sending CFS response failed while processing CFS payload"; + } + + // Ephemeral data + leaf retrieveVpcFailPushMsg { + config "false"; + type uint64; + description "Unabled to retrieve VPC id from ifindex while sending push message"; + } + + // Ephemeral data + leaf retIfindexFrmVpcFail { + config "false"; + type uint64; + description "Unabled to retrieve ifindex from vpc id while processing CFS payload"; + } + + // Ephemeral data + leaf retIfindexFrmVpcFailSync { + config "false"; + type uint64; + description "Unabled to retrieve VPC id from ifindex while doing periodic sync"; + } + + // Ephemeral data + leaf rspSentCfsoe { + config "false"; + type uint64; + description "Response sent via CFSoE"; + } + + // Ephemeral data + leaf rspRecvCfsoe { + config "false"; + type uint64; + description "Response received via CFSoE"; + } + + // Ephemeral data + leaf rspRecvCfsoeErr { + config "false"; + type uint64; + description "Response received via CFSoE with errors"; + } + + // Ephemeral data + leaf recvCfsoe { + config "false"; + type uint64; + description "Received message via CFSoE"; + } + + // Ephemeral data + leaf sentFailCfsoe { + config "false"; + type uint64; + description "Send message failed via CFSoE"; + } + + // Ephemeral data + leaf mcecmSendApiFailCfsoe { + config "false"; + type uint64; + description "MCECM send api failed via CFSoE"; + } + + // Ephemeral data + leaf sendCfsoe { + config "false"; + type uint64; + description "Send message succeeded via CFSoE"; + } + + // Ephemeral data + leaf vmctPktDropCount { + config "false"; + type uint64; + description "Total virtual-mct packets dropped"; + } + + // Holds VPC SYNC related statistics + // Ephemeral data + container syncstats-items { + + uses arp_VpcSyncStats-group; + description "ARP VPC Sync statistics"; + } + } + + grouping arp_VpcSyncStats-group { + description "ARP VPC Sync statistics"; + + // Ephemeral data + leaf ptAddFailOfflist { + config "false"; + type uint64; + description "PT add failed while processing offlist"; + } + + // Ephemeral data + leaf mallocFailOfflistDb { + config "false"; + type uint64; + description "Memory alloc failed while processing offlist database"; + } + + // Ephemeral data + leaf timerCreateFailOfflistDb { + config "false"; + type uint64; + description "Timer create failed while processing offlist database"; + } + + // Ephemeral data + leaf adjAddFailOfflistDb { + config "false"; + type uint64; + description "Adjacency addition failed while processing offlist database"; + } + + // Ephemeral data + leaf ptLookupFailOfflistDb { + config "false"; + type uint64; + description "PT lookup failed while processing offlist database"; + } + + // Ephemeral data + leaf vlanMismatchOfflistDb { + config "false"; + type uint64; + description "VLAN mismatch while processing offlist database"; + } + + // Ephemeral data + leaf invalidSviOfflistDb { + config "false"; + type uint64; + description "SVI is invalid while processing offlist database"; + } + + // Ephemeral data + leaf sviDownOfflistDb { + config "false"; + type uint64; + description "SVI is down while processing offlist database"; + } + + // Ephemeral data + leaf mctDownOfflistDb { + config "false"; + type uint64; + description "MCT is down while processing offlist database"; + } + + // Ephemeral data + leaf ctxTypeInvalidOfflistDb { + config "false"; + type uint64; + description "Context type is invalid while processing offlist database"; + } + + // Ephemeral data + leaf vrfInvalidOfflistDb { + config "false"; + type uint64; + description "VRF is invalid while processing offlist database"; + } + + // Ephemeral data + leaf invalidIpOfflistDb { + config "false"; + type uint64; + description "IP address is invalid while processing offlist database"; + } + + // Ephemeral data + leaf ipSanityFailOfflistDb { + config "false"; + type uint64; + description "IP address sanity failed while processing offlist database"; + } + + // Ephemeral data + leaf macSanityFailOfflistDb { + config "false"; + type uint64; + description "MAC address sanity failed while processing offlist database"; + } + + // Ephemeral data + leaf ownRouterMacOfflistDb { + config "false"; + type uint64; + description "Our own router mac while processing offlist database"; + } + + // Ephemeral data + leaf ownIpOfflistDb { + config "false"; + type uint64; + description "Our own ip address while processing offlist database"; + } + + // Ephemeral data + leaf ownvIpOfflistDb { + config "false"; + type uint64; + description "Our own virtual ip address while processing offlist database"; + } + + // Ephemeral data + leaf adjCreateFailOfflistDb { + config "false"; + type uint64; + description "Create adjacency failed while processing offlist database"; + } + + // Ephemeral data + leaf subnetMismatchOfflistDb { + config "false"; + type uint64; + description "Subnet mismatch while processing offlist database"; + } + + // Ephemeral data + leaf dupEntryOfflistDb { + config "false"; + type uint64; + description "Entry exists while processing offlist database"; + } + + // Ephemeral data + leaf ipNotEnOfflistDb { + config "false"; + type uint64; + description "IP not enabled on interface while processing offlist database"; + } + + // Ephemeral data + leaf totDropOfflistDb { + config "false"; + type uint64; + description "Total drop count while processing offlist database"; + } + + // Ephemeral data + leaf totDontDropOfflistDb { + config "false"; + type uint64; + description "Total don't drop count while processing offlist database"; + } + + // Ephemeral data + leaf totAdjAddOfflistDb { + config "false"; + type uint64; + description "Total adjacency additions in offlist database"; + } + + // Ephemeral data + leaf totAdjDelOfflistDb { + config "false"; + type uint64; + description "Total adjacency deletions in offlist database"; + } + + // Ephemeral data + leaf totAdjIgnoredOfflistDb { + config "false"; + type uint64; + description "Total adjacencies ignored as they already exists in offlist database"; + } + + // Ephemeral data + leaf totAdjFrmPeerToAdd { + config "false"; + type uint64; + description "Total adjacencies received from the peer to add"; + } + + // Ephemeral data + leaf totAdjFrmPeerToDel { + config "false"; + type uint64; + description "Total adjacencies received from the peer to delete"; + } + + // Ephemeral data + leaf totAdjSentPeriodically { + config "false"; + type uint64; + description "Total gross adjacencies sent periodically"; + } + + // Ephemeral data + leaf totAdjPeerToAdd { + config "false"; + type uint64; + description "Total adjacencies sent to the peer to add"; + } + + // Ephemeral data + leaf totAdjPeerToDel { + config "false"; + type uint64; + description "Total adjacencies sent to the peer to del"; + } + + // Ephemeral data + leaf totPeriodicSyncAdj { + config "false"; + type uint64; + description "Total periodic sync adjacencies"; + } + + // Ephemeral data + leaf totAdjAddFailDuringSyncSend { + config "false"; + type uint64; + description "Total no of failures in adding adjacenies while periodic sync send"; + } + + // Ephemeral data + leaf totDropDuringSyncInvalidSvi { + config "false"; + type uint64; + description "Total no of drops during periodic sync because of invalid svi"; + } + + // Ephemeral data + leaf totDropSyncSviDown { + config "false"; + type uint64; + description "Total no of drops during periodic sync because of svi being down"; + } + + // Ephemeral data + leaf totDropSyncInvalidCtxt { + config "false"; + type uint64; + description "Total no of drops during periodic sync because of invalid context"; + } + + // Ephemeral data + leaf totDropSyncNullAdj { + config "false"; + type uint64; + description "Total no of drops while processing sync because of NULL Adjacencies"; + } + + // Ephemeral data + leaf totDropSyncNullIp { + config "false"; + type uint64; + description "Total no of drops while processing sync because of NULL IP"; + } + + // Ephemeral data + leaf totSyncAdjAddL2SupCache { + config "false"; + type uint64; + description "Total periodic sync adjacencies added for L2 suppression case"; + } + + // Ephemeral data + leaf totSyncStopBcastPkt { + config "false"; + type uint64; + description "Total periodic sync broadcast packet stopped from syncing to peer"; + } + + // Ephemeral data + leaf totVmctOrphanSyncDropCount { + config "false"; + type uint64; + description "Total virtual-mct orphan hosts stopped from syncing to peer"; + } + } + + grouping arp_TunnelStats-group { + description "ARP Tunnel statistics"; + + // Ephemeral data + leaf totTunnelRcvd { + config "false"; + type uint64; + description "Total tunneled packets received"; + } + + // Ephemeral data + leaf rxForIngressVpc { + config "false"; + type uint64; + description "Tunneled packets rx for ingress vPC"; + } + + // Ephemeral data + leaf rxIngressforGpc { + config "false"; + type uint64; + description "Tunneled packets rx for ingress GPC"; + } + + // Ephemeral data + leaf rxIngressOrphanVpc { + config "false"; + type uint64; + description "Tunneled Packets rx for ingress orphan vPC"; + } + + // Ephemeral data + leaf rxIngressOrphanVpcPlus { + config "false"; + type uint64; + description "Tunneled Packets rx for ingress orphan vPC+"; + } + + // Ephemeral data + leaf totPackSent { + config "false"; + type uint64; + description "Total tunneled packets sent"; + } + + // Ephemeral data + leaf pktSentArpSnoop { + config "false"; + type uint64; + description "Tunneled packets Sent for ARP Snoop"; + } + + // Ephemeral data + leaf pktSentNonlocalVip { + config "false"; + type uint64; + description "Tunneled packets sent for Non-Local VIP"; + } + + // Ephemeral data + leaf pktSentPeerGway { + config "false"; + type uint64; + description "Tunneled Packets sent for Peer Gateway"; + } + + // Ephemeral data + leaf txIngressVpc { + config "false"; + type uint64; + description "Tunneled packets tx for ingress vPC"; + } + + // Ephemeral data + leaf txIngressGpc { + config "false"; + type uint64; + description "Tunneled packets tx for ingress GPC"; + } + + // Ephemeral data + leaf txIngressOrphanVpc { + config "false"; + type uint64; + description "Tunneled Packets tx for ingress orphan vPC"; + } + + // Ephemeral data + leaf txIngressOrphanVpcPlus { + config "false"; + type uint64; + description "Tunneled Packets tx for ingress orphan vPC+"; + } + + // Ephemeral data + leaf totRecvDropped { + config "false"; + type uint64; + description "Total tunnel packets recv dropped"; + } + + // Ephemeral data + leaf totSendDropped { + config "false"; + type uint64; + description "Total tunnel packets send dropped"; + } + + // Ephemeral data + leaf sendFailDrop { + config "false"; + type uint64; + description "Drops due to send failed"; + } + + // Ephemeral data + leaf rcvdInvalidVer { + config "false"; + type uint64; + description "Received packet with invalid version"; + } + + // Ephemeral data + leaf rcvdInvalidPayloadType { + config "false"; + type uint64; + description "Received packet with invalid payload type"; + } + + // Ephemeral data + leaf rcvdMctIf { + config "false"; + type uint64; + description "Received packet on non mct interface"; + } + + // Ephemeral data + leaf rcvdInvalidIngressPort { + config "false"; + type uint64; + } + + // Ephemeral data + leaf dropSentInvalidPort { + config "false"; + type uint64; + description "Drop send packets for invalid ingress port"; + } + + // Ephemeral data + leaf dropRecvInvalidGpcCore { + config "false"; + type uint64; + description "Drop recv pkt, invalid GPC of core switch"; + } + + // Ephemeral data + leaf dropRecvInvalidGpcPeer { + config "false"; + type uint64; + description "Drop recv pkt, invalid GPC of peer switch"; + } + + // Ephemeral data + leaf dropRecvFailRetrieveGpc { + config "false"; + type uint64; + description "Drop recv pkt, failed in retrieving the GPC"; + } + + // Ephemeral data + leaf dropSendFailRetrieveGpc { + config "false"; + type uint64; + description "Drop send pkt, failed in retrieving the GPC"; + } + + // Ephemeral data + leaf failRetrieveVpcId { + config "false"; + type uint64; + description "Failed to retrieve vPC ID while processing"; + } + + // Ephemeral data + leaf imApiFail { + config "false"; + type uint64; + description "IM api failed while processing"; + } + + // Ephemeral data + leaf invalidContext { + config "false"; + type uint64; + description "Invalid context while processing"; + } + + // Ephemeral data + leaf dropMctDown { + config "false"; + type uint64; + description "Drop since MCT Down"; + } + + // Ephemeral data + leaf recvDropMbufFail { + config "false"; + type uint64; + description "Drop recv packets as mbuf operation failed"; + } + + // Ephemeral data + leaf sendDropMbufFail { + config "false"; + type uint64; + description "Drop send packets as mbuf operation failed"; + } + + // Ephemeral data + leaf tunnelFailed { + config "false"; + type uint64; + description "Cannot tunnel a incoming tunneled packet"; + } + + // Ephemeral data + leaf tunnelFailCENetwork { + config "false"; + type uint64; + description "Cannot tunnel in a CE network"; + } + leaf mcecmKeyNotFound { + config "false"; + type uint64; + description "MCEC_ID to PHY_IF_INDEX not found in DB"; + } + } + + grouping arp_SupCacheStats-group { + description "ARP suppression cache statistics"; + + // Ephemeral data + leaf requests { + config "false"; + type uint64; + description "Requests"; + } + + // Ephemeral data + leaf requestsL2 { + config "false"; + type uint64; + description "Requests on L2"; + } + + // Ephemeral data + leaf gratuitous { + config "false"; + type uint64; + description "Gratuitous"; + } + + // Ephemeral data + leaf gratuitousL2 { + config "false"; + type uint64; + description "Gratuitous on L2"; + } + + // Ephemeral data + leaf fwdRequestsL3 { + config "false"; + type uint64; + description "Forwarded Requests"; + } + + // Ephemeral data + leaf fwdRepliesL3 { + config "false"; + type uint64; + description "Forwarded Replies"; + } + + // Ephemeral data + leaf fwdRequestOnCorePort { + config "false"; + type uint64; + description "Forwarded Request on core port"; + } + + // Ephemeral data + leaf fwdReplyOnCorePort { + config "false"; + type uint64; + description "Forwarded reply on core port"; + } + + // Ephemeral data + leaf floodArpProbe { + config "false"; + type uint64; + description "Flood ARP Probe Packets"; + } + + // Ephemeral data + leaf sentDrop { + config "false"; + type uint64; + description "Send drop"; + } + + // Ephemeral data + leaf sentReqL2 { + config "false"; + type uint64; + description "Sent Request L2"; + } + + // Ephemeral data + leaf sentReplyL2 { + config "false"; + type uint64; + description "Sent reply L2"; + } + + // Ephemeral data + leaf sentReqCoreL2 { + config "false"; + type uint64; + description "Sent Req core L2"; + } + + // Ephemeral data + leaf sentReplyCoreL2 { + config "false"; + type uint64; + description "Sent reply core L2"; + } + + // Ephemeral data + leaf floodArpProbeL2 { + config "false"; + type uint64; + description "Flood ARP Probe Packets L2"; + } + + // Ephemeral data + leaf sentDropL2 { + config "false"; + type uint64; + description "Sent drop L2"; + } + + // Ephemeral data + leaf recvReqL3 { + config "false"; + type uint64; + description "Receive req L3"; + } + + // Ephemeral data + leaf recvReplyL3 { + config "false"; + type uint64; + description "Receive Reply L3"; + } + + // Ephemeral data + leaf recvLocalReqL3 { + config "false"; + type uint64; + description "Receive local req L3"; + } + + // Ephemeral data + leaf recvLocalReplyL3 { + config "false"; + type uint64; + description "Receive local reply L3"; + } + + // Ephemeral data + leaf recvGratArp { + config "false"; + type uint64; + description "Receive grat ARP"; + } + + // Ephemeral data + leaf recvDrop { + config "false"; + type uint64; + description "Receive drop"; + } + + // Ephemeral data + leaf recvRequestL2 { + config "false"; + type uint64; + description "Receive request L2"; + } + + // Ephemeral data + leaf recvReplyL2 { + config "false"; + type uint64; + description "Receive reply L2"; + } + + // Ephemeral data + leaf recvGratArpL2 { + config "false"; + type uint64; + description "Receive grat ARP L2"; + } + + // Ephemeral data + leaf recvDropL2 { + config "false"; + type uint64; + description "Receive drop L2"; + } + + // Ephemeral data + leaf localEntryAdds { + config "false"; + type uint64; + description "Local entry adds"; + } + + // Ephemeral data + leaf localEntryDel { + config "false"; + type uint64; + description "Local entry deletes"; + } + } + + grouping arp_OfaStats-group { + description "ARP Open-flow Error statistics"; + + // Ephemeral data + leaf dpAdjErrDel { + config "false"; + type uint64; + description "Controller Deleting DP adjacency error"; + } + + // Ephemeral data + leaf cpMacMismatchErrDel { + config "false"; + type uint64; + description "CP adjacency MAC mismatch error while delete"; + } + + // Ephemeral data + leaf cpNullMacErrDel { + config "false"; + type uint64; + description "CP adjacency NULL mac error while delete"; + } + + // Ephemeral data + leaf cpNoAdjErrDel { + config "false"; + type uint64; + description "No adjacency found while delete"; + } + + // Ephemeral data + leaf cpCpNhMismatchErrDel { + config "false"; + type uint64; + description " CP adjacency NH mismatch error while delete"; + } + + // Ephemeral data + leaf cpAdjDelFailureErr { + config "false"; + type uint64; + description "Other errors"; + } + + // Ephemeral data + leaf cpNullMacErrAdd { + config "false"; + type uint64; + description "CP adjacency NULL mac error while Adding"; + } + + // Ephemeral data + leaf cpDpMacMismatchErrAdd { + config "false"; + type uint64; + description "DP adjacency already present with different mac"; + } + + // Ephemeral data + leaf cpCpMacMismatchErrAdd { + config "false"; + type uint64; + description "CP adjacency already present with different mac"; + } + + // Ephemeral data + leaf cpAddFirstErr { + config "false"; + type uint64; + description "CP adjacency added first"; + } + + // Ephemeral data + leaf dpOverwriteCpErr { + config "false"; + type uint64; + description "Overwriting CP adjacency with DP"; + } + + // Ephemeral data + leaf dpCpNhMismatchErrAdd { + config "false"; + type uint64; + description "DP adjacency already present with different NH"; + } + + // Ephemeral data + leaf cpCpNhMismatchErrAdd { + config "false"; + type uint64; + description "CP adjacency already present with different NH"; + } + + // Ephemeral data + leaf cpDpNhMismatchErrAdd { + config "false"; + type uint64; + description "Overwriting CP adj with DP with different NH"; + } + + // Ephemeral data + leaf cpAdjAddFailureErr { + config "false"; + type uint64; + description "Other errors for Add"; + } + + // Ephemeral data + leaf peerIPLookupRecPhyIod { + config "false"; + type uint64; + description "NVE Peer IP lookup for Rec Phy Iod"; + } + + // Ephemeral data + leaf peerIPIPv6RecPhyIod { + config "false"; + type uint64; + description "NVE Peer is IPv6 for Rec Phy Iod"; + } + + // Ephemeral data + leaf peerIPLookupAdjPhyIod { + config "false"; + type uint64; + description "NVE Peer is IPv6 for Rec Phy Iod"; + } + + // Ephemeral data + leaf peerIPIPv6AdjPhyIod { + config "false"; + type uint64; + description "NVE Peer is IPv6 for Rec Phy Iod"; + } + + // Ephemeral data + leaf barrierResponseErr { + config "false"; + type uint64; + description "Barrier responses"; + } + } + + grouping arp_L2Stats-group { + description "This Object Holds The ARP Related Statistics For L2 Interface"; + + // Ephemeral data + container if-items { + + // Ephemeral data + list L2If-list { + config "false"; + key "id"; + + uses arp_L2If-group; + description "ARP L2 Interface list"; + } + description "ARP L2 Interface"; + } + } + + grouping arp_L2If-group { + description "ARP L2 Interface"; + + leaf id { + config "false"; + + type nw_IfId; + description "Interface ID"; + } + + // ARP_L2_PORT_STATS_RX_TOTAL + // Ephemeral data + leaf pktRecL2Int { + config "false"; + + type nw_Counter32; + description "Packet Received on L2 interface"; + } + } + + grouping arp_Dom-group { + description "This Object Holds Per ARP Domain (vrf) Information"; + leaf encap { + type string; + description "Encapsulation"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // ARP databases + // Ephemeral data + container db-items { + + // Ephemeral data + list Db-list { + config "false"; + key "type"; + + uses arp_Db-group; + description "Database list"; + } + description "Database"; + } + + // This object holds arp information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses arp_If-group; + description "ARP Interface list"; + } + description "ARP Interface"; + } + } + + grouping arp_Db-group { + description "Database"; + + // Type of the repository + // Ephemeral data + leaf type { + config "false"; + + type arp_DbT; + description "Type"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Arp adjacency definitions + // Ephemeral data + container adj-items { + + // Ephemeral data + list AdjEp-list { + config "false"; + key "ifId ip"; + + uses arp_AdjEp-group; + description "Adjacency list"; + } + description "Adjacency"; + } + } + + grouping arp_AdjEp-group { + description "Adjacency"; + leaf ip { + config "false"; + type address_Ip; + description "Address"; + } + + // Ephemeral data + leaf mac { + config "false"; + type address_Mac; + description "MAC"; + } + + // Ephemeral data + leaf upTS { + config "false"; + type union { + type string; + type uint64; + } + description "ARP Entry Age"; + } + + // Logical interface that this ep is associated with + leaf ifId { + config "false"; + + type nw_IfId; + description "Logical Interface ID"; + } + + // Operational state + // Ephemeral data + leaf operSt { + config "false"; + + type arp_AdjOperSt; + description "Operational State"; + } + + // Physical interface that this ep is associated with + // Ephemeral data + leaf physIfId { + config "false"; + + type nw_IfId; + description "Physical Interface ID"; + } + + // Flags that this ep has + // Ephemeral data + leaf flags { + config "false"; + + type arp_AdjFlags; + description "Flags"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + } + + grouping arp_If-group { + description "ARP Interface"; + + // Timeout + leaf timeout { + + type arp_Timeout; + description "ARP Timeout"; + } + + // Gratuitous ARP request + leaf gratuitousRequest { + + type nw_AdminSt; + description "Gratuitous ARP Request"; + } + + // Gratuitous ARP Update + leaf gratuitousUpdate { + + type nw_AdminSt; + description "Gratuitous ARP Update"; + } + + // Gratuitous ARP HSRP Duplicate + leaf gratuitousHsrpDup { + + type nw_AdminSt; + description "Gratuitous ARP HSRP Duplicate"; + } + + // Proxy ARP + leaf proxyArp { + + type nw_AdminSt; + default "disabled"; + description "Proxy ARP"; + } + + // Local Proxy ARP + leaf localProxyArp { + + type nw_AdminSt; + default "disabled"; + description "Local Proxy ARP"; + } + + // Local Proxy ARP without HW Flooding + leaf localProxyArpNoHwFlood { + + type nw_AdminSt; + default "disabled"; + description "Local Proxy ARP w/o HW Flooding"; + } + + // Delete adjacency on MAC delete without refresh + leaf deleteAdjOnMacDelete { + + type nw_AdminSt; + default "disabled"; + description "Delete Adjacency On MAC Delete w/o Refresh"; + } + + // Set refresh timer for MAC delete adjacency request + leaf refreshTimerForMacDelete { + + type arp_MacDelTimeout; + description "Set Refresh Timer For MAC Delete Adjacency"; + } + + // Enable duplicate IP detection across VLANs for IP + // unnumbered SVIs + leaf duplicateIpDetectionForUnnumberedSvi { + + type nw_AdminSt; + default "disabled"; + description + "Enable Duplicate IP Detection Across VLANs for + IP Unnumbered SVIs"; + } + + // Config error in this MO + leaf configError { + config "false"; + + type arp_ConfigErr; + description "Config Error"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Static arp adjacency definitions + container sadj-items { + list StAdjEp-list { + key "ip"; + + uses arp_StAdjEp-group; + description "ARP Static Adjacency list"; + } + description "ARP Static Adjacency"; + } + + // This object holds the arp if related tx statistics + // Ephemeral data + container ifstatstx-items { + + uses arp_IfStatsTx-group; + description "This Object Holds The ARP Related Transmit Statistics For Interface"; + } + + // This object holds the arp if related rx statistics + // Ephemeral data + container ifstatsrx-items { + + uses arp_IfStatsRx-group; + description "This Object Holds the ARP Related Receive Statistics For the Interface"; + } + + // This object holds the arp if related adj statistics + // Ephemeral data + container ifstatsadj-items { + + uses arp_IfStatsAdj-group; + description "This Object Holds The ARP Related Adjacency Statistics For Interface"; + } + + // This object holds the arp if related misc statistics + // Ephemeral data + container ifstatsmisc-items { + + uses arp_IfStatsMisc-group; + description "This Object Holds The ARP Related Miscellaneous Statistics For Interface"; + } + + // This object holds the arp related Multihoming(MH) statistics + // Ephemeral data + container ifstatsmh-items { + + uses arp_IfStatsMH-group; + description "This Object Holds The ARP Related Multihoming(MH) Statistics For Interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping arp_StAdjEp-group { + description "ARP Static Adjacency"; + + // Operational state + leaf operSt { + config "false"; + + type arp_StAdjOperSt; + description "Operational State"; + } + + // Operational state qualifier + leaf operStQual { + config "false"; + + type arp_StAdjOperStQual; + description "Operational State Qualifier"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf ip { + type address_Ip; + description "Address"; + } + leaf mac { + type address_Mac; + description "MAC"; + } + + container rtfvEpDefRefToStAdjEp-items { + + list RtFvEpDefRefToStAdjEp-list { + config "false"; + key "tDn"; + + uses fv_RtFvEpDefRefToStAdjEp_target-group; + } + } + } + + grouping arp_IfStatsTx-group { + description "This Object Holds The ARP Related Transmit Statistics For Interface"; + + // ARP_PKT_SEND_COUNT + // Ephemeral data + leaf pktSent { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Total Count"; + } + + // ARP_PKT_SEND_REQ_COUNT + // Ephemeral data + leaf pktSentReq { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Request Count"; + } + + // ARP_PKT_SEND_REPLY_COUNT + // Ephemeral data + leaf pktSentRsp { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Reply Count"; + } + + // ARP_PKT_SEND_REQ_COUNT_L2 + // Ephemeral data + leaf pktSentReqL2 { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Request Count On L2"; + } + + // ARP_PKT_SEND_REPLY_COUNT_L2 + // Ephemeral data + leaf pktSentRspL2 { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Reply Count On L2"; + } + + // ARP_PKT_SEND_GRAT_REQ_COUNT + // Ephemeral data + leaf pktSentGratReq { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Gratuitous Request Count"; + } + + // ARP_PKT_SEND_TUNNEL_COUNT + // Ephemeral data + leaf pktSentTunnel { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Tunnel Count"; + } + + // ARP_PKT_SEND_DROP_COUNT + // Ephemeral data + leaf pktSentDrop { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Drop Count"; + } + + // ARP_PKT_SEND_SRVRPORT_COUNT + // Ephemeral data + leaf pktSendSrvPort { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Server Port Count"; + } + + // ARP_PKT_SEND_FBRCPORT_COUNT + // Ephemeral data + leaf pktSendFbrcPort { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fabric Port Count"; + } + + // ARP_PKT_SEND_FIXUP_CORE_COUNT + // Ephemeral data + leaf pktSendFixupCore { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fixup Core Count"; + } + + // ARP_PKT_SEND_FIXUP_SERVER_COUNT + // Ephemeral data + leaf pktSendFixupServer { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fixup Server Count"; + } + + // ARP_PKT_SEND_FIXUP_RARP_COUNT + // Ephemeral data + leaf pktSendFixupRarp { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fixup Rarp Count"; + } + + // ARP_PKT_SEND_ANYCAST_GLEAN_COUNT + // Ephemeral data + leaf pktSendAnyCastGlean { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Anycast Glean Count"; + } + + // ARP_PKT_SEND_FAIL_INVALID_PKT_COUNT + // Ephemeral data + leaf pktSentFailInvPkt { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Invalid Packet Count"; + } + + // ARP_PKT_SEND_FAIL_MBUF_OP_COUNT + // Ephemeral data + leaf pktSentFailMbufOp { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Mbuf Operation Count"; + } + + // ARP_PKT_SEND_FAIL_NO_IFINDEX_COUNT + // Ephemeral data + leaf pktSentFailNoIfindex { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Invalid Ifindex Count"; + } + + // ARP_PKT_SEND_FAIL_UNSUPPORTED_INT_COUNT + // Ephemeral data + leaf pktSentFailUnsupportedInt { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail On Unsupported Interface Count"; + } + + // ARP_PKT_SEND_FAIL_IM_DOWN_COUNT + // Ephemeral data + leaf pktSentFailImDown { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail On Interface Down Count"; + } + + // ARP_PKT_SEND_FAIL_INVALID_SRC_IP_COUNT + // Ephemeral data + leaf pktSentFailInvSrcIp { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Invalid Source IP Count"; + } + + // ARP_PKT_SEND_FAIL_INVALID_DEST_IP_COUNT + // Ephemeral data + leaf pktSentFailInvDstIp { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Invalid Destination IP Count"; + } + + // ARP_PKT_SEND_FAIL_OWN_IP_COUNT + // Ephemeral data + leaf pktSentFailOwnIp { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Own IP Count"; + } + + // ARP_PKT_SEND_FAIL_CONTEXT_NOT_CREATED_COUNT + // Ephemeral data + leaf pktSentFailCtxtNotCreated { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Context Not Created Count"; + } + + // ARP_PKT_SEND_FAIL_BAD_CONTEXT_ID_COUNT + // Ephemeral data + leaf pktSentFailBadCtxtId { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Bad Context Id Count"; + } + + // ARP_PKT_SEND_FAIL_UNATTACHED_IP_COUNT + // Ephemeral data + leaf pktSentFailUnattachedIp { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Unattached IP Count"; + } + + // ARP_PKT_SEND_FAIL_ADJ_ADD_FAILURE_COUNT + // Ephemeral data + leaf pktSentFailAdjAddFailure { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Adjacency Add Failure Count"; + } + + // ARP_PKT_SEND_FAIL_NO_SRC_IP_COUNT + // Ephemeral data + leaf pktSentFailNoSrcIp { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail No Source IP Count"; + } + + // ARP_PKT_SEND_FAIL_NO_MAC_COUNT + // Ephemeral data + leaf pktSentFailNoMac { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail No Mac Count"; + } + + // ARP_PKT_SEND_FAIL_CLIENT_ENQUEUE_FAILED_COUNT + // Ephemeral data + leaf pktSentFailClientEnqFailed { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Client Enqueue Failed Count"; + } + + // ARP_PKT_SEND_FAIL_PROXY_DEST_NOT_REACHABLE_COUNT + // Ephemeral data + leaf pktSentFailProxyDstNotRchbl { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Proxy Destination Not Reachable Count"; + } + + // ARP_PKT_SKIP_RESPONSE_ENHANCED_PROXY_DEST_NOT_REACHABLE_COUNT + // Ephemeral data + leaf pktSkipRespEnhancedProxyDestNotReach { + config "false"; + + type nw_Counter32; + description "ARP Packet Skip Response Enhanced Proxy Destination Not Reachable Count"; + } + + // ARP_PKT_SKIP_RESPONSE_ENHANCED_PROXY_L2PORT_TRACK_COUNT + // Ephemeral data + leaf pktSkipRespEnhancedProxyL2portTrack { + config "false"; + + type nw_Counter32; + description "ARP Packet Skip Response Enhanced Proxy L2 Port Track Count"; + } + + // ARP_PKT_SEND_FAIL_INVALID_LOCAL_PROXY_COUNT + // Ephemeral data + leaf pktSentFailInvLocalProxy { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Invalid Local Proxy Count"; + } + + // ARP_PKT_SEND_FAIL_INVALID_PROXY_COUNT + // Ephemeral data + leaf pktSentFailInvProxy { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail Invalid Proxy Count"; + } + + // ARP_PKT_SEND_FAIL_VIP_GROUP_NOT_ACTIVE_COUNT + // Ephemeral data + leaf pktSentFailVipGroupNotActive { + config "false"; + + type nw_Counter32; + description "ARP Packet Send Fail VIP Group Not Active Count"; + } + + // ARP_PKT_SKIP_REFRESH_OVER_CORE_AND_FLOOD_TO_SERVER + // Ephemeral data + leaf pktRefreshFloodToServerSkipCore { + config "false"; + + type nw_Counter32; + description "ARP Refresh pkts flooded to the server but skipped over core Count"; + } + } + + grouping arp_IfStatsRx-group { + description "This Object Holds the ARP Related Receive Statistics For the Interface"; + + // ARP_PKT_RECV_COUNT + // Ephemeral data + leaf pktRcvd { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Total Count"; + } + + // ARP_PKT_RECV_REQ_COUNT + // Ephemeral data + leaf pktRcvdReq { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Request Count"; + } + + // ARP_PKT_RECV_REPLY_COUNT + // Ephemeral data + leaf pktRcvdRsp { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Reply Count"; + } + + // ARP_PKT_RECV_PROXY_ARP_COUNT + // Ephemeral data + leaf pktRcvdProxyArp { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Proxy ARP Count"; + } + + // ARP_PKT_RECV_LOCAL_PROXY_ARP_COUNT + // Ephemeral data + leaf pktRcvdLocalProxyArp { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Local Proxy ARP Count"; + } + + // ARP_PKT_RECV_ENHANCED_PROXY_ARP_COUNT + // Ephemeral data + leaf pktRcvdEnhancedProxyArp { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Enhanced Proxy ARP Count"; + } + + // ARP_PKT_RECV_ENHANCED_PROXY_ANYCAST_ARP_COUNT + // Ephemeral data + leaf pktRcvdEnhancedProxyAnycastArp { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Enhanced Proxy Anycast ARP Count"; + } + + // ARP_PKT_RECV_ENHANCED_PROXY_L2PORT_TRACK_ARP_COUNT + // Ephemeral data + leaf pktRcvdEnhancedProxyL2portTrackArp { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Enhanced Proxy L2 Port Track ARP Count"; + } + + // ARP_PKT_RECV_SRVRPORT_COUNT + // Ephemeral data + leaf pktRcvdServerPort { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Server Port Count"; + } + + // ARP_PKT_RECV_REQ_COUNT_L2 + // Ephemeral data + leaf pktRcvdReqL2 { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Request Count On L2"; + } + + // ARP_PKT_RECV_REPLY_COUNT_L2 + // Ephemeral data + leaf pktRcvdRspL2 { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Reply Count On L2"; + } + + // ARP_PKT_RECV_TUNNEL_COUNT + // Ephemeral data + leaf pktRcvdTunnel { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Tunnel Count"; + } + + // ARP_PKT_RECV_FASTPATH_COUNT + // Ephemeral data + leaf pktRcvdFastpath { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Fastpath Count"; + } + + // ARP_PKT_RECV_SNOOP_COUNT + // Ephemeral data + leaf pktRcvdSnoop { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Snoop Count"; + } + + // ARP_PKT_RECV_DROP_COUNT + // Ephemeral data + leaf pktRcvdDrp { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Count"; + } + + // ARP_PKT_RECV_DROP_BAD_IF_COUNT + // Ephemeral data + leaf pktRcvdDrpBadIf { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Bad Interface Count"; + } + + // ARP_PKT_RECV_DROP_BAD_LEN_COUNT + // Ephemeral data + leaf pktRcvdDrpBadLen { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Bad Length Count"; + } + + // ARP_PKT_RECV_DROP_BAD_PROTO_COUNT + // Ephemeral data + leaf pktRcvdDrpBadProto { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Bad Protocol Count"; + } + + // ARP_PKT_RECV_DROP_BAD_HRD_TYPE + // Ephemeral data + leaf pktRcvdDropBadHrd { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Bad Hardware Type Count"; + } + + // ARP_PKT_RECV_DROP_BAD_L2ADDR_LEN_COUNT + // Ephemeral data + leaf pktRcvdDrpBadL2AddrLen { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Bad Layer 2 Address Length Count"; + } + + // ARP_PKT_RECV_DROP_BAD_L3ADDR_LEN_COUNT + // Ephemeral data + leaf pktRcvdDrpBadL3AddrLen { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Bad Layer 3 Length Count"; + } + + // ARP_PKT_RECV_DROP_INVAL_SRC_IP_COUNT + // Ephemeral data + leaf pktRcvdDrpInvalSrcIp { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Invalid Source IP Count"; + } + + // ARP_PKT_RECV_DROP_DIR_BCAST_COUNT + // Ephemeral data + leaf pktRcvdDrpDirBcast { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Direct Broadcast Count"; + } + + // ARP_PKT_RECV_DROP_INVAL_DST_IP_COUNT + // Ephemeral data + leaf pktRcvdDrpInvalDstIp { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Invalid Destination IP Count"; + } + + // ARP_PKT_RECV_DROP_BAD_SRC_MAC_COUNT + // Ephemeral data + leaf pktRcvdDrpBadSrcMac { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Bad Source Mac Count"; + } + + // ARP_PKT_RECV_DROP_OWN_SRC_MAC_COUNT + // Ephemeral data + leaf pktRcvdDrpOwnSrcMac { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Own Source Mac Count"; + } + + // ARP_PKT_RECV_DROP_OWN_SRC_IP_COUNT + // Ephemeral data + leaf pktRcvdDrpOwnSrcIp { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Own Source IP Count"; + } + + // ARP_PKT_RECV_DROP_ARP_IF_NO_MEM_COUNT + // Ephemeral data + leaf pktRcvdDrpArpIfNoMem { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop ARP Interface No Memory Count"; + } + + // ARP_PKT_RECV_DROP_NOT_FOR_US_COUNT + // Ephemeral data + leaf pktRcvdDrpNotForUs { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Not For Us Count"; + } + + // ARP_PKT_RECV_LEARN_AND_DROP_NOT_FOR_US_COUNT + // Ephemeral data + leaf pktRcvdLearnAndDropNotForUs { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Learn And Drop Not For Us Count"; + } + + // ARP_PKT_RECV_DROP_SUBNET_MISMATCH_COUNT + // Ephemeral data + leaf pktRcvdDrpSubnetMismatch { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Subnet Mismatch Count"; + } + + // ARP_PKT_RECV_DROP_NOT_INITIALIZED_COUNT + // Ephemeral data + leaf pktRcvdDrpNotInit { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Not Initialized Count"; + } + + // ARP_PKT_RECV_DROP_BAD_CONTEXT_COUNT + // Ephemeral data + leaf pktRcvdDrpBadCtxt { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Bad Context Count"; + } + + // ARP_PKT_RECV_DROP_CONTEXT_NOT_CREATED_COUNT + // Ephemeral data + leaf pktRcvdDrpCtxtNotCreated { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Context Not Created Count"; + } + + // ARP_PKT_RECV_DROP_L2_LOCAL_PROXY_ARP_COUNT + // Ephemeral data + leaf pktRcvdDrpL2LocalProxyArp { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop L2 Local Proxy ARP Count"; + } + + // ARP_PKT_RECV_DROP_L2_PURE_L2_PKT_COUNT + // Ephemeral data + leaf pktRcvdDrpL2PureL2Pkt { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop L2 Pure L2 Packet Count"; + } + + // ARP_PKT_RECV_DROP_L2_PORT_UNTRUSTED_COUNT + // Ephemeral data + leaf pktRcvdDrpL2PrtUntrusted { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop L2 Port Untrusted Count"; + } + + // ARP_PKT_RECV_DROP_STANDBY_FHRP_VIP_COUNT + // Ephemeral data + leaf pktRcvdDrpStdbyFhrpVip { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Standby FHRP VIP Count"; + } + + // ARP_PKT_RECV_DROP_GRAT_ON_PROXY_ARP_COUNT + // Ephemeral data + leaf pktRcvdDrpGratOnProxyArp { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Gratuitous On Proxy ARP Count"; + } + + // ARP_PKT_RECV_DROP_ARP_REQUEST_IGNORE_COUNT + // Ephemeral data + leaf pktRcvdDrpArpRequestIgnore { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop ARP Request Ignore Count"; + } + + // ARP_PKT_RECV_DROP_L2FM_QUERY_FAIL_COUNT + // Ephemeral data + leaf pktRcvdDrpL2FmQueryFail { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop L2FM Query Fail Count"; + } + + // ARP_PKT_RECV_DROP_TUNNEL_FAIL_COUNT + // Ephemeral data + leaf pktRcvdDrpTunnelFail { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Tunnel Fail Count"; + } + + // ARP_PKT_RECV_DROP_RSP_ON_HSRP_STANDBY_HSRP_ACTIVE_VMAC + // Ephemeral data + leaf pktRcvdDrpRspOnHsrpStbyActiveVmac { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Drop Response On HSRP Standby With HSRP Active Vmac Count"; + } + + // ARP_PKT_RECV_FAIL_IM_DOWN_COUNT + // Ephemeral data + leaf pktRcvdFailImDown { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Fail Interface Down Count"; + } + + // ARP_PKT_RECV_GLEAN_REQ_COUNT + // Ephemeral data + leaf pktRcvdGleanReqCount { + config "false"; + + type nw_Counter32; + description "Glean Requests Received Count"; + } + + // ARP_PKT_REFRESH_REQUESTS_RECV_FROM_CLIENTS + // Ephemeral data + leaf pktRfrshReqRecFrmClients { + config "false"; + + type nw_Counter32; + description "ARP Packet Received Refresh requests from clients"; + } + + // ARP_PKT_RECV_SIGNALS_FROM_L2RIB + // Ephemeral data + leaf pktRcvdSigFrmL2rib { + config "false"; + + type nw_Counter32; + description "Number of Signals received from L2rib"; + } + + // ARP_ADJ_SKIP_DYN_ENTRY_LEARN + // Ephemeral data + leaf adjSkipDynEntryLearn { + config "false"; + + type nw_Counter32; + description "ARP Adjacency Skip Dynamic Learn"; + } + } + + grouping arp_IfStatsAdj-group { + description "This Object Holds The ARP Related Adjacency Statistics For Interface"; + + // ARP_ADJ_ADD_COUNT + // Ephemeral data + leaf adjAdd { + config "false"; + + type nw_Counter32; + description "ARP Adjacency Add Count"; + } + + // ARP_ADJ_DEL_COUNT + // Ephemeral data + leaf adjDel { + config "false"; + + type nw_Counter32; + description "ARP Adjacency Delete Count"; + } + + // ARP_ADJ_TIMEOUT_COUNT + // Ephemeral data + leaf adjTimeout { + config "false"; + + type nw_Counter32; + description "ARP Adjacency Timeout Count"; + } + + // ARP_ADJ_DEL_DYN_ENTRY_ON_STATIC_ADD + // Ephemeral data + leaf adjDelDynEntryOnStaticAdd { + config "false"; + + type nw_Counter32; + description "ARP Adjacency Delete Dynamic Entry on Static Add"; + } + } + + grouping arp_IfStatsMisc-group { + description "This Object Holds The ARP Related Miscellaneous Statistics For Interface"; + + // ARP_CLIENT_MSG_COUNT + // Ephemeral data + leaf clientMsg { + config "false"; + + type nw_Counter32; + description "ARP Client Message Count"; + } + + // ARP_CLIENT_MSG_FAIL_COUNT + // Ephemeral data + leaf clientMsgFail { + config "false"; + + type nw_Counter32; + description "ARP Client Message Fail Count"; + } + + // ARP_IF_TIMEOUT_MSG_FAIL_COUNT + // Ephemeral data + leaf ifTimeoutMsgFail { + config "false"; + + type nw_Counter32; + description "ARP Interface Timeout Message Fail Count"; + } + + // ARP_IF_STATUS_MSG_FAIL_COUNT + // Ephemeral data + leaf ifStatusMsgFail { + config "false"; + + type nw_Counter32; + description "ARP Interface Status Message Fail Count"; + } + } + + grouping arp_IfStatsMH-group { + description "This Object Holds The ARP Related Multihoming(MH) Statistics For Interface"; + + // ARP_MH_PS_RECV_ADD_FROM_L2RIB + // Ephemeral data + leaf recvaddfrml2rib { + config "false"; + + type nw_Counter32; + description "ARP Received Peer Sync Add From L2RIB"; + } + + // ARP_MH_PS_PROCESS_ADD_FROM_L2RIB + // Ephemeral data + leaf processaddfrml2rib { + config "false"; + + type nw_Counter32; + description "ARP Processed Peer Sync Add From L2RIB"; + } + + // ARP_MH_PS_RECV_DEL_FROM_L2RIB + // Ephemeral data + leaf recvdelfrml2rib { + config "false"; + + type nw_Counter32; + description "ARP Received Peer Sync Delete From L2RIB"; + } + + // ARP_MH_PS_PROCESS_DEL_FROM_L2RIB + // Ephemeral data + leaf processdelfrml2rib { + config "false"; + + type nw_Counter32; + description "ARP Processed Peer Sync Delete From L2RIB"; + } + + // ARP_MH_PS_RECV_PC_SHUT_FROM_L2RIB + // Ephemeral data + leaf recvpcshutfrml2rib { + config "false"; + + type nw_Counter32; + description "ARP Received Port Channel Shut From L2RIB"; + } + + // ARP_MH_PS_PROCESS_PC_SHUT_FROM_L2RIB + // Ephemeral data + leaf processpcshutfrml2rib { + config "false"; + + type nw_Counter32; + description "ARP Processed Port Channel Shut From L2RIB"; + } + + // ARP_MH_PS_RECV_REMOTE_UPD_FROM_L2RIB + // Ephemeral data + leaf recvremoteupdfrml2rib { + config "false"; + + type nw_Counter32; + description "ARP Received Remote Update From L2RIB"; + } + + // ARP_MH_PS_PROCESS_REMOTE_UPD_FROM_L2RIB + // Ephemeral data + leaf processremoteupdfrml2rib { + config "false"; + + type nw_Counter32; + description "ARP Processed Remote Update From L2RIB"; + } + + // ARP_MH_PS_ADD_ERR_INVALID_FLAGS + // Ephemeral data + leaf psadderrinvalidflags { + config "false"; + + type nw_Counter32; + description "ARP Multihoming Add Error Invalid Flag"; + } + + // ARP_MH_PS_DEL_ERR_INVALID_FLAGS + // Ephemeral data + leaf psdelerrinvalidflags { + config "false"; + + type nw_Counter32; + description "ARP Multihoming Delete Error Invalid Flag"; + } + + // ARP_MH_PS_ADD_ERR_INVALID_CURR_STATE + // Ephemeral data + leaf psadderrinvalidcurrstate { + config "false"; + + type nw_Counter32; + description "ARP Multihoming Add Error Current State"; + } + + // ARP_MH_PS_DEL_ERR_INVALID_CURR_STATE + // Ephemeral data + leaf psdelerrinvalidcurrstate { + config "false"; + + type nw_Counter32; + description "ARP Multihoming Delete Error Current State"; + } + + // ARP_MH_PS_DEL_ERR_MAC_MISMATCH + // Ephemeral data + leaf psdelerrmacmismatch { + config "false"; + + type nw_Counter32; + description "ARP Multihoming Error Peer Sync Delete Mac Mismatch"; + } + + // ARP_MH_PS_DEL_ERR_SEC_DEL_FROM_L2RIB + // Ephemeral data + leaf psdelerrsecdelfrml2rib { + config "false"; + + type nw_Counter32; + description "ARP Multihoming Error Peer Sync Second Delete From L2RIB"; + } + + // ARP_MH_PS_DEL_ERR_FOR_TL_ROUTE + // Ephemeral data + leaf psdelerrfortlroute { + config "false"; + + type nw_Counter32; + description "ARP Multihoming Error Peer Sync Delete For True Local Route"; + } + + // ARP_MH_TL_DEL_ERR_FOR_PSRO_ROUTE + // Ephemeral data + leaf tldelerrforpsroroute { + config "false"; + + type nw_Counter32; + description "ARP Multihoming Error True Local Delete For Peer Sync Re-originate Route"; + } + } + + grouping arp_Ipv4Throttle-group { + description "Ipv4 throttling"; + + // Enable / Disable glean throttling + leaf adminSt { + + type nw_AdminSt; + default "disabled"; + description "Glean throttle state"; + } + + // Threshold for syslog for number of packets hitting the entry + leaf syslog { + + type arp_SyslogCnt; + description "Glean Throttle Syslog For Number Of Packets"; + } + + // Max throttle packets count. Crossing this threshold, + // packet will not be throttled for a particular adjacency + leaf maxPacket { + + type arp_MaxPacket; + description "Glean throttle packet count"; + } + + // Timeout for throttle setting for a particular adjacency + leaf timeout { + + type arp_ThrottleTimeout; + description "Ipv4 Glean Throttle Timeout"; + } + } + + grouping arp_EventLogs-group { + description "ARP Event Logging"; + + // Event LogType + leaf eventType { + + type arp_EventType; + description "Sync Event Log Type"; + } + + // Event LogSize + leaf logSize { + + type arp_EventLogSize; + description "Sync Event Log Size"; + } + } + + grouping arp_Vpc-group { + description "Ip Arp Synchronize"; + + // This objects hold per vpc domain information. There is only + // one vpc domain that is configurable in the system + container dom-items { + list VpcDom-list { + key "domainId"; + + uses arp_VpcDom-group; + description "VPC Domain list"; + } + description "VPC Domain"; + } + } + + grouping arp_VpcDom-group { + description "VPC Domain"; + + // VPC Domain ID + leaf domainId { + + type vpc_DomId; + description "TBD"; + } + + // Enable/Disable IP ARP SYNC + leaf arpSync { + + type nw_AdminSt; + default "disabled"; + description "IP ARP Sync"; + } + } + + grouping arp_DbSupCache-group { + description " This Object Holds Suppression-Cache Database"; + + // Type of the repository + // Ephemeral data + leaf type { + config "false"; + + type arp_DbT; + description "Database Type"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Holds Suppression-cache vlan related information + // Ephemeral data + container vlan-items { + + // Ephemeral data + list SupCacheVlan-list { + config "false"; + key "id"; + + uses arp_SupCacheVlan-group; + description "This Object Holds Suppression Cache Table Vlan list"; + } + description "This Object Holds Suppression Cache Table Vlan"; + } + } + + grouping arp_SupCacheVlan-group { + description "This Object Holds Suppression Cache Table Vlan"; + + // vlan id + // Ephemeral data + leaf id { + config "false"; + + type stp_VlanId; + description "VLAN id"; + } + + // Suppression ARP Mode + // Ephemeral data + leaf suppressArpMode { + config "false"; + + type arp_SuppressArpMode; + description "Suppression ARP mode"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Holds suppression-cache entry information + // Ephemeral data + container ip-items { + + // Ephemeral data + list SupCacheEntry-list { + config "false"; + key "ip"; + + uses arp_SupCacheEntry-group; + description "This Object Holds Suppression Cache Entry list"; + } + description "This Object Holds Suppression Cache Entry"; + } + } + + grouping arp_SupCacheEntry-group { + description "This Object Holds Suppression Cache Entry"; + + // Ephemeral data + leaf ip { + config "false"; + type address_Ip; + description "IP Address"; + } + + // IRP Entry flags + // Ephemeral data + leaf flags { + config "false"; + + type arp_SupCacheFlag; + description "Flags"; + } + + // Ephemeral data + leaf mac { + config "false"; + type address_Mac; + description "MAC Address"; + } + + // Ephemeral data + leaf upTS { + config "false"; + type union { + type string; + type uint64; + } + description "ARP Entry Up Time"; + } + + // Physical Interface ID + // Ephemeral data + leaf phyid { + config "false"; + + type nw_IfId; + description "Physical Interface ID"; + } + leaf remotevtepaddr { + config "false"; + type string; + description "Remote Vtep Address"; + } + } + + grouping bfd_Entity-group { + description "BFD Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per bfd instance information. + container inst-items { + + uses bfd_Inst-group; + description "BFD Instance"; + } + } + + grouping bfd_Inst-group { + description "BFD Instance"; + + // Loopback interface to be used for bfd echo frames + leaf echoIf { + + type nw_IfId; + description "Echo Interface to be used for BFD echo frames"; + } + + // Startup timer interval. + leaf startupIntvl { + + type bfd_StartupIntvl; + description "Startup timer Interval"; + } + + // Slow mode timer interval. This is the interval at which + // BFD control packets are sent. + leaf slowIntvl { + + type bfd_SlowIntvl; + description "Slow timer Interval"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // This object holds bfd interface information + container if-items { + list If-list { + key "id"; + + uses bfd_If-group; + description "BFD Interface list"; + } + description "BFD Interface"; + } + + // This objects hold per address family bfd instance information + container af-items { + list InstAf-list { + key "type"; + + uses bfd_InstAf-group; + description "Instance Address Family list"; + } + description "Instance Address Family"; + } + + // This objects hold Multihop bfd instance information + container mhop-items { + + uses bfd_Mhop-group; + description "Multihop Sessions"; + } + + // This object holds keepalive policy information + container ka-items { + + uses bfd_KaP-group; + description "Keepalive Policy information is held in this object"; + } + + // This object holds bfd session information + container session-items { + list Sess-list { + config "false"; + key "discr"; + + uses bfd_Sess-group; + description "BFD Session list"; + } + description "BFD Session"; + } + } + + grouping bfd_If-group { + description "BFD Interface"; + + // Enable/disable echo mode for interface + leaf echoAdminSt { + + type nw_AdminSt; + description "Echo Mode Admin State of BFD Interface"; + } + + // Interface controls + leaf ctrl { + + type bfd_IfControl; + description "Interface Controls"; + } + + // BFD track-member-link + leaf trkMbrLnk { + + type bfd_TrkMbrLnk; + description "Track Member Link Enable Disable on bfd interface"; + } + + // BFD Start Time + leaf stTm { + + type bfd_StTm; + description "BFD Start timeout"; + } + leaf dst { + type address_Ipv4; + description "Destination IP Address"; + } + leaf srcIp { + type address_Ip; + description "Source IPv4/IPv6 Address for BFD sessions"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + // This object holds authentication policy information + container auth-items { + + uses bfd_AuthP-group; + description "Authentication Policy"; + } + + // This object holds per address family bfd interface information + container af-items { + list IfAf-list { + key "type"; + + uses bfd_IfAf-group; + description "Interface Address Family list"; + } + description "Interface Address Family"; + } + + // Neighbor MacEntry + container nbr-items { + list Nbr-list { + key "srcip destip"; + + uses bfd_Nbr-group; + description "Neighbor Entry list"; + } + description "Neighbor Entry"; + } + + // This object holds interface keepalive policy information + container ifka-items { + + uses bfd_IfKaP-group; + description "Interface Keepalive Policy"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping bfd_AuthP-group { + description "Authentication Policy"; + + // Interop Attribute + leaf authInterop { + + type bfd_AuthInterop; + description "Auth Interop Enable Disable on BFD Interface"; + } + + // Authentication type + leaf type { + + type bfd_AuthT; + description "Authentication Type of the BFD session"; + } + + // Authentication key id + leaf keyId { + + type bfd_AuthKeyId; + description "Authentication Key ID to be used in the BFD session"; + } + + // Authentication Hex key Size + leaf hexKeySize { + + type bfd_AuthHexKeySize; + description "A property to indicate Authentication Hex Key Size"; + } + + // Authentication hex key + leaf hexKey { + + type bfd_AuthHexKey; + description "A property to indicate Authentication Hex Key for the BFD session"; + } + + // Authentication key + leaf key { + + type bfd_AuthKey; + description "A property to indicate Authentication Key for the BFD session"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping bfd_IfAf-group { + description "Interface Address Family"; + + // Enable/disable sessions for interface address family + leaf adminSt { + + type nw_AdminSt; + description "Admin State for Interface Address family"; + } + + // Enable/disable echo mode for interface address family + leaf echoAdminSt { + + type nw_AdminSt; + description "Echo Mode Admin State for Interface Address family"; + } + + // Interface controls + leaf ctrl { + + type bfd_IfControl; + description "Interface Controls"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type + leaf type { + + type bfd_AfT; + description "Type of the Address Family"; + } + + // This object holds authentication policy information + container auth-items { + + uses bfd_AuthP-group; + description "Authentication Policy"; + } + + // This object holds interface keepalive policy information + container ifka-items { + + uses bfd_IfKaP-group; + description "Interface Keepalive Policy"; + } + } + + grouping bfd_IfKaP-group { + description "Interface Keepalive Policy"; + + // Desired minimum tx interval. This is the minimum interval, + // in ms, that the system would like to use when transmitting + // BFD control packets. + leaf minTxIntvl { + + type bfd_IfMinTxIntvl; + description "Desired Minimum TX Interval.This is the minimum interval, in ms, that the system would like to use when transmitting BFD control packets."; + } + + // Required minimum rx interval. This is the minimum interval, + // in ms, between received BFD control packets that this + // system is capable of supporting. + leaf minRxIntvl { + + type bfd_IfMinRxIntvl; + description "Required Minimum RX Interval. This is the minimum interval, in ms, between received BFD control packets that this system is capable of supporting."; + } + + // Detection multiplier. This is the desired detection time + // multiplier for BFD packets on the local system. + leaf detectMult { + + type bfd_IfDetectMult; + description "Detection Multiplier. This is the desired detection time multiplier for BFD packets on the local system."; + } + + // Echo rx interval. This is the minimum interval, in ms, + // between received BFD echo packets that this system is + // capable of supporting. + leaf echoRxIntvl { + + type bfd_EchoRxIntvl; + description "Echo Rx Interval. This is the minimum interval, in ms, between received BFD echo packets that this system is capable of supporting."; + } + } + + grouping bfd_Nbr-group { + description "Neighbor Entry"; + leaf srcip { + type address_Ip; + description "Source IP Address of BFD neighbor "; + } + leaf destip { + type address_Ip; + description "Destination IP Address of BFD neighbor"; + } + } + + grouping bfd_InstAf-group { + description "Instance Address Family"; + + // Slow mode timer interval. This is the interval at which + // BFD control packets are sent. + leaf slowIntvl { + + type bfd_SlowIntvl; + description "Slow timer Interval"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type + leaf type { + + type bfd_AfT; + description "Type of the Address Family"; + } + + // This object holds keepalive policy information + container ka-items { + + uses bfd_KaP-group; + description "Keepalive Policy information is held in this object"; + } + } + + grouping bfd_KaP-group { + description "Keepalive Policy information is held in this object"; + + // Desired minimum tx interval. This is the minimum interval, + // in ms, that the system would like to use when transmitting + // BFD control packets. + leaf minTxIntvl { + + type bfd_MinTxIntvl; + description "Desired Minimum TX Interval.This is the minimum interval, in ms, that the system would like to use when transmitting BFD control packets."; + } + + // Required minimum rx interval. This is the minimum interval, + // in ms, between received BFD control packets that this + // system is capable of supporting. + leaf minRxIntvl { + + type bfd_MinRxIntvl; + description "Required Minimum RX Interval. This is the minimum interval, in ms, between received BFD control packets that this system is capable of supporting."; + } + + // Detection multiplier. This is the desired detection time + // multiplier for BFD packets on the local system. + leaf detectMult { + + type bfd_DetectMult; + description "Detection Multiplier. This is the desired detection time multiplier for BFD packets on the local system."; + } + + // Echo rx interval. This is the minimum interval, in ms, + // between received BFD echo packets that this system is + // capable of supporting. + leaf echoRxIntvl { + + type bfd_EchoRxIntvl; + description "Echo Rx Interval. This is the minimum interval,in ms, between received BFD echo packets that this system is capable of supporting."; + } + } + + grouping bfd_Mhop-group { + description "Multihop Sessions"; + + // Desired minimum tx interval. This is the minimum interval, in ms, + // that the system would like to use when transmitting BFD control packets. + leaf minTxIntvl { + + type bfd_MhMinTxIntvl; + description "Desired Minimum TX Interval"; + } + + // Required minimum rx interval. This is the minimum interval, in ms, + // between received BFD control packets that this system is capable of supporting. + leaf minRxIntvl { + + type bfd_MhMinRxIntvl; + description "Required Minimum RX Interval"; + } + + // Detection multiplier. This is the desired detection time + // multiplier for BFD packets on the local system. + leaf detectMult { + + type bfd_DetectMult; + description "Detection Multiplier"; + } + } + + grouping bfd_Sess-group { + description "BFD Session"; + + // Local session identifier + leaf discr { + config "false"; + + type bfd_Discr; + description "Local Session Identifier of the BFD session"; + } + + // Remote session identifier + leaf remoteDiscr { + config "false"; + + type bfd_Discr; + description "Remote Session Identifier of the BFD session"; + } + + // Async mode source port + leaf asyncPort { + config "false"; + + type l4_Port; + description "Asynchronous mode Source Port"; + } + + // Echo mode source port + leaf echoPort { + config "false"; + + type l4_Port; + description "Echo mode Source Port"; + } + leaf localMac { + config "false"; + type address_Mac; + description "Local MAC Address"; + } + leaf remoteMac { + config "false"; + type address_Mac; + description "Remote MAC Address"; + } + + // Interface id + leaf ifId { + config "false"; + + type nw_IfId; + description "Interface ID associated with the BFD session"; + } + + // Interface ordinal + leaf iod { + config "false"; + + type nw_Iod; + description "Interface ordinal associated with the BFD session"; + } + + // L3 context name + leaf vrfName { + config "false"; + + type l3_VrfName; + description "L3 Context Name"; + } + leaf srcAddr { + config "false"; + type address_Ip; + description "Source IP Address"; + } + leaf destAddr { + config "false"; + type address_Ip; + description "Destination IP Address"; + } + + // Local value of tx interval + leaf localTxIntvl { + config "false"; + + type bfd_MinTxIntvl; + description "Local Value of Tx Interval"; + } + + // Local value of rx interval + leaf localRxIntvl { + config "false"; + + type bfd_MinRxIntvl; + description "Local Value of Rx Interval"; + } + + // Local value of detection multiplier + leaf localDetectMult { + config "false"; + + type bfd_DetectMult; + description "Local value of Detection Multiplier"; + } + + // Active value of tx interval + leaf txIntvl { + config "false"; + + type bfd_MinTxIntvl; + description "Active Value of Tx Interval"; + } + + // Active value of echo tx interval + leaf echoTxIntvl { + config "false"; + + type bfd_MinTxIntvl; + description "Active Value of Echo Tx Interval"; + } + + // Active value of rx interval + leaf rxIntvl { + config "false"; + + type bfd_MinRxIntvl; + description "Active Value of Rx Interval"; + } + + // Active value of slow interval + leaf slowIntvl { + config "false"; + + type bfd_SlowIntvl; + description "Active value of Slow Interval"; + } + + // Active value of detection multiplier + leaf detectMult { + config "false"; + + type bfd_DetectMult; + description "Active value of Detection Multiplier"; + } + + // Active value of auth type + leaf authType { + config "false"; + + type bfd_AuthT; + description "Active value of Authentication Type"; + } + + // Authentication sequence number + leaf authSeqno { + config "false"; + + type bfd_AuthSeqno; + description "Authentication Sequence Number"; + } + + // Oper (protocol) state + leaf operSt { + config "false"; + + type bfd_OperSt; + description "Operational State"; + } + + // Remote oper state + leaf remoteOperSt { + config "false"; + + type bfd_OperSt; + description "Remote Operational State"; + } + + // Protocol diag code + leaf diag { + config "false"; + + type bfd_DiagCode; + description "Protocol Diagnostic code"; + } + + // Packet flags + leaf flags { + config "false"; + + type bfd_PktFlags; + description "Packet Flags"; + } + leaf lastTransTime { + config "false"; + type union { + type string; + type uint64; + } + description "Transition Time. Last time when protocol state changed"; + } + + // Last diag code + leaf lastDiag { + config "false"; + + type bfd_DiagCode; + description "Last Diagnostic code"; + } + leaf lastDownTime { + config "false"; + type union { + type string; + type uint64; + } + description "Last Down Time"; + } + + // This object holds bfd session stats information + container stats-items { + + uses bfd_SessStats-group; + description "BFD Session Stats"; + } + + // This object holds bfd last packet information. This signifies + // peer view of the session. + container peerv-items { + + uses bfd_PeerV-group; + description "BFD Peer View"; + } + + // This object holds app information per bfd session + container app-items { + list SessApp-list { + config "false"; + key "id"; + + uses bfd_SessApp-group; + description "BFD Session App list"; + } + description "BFD Session App"; + } + + container rsmbrSess-items { + + list RsMbrSess-list { + key "tDn"; + + uses bfd_RsMbrSess_source-group; + description "Port-Channel Member Sessions list"; + } + description "Port-Channel Member Sessions"; + } + } + + grouping bfd_SessStats-group { + description "BFD Session Stats"; + + // Packets received + leaf rxCnt { + config "false"; + + type nw_Counter64; + description "Packets Received"; + } + + // Average interval between received packets + leaf rxAvg { + config "false"; + + type bfd_PktInterval; + description "Packets Average Receive Interval, which is the average interval between received packets "; + } + + // Minimum interval between received packets + leaf rxMin { + config "false"; + + type bfd_PktInterval; + description "Packets Minimum Receive Interval"; + } + + // Maximum interval between received packets + leaf rxMax { + config "false"; + + type bfd_PktInterval; + description "Packets Maximum Receive Interval"; + } + leaf lastRxPkt { + config "false"; + type union { + type string; + type uint64; + } + description "Last packet received timestamp"; + } + + // Packets transmitted + leaf txCnt { + config "false"; + + type nw_Counter64; + description "Packets Transmitted"; + } + + // Average interval between transmitted packets + leaf txAvg { + config "false"; + + type bfd_PktInterval; + description "Packets Average Transmit Interval, which is average interval between transmitted packets"; + } + + // Minimum interval between transmitted packets + leaf txMin { + config "false"; + + type bfd_PktInterval; + description "Packets Minimum Transmit Interval"; + } + + // Maximum interval between transmitted packets + leaf txMax { + config "false"; + + type bfd_PktInterval; + description "Packets Maximum Transmit Interval"; + } + leaf lastTxPkt { + config "false"; + type union { + type string; + type uint64; + } + description "Last packet transmitted timestamp"; + } + + // Number of times session has gone into up state + leaf upCnt { + config "false"; + + type nw_Counter32; + description "Up Count is the number of times session has gone into up state"; + } + + // Number of times session has gone into down state + leaf downCnt { + config "false"; + + type nw_Counter32; + description "Down Count is the number of times session has gone into down state"; + } + } + + grouping bfd_PeerV-group { + description "BFD Peer View"; + + // Diag Code in last packet + leaf diag { + config "false"; + + type bfd_DiagCode; + description "Diagnostic Code in Last Packet"; + } + + // Protocol state in last packet + leaf operSt { + config "false"; + + type bfd_OperSt; + description "Protocol State in Last Packet"; + } + + // Flags in last packet + leaf flags { + config "false"; + + type bfd_PktFlags; + description "Flags in Last Packet"; + } + + // Detect multiplier in last packet + leaf detectMult { + config "false"; + + type bfd_DetectMult; + description "Detect Multiplier in Last Packet"; + } + + // My discriminator in last packet + leaf myDisc { + config "false"; + + type bfd_Discr; + description "My Discriminator in Last Packet"; + } + + // Your discriminator in last packet + leaf yourDisc { + config "false"; + + type bfd_Discr; + description "Your Discriminator in Last Packet"; + } + + // Min tx interval in last packet + leaf minTx { + config "false"; + + type bfd_MinTxIntvl; + description "Minimum Tx Interval in Last Packet"; + } + + // Min rx interval in last packet + leaf minRx { + config "false"; + + type bfd_MinRxIntvl; + description "Minimum Rx Interval in Last Packet"; + } + + // Min echo interval in last packet + leaf minEcho { + config "false"; + + type bfd_MinRxIntvl; + description "Minimum Echo Interval in Last Packet"; + } + } + + grouping bfd_SessApp-group { + description "BFD Session App"; + + // Application ID + leaf id { + config "false"; + + type bfd_AppId; + description "Application ID of the app associated with the BFD session"; + } + leaf name { + config "false"; + type string; + description "Application Name of the app associated with the BFD session"; + } + + // Application sap ID + leaf sapId { + config "false"; + + type bfd_SapId; + description "Application SAP ID of the app associated with the BFD session"; + } + leaf descr { + config "false"; + type string; + description "Application Description"; + } + + // Application session flags + leaf flags { + config "false"; + + type bfd_AppFlags; + description "Application Session Flags"; + } + + // Application private data + leaf data { + config "false"; + + type bfd_AppData; + description "Application Private Data"; + } + leaf autoExpTime { + config "false"; + type union { + type string; + type uint64; + } + description "Application Auto-Expiry Timestamp"; + } + } + + grouping cfs_Entity-group { + description "Cfs Entity"; + + // This objects hold cfs instance information. + container inst-items { + + uses cfs_Inst-group; + description "CFS Instance"; + } + } + + grouping cfs_Inst-group { + description "CFS Instance"; + + // Enable CFS distribution + leaf distribute { + + type cfs_AdminSt; + description "Enable CFS distribution"; + } + + // Enable CFS distribution over Ethernet + leaf ethDist { + + type cfs_AdminSt; + default "disabled"; + description "Enable CFS distribution over Ethernet"; + } + + // Enable CFS distribution over IPv4 + leaf ipv4Dist { + + type cfs_AdminSt; + default "disabled"; + description "Enable CFS distribution over IPv4"; + } + + // Enable CFS distribution over IPv6 + leaf ipv6Dist { + + type cfs_AdminSt; + default "disabled"; + description "Enable CFS distribution over IPv6"; + } + leaf ipv4Mcast { + type address_Ipv4; + default "239.255.70.83"; + description "cfs IPv4 mcast address"; + } + leaf ipv6Mcast { + type address_Ipv6; + default "ff15::efff:4653"; + description "cfs IPv6 mcast address"; + } + container region-items { + list Region-list { + key "regId"; + + uses cfs_Region-group; + description "CFS Region list"; + } + description "CFS Region"; + } + } + + grouping cfs_Region-group { + description "CFS Region"; + + leaf regId { + + type cfs_RegId; + description "CFS Region ID"; + } + container app-items { + list App-list { + key "appName"; + + uses cfs_App-group; + description "CFS Appname list"; + } + description "CFS Appname"; + } + } + + grouping cfs_App-group { + description "CFS Appname"; + leaf appName { + type string; + description "CFS Appname ID"; + } + } + + grouping dot1x_Entity-group { + description "Dot1x entity information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This objects hold per dot1x instance information. There is + // only one instance of dot1x running in the system today + container inst-items { + + uses dot1x_Inst-group; + description "Dot1x instance information"; + } + } + + grouping dot1x_Inst-group { + description "Dot1x instance information"; + leaf sysAuthCtrl { + type boolean; + default "true"; + description "Dot1x sys-auth-control"; + } + leaf radAcct { + type boolean; + default "false"; + description "Dot1x radius accounting"; + } + + // Dot1x Mac-Move + leaf macMove { + + type dot1x_MacMove; + description "Dot1x mac-move setting"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This object holds dot1x information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses dot1x_If-group; + description "Dot1x interface information list"; + } + description "Dot1x interface information"; + } + + // This objects holds AAA Authentication Groups + container authconfig-items { + + uses dot1x_AuthConfig-group; + description "Dot1x-AAA Authentication Group information"; + } + + // This objects holds AAA Accounting Groups + container acctconfig-items { + + uses dot1x_AcctConfig-group; + description "Dot1x-AAA Accounting Group information"; + } + } + + grouping dot1x_If-group { + description "Dot1x interface information"; + + // Dot1x Host Mode + leaf hostMode { + + type dot1x_HostMode; + description "Dot1x host mode type"; + } + + // Dot1x Pae Type + leaf paeType { + + type dot1x_PaeType; + description "Role of dot1x authenticating entity"; + } + + // Dot1x MAC Auth Bypass + leaf macAuthBypass { + + type dot1x_MacAuthBypass; + description "Dot1x mac auth bypass"; + } + + // Dot1x Max Reauth Request + leaf maxReauthReq { + + type dot1x_MaxReauthReq; + description "Maximum re-authentication attempts before failing"; + } + + // Dot1x Max Request + leaf maxReq { + + type dot1x_MaxReq; + description "Maximum retries to initiate authentication"; + } + + // Dot1x Port Control + leaf portCtrl { + + type dot1x_PortCtrl; + description "Dot1x port control mode"; + } + leaf reAuth { + type boolean; + default "false"; + description "Enable or disable reauthentication for this port"; + } + + // Dot1x Timeout: Quiet Period + leaf quietPeriod { + + type dot1x_QuietPeriod; + description "Dot1x timeout quiet period"; + } + + // Dot1x Timeout: Rate limit period + leaf rateLimitPeriod { + + type dot1x_RateLimitPeriod; + description "Dot1x timeout rate limit period"; + } + + // Dot1x Timeout: Re-auth Period + leaf reAuthPeriod { + + type dot1x_ReAuthPeriod; + description "Dot1x timeout re-auth period"; + } + + // Dot1x Timeout: Server Timeout + leaf serverTimeout { + + type dot1x_ServerTimeout; + description "Dot1x timeout server timeout"; + } + + // Dot1x Timeout: Supplicant Timeout + leaf suppTimeout { + + type dot1x_SuppTimeout; + description "Dot1x timeout supplicant timeout"; + } + + // Dot1x Timeout: Tx Period + leaf txPeriod { + + type dot1x_TxPeriod; + description "Dot1x timeout tx period"; + } + + // Dot1x Timeout: Inactivity Period + leaf inactivityPeriod { + + type dot1x_InactivityPeriod; + description "Dot1x timeout inactivity period"; + } + + // Dot1x Authentication order + leaf dot1xAuthOrder { + + type dot1x_Dot1xAuthOrder; + description "Dot1x authentication order"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + } + + grouping dot1x_AuthConfig-group { + description "Dot1x-AAA Authentication Group information"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // This property specifies the name of ProviderGroup which + // will be used for for authentication/accounting.The usage + // of this property value depends on the value of 'realm' + // property above. When an value is provided for property, + // this would restrict the servers which will be tried. + // When no value is provided, then all the servers will be + // tried for the protocol realm configured in the 'realm' + // property above. + leaf providerGroup { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup2 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup3 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup4 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup5 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup6 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup7 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup8 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + } + + grouping dot1x_AcctConfig-group { + description "Dot1x-AAA Accounting Group information"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + // Clients can add their own data for entity correlation + leaf ownerKey { + + type naming_Descr; + description "TBD"; + } + + // Clients can add their own data, for example, to indicate who created this object + leaf ownerTag { + + type naming_Descr1024 { + length "0..64"; + pattern ".*[a-zA-Z0-9\\\\!#$%\\(\\)\\*,-./:;@ _\\{\\|\\}~\\?&\\+]*.*"; + } + description "TBD"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // This property specifies the name of ProviderGroup which + // will be used for for authentication/accounting.The usage + // of this property value depends on the value of 'realm' + // property above. When an value is provided for property, + // this would restrict the servers which will be tried. + // When no value is provided, then all the servers will be + // tried for the protocol realm configured in the 'realm' + // property above. + leaf providerGroup { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup2 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup3 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup4 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup5 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup6 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup7 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + + leaf providerGroup8 { + + type aaa_ProviderGroupName; + description "Provider Group"; + } + } + + grouping hsrp_Entity-group { + description "HSRP Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects holds HSRP instance information. There is only one instance of HSRP supported currently + container inst-items { + + uses hsrp_Inst-group; + description "HSRP Instance"; + } + } + + grouping hsrp_Inst-group { + description "HSRP Instance"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // This object holds interface information + container if-items { + list If-list { + key "id"; + + uses hsrp_If-group; + description "Interface with HSRP Enabled list"; + } + description "Interface with HSRP Enabled"; + } + } + + grouping hsrp_If-group { + description "Interface with HSRP Enabled"; + + // Hsrp version + leaf version { + + type hsrp_HsrpVersion; + description "Hsrp version"; + } + + // Interface controls + leaf ctrl { + + type hsrp_IfControl; + description "Controls"; + } + + // Use-Bia Scope + leaf biaScope { + + type hsrp_BiaScopeType; + description "Use-Bia Scope"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + container grp-items { + list Group-list { + key "id af"; + + uses hsrp_Group-group; + description "HSRP Virtual Router list"; + } + description "HSRP Virtual Router"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping hsrp_Group-group { + description "HSRP Virtual Router"; + + // HSRP Group ID + leaf id { + + type hsrp_GroupId; + description "Group Id"; + } + + // HSRP Address Family + leaf af { + + type hsrp_GroupAf; + description "Group Address Family"; + } + leaf ip { + type address_Ip; + description "Primary IP Address"; + } + + // HSRP primary IP Obtain Mode + leaf ipObtainMode { + + type hsrp_GrpIpObtainMode; + description "IP Obtain Mode"; + } + + // Control Bits + leaf ctrl { + + type hsrp_GrpControl; + description "Group control bits"; + } + + // Minimum Preemption delay before this group can preempt a high priority Active + leaf preemptDelayMin { + + type hsrp_PreemptDelay; + description "Miminum delay before preempt"; + } + + // Preemption delay after a switch reboot before this group can preempt a High priority Active + leaf preemptDelayReload { + + type hsrp_PreemptDelay; + description "Preempt delay after a switch reload"; + } + + // Maximum number of seconds to allow IP redundancy clients to prevent preemption @@@ Dont expose thi to user + leaf preemptDelaySync { + + type hsrp_PreemptDelay; + description "Wait for IP redundancy clients"; + } + + // HSRP Hello packet interval + leaf helloIntvl { + + type hsrp_HelloIntvl; + description "Hello Interval"; + } + + // HSRP Hold interval + leaf holdIntvl { + + type hsrp_HoldIntvl; + description "Hold Interval"; + } + + // Grouph Priority + leaf prio { + + type hsrp_GrpPrio; + description "Group Priority"; + } + + // forwarding lower threshold + leaf fwdLwrThrld { + + type hsrp_GrpPrio; + description "Fowarding Lower Threshold"; + } + + // forwarding upper threshold + leaf fwdUprThrld { + + type hsrp_GrpPrio; + description "Forwarding Upper Threshold"; + } + + // HSRP master name for the group + leaf name { + + type hsrp_GrpName; + description "Master name string"; + } + + // HSRP Slave/follow config the group + leaf follow { + + type hsrp_GrpName; + description "Master name string to follow"; + } + + // HSRP authentication type for the group + leaf authType { + + type hsrp_AuthT; + description "Authentication Type for the group"; + } + + // Plain text authentication string for the group + leaf authSecret { + + type hsrp_AuthKey; + description "Plain text authentication string for the group"; + } + + // HSRP Authentication MD5 Type + leaf authMd5Type { + + type hsrp_AuthMd5T; + description "Type of MD5 Authentication"; + } + leaf authMd5KeyChainName { + type string { + length "0..63"; + } + description "Authentication MD5 Key Chain Name"; + } + + // Authentication MD5 Key String Type + leaf authMd5KeyStringType { + + type hsrp_Md5KeyStringType; + description "Authentication MD5 Key String Type"; + } + leaf authMd5KeyName { + type string { + length "0..64"; + } + description "Authentication Md5 Key Name"; + } + + // Enables compatibility mode for MD5 type-7 authentication + leaf authMd5CompatibilityMode { + + type hsrp_State; + default "disabled"; + description "Enables compatibility mode for MD5 type-7 authentication"; + } + leaf authMd5Timeout { + type uint32 { + range "0..32767"; + } + description "timeout for when HSRP will only accept a new key"; + } + leaf mac { + type address_Mac; + description "Configured MAC address for the group"; + } + + // Oper property to raise fault for any Configuration Error from BI + leaf configErr { + config "false"; + + type hsrp_ConfigErrQual; + description "This property gets set for any configuration error which cannot be rejected while applying the configuration. Fault will be raised based on the value."; + } + + // Class for HSRP secondary vips + container addr-items { + list Addr-list { + key "ip"; + + uses hsrp_Addr-group; + description "HSRP Secondary VIP list"; + } + description "HSRP Secondary VIP"; + } + + // Object to hold hsrp object track information + container track-items { + list ObjectTrack-list { + key "id"; + + uses hsrp_ObjectTrack-group; + description "Holds information of objects tracked by HSRP list"; + } + description "Holds information of objects tracked by HSRP"; + } + } + + grouping hsrp_Addr-group { + description "HSRP Secondary VIP"; + leaf ip { + type address_Ip; + description "Secondary IP Address"; + } + } + + grouping hsrp_ObjectTrack-group { + description "Holds information of objects tracked by HSRP"; + + // Object id to be tracked + leaf id { + + type track_TrackId; + description "Object Id to be tracked"; + } + leaf decrPrio { + type uint16 { + range "1..255"; + } + default "10"; + description "Priority to be decremented when tracked object is down. Default value is 10"; + } + } + + grouping icmpv4_Entity-group { + description "ICMPv4 Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per icmpv4 instance information. There is + // only one instance of icmpv4 running in the system today + container inst-items { + + uses icmpv4_Inst-group; + description "ICMPv4 Instance"; + } + } + + grouping icmpv4_Inst-group { + description "ICMPv4 Instance"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // This objects hold per icmpv4 layer3 domain (vrf) + // information + container dom-items { + list Dom-list { + key "name"; + + uses icmpv4_Dom-group; + description "ICMPv4 Domain list"; + } + description "ICMPv4 Domain"; + } + } + + grouping icmpv4_Dom-group { + description "ICMPv4 Domain"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // This object holds icmp information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses icmpv4_If-group; + description "ICMPv4 Interface list"; + } + description "ICMPv4 Interface"; + } + } + + grouping icmpv4_If-group { + description "ICMPv4 Interface"; + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Interface controls + // Default value handled in local MO type + leaf ctrl { + + // Type is a Local-MO-Defined-Type + type icmp_IfControl_If_ctrl; + description "Controls"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping icmpv6_Entity-group { + description "ICMPv6 Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per icmpv6 instance information. There is + // only one instance of icmpv6 running in the system today + container inst-items { + + uses icmpv6_Inst-group; + description "ICMPv6 Instance"; + } + } + + grouping icmpv6_Inst-group { + description "ICMPv6 Instance"; + + // Operational state + leaf operSt { + config "false"; + + type icmpv6_OperSt; + description "Operational State"; + } + + // Adjacency stale timer + leaf adjStaleTimer { + + type icmpv6_AdjStaleTimer; + description "Adjacency stale timer"; + } + + // Adjacency stale timer with icmp option + leaf adjStaleTimerIcmp { + + type nw_AdminSt; + description "Ipv6 adjacency stale timer with ICMP option"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // This object holds icmpv6 information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses icmpv6_If-group; + description "ICMPV6 Interface list"; + } + description "ICMPV6 Interface"; + } + container logs-items { + list ICMPv6EventLogs-list { + key "eventType"; + + uses icmpv6_ICMPv6EventLogs-group; + description "ICMPv6 Event History Logging list"; + } + description "ICMPv6 Event History Logging"; + } + + // Interface statistics icmpv6 common packet counters (global and per-i/f) + // Ephemeral data + container ifstats-items { + + uses icmpv6_IfStats-group; + description "ICMPv6 interface statistics"; + } + } + + grouping icmpv6_If-group { + description "ICMPV6 Interface"; + + // Interface controls + leaf ctrl { + + type icmpv6_IfControl; + description "Controls"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Interface statistics icmpv6 common packet counters (global and per-i/f) + // Ephemeral data + container ifstats-items { + + uses icmpv6_IfStats-group; + description "ICMPv6 interface statistics"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping icmpv6_IfStats-group { + description "ICMPv6 interface statistics"; + + // Total Messages sent @@@ ICMPV6_PKT_MSGS_SNT_CNT + // Ephemeral data + leaf totSent { + config "false"; + + type nw_Counter64; + description "Total messages sent"; + } + + // Total Messages received @@@ ICMPV6_PKT_MSGS_RECV_CNT + // Ephemeral data + leaf totRvcd { + config "false"; + + type nw_Counter64; + description "Total messages received"; + } + + // Error Messages sent @@@ ICMPV6_PKT_ERR_SNT_CNT + // Ephemeral data + leaf errSent { + config "false"; + + type nw_Counter64; + description "Error messages sent"; + } + + // Error Messages received @@@ ICMPV6_PKT_ERR_RECV_CNT + // Ephemeral data + leaf errRcvd { + config "false"; + + type nw_Counter64; + description "Error messages received"; + } + + // Interface Down Drop Count sent @@@ ICMPV6_PKT_SNT_DROP_IF_DOWN_CNT + // Ephemeral data + leaf ifDownDropSent { + config "false"; + + type nw_Counter64; + description "Interface Down Drop Count sent"; + } + + // Interface Down Drop Count received @@@ ICMPV6_PKT_RECV_DROP_IF_DOWN_CNT + // Ephemeral data + leaf ifDownDropRcvd { + config "false"; + + type nw_Counter64; + description "Interface Down Drop Count received"; + } + + // Adjacency not recovered from AM after HA @@@ ICMPV6_PKT_DROPPED_HA_NOT_READY + // Ephemeral data + leaf dropHaNotRdy { + config "false"; + + type nw_Counter64; + description "Adjacency not recovered from AM after HA"; + } + + // Pkts allowed due to inv ttl on vPC-MCT @@@ ICMPV6_PKT_ALLOW_MCT_TTL_CNT + // Ephemeral data + leaf dropInvldTtlMct { + config "false"; + + type nw_Counter64; + description "Pkts allowed due to inv ttl on vPC-MCT"; + } + + // Pkts dropped as source mac addr is own @@@ ICMPV6_PKT_RECV_DROP_OWN_SRC_MAC_COUNT + // Ephemeral data + leaf dropSrcMacOwnRcvd { + config "false"; + + type nw_Counter64; + description "Pkts dropped as source mac addr is own"; + } + + // Pkts dropped as tgt ip addr is not own @@@ ICMPV6_PKT_RECV_DROP_TARGET_NOT_US_COUNT + // Ephemeral data + leaf dropTgtIpNotOwnRcvd { + config "false"; + + type nw_Counter64; + description "Pkts dropped as tgt ip addr is not own"; + } + + // Pkts dropped as src ip addr is not own @@@ ICMPV6_PKT_RECV_DROP_SRC_NOT_US_COUNT + // Ephemeral data + leaf dropSrcIpNotOwnRcvd { + config "false"; + + type nw_Counter64; + description "Pkts dropped as src ip addr is not own"; + } + + // Destination Unreachables sent @@@ ICMPV6_PKT_DEST_UNREACHS_SNT_CNT + // Ephemeral data + leaf destUnreachSent { + config "false"; + + type nw_Counter64; + description "Destination Unreachables sent"; + } + + // Destination Unreachables received @@@ ICMPV6_PKT_DEST_UNREACHS_RECV_CNT + // Ephemeral data + leaf destUnreachRcvd { + config "false"; + + type nw_Counter64; + description "Destination Unreachables received"; + } + + // Administratively Prohibited sent @@@ ICMPV6_PKT_ADMIN_PROHIBS_SNT_CNT + // Ephemeral data + leaf adminProhibSent { + config "false"; + + type nw_Counter64; + description "Administratively Prohibited sent"; + } + + // Administratively Prohibited received @@@ ICMPV6_PKT_ADMIN_PROHIBS_RECV_CNT + // Ephemeral data + leaf adminProhibRcvd { + config "false"; + + type nw_Counter64; + description "Administratively Prohibited received"; + } + + // Time Exceeded sent @@@ ICMPV6_PKT_TIME_EXCDS_SNT_CNT + // Ephemeral data + leaf timeExcdSent { + config "false"; + + type nw_Counter64; + description "Time Exceeded sent "; + } + + // Time Exceeded received @@@ ICMPV6_PKT_TIME_EXCDS_RECV_CNT + // Ephemeral data + leaf timeExcdRcvd { + config "false"; + + type nw_Counter64; + description "Time Exceeded received"; + } + + // Parameter Problems sent @@@ ICMPV6_PKT_PARM_PROBS_SNT_CNT + // Ephemeral data + leaf parmPrblmSent { + config "false"; + + type nw_Counter64; + description "Parameter Problems sent"; + } + + // Parameter Problems received @@@ ICMPV6_PKT_PARM_PROBS_RECV_CNT + // Ephemeral data + leaf parmPrblmRcvd { + config "false"; + + type nw_Counter64; + description "Parameter Problems received"; + } + + // Echo Request sent @@@ ICMPV6_PKT_ECHOS_SNT_CNT + // Ephemeral data + leaf echoReqSent { + config "false"; + + type nw_Counter64; + description "Echo Request sent"; + } + + // Echo Request received @@@ ICMPV6_PKT_ECHOS_RECV_CNT + // Ephemeral data + leaf echoReqRcvd { + config "false"; + + type nw_Counter64; + description "Echo Request received"; + } + + // Echo Replies sent @@@ ICMPV6_PKT_ECHO_REPLIES_SNT_CNT + // Ephemeral data + leaf echoRepSent { + config "false"; + + type nw_Counter64; + description "Echo Replies sent"; + } + + // Echo Replies received @@@ ICMPV6_PKT_ECHO_REPLIES_RECV_CNT + // Ephemeral data + leaf echoRepRcvd { + config "false"; + + type nw_Counter64; + description "Echo Replies received"; + } + + // Redirects sent @@@ ICMPV6_PKT_REDIRECTS_SNT_CNT + // Ephemeral data + leaf redirSent { + config "false"; + + type nw_Counter64; + description "Redirects sent"; + } + + // Redirects received @@@ ICMPV6_PKT_REDIRECTS_RECV_CNT + // Ephemeral data + leaf redirRcvd { + config "false"; + + type nw_Counter64; + description "Redirects received"; + } + + // Packet Too Big sent @@@ ICMPV6_PKT_TOO_BIG_SNT_CNT + // Ephemeral data + leaf tooBigSent { + config "false"; + + type nw_Counter64; + description "Packet Too Big sent"; + } + + // Packet Too Big received @@@ ICMPV6_PKT_TOO_BIG_RECV_CNT + // Ephemeral data + leaf tooBigRcvd { + config "false"; + + type nw_Counter64; + description "Packet Too Big received"; + } + + // Router Advertisements sent @@@ ICMPV6_PKT_ROUTER_ADV_SNT_CNT + // Ephemeral data + leaf raSent { + config "false"; + + type nw_Counter64; + description "Router Advertisements sent"; + } + + // Router Advertisements received @@@ ICMPV6_PKT_ROUTER_ADV_RECV_CNT + // Ephemeral data + leaf raRcvd { + config "false"; + + type nw_Counter64; + description "Router Advertisements received"; + } + + // Router Solicitations sent @@@ ICMPV6_PKT_ROUTER_SOLICITS_SNT_CNT + // Ephemeral data + leaf rsSent { + config "false"; + + type nw_Counter64; + description "Router Solicitations sent"; + } + + // Router Solicitations received @@@ ICMPV6_PKT_ROUTER_SOLICITS_RECV_CNT + // Ephemeral data + leaf rsRcvd { + config "false"; + + type nw_Counter64; + description "Router Solicitations received"; + } + + // Neighbor Advertisements sent @@@ ICMPV6_PKT_NEIGHBOR_ADV_SNT_CNT + // Ephemeral data + leaf naSent { + config "false"; + + type nw_Counter64; + description "Neighbor Advertisements sent"; + } + + // Neighbor Advertisements received @@@ ICMPV6_PKT_NEIGHBOR_ADV_RECV_CNT + // Ephemeral data + leaf naRcvd { + config "false"; + + type nw_Counter64; + description "Neighbor Advertisements received"; + } + + // Neighbor Solicitations sent @@@ ICMPV6_PKT_NEIGHBOR_SOLICITS_SNT_CNT + // Ephemeral data + leaf nsSent { + config "false"; + + type nw_Counter64; + description "Neighbor Solicitations sent"; + } + + // Neighbor Solicitations received @@@ ICMPV6_PKT_NEIGHBOR_SOLICITS_RECV_CNT + // Ephemeral data + leaf nsRcvd { + config "false"; + + type nw_Counter64; + description "Neighbor Solicitations received"; + } + + // Duplicate router RA received @@@ ICMPV6_PKT_DUP_ROUTER + // Ephemeral data + leaf dupRAReceived { + config "false"; + + type nw_Counter64; + description "Duplicate router RA received"; + } + + // Fastpath Packets @@@ ICMPV6_PKT_FASTPATH_RECV_CNT + // Ephemeral data + leaf fastpthRcvd { + config "false"; + + type nw_Counter64; + description "Fastpath Packets"; + } + + // Ignored Fastpath Packets - Fastpath disabled @@@ ICMPV6_PKT_RECV_DROP_FASTPATH_DISABLED_CNT + // Ephemeral data + leaf fastpathDsbleIgnRcvd { + config "false"; + + type nw_Counter64; + description "Ignored Fastpath Packets - Fastpath disabled"; + } + + // Ignored Fastpath Packets - others @@@ ICMPV6_PKT_RECV_DROP_REQUEST_IGNORE_CNT + // Ephemeral data + leaf fastpathOtherIgnRcvd { + config "false"; + + type nw_Counter64; + description "Ignored fastpath packets - others"; + } + + // @@@ ICMPV6_PKT_MLD_V1_QUERY_SNT_CNT + // Ephemeral data + leaf mldV1QueriesSent { + config "false"; + + type nw_Counter64; + description "V1 queries sent"; + } + + // @@@ ICMPV6_PKT_MLD_V1_QUERY_RECV_CNT + // Ephemeral data + leaf mldV1QueriesRecv { + config "false"; + + type nw_Counter64; + description "V1 queries received"; + } + + // @@@ ICMPV6_PKT_MLD_V2_QUERY_SNT_CNT + // Ephemeral data + leaf mldV2QueriesSent { + config "false"; + + type nw_Counter64; + description "V2 queries sent"; + } + + // @@@ ICMPV6_PKT_MLD_V2_QUERY_RECV_CNT + // Ephemeral data + leaf mldV2QueriesRecv { + config "false"; + + type nw_Counter64; + description "V2 queries received"; + } + + // @@@ ICMPV6_PKT_MLD_V1_REPORTS_SNT_CNT + // Ephemeral data + leaf mldV1ReportsSent { + config "false"; + + type nw_Counter64; + description "V1 reports sent"; + } + + // @@@ ICMPV6_PKT_MLD_V1_REPORTS_RECV_CNT + // Ephemeral data + leaf mldV1ReportsRecv { + config "false"; + + type nw_Counter64; + description "V1 reports received"; + } + + // @@@ ICMPV6_PKT_MLD_V2_REPORTS_SNT_CNT + // Ephemeral data + leaf mldV2ReportsSent { + config "false"; + + type nw_Counter64; + description "V2 reports sent"; + } + + // @@@ ICMPV6_PKT_MLD_V2_REPORTS_RECV_CNT + // Ephemeral data + leaf mldV2ReportsRecv { + config "false"; + + type nw_Counter64; + description "V2 reports received"; + } + + // @@@ ICMPV6_PKT_MLD_V1_LEAVES_SNT_CNT + // Ephemeral data + leaf mldV1LeavesSent { + config "false"; + + type nw_Counter64; + description "V1 leaves sent"; + } + + // @@@ ICMPV6_PKT_MLD_V1_LEAVES_RECV_CNT + // Ephemeral data + leaf mldV1LeavesRecv { + config "false"; + + type nw_Counter64; + description "V1 leaves received"; + } + } + + grouping icmpv6_ICMPv6EventLogs-group { + description "ICMPv6 Event History Logging"; + + // Type of Event + leaf eventType { + + type icmpv6_EventType; + description "Event Log Type"; + } + + // Type of Event LogSize + leaf logSize { + + type icmpv6_EventLogSize; + description "Event Log Size"; + } + } + + grouping igmpsnoop_Entity-group { + description "Holds IGMP Snooping Entity Information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This objects hold per igmp instance information. There is only + // one instance of igmp running in the system today + container inst-items { + + uses igmpsnoop_Inst-group; + description "Holds IGMP Snooping Instance information"; + } + } + + grouping igmpsnoop_Inst-group { + description "Holds IGMP Snooping Instance information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // All router multicast group address (GIPo), outer multicast + // encapsulation ip address + leaf allRtrMcastEncap { + config "false"; + + type mcast_GrpIp; + description "All Router Multicast Encapsulation"; + } + + // Flags + leaf flags { + config "false"; + + type ipmcsnoop_InstFlags; + description "Flags"; + } + + // This objects hold per igmp domain information + container dom-items { + + uses igmpsnoop_Dom-group; + description "Holds IGMP Snooping Domain information"; + } + + // This objects hold per Instance statistics operational + // information. This is a singleton within Instance + container inststats-items { + + uses igmpsnoop_InstStats-group; + description "Holds statistics data per Igmpsnoop Instance"; + } + } + + grouping igmpsnoop_Dom-group { + description "Holds IGMP Snooping Domain information"; + leaf operCfgRecovery { + config "false"; + type boolean; + description "Running configuration recovery"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "IP Multicast snooping domain name"; + } + + // Id for this domain @@@ This comes from the domain id assigned by the + // PE for the bridge domain + leaf id { + config "false"; + + type l2_DomId; + description "Operational domain identifier"; + } + leaf encap { + type string; + description "L2 Domain Fabric Encapsulation"; + } + + // Admin State + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Administrative State"; + } + + // Controls + leaf ctrl { + + type ipmcsnoop_DomControl; + description "Controls for IP milticast domains"; + } + + // Flags + leaf flags { + config "false"; + + type ipmcsnoop_DomFlags; + description "Flags for IP milticast domains"; + } + + // Forwarding mode + leaf fwdMode { + config "false"; + + type ipmcsnoop_FwdMode; + description "Operating Fowarding Mode"; + } + + // Number of router interfaces + leaf numRtrIf { + config "false"; + + type nw_Counter32; + description "Multicast Router Interfaces"; + } + + // Number of multicast groups + leaf numMcGrp { + config "false"; + + type nw_Counter32; + description "Number of Multicast Groups"; + } + + // Number of Source groups + leaf numSrcGrp { + config "false"; + + type nw_Counter32; + description "Number of Multicast Source Groups"; + } + leaf grpFlushTs { + config "false"; + type union { + type string; + type uint64; + } + description "Group Flush No Querier Timestamp"; + } + leaf nextQueryTs { + config "false"; + type union { + type string; + type uint64; + } + description "Next Query Timestamp"; + } + leaf nextQueryExpTs { + config "false"; + type union { + type string; + type uint64; + } + description "Next Query Timestamp"; + } + + // Mrtr Epg Id used when sending packets to mrtr port + leaf mrtrEpgId { + config "false"; + + type l2_DomId; + description "Mrouter Endpoint Group ID"; + } + + // IGMP database + // Ephemeral data + container db-items { + + // Ephemeral data + list Db-list { + config "false"; + key "type"; + + uses igmpsnoop_Db-group; + description "Database record with type of data to display list"; + } + description "Database record with type of data to display"; + } + + // This objects hold per igmp domain statistics operational + // information. This is a singleton within a Dom + container domstats-items { + + uses igmpsnoop_DomStats-group; + description "Holds statistics data per Igmpsnoop Domain"; + } + + // Multicast router if that is configured statically + container strtrif-items { + list StRtrIf-list { + config "false"; + key "id"; + + uses igmpsnoop_StRtrIf-group; + description "Holds IGMP Static Router Interface configuration information list"; + } + description "Holds IGMP Static Router Interface configuration information"; + } + + // Multicast router if @@@ Mulitcast router if in the BD. These can be either + // configured by the admin or discovered through protocols + // like PIM, IGMP. + container rtrif-items { + list RtrIf-list { + config "false"; + key "id"; + + uses igmpsnoop_RtrIf-group; + description "Holds configuration information for Router Interface list"; + } + description "Holds configuration information for Router Interface"; + } + + // This objects is the parent for vlan config mode params + container vlan-items { + list Vlan-list { + key "vlanid"; + + uses igmpsnoop_Vlan-group; + description "Holds IGMP snooping vlan configurations list"; + } + description "Holds IGMP snooping vlan configurations"; + } + + // This objects is the parent for Interface config mode params + container intf-items { + list Intf-list { + key "id"; + + uses igmpsnoop_Intf-group; + description "Holds IGMP snooping Interface configurations list"; + } + description "Holds IGMP snooping Interface configurations"; + } + + // This objects holds configurable params in + // bridge domain config mode + container bd-items { + list BD-list { + key "bdid"; + + uses igmpsnoop_BD-group; + description "Holds IGMP Snooping Bridge Domain Configurations list"; + } + description "Holds IGMP Snooping Bridge Domain Configurations"; + } + + // This objects holds configurable params in global config mode + container gl-items { + + uses igmpsnoop_Gl-group; + description "Holds IGMP Snooping Configurations in Global Configuration Mode"; + } + } + + grouping igmpsnoop_Db-group { + description "Database record with type of data to display"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type of the repository + // Ephemeral data + leaf type { + config "false"; + + type ipmcsnoop_DbT; + description "Database Type identifying the oper data to display"; + } + + // Ephemeral data + leaf totalMacCount { + config "false"; + type uint32; + description "Total mac count"; + } + + // igmpsnoop global records + // Ephemeral data + container gsnoop-items { + + uses igmpsnoop_GSnoopRec-group; + description "Holds IGMP Snooping Global Parameters"; + } + + // igmpsnoop Vlan records + // Ephemeral data + container vsnoop-items { + + // Ephemeral data + list VSnoopRec-list { + config "false"; + key "vlanid"; + + uses igmpsnoop_VSnoopRec-group; + description "Holds IGMP Snooping Parameters per Vlan list"; + } + description "Holds IGMP Snooping Parameters per Vlan"; + } + + // Vlan record + // Ephemeral data + container vlanrec-items { + + // Ephemeral data + list VlanRec-list { + config "false"; + key "vlanid"; + + uses igmpsnoop_VlanRec-group; + description "Holds IGMP Snooping Vlan Record list"; + } + description "Holds IGMP Snooping Vlan Record"; + } + + // Mrouter record + // Ephemeral data + container mrouter-items { + + // Ephemeral data + list MRouterRec-list { + config "false"; + key "vlanid interface"; + + uses igmpsnoop_MRouterRec-group; + description "Holds IGMP Snooping Static Multicast Router Record list"; + } + description "Holds IGMP Snooping Static Multicast Router Record"; + } + + // Explicit Tracking record + // Ephemeral data + container expTrack-items { + + // Ephemeral data + list ExpTrackRec-list { + config "false"; + key "vlanid grpAddr srcAddr intf"; + + uses igmpsnoop_ExpTrackRec-group; + description "Holds IGMP Snooping Explicit Host Tracking Record list"; + } + description "Holds IGMP Snooping Explicit Host Tracking Record"; + } + + // Vlan statistics MO + // Ephemeral data + container vstats-items { + + // Ephemeral data + list VlanStatsRec-list { + config "false"; + key "vlanid"; + + uses igmpsnoop_VlanStatsRec-group; + description "Holds IGMP Snooping Per Vlan Statistics list"; + } + description "Holds IGMP Snooping Per Vlan Statistics"; + } + + // Ephemeral data + container gstats-items { + + uses igmpsnoop_GStatsRec-group; + description "Holds IGMP Snooping Global Statistics"; + } + + // Report policy MO + // Ephemeral data + container policy-items { + + // Ephemeral data + list ReportPolicyStats-list { + config "false"; + key "vlanid qcount"; + + uses igmpsnoop_ReportPolicyStats-group; + description "Holds IGMP Snooping Report Policy Statistics list"; + } + description "Holds IGMP Snooping Report Policy Statistics"; + } + + // Group MO + // Ephemeral data + container group-items { + + // Ephemeral data + list IgmpsnGroupRec-list { + config "false"; + key "vlanid groupaddr sourceaddr ifname"; + + uses igmpsnoop_IgmpsnGroupRec-group; + description "Holds IGMP Snooping Group Record list"; + } + description "Holds IGMP Snooping Group Record"; + } + + // Multicast Group records + // Ephemeral data + container mcgrp-items { + + // Ephemeral data + list McGrpRec-list { + config "false"; + key "addr"; + + uses igmpsnoop_McGrpRec-group; + description "Holds IGMP Snooping Group Information list"; + } + description "Holds IGMP Snooping Group Information"; + } + + // Multicast Group records + // Ephemeral data + container querier-items { + + // Ephemeral data + list QuerierRec-list { + config "false"; + key "vlanid"; + + uses igmpsnoop_QuerierRec-group; + description "Holds IGMP Snooping querier specific information list"; + } + description "Holds IGMP Snooping querier specific information"; + } + } + + grouping igmpsnoop_GSnoopRec-group { + description "Holds IGMP Snooping Global Parameters"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf snooping { + config "false"; + type boolean; + description "Global Snooping Enabled Disabled"; + } + + // Ephemeral data + leaf omf { + config "false"; + type boolean; + description "Global Optimized Multicast Flooding"; + } + + // Ephemeral data + leaf grepsup { + config "false"; + type boolean; + description "Global Report Suppression"; + } + + // Ephemeral data + leaf gv3repsup { + config "false"; + type boolean; + description "Gloabl v3 Report Suppression"; + } + + // Ephemeral data + leaf glinklocalgrpsup { + config "false"; + type boolean; + description "Global Logical Link Suppression"; + } + + // Ephemeral data + leaf groupTimeout { + config "false"; + type uint32; + description "Group Timeout "; + } + + // Ephemeral data + leaf proxyGeneralQuery { + config "false"; + type boolean; + description "Global Proxy Queries"; + } + + // Ephemeral data + leaf gmaxResponseTime { + config "false"; + type uint32; + description "Max Response Time"; + } + } + + grouping igmpsnoop_VSnoopRec-group { + description "Holds IGMP Snooping Parameters per Vlan"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf lkpmode { + config "false"; + + type ipmcsnoop_LkpModeT; + description "Lookup Mode"; + } + + // Ephemeral data + leaf snoopOn { + config "false"; + type boolean; + description "Indicates if Vlan Snooping is Enabled/Disabled"; + } + + // Ephemeral data + leaf repsup { + config "false"; + type boolean; + description "Vlan Report Suppression"; + } + + // Ephemeral data + leaf v3repsup { + config "false"; + type boolean; + description "Vlan v3 Report Suppression"; + } + + // Ephemeral data + leaf switchQuerier { + config "false"; + type boolean; + description "Switch querier enabled"; + } + + // Ephemeral data + leaf vlinklocalgrpsup { + config "false"; + type boolean; + description "Vlan logical link Group Suppressison"; + } + + // Ephemeral data + leaf omf_enabled { + config "false"; + type boolean; + description "Vlan Optimized Multicast Flooding"; + } + + // Ephemeral data + leaf reportFldAll { + config "false"; + type boolean; + description "Report flood all enabled"; + } + + // Ephemeral data + leaf grpAddrPrxyLeave { + config "false"; + type boolean; + description "Use Group Addr Proxy Leave"; + } + + // Ephemeral data + leaf explicitTracking { + config "false"; + type boolean; + description "Explicit Tracking enabled"; + } + + // Ephemeral data + leaf vlanid { + config "false"; + + type ipmcsnoop_Vlanid; + description "Vlan Identifier"; + } + + // Last member query interval + // Ephemeral data + leaf lastMbrIntvl { + config "false"; + + type mcast_LastMbrQueryIntvl; + description "Last Member Query Interval"; + } + + // Querier version + // Ephemeral data + leaf ver { + config "false"; + + type mcast_Ver; + description "Current IGMP Version"; + } + + // Querier IP Address + // Ephemeral data + leaf addr { + config "false"; + + type mcast_QuerierIp; + description "Querier IP Address"; + } + + // Query interval + // Ephemeral data + leaf queryIntvl { + config "false"; + + type mcast_QueryIntvl; + description "Query Interval"; + } + + // Robustness factor + // Ephemeral data + leaf robustFac { + config "false"; + + type mcast_RobustFactor; + description "Robustness Factor"; + } + + // Ephemeral data + leaf routePortcnt { + config "false"; + type uint32; + description "Route Port Count"; + } + + // Ephemeral data + leaf groupcnt { + config "false"; + type uint32; + description "Groups Under This Vlan"; + } + + // Ephemeral data + leaf sgcount { + config "false"; + type uint32; + description "Number of (S,G) in this vlan"; + } + + // Ephemeral data + leaf vpcFunction { + config "false"; + type boolean; + description "Indicates if VPC Function is Enabled"; + } + + // Ephemeral data + leaf fastleave { + config "false"; + type boolean; + description "Indicates if Fast-leave is Enabled"; + } + } + + grouping igmpsnoop_VlanRec-group { + description "Holds IGMP Snooping Vlan Record"; + + // Ephemeral data + leaf vlanid { + config "false"; + + type ipmcsnoop_Vlanid; + description "Vlan Identifier"; + } + + // Ephemeral data + leaf macCount { + config "false"; + type uint32; + description "MAC Entries Count for a Vlan Identifier"; + } + + // MAC record + // Ephemeral data + container mac-items { + + // Ephemeral data + list MacRec-list { + config "false"; + key "macAddress"; + + uses igmpsnoop_MacRec-group; + description "Holds IGMP Snooping MAC-Address Record list"; + } + description "Holds IGMP Snooping MAC-Address Record"; + } + } + + grouping igmpsnoop_MacRec-group { + description "Holds IGMP Snooping MAC-Address Record"; + + // Ephemeral data + leaf macAddress { + config "false"; + type address_Mac; + description "MAC Address of the Outgoing Interface"; + } + + // Ephemeral data + leaf type { + config "false"; + + type ipmcsnoop_MacType; + description "Type of MAC Address"; + } + + // Ephemeral data + leaf age { + config "false"; + type uint32; + description "Seconds Since Last Seen"; + } + + // MAC-OIF record + // Ephemeral data + container oif-items { + + // Ephemeral data + list MacOifRec-list { + config "false"; + key "oif"; + + uses igmpsnoop_MacOifRec-group; + description "Holds IGMP Snooping MAC-Address OIF Record list"; + } + description "Holds IGMP Snooping MAC-Address OIF Record"; + } + } + + grouping igmpsnoop_MacOifRec-group { + description "Holds IGMP Snooping MAC-Address OIF Record"; + + // Ephemeral data + leaf oif { + config "false"; + + type nw_IfId; + description "Outgoing Interface for a MAC Address"; + } + } + + grouping igmpsnoop_MRouterRec-group { + description "Holds IGMP Snooping Static Multicast Router Record"; + + // Ephemeral data + leaf rportType { + config "false"; + type string; + description "IGMP rport type details"; + } + + // Ephemeral data + leaf type { + config "false"; + + type ipmcsnoop_MrouteType; + description "Specify the Type of Mroute for a VLAN/BD"; + } + + // Ephemeral data + leaf interface { + config "false"; + + type nw_IfId; + description "Specify the Interface Port of Mroute for a VLAN/BD"; + } + + // Ephemeral data + leaf uptime { + config "false"; + type string; + description "Specify the Uptime of Mroute for a VLAN/BD"; + } + + // Ephemeral data + leaf expTime { + config "false"; + type string; + description "Specify the Expiry timestamp of Mroute for a VLAN/BD"; + } + + // Ephemeral data + leaf vlanid { + config "false"; + + type ipmcsnoop_Vlanid; + description "Vlan Identifier"; + } + } + + grouping igmpsnoop_ExpTrackRec-group { + description "Holds IGMP Snooping Explicit Host Tracking Record"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf vlanid { + config "false"; + + type ipmcsnoop_Vlanid; + description "Vlan Identifier"; + } + + // Ephemeral data + leaf intf { + config "false"; + + type nw_IfId; + description "Interface Identifier. Supported types are ethernet-like, port/channel, Vlan interfaces."; + } + + // Ephemeral data + leaf reporter { + config "false"; + + type ipmcsnoop_Reporter; + description "Report IP Address"; + } + + // Ephemeral data + leaf uptime { + config "false"; + type string; + description "Uptime Timestamp"; + } + + // Ephemeral data + leaf lastJoinTime { + config "false"; + type string; + description "Explicit tracking Last join Timestamp"; + } + + // Ephemeral data + leaf expiresTime { + config "false"; + type string; + description "Explicit tracking Expiry Timestamp"; + } + + // Ephemeral data + leaf srcAddr { + config "false"; + type address_Ip; + description "Source IP Address"; + } + + // Ephemeral data + leaf grpAddr { + config "false"; + type address_Ip; + description "Group IP Address"; + } + + // Ephemeral data + leaf version { + config "false"; + + type ipmcsnoop_VersionT; + description "Version v3/v2"; + } + + // Ephemeral data + leaf numReports { + config "false"; + type uint32; + description "Number of Reports Sent"; + } + } + + grouping igmpsnoop_VlanStatsRec-group { + description "Holds IGMP Snooping Per Vlan Statistics"; + + // Ephemeral data + leaf uptime { + config "false"; + type string; + description "Uptime Timestamp"; + } + + // Ephemeral data + leaf vpr { + config "false"; + type uint32; + description "Packets Received"; + } + + // Ephemeral data + leaf v1rr { + config "false"; + type uint32; + description "IGMPv1 Reports Received"; + } + + // Ephemeral data + leaf v2rr { + config "false"; + type uint32; + description "IGMPv2 Reports Received"; + } + + // Ephemeral data + leaf v3rr { + config "false"; + type uint32; + description "IGMPv3 Reports Received"; + } + + // Ephemeral data + leaf v3qr { + config "false"; + type uint32; + description "IGMPv3 Queries Received"; + } + + // Ephemeral data + leaf v2lr { + config "false"; + type uint32; + description "IGMPv2 Leave Received"; + } + + // Ephemeral data + leaf phr { + config "false"; + type uint32; + description "PIM HELLOs Received count"; + } + + // Ephemeral data + leaf irr { + config "false"; + type uint32; + description "Invalid Reports Received"; + } + + // Ephemeral data + leaf illgr { + config "false"; + type uint32; + description "Ignored link-local group Reports Received"; + } + + // Ephemeral data + leaf iqr { + config "false"; + type uint32; + description "Invalid Queries Received"; + } + + // Ephemeral data + leaf v2ls { + config "false"; + type uint32; + description "IGMPv2 Leaves Suppressed"; + } + + // Ephemeral data + leaf v3gs { + config "false"; + type uint32; + description "IGMPv3 Group records Suppressed"; + } + + // Ephemeral data + leaf vmr { + config "false"; + type uint32; + description "Report Version mismatch"; + } + + // Ephemeral data + leaf upr { + config "false"; + type uint32; + description "Unknown Packets Received"; + } + + // Ephemeral data + leaf qo { + config "false"; + type uint32; + description "Queries Originated"; + } + + // Ephemeral data + leaf v2ro { + config "false"; + type uint32; + description "IGMPv2 Proxy-Reports Originated"; + } + + // Ephemeral data + leaf v2lo { + config "false"; + type uint32; + description "IGMPv2 Proxy-Leaves Originated"; + } + + // Ephemeral data + leaf v3ro { + config "false"; + type uint32; + description "IGMPv3 Proxy-Reports Originated"; + } + + // Ephemeral data + leaf vpsr { + config "false"; + type uint32; + description "Packets Sent to routers"; + } + + // Ephemeral data + leaf str { + config "false"; + type uint32; + description "STP TCN Received"; + } + + // Ephemeral data + leaf cps { + config "false"; + type uint32; + description "CFS Packets Sent"; + } + + // Ephemeral data + leaf cpr { + config "false"; + type uint32; + description "CFS Packets Received"; + } + + // Ephemeral data + leaf cpe { + config "false"; + type uint32; + description "CFS Packets Errored"; + } + + // Ephemeral data + leaf mps { + config "false"; + type uint32; + description "MCT Packets Sent"; + } + + // Ephemeral data + leaf mpr { + config "false"; + type uint32; + description "MCT Packets Received"; + } + + // Ephemeral data + leaf mpe { + config "false"; + type uint32; + description "MCT Packets Errored"; + } + + // Ephemeral data + leaf v1qr { + config "false"; + type uint32; + description "IGMPv1 Queries Received"; + } + + // Ephemeral data + leaf v2qr { + config "false"; + type uint32; + description "IGMPv2 Queries Received"; + } + + // Ephemeral data + leaf v1rs { + config "false"; + type uint32; + description "IGMPv1 Reports Suppressed"; + } + + // Ephemeral data + leaf v2rs { + config "false"; + type uint32; + description "IGMPv2 Reports Suppressed"; + } + + // Ephemeral data + leaf vlanid { + config "false"; + + type ipmcsnoop_Vlanid; + description "Vlan identifier"; + } + } + + grouping igmpsnoop_GStatsRec-group { + description "Holds IGMP Snooping Global Statistics"; + + // Ephemeral data + leaf pr { + config "false"; + type uint32; + description "Global Packets Received"; + } + + // Ephemeral data + leaf invPkt { + config "false"; + type uint32; + description "Global Packets Errored"; + } + + // Ephemeral data + leaf pnv { + config "false"; + type uint32; + description "Global Packets for Non-Snooped Vlans"; + } + + // Ephemeral data + leaf loopBkPkt { + config "false"; + type uint32; + description "Global Packets Loopbacked"; + } + + // Ephemeral data + leaf mrdLoopBk { + config "false"; + type uint32; + description "Global MRD Loopback Packets"; + } + + // Ephemeral data + leaf pf { + config "false"; + type uint32; + description "Global Packets flooded"; + } + + // Ephemeral data + leaf vpcDrQs { + config "false"; + type uint32; + description "Global vPC PIM DR Queries Sent"; + } + + // Ephemeral data + leaf vpcDrQr { + config "false"; + type uint32; + description "Global vPC PIM DR Queries Received"; + } + + // Ephemeral data + leaf vpcDrQf { + config "false"; + type uint32; + description "Global vPC PIM DR Queries Failed"; + } + + // Ephemeral data + leaf vpcDrUs { + config "false"; + type uint32; + description "Global vPC PIM DR updates Sent"; + } + + // Ephemeral data + leaf vpcDrUr { + config "false"; + type uint32; + description "Global vPC PIM DR updates Received"; + } + + // Ephemeral data + leaf vpcDrUf { + config "false"; + type uint32; + description "Global vPC PIM DR updates Failed"; + } + + // Ephemeral data + leaf vpcCfsSf { + config "false"; + type uint32; + description "Global vPC CFS send fail"; + } + + // Ephemeral data + leaf vpcCfsRs { + config "false"; + type uint32; + description "GlobalvPC CFS message response Sent"; + } + + // Ephemeral data + leaf vpcCfsRr { + config "false"; + type uint32; + description "GlobalvPC CFS message response Received"; + } + + // Ephemeral data + leaf vpcCfsRf { + config "false"; + type uint32; + description "Global vPC CFS message response Failed"; + } + + // Ephemeral data + leaf vpcCfsRfp { + config "false"; + type uint32; + description "Global vPC CFS message response fail peer-link down"; + } + + // Ephemeral data + leaf vpcCfsUrls { + config "false"; + type uint32; + description "Global vPC CFS unreliable message Sent"; + } + + // Ephemeral data + leaf vpcCfsUrR { + config "false"; + type uint32; + description "Global vPC CFS unreliable message Received"; + } + + // Ephemeral data + leaf vpcCfsCrlF { + config "false"; + type uint32; + description "Global vPC CFS unreliable message Failed"; + } + + // Ephemeral data + leaf vpccfsrls { + config "false"; + type uint32; + description "Global vPC CFS reliable message Sent"; + } + + // Ephemeral data + leaf vpccfsrlr { + config "false"; + type uint32; + description "Global vPC CFS reliable message Received"; + } + + // Ephemeral data + leaf vpccfsrlf { + config "false"; + type uint32; + description "Global vPC CFS reliable message Failed"; + } + + // Ephemeral data + leaf invIod { + config "false"; + type uint32; + description "Global invalid IOD Packets"; + } + + // Ephemeral data + leaf stptcnr { + config "false"; + type uint32; + description "Global STP TCN Messages Received"; + } + + // Ephemeral data + leaf imapif { + config "false"; + type uint32; + description "Global IM API Failed"; + } + + // Ephemeral data + leaf mfreqr { + config "false"; + type uint32; + description "Global MFDM Download Requests Received"; + } + + // Ephemeral data + leaf mfcmps { + config "false"; + type uint32; + description "Global MFDM Download Complete Sent"; + } + + // Ephemeral data + leaf mfdgcmps { + config "false"; + type uint32; + description "Global MFDM Downgrade Complete Sent"; + } + + // Ephemeral data + leaf bufsnt { + config "false"; + type uint32; + description "Global Number of Buffers Sent to MFDM"; + } + + // Ephemeral data + leaf bufackr { + config "false"; + type uint32; + description "Global Number of Buffer Acks Received from MFDM"; + } + + // Ephemeral data + leaf vpcmismatch { + config "false"; + type uint32; + description "Global VPC-incr-type Mismatch"; + } + } + + grouping igmpsnoop_ReportPolicyStats-group { + description "Holds IGMP Snooping Report Policy Statistics"; + + // Ephemeral data + leaf vlanid { + config "false"; + + type ipmcsnoop_Vlanid; + description "Vlan Identifier"; + } + + // Ephemeral data + leaf rpmType { + config "false"; + type uint32; + description "RPM Type"; + } + + // Ephemeral data + leaf policyName { + config "false"; + + type ipmcsnoop_PolicyNameT; + description "Policy Name"; + } + + // Ephemeral data + leaf qcount { + config "false"; + type uint32; + description "Queue Count"; + } + + // Ephemeral data + leaf acceptCount { + config "false"; + type uint32; + description "Queue Accept Count"; + } + + // Ephemeral data + leaf rejectCount { + config "false"; + type uint32; + description "Queue Reject Count"; + } + } + + grouping igmpsnoop_IgmpsnGroupRec-group { + description "Holds IGMP Snooping Group Record"; + + // Ephemeral data + leaf ifname { + config "false"; + + type nw_IfId; + description "Interace name for the Group. Supported interfaces include Ethernet-like, Port/Channel, Loopback"; + } + + // Ephemeral data + leaf vlanid { + config "false"; + + type ipmcsnoop_Vlanid; + description "Vlan Identifier"; + } + + // Ephemeral data + leaf sourceaddr { + config "false"; + type address_Ip; + description "Specify Source IP Address"; + } + + // Ephemeral data + leaf groupaddr { + config "false"; + type address_Ip; + description "Specify Group Address"; + } + + // Ephemeral data + leaf ver { + config "false"; + type string; + description "Current Version Configured"; + } + + // Ephemeral data + leaf sportType { + config "false"; + type string; + description "Source Port Type"; + } + + // Ephemeral data + leaf gportType { + config "false"; + type string; + description "Group Port Type"; + } + + // Ephemeral data + leaf rifname { + config "false"; + type string; + description "(*,G) interface name"; + } + } + + grouping igmpsnoop_McGrpRec-group { + description "Holds IGMP Snooping Group Information"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Group address + // Ephemeral data + leaf addr { + config "false"; + + type mcast_GrpIp; + description "Multicast Group Address"; + } + + // Version + // Ephemeral data + leaf ver { + config "false"; + + type mcast_Ver; + description "Version"; + } + + // Latest reporter + // Ephemeral data + leaf latReporter { + config "false"; + + type ipmcsnoop_Reporter; + description "Latest Reporter"; + } + + // Ephemeral data + leaf oldHostTs { + config "false"; + type union { + type string; + type uint64; + } + description "Old Host Timestamp"; + } + + // Ephemeral data + leaf reportTs { + config "false"; + type union { + type string; + type uint64; + } + description "Group Report Timer Timestamp"; + } + + // Number of Sources + // Ephemeral data + leaf numSrc { + config "false"; + + type nw_Counter32; + description "Num of Sources"; + } + + // EPG entries in mcast group record + // Ephemeral data + container epg-items { + + // Ephemeral data + list EpgRec-list { + config "false"; + key "fabEncap"; + + uses igmpsnoop_EpgRec-group; + description "Holds IGMP Snooping Per Group Endpoint Record list"; + } + description "Holds IGMP Snooping Per Group Endpoint Record"; + } + + // IGMP report record snooped by igmp-snoop application + // Ephemeral data + container rep-items { + + // Ephemeral data + list ReportRec-list { + config "false"; + key "mcastSrc ver"; + + uses igmpsnoop_ReportRec-group; + description "Holds Report Policy Specific Record list"; + } + description "Holds Report Policy Specific Record"; + } + } + + grouping igmpsnoop_EpgRec-group { + description "Holds IGMP Snooping Per Group Endpoint Record"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf fabEncap { + config "false"; + type string; + description "Fabric Encapsulation"; + } + + // Epg id, identified using the circuit endpoint + // id in the system + // Ephemeral data + leaf id { + config "false"; + + type l2_DomId; + description "Endpoint Group ID"; + } + + // Multicast group address (GIPO'), Outer multicast + // encapsulation ip address for this layer2 domain + // Ephemeral data + leaf mcastEncap { + config "false"; + + type mcast_GrpIp; + description "Multicat Encapsulation"; + } + + // IGMP report record snooped by igmp-snoop application + // Ephemeral data + container rep-items { + + // Ephemeral data + list ReportRec-list { + config "false"; + key "mcastSrc ver"; + + uses igmpsnoop_ReportRec-group; + description "Holds Report Policy Specific Record list"; + } + description "Holds Report Policy Specific Record"; + } + } + + grouping igmpsnoop_ReportRec-group { + description "Holds Report Policy Specific Record"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Multicast traffic source + // Ephemeral data + leaf mcastSrc { + config "false"; + + type ipmcsnoop_McastSrc; + description "Multicast Source Address"; + } + + // Version + // Ephemeral data + leaf ver { + config "false"; + + type mcast_Ver; + description "Version"; + } + + // Filter mode + // Ephemeral data + leaf filtMode { + config "false"; + + type mcast_FiltMode; + description "Filter Mode"; + } + + // Filter mode + // Ephemeral data + leaf flags { + config "false"; + + type ipmcsnoop_RepFlags; + description "Flags"; + } + + // OIF list (outgoing interface list) + // Ephemeral data + container oif-items { + + // Ephemeral data + list OIFRec-list { + config "false"; + key "id"; + + uses igmpsnoop_OIFRec-group; + description "Holds Outgoing Interface Record list"; + } + description "Holds Outgoing Interface Record"; + } + } + + grouping igmpsnoop_OIFRec-group { + description "Holds Outgoing Interface Record"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Multicast traffic source + // Ephemeral data + leaf id { + config "false"; + + type nw_IfId; + description "ID"; + } + + // Ephemeral data + leaf numGqMiss { + config "false"; + type uint16; + description "Num of General Query Missed"; + } + + // Ephemeral data + leaf expireTs { + config "false"; + type union { + type string; + type uint64; + } + description "Port Expire Timestamp"; + } + + // Host Record List (Used for Explicit Host Tracking) + // Ephemeral data + container host-items { + + // Ephemeral data + list HostRec-list { + config "false"; + key "addr"; + + uses igmpsnoop_HostRec-group; + description "Holds Explicit Host Tracking Record list"; + } + description "Holds Explicit Host Tracking Record"; + } + } + + grouping igmpsnoop_HostRec-group { + description "Holds Explicit Host Tracking Record"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "Host Address"; + } + + // Ephemeral data + leaf upTs { + config "false"; + type union { + type string; + type uint64; + } + description "Up Timestamp"; + } + + // Ephemeral data + leaf lastJoinTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last Join Timestamp"; + } + + // Ephemeral data + leaf nextExpiryTs { + config "false"; + type union { + type string; + type uint64; + } + description "Next Expiry Timestamp"; + } + } + + grouping igmpsnoop_QuerierRec-group { + description "Holds IGMP Snooping querier specific information"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf timeout { + config "false"; + + type mcast_QuerierTimeout; + description "Querier Timeout in Seconds"; + } + + // Last member query interval + // Ephemeral data + leaf lastMbrIntvl { + config "false"; + + type mcast_LastMbrQueryIntvl; + description "Last Member Query Interval in Seconds"; + } + + // Ephemeral data + leaf ver { + config "false"; + type string; + description "Querier Version"; + } + + // Querier IP address + // Ephemeral data + leaf addr { + config "false"; + + type mcast_QuerierIp; + description "Querier IP Address"; + } + + // Query interval + // Ephemeral data + leaf queryIntvl { + config "false"; + + type mcast_QueryIntvl; + description "Query Interval in seconds"; + } + + // Query response interval + // Ephemeral data + leaf rspIntvl { + config "false"; + + type mcast_QueryRspIntvl; + description "Query Response Interval in Seconds"; + } + + // Robustness factor + // Ephemeral data + leaf robustFac { + config "false"; + + type mcast_RobustFactor; + description "Robustness Factor"; + } + + // Startup query interval + // Ephemeral data + leaf startQueryIntvl { + config "false"; + + type mcast_StartQueryIntvl; + description "Startup Query Interval Time in Seconds"; + } + + // Startup query count + // Ephemeral data + leaf startQueryCnt { + config "false"; + + type mcast_QueryCnt; + description "Startup Query Count"; + } + + // Ephemeral data + leaf port { + config "false"; + type string; + description "Querier Switch Port Type"; + } + + // Ephemeral data + leaf vlanid { + config "false"; + + type ipmcsnoop_Vlanid; + description "Vlan on Which Querier is Configured"; + } + + // Ephemeral data + leaf expTime { + config "false"; + type string; + description "Specify the Expiry Timestamp of Querier"; + } + } + + grouping igmpsnoop_DomStats-group { + description "Holds statistics data per Igmpsnoop Domain"; + + // V1 Reports received + leaf v1RepRcvd { + config "false"; + + type nw_Counter32; + description "V1 Reports Received"; + } + + // V2 Reports received + leaf v2RepRcvd { + config "false"; + + type nw_Counter32; + description "V2 Reports Received"; + } + + // V2 Leave received + leaf v2LeaveRcvd { + config "false"; + + type nw_Counter32; + description "V2 Leave Received"; + } + + // V1 Query received + leaf v1QueryRcvd { + config "false"; + + type nw_Counter32; + description "V1 Query Received"; + } + + // V2 Query received + leaf v2QueryRcvd { + config "false"; + + type nw_Counter32; + description "V2 Query Received"; + } + + // V1 Reports suppressed + leaf v1RepSupr { + config "false"; + + type nw_Counter32; + description "V1 Reports Suppressed"; + } + + // V2 Reports suppressed + leaf v2RepSupr { + config "false"; + + type nw_Counter32; + description "V2 Reports Suppressed"; + } + + // V2 leaves suppressed + leaf v2LeaveSupr { + config "false"; + + type nw_Counter32; + description "V2 Leaves Suppressed"; + } + + // v1 Proxy Report Originated + leaf v1RepOrig { + config "false"; + + type nw_Counter32; + description "V1 Reports Originated"; + } + + // v2 Proxy Report Originated + leaf v2RepOrig { + config "false"; + + type nw_Counter32; + description "V2 Reports Originated"; + } + + // v2 Proxy Leave Originated + leaf v2LeaveOrig { + config "false"; + + type nw_Counter32; + description "V2 Leaves Originated"; + } + + // V3 Reports received + leaf v3RepRcvd { + config "false"; + + type nw_Counter32; + description "V3 Reports Received"; + } + + // V3 Query received + leaf v3QueryRcvd { + config "false"; + + type nw_Counter32; + description "V3 Query Received"; + } + + // V3 Group Record suppressed + leaf v3GrpRecSupr { + config "false"; + + type nw_Counter32; + description "V3 Group Records Suppressed"; + } + + // v3 Proxy Report Originated + leaf v3RepOrig { + config "false"; + + type nw_Counter32; + description "V3 Reports Originated"; + } + leaf lastClearTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last Clear Timestamp"; + } + + // packets received + leaf pktsRcvd { + config "false"; + + type nw_Counter32; + description "Packets Received"; + } + + // Pim Hello Rcvd + leaf pimHelloRcvd { + config "false"; + + type nw_Counter32; + description "Pim Hello Received"; + } + + // Invalid Query Rcvd + leaf invQueryRcvd { + config "false"; + + type nw_Counter32; + description "Invalid Query Received"; + } + + // Invalid Report Rcvd + leaf invRepRcvd { + config "false"; + + type nw_Counter32; + description "Invalid Report Received"; + } + + // Version Mismatch Rcvd + leaf verMisMatchRcvd { + config "false"; + + type nw_Counter32; + description "Version Mismatch Received"; + } + + // Unknown Packets Rcvd + leaf unknPktRcvd { + config "false"; + + type nw_Counter32; + description "Unknown Packets Received"; + } + + // Query Originated + leaf queryPktsOrig { + config "false"; + + type nw_Counter32; + description "Query Packets Originated"; + } + + // Packets Sent to Router Ports + leaf pktsToRport { + config "false"; + + type nw_Counter32; + description "Packets to Router Ports"; + } + + // VPC Sync Packets Sent to Peer + leaf vpcSyncSent { + config "false"; + + type nw_Counter32; + description "VPC Sync Packets Sent"; + } + + // VPC Sync Packets Rcvd from Peer + leaf vpcSyncRcvd { + config "false"; + + type nw_Counter32; + description "VPC Sync Packets Received"; + } + + // VPC Sync Packets Failed to send to Peer + leaf vpcSyncFail { + config "false"; + + type nw_Counter32; + description "VPC Sync Packets Failed"; + } + + // MRD Sync Packets Sent to Peer + leaf mrdSyncSent { + config "false"; + + type nw_Counter32; + description "MRD Sync Packets Sent"; + } + + // MRD Sync Packets Rcvd from Peer + leaf mrdSyncRcvd { + config "false"; + + type nw_Counter32; + description "MRD Sync Packets Received"; + } + + // MRD Sync Packets Failed to send to Peer + leaf mrdSyncFail { + config "false"; + + type nw_Counter32; + description "MRD Sync Packets Failed"; + } + } + + grouping igmpsnoop_StRtrIf-group { + description "Holds IGMP Static Router Interface configuration information"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + config "false"; + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + config "false"; + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + config "false"; + + type nw_IfAdminSt; + description "Admin State"; + } + leaf encap { + config "false"; + type string; + description "Enable Encapsulation when flooding packets"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + } + + grouping igmpsnoop_RtrIf-group { + description "Holds configuration information for Router Interface"; + + // Identifier for the if + leaf id { + config "false"; + + type nw_IfId; + description "Router interface identifier"; + } + + // Life cycle control + leaf lcC { + config "false"; + + type ipmcsnoop_LcC; + description "Life Cycle Control"; + } + leaf upTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last Up transition Timestamp"; + } + leaf nextExpiryTs { + config "false"; + type union { + type string; + type uint64; + } + description "Next Expiry Timestamp"; + } + } + + grouping igmpsnoop_Vlan-group { + description "Holds IGMP snooping vlan configurations"; + + leaf vlanid { + + type nw_IfId; + description "Vlan ID for IGMP Snooping Configuration"; + } + leaf rprtFldAllIntf { + type boolean; + description "Enable Report-Flood on all Active Interfaces of VLAN"; + } + + // Circuit endpoint representing EPG + container cktep-items { + list CktEp-list { + key "encap"; + + uses igmpsnoop_CktEp-group; + description "Represents Endpoint Encapsulation for a circuit list"; + } + description "Represents Endpoint Encapsulation for a circuit"; + } + + // Multicast Snoop Configured statically + container mcgrp-items { + list StMcGrp-list { + key "addr"; + + uses igmpsnoop_StMcGrp-group; + description "Holds Static IP Multicast Group Information list"; + } + description "Holds Static IP Multicast Group Information"; + } + + // This objects is the parent for Interface config mode params + container intf-items { + list Intf-list { + key "id"; + + uses igmpsnoop_Intf-group; + description "Holds IGMP snooping Interface configurations list"; + } + description "Holds IGMP snooping Interface configurations"; + } + + container igmpsnbase-items { + + uses igmpsnoop_IgmpsnBase-group; + description "Holds IGMP Snooping Parameters for all Configuration Modes"; + } + + // This objects holds IGMP snooping timers for vlan + container gTimers-items { + + uses igmpsnoop_GTimers-group; + description "Holds Global IGMP Snooping Timers"; + } + + // This objects holds multicast mac address table params + container mactable-items { + list MacTable-list { + key "macAddress"; + + uses igmpsnoop_MacTable-group; + description "Holds IGMP Snooping Mac-Address Table Configurations list"; + } + description "Holds IGMP Snooping Mac-Address Table Configurations"; + } + + // This objects holds multicast router snoop params + container mrouter-items { + + uses igmpsnoop_MRouter-group; + description "Holds IGMP Snooping Static Multicast Router Configurations"; + } + + // This objects holds multicast proxy snoop params + container proxy-items { + + uses igmpsnoop_Proxy-group; + description "Holds IGMP Snooping Proxy Configurations"; + } + + // Querier policy + container querierp-items { + + uses igmpsnoop_QuerierP-group; + description "Holds IGMP Snooping Querier Policy Configurations"; + } + + // Querier state + container querierst-items { + + uses igmpsnoop_QuerierSt-group; + description "Holds IGMP Snooping Querier State Configurations"; + } + + // Route control policy for igmp multicast snoop. + container actrl-items { + + uses igmpsnoop_ACtrl-group; + description "Holds IGMP Snooping Access Control Policy Configurations"; + } + + // Report policy for igmp multicast snoop + container rpolicy-items { + list RPolicy-list { + key "rtMap"; + + uses igmpsnoop_RPolicy-group; + description "Holds IGMP Snooping Report Policy Configurations list"; + } + description "Holds IGMP Snooping Report Policy Configurations"; + } + } + + grouping igmpsnoop_CktEp-group { + description "Represents Endpoint Encapsulation for a circuit"; + leaf encap { + type string; + description "Fabric Encapsulation"; + } + } + + grouping igmpsnoop_StMcGrp-group { + description "Holds Static IP Multicast Group Information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Multicast group address + leaf addr { + + type mcast_GrpIp; + description "Multicast Group IP Address"; + } + + // IPMC Source IP + container src-items { + list McSrc-list { + key "id"; + + uses igmpsnoop_McSrc-group; + description "Holds IGMP Snooping Source Specific Information list"; + } + description "Holds IGMP Snooping Source Specific Information"; + } + + // Target Interface (outgoing interface list) + container if-items { + list TgtIf-list { + key "id"; + + uses igmpsnoop_TgtIf-group; + description "Holds Outgoing Interface Information list"; + } + description "Holds Outgoing Interface Information"; + } + } + + grouping igmpsnoop_McSrc-group { + description "Holds IGMP Snooping Source Specific Information"; + + // Multicast traffic source + leaf id { + + type ipmcsnoop_McastSrc; + description "Multicast Source IP Address"; + } + + // Target Interface (outgoing interface list) + container if-items { + list TgtIf-list { + key "id"; + + uses igmpsnoop_TgtIf-group; + description "Holds Outgoing Interface Information list"; + } + description "Holds Outgoing Interface Information"; + } + } + + grouping igmpsnoop_TgtIf-group { + description "Holds Outgoing Interface Information"; + leaf vsi { + type boolean; + description "Specifies if this interface is VSI"; + } + leaf accGrp { + type boolean; + description "Specifies if this interface is Access group"; + } + leaf pfxList { + type boolean; + description "Specifies prefix list route map for this interface"; + } + + // Target interface Id + leaf id { + + type nw_IfId; + description "Multicast Source IP Address"; + } + } + + grouping igmpsnoop_Intf-group { + description "Holds IGMP snooping Interface configurations"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + leaf rtrGrdVlanId { + + type ipmcsnoop_RtrGrdVlanIdT; + description "Router-Guard Vlan Identifier"; + } + leaf rtrGrdEnable { + type boolean; + description "Indicates if Router-Guard is Enabled on the Interface"; + } + leaf reportFlood { + type boolean; + description "Indicates if Report Flood is Enabled on the Interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + } + + grouping igmpsnoop_IgmpsnBase-group { + description "Holds IGMP Snooping Parameters for all Configuration Modes"; + leaf lookupMac { + type boolean; + description "Indicates if Layer-2 Multicast Lookup Mac is Enabled"; + } + + leaf llGrpSuppr { + + type ipmcsnoop_LlGrpSuppr; + description "Link Local Group Suppression"; + } + + leaf reportSuppr { + + type ipmcsnoop_ReportSuppr; + description "IGMPv1/v2 report Suppression for VLAN"; + } + + leaf v3ReportSuppr { + + type ipmcsnoop_V3ReportSuppr; + description "IGMPv3 Report Suppression and Proxy Reporting"; + } + + leaf expTracking { + + type ipmcsnoop_ExpTracking; + description "Configures Explicit Host for a VLAN"; + } + + leaf igmpSnoop { + + type ipmcsnoop_IgmpSnoop; + description "Enable/Disable IGMP Snooping Globally"; + } + + leaf minVer { + + type ipmcsnoop_MinVer; + description "Minimum IGMP Version Supported"; + } + } + + grouping igmpsnoop_GTimers-group { + description "Holds Global IGMP Snooping Timers"; + + leaf fastLeave { + + type ipmcsnoop_FastLeave; + description "Indicates if Fastleave is Enabled"; + } + + // Group timeout + // Default value handled in local MO type + leaf grpTimeout { + + // Type is a Local-MO-Defined-Type + type mcast_GrpTimeout_GTimers_grpTimeout { + range "0"; + } + description "Group Membership Timeout"; + } + + leaf maxGqMiss { + + type ipmcsnoop_MaxGqMiss; + description "Maximum General Query Miss Count"; + } + leaf useGrpAddr { + type boolean; + description "Use Group IP Address for Proxy-Leave"; + } + } + + grouping igmpsnoop_MacTable-group { + description "Holds IGMP Snooping Mac-Address Table Configurations"; + leaf macAddress { + type address_Mac; + description "Specify MAC Address for a VLAN/BD"; + } + + // Target Interface (outgoing interface list) + container if-items { + list TgtIf-list { + key "id"; + + uses igmpsnoop_TgtIf-group; + description "Holds Outgoing Interface Information list"; + } + description "Holds Outgoing Interface Information"; + } + container mif-items { + list MIf-list { + key "intf"; + + uses igmpsnoop_MIf-group; + description "Holds IGMP Snooping Multicast Router's Interface Configurations list"; + } + description "Holds IGMP Snooping Multicast Router's Interface Configurations"; + } + } + + grouping igmpsnoop_MIf-group { + description "Holds IGMP Snooping Multicast Router's Interface Configurations"; + leaf intf { + type string; + description "Interface for Static-Mrouter"; + } + leaf vsi { + type boolean; + description "Specify Interface is VSI"; + } + } + + grouping igmpsnoop_MRouter-group { + description "Holds IGMP Snooping Static Multicast Router Configurations"; + + // Global property + leaf vpcPeerLink { + + type ipmcsnoop_Vpc; + description "Specify vpc-peer-link as Static Mrouter for all VLAN/BD"; + } + + // Target Interface (outgoing interface list) + container if-items { + list TgtIf-list { + key "id"; + + uses igmpsnoop_TgtIf-group; + description "Holds Outgoing Interface Information list"; + } + description "Holds Outgoing Interface Information"; + } + container mif-items { + list MIf-list { + key "intf"; + + uses igmpsnoop_MIf-group; + description "Holds IGMP Snooping Multicast Router's Interface Configurations list"; + } + description "Holds IGMP Snooping Multicast Router's Interface Configurations"; + } + } + + grouping igmpsnoop_Proxy-group { + description "Holds IGMP Snooping Proxy Configurations"; + + leaf maxRespTime { + + type ipmcsnoop_Mrt; + description "Configures MRT for Switch's Proxy General-Queries"; + } + } + + grouping igmpsnoop_QuerierP-group { + description "Holds IGMP Snooping Querier Policy Configurations"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Querier version + leaf ver { + + type mcast_Ver; + description "Version"; + } + + // Querier IP address + leaf addr { + + type mcast_QuerierIp; + description "Address"; + } + + // Query interval + leaf queryIntvl { + + type mcast_QueryIntvl; + description "Query Interval"; + } + + // Query response interval + leaf rspIntvl { + + type mcast_QueryRspIntvl { + range "1..25"; + } + description "Response Interval of Querier"; + } + + // Robustness factor + leaf robustFac { + + type mcast_RobustFactor; + description "Robustness Factor"; + } + + // Startup query interval + leaf startQueryIntvl { + + type mcast_StartQueryIntvl; + description "Startup Query Interval"; + } + + // Startup query count + leaf startQueryCnt { + + type mcast_QueryCnt; + description "Startup Query Count"; + } + + // Last member query interval + leaf lastMbrIntvl { + + type mcast_LastMbrQueryIntvl; + description "Last Member Query Interval"; + } + + // Querier timeout + leaf timeout { + + type mcast_QuerierTimeout; + description "Configures Querier Timeout"; + } + } + + grouping igmpsnoop_QuerierSt-group { + description "Holds IGMP Snooping Querier State Configurations"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Querier version + leaf ver { + config "false"; + + type mcast_Ver; + description "Version"; + } + + // Querier IP address + leaf addr { + config "false"; + + type mcast_QuerierIp; + description "Address"; + } + + // Query interval + leaf queryIntvl { + config "false"; + + type mcast_QueryIntvl; + description "Query Interval"; + } + + // Query response interval + leaf rspIntvl { + config "false"; + + type mcast_QueryRspIntvl; + description "Response Interval of Querier"; + } + + // Robustness factor + leaf robustFac { + config "false"; + + type mcast_RobustFactor; + description "Robustness Factor"; + } + + // Startup query interval + leaf startQueryIntvl { + config "false"; + + type mcast_StartQueryIntvl; + description "Startup Query Interval"; + } + + // Startup query count + leaf startQueryCnt { + config "false"; + + type mcast_QueryCnt; + description "Startup Query Count"; + } + + // Last member query interval + leaf lastMbrIntvl { + config "false"; + + type mcast_LastMbrQueryIntvl; + description "Last Member Query Interval"; + } + + // Querier timeout + leaf timeout { + config "false"; + + type mcast_QuerierTimeout; + description "Configures Querier Timeout"; + } + + // Interface on which the querier is present + leaf if { + config "false"; + + type nw_IfId; + description "Interface on which querier is present"; + } + + // Querier flags + leaf flags { + config "false"; + + type ipmcsnoop_QuerierFlags; + description "Querier Flags presenting different states"; + } + } + + grouping igmpsnoop_ACtrl-group { + description "Holds IGMP Snooping Access Control Policy Configurations"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Direction [in/out] + leaf direction { + + type rtctrl_RtCtrlDir; + description "Direction"; + } + leaf rtMap { + type string; + description "Route Map"; + } + + // Target Interface (outgoing interface list) + container if-items { + list TgtIf-list { + key "id"; + + uses igmpsnoop_TgtIf-group; + description "Holds Outgoing Interface Information list"; + } + description "Holds Outgoing Interface Information"; + } + } + + grouping igmpsnoop_RPolicy-group { + description "Holds IGMP Snooping Report Policy Configurations"; + + // Route map name to control the distribution + leaf rtMap { + + type igmpsnoop_RtMapType; + description "Route Map Name to control the distribution"; + } + + // Target Interface (outgoing interface list) + container if-items { + list TgtIf-list { + key "id"; + + uses igmpsnoop_TgtIf-group; + description "Holds Outgoing Interface Information list"; + } + description "Holds Outgoing Interface Information"; + } + } + + grouping igmpsnoop_BD-group { + description "Holds IGMP Snooping Bridge Domain Configurations"; + + leaf bdid { + + type nw_IfId; + description "Bridge Domain Identifier"; + } + } + + grouping igmpsnoop_Gl-group { + description "Holds IGMP Snooping Configurations in Global Configuration Mode"; + container eventHist-items { + list EventHistory-list { + key "type"; + + uses igmpsnoop_EventHistory-group; + description "Holds IGMP Snooping Event-History Buffer Configurations list"; + } + description "Holds IGMP Snooping Event-History Buffer Configurations"; + } + + container rtrgrd-items { + + uses igmpsnoop_RtrGrd-group; + description "Holds Router Guard Configuration for all switchports or specific vlan"; + } + + container igmpsnbase-items { + + uses igmpsnoop_IgmpsnBase-group; + description "Holds IGMP Snooping Parameters for all Configuration Modes"; + } + + // This objects holds traffic related snooping params + container mctraf-items { + + uses igmpsnoop_McTraf-group; + description "Holds IGMP Snooping Multicast Traffic Configurations"; + } + + // This objects holds IGMP snooping timers for vlan + container gTimers-items { + + uses igmpsnoop_GTimers-group; + description "Holds Global IGMP Snooping Timers"; + } + + // This objects holds vlan specific IGMP snooping params + container gvlan-items { + + uses igmpsnoop_GVlan-group; + description "Holds IGMP Snooping Vlan Specific Configurations"; + } + + // This Object holds global debug + container gdebug-items { + + uses igmpsnoop_GDebug-group; + description "Holds IGMP Snooping Debugs Enabling Configuration"; + } + + // This objects holds multicast router snoop params + container mrouter-items { + + uses igmpsnoop_MRouter-group; + description "Holds IGMP Snooping Static Multicast Router Configurations"; + } + + // This objects holds multicast proxy snoop params + container proxy-items { + + uses igmpsnoop_Proxy-group; + description "Holds IGMP Snooping Proxy Configurations"; + } + } + + grouping igmpsnoop_EventHistory-group { + description "Holds IGMP Snooping Event-History Buffer Configurations"; + + leaf type { + + type igmpsnoop_EhType; + description "configures type of event history{rib/vpc/vlan/vlanev/mfdm/mfdm-ev}"; + } + + leaf size { + + type igmpsnoop_Size; + description "configures buffer size in text/kb"; + } + } + + grouping igmpsnoop_RtrGrd-group { + description "Holds Router Guard Configuration for all switchports or specific vlan"; + leaf state { + type boolean; + description "Configures Router Guard for Multicast packets on all switchports"; + } + } + + grouping igmpsnoop_McTraf-group { + description "Holds IGMP Snooping Multicast Traffic Configurations"; + + leaf holddownTimer { + + type mcast_HolddownTimer; + description "Configures Initial Holddown Period After Switchover/Restart"; + } + } + + grouping igmpsnoop_GVlan-group { + description "Holds IGMP Snooping Vlan Specific Configurations"; + + leaf disableNveStRtrPort { + + type ipmcsnoop_DisableNveStRtrPort; + description "Disable NVE Static Router Port"; + } + + leaf vxlan { + + type ipmcsnoop_Vxlan; + description "Enable IGMP Snooping on all VXLAN Ports "; + } + + leaf vxlanUmcDropVlan { + + type ipmcsnoop_VxlanVlanRange; + description + "Drop Unknown Multicast Traffic on Vlan(s) - + Range 1-3967"; + } + } + + grouping igmpsnoop_GDebug-group { + description "Holds IGMP Snooping Debugs Enabling Configuration"; + + leaf syslogThreshold { + + type ipmcsnoop_SyslogThrshold; + description "IGMP Snooping Syslog Threshold Percentage"; + } + } + + grouping igmpsnoop_InstStats-group { + description "Holds statistics data per Igmpsnoop Instance"; + + // Total Number of multicast groups + leaf totNumMcGrp { + config "false"; + + type nw_Counter32; + description "Total Number of Multicast Groups"; + } + + // Invalid packets received + leaf invPktsRcvd { + config "false"; + + type nw_Counter32; + description "Invalid Packets Received"; + } + + // Loopback packets received + leaf lpbkPktsRcvd { + config "false"; + + type nw_Counter32; + description "Loopback Packets Received"; + } + + // packets Flooded + leaf pktsFlooded { + config "false"; + + type nw_Counter32; + description "Packets Flooded"; + } + + // MRD Loopback packets received + leaf mrdLpbkPktsRcvd { + config "false"; + + type nw_Counter32; + description "MRD Loopback Packets Received"; + } + + // No Vlan DB packets received + leaf noVlanDbPktsRcvd { + config "false"; + + type nw_Counter32; + description "No Vlan Db Packets Received"; + } + + // Vpc Peer packets sent + leaf vpcPeerPktsSent { + config "false"; + + type nw_Counter32; + description "VPC Peer Packets Sent"; + } + + // Vpc Peer packets received + leaf vpcPeerPktsRcvd { + config "false"; + + type nw_Counter32; + description "VPC Peer Packets Received"; + } + + // Vpc Peer packets send Fail + leaf vpcPeerPktsSentFail { + config "false"; + + type nw_Counter32; + description "VPC Peer Packets Send Fail"; + } + + // Vpc Peer packets receive Fail + leaf vpcPeerPktsRcvdFail { + config "false"; + + type nw_Counter32; + description "VPC Peer Packets Receive Fail"; + } + } + + grouping m6rib_Entity-group { + description "Holds M6RIB entity information"; + + // This objects hold per m6rib instance information + container inst-items { + + uses m6rib_Inst-group; + description "This objects hold per M6RIB instance information"; + } + } + + grouping m6rib_Inst-group { + description "This objects hold per M6RIB instance information"; + + // This object holds m6rib route db information + // Ephemeral data + container db-items { + + // Ephemeral data + list Db-list { + config "false"; + key "type"; + + uses m6rib_Db-group; + description "Holds M6RIB Oper Database list"; + } + description "Holds M6RIB Oper Database"; + } + + // This objects hold per MRIB information + container dom-items { + list Dom-list { + key "name"; + + uses m6rib_Dom-group; + description "This objects hold per MRIB information list"; + } + description "This objects hold per MRIB information"; + } + + // This object holds m6rib route db information + // Ephemeral data + container routedb-items { + + uses m6rib_RouteDb-group; + description "This object holds M6RIB route database information"; + } + } + + grouping m6rib_Db-group { + description "Holds M6RIB Oper Database"; + + // db type + // Ephemeral data + leaf type { + config "false"; + + type m6rib_DbT; + description "Database type identifier"; + } + + // This object holds m6rib client information + // Ephemeral data + container client-items { + + // Ephemeral data + list ClntEntity-list { + config "false"; + key "name"; + + uses m6rib_ClntEntity-group; + description "Represents M6RIB Client list"; + } + description "Represents M6RIB Client"; + } + + // This object holds m6rib memory information + // Ephemeral data + container memest-items { + + uses m6rib_MemEstimate-group; + description "M6RIB Parent Class for Memeory Details"; + } + + // This objects hold per pim domain (vrf) information + // Ephemeral data + container vrf-items { + + // Ephemeral data + list Vrf-list { + config "false"; + key "name"; + + uses m6rib_Vrf-group; + description "This objects holds M6RIB context level information list"; + } + description "This objects holds M6RIB context level information"; + } + } + + grouping m6rib_ClntEntity-group { + description "Represents M6RIB Client"; + + // Ephemeral data + leaf name { + config "false"; + type string; + description "Client Name"; + } + + // Ephemeral data + leaf id { + config "false"; + type uint32; + description "Client Identifier"; + } + + // Ephemeral data + leaf pid { + config "false"; + type uint32; + description "Client Process Identifier"; + } + + // Ephemeral data + leaf mtsSapId { + config "false"; + type uint32; + description "Client MTS SAP Identifier"; + } + + // Ephemeral data + leaf shMemName { + config "false"; + type string; + description "Client Shared memory name"; + } + + // Ephemeral data + leaf notify { + config "false"; + type boolean; + description "Flag to indicate if client wants notifications"; + } + + // Ephemeral data + leaf staleTimerRunning { + config "false"; + type boolean; + description "Flag to indicate if stale timer is running"; + } + + // Ephemeral data + leaf ssmOwner { + config "false"; + type boolean; + description "Protocol owner of SSM-Ranges Flag"; + } + + // Ephemeral data + leaf bidirOwner { + config "false"; + type boolean; + description "Protocol is the owner of Bidir-Modes Flag"; + } + + // Ephemeral data + leaf staticOwner { + config "false"; + type boolean; + description "Protocol is the owner of Static-OIFs Flag"; + } + + // Ephemeral data + leaf sharedOnlyOwner { + config "false"; + type boolean; + description "Protocol is the owner of shared-tree Flag"; + } + + // Ephemeral data + leaf localJoinOwner { + config "false"; + type boolean; + description "Protocol is the owner for Local Groups Flag"; + } + + // Ephemeral data + leaf externalOwner { + config "false"; + type boolean; + description "Protocol is the owner for External Routes Flag"; + } + + // Ephemeral data + leaf attachedOwner { + config "false"; + type boolean; + description "Protocol is the owner for Attached Routes Flag"; + } + + // Ephemeral data + leaf fabricOwner { + config "false"; + type boolean; + description "Protocol owner setting Fabric Flag"; + } + + // MO for Client notifications + // Ephemeral data + container cnotify-items { + + // Ephemeral data + list ClientNotify-list { + config "false"; + key "notifyName"; + + uses m6rib_ClientNotify-group; + description "Holds M6RIB Client Notification Details list"; + } + description "Holds M6RIB Client Notification Details"; + } + } + + grouping m6rib_ClientNotify-group { + description "Holds M6RIB Client Notification Details"; + + // Ephemeral data + leaf notifyName { + config "false"; + type string; + description "Client Notification Name"; + } + + // Ephemeral data + leaf sent { + config "false"; + type uint64; + description "Count of Notifications Sent"; + } + + // Ephemeral data + leaf fail { + config "false"; + type uint64; + description "Count of Notifications Failed"; + } + + // Ephemeral data + leaf rcvd { + config "false"; + type uint64; + description "Count of Notifications Received"; + } + + // Ephemeral data + leaf ackRcvd { + config "false"; + type uint64; + description "Count of Notifications acknowledgement received"; + } + + // Ephemeral data + leaf ackSent { + config "false"; + type uint64; + description "Count of Notifications acknowledgement sent"; + } + + // Ephemeral data + leaf ackFail { + config "false"; + type uint64; + description "Count of Notifications acknowledgement failed"; + } + } + + grouping m6rib_MemEstimate-group { + description "M6RIB Parent Class for Memeory Details"; + + // Current maximum memory available + // Ephemeral data + container currmaxgrp-items { + + // Ephemeral data + list CurrMaxMB-list { + config "false"; + key "grpCount srcPerGrp oifPerEntry"; + + uses m6rib_CurrMaxMB-group; + description "Holds Current Maximum memory available information list"; + } + description "Holds Current Maximum memory available information"; + } + + // In-Use maximum memory + // Ephemeral data + container inusegrp-items { + + // Ephemeral data + list InUseKB-list { + config "false"; + key "grpCount srcPerGrp oifPerEntry"; + + uses m6rib_InUseKB-group; + description "Holds In-Use Memory Information list"; + } + description "Holds In-Use Memory Information"; + } + + // Configured maximum memory + // Ephemeral data + container configmaxgrp-items { + + // Ephemeral data + list ConfiguredMaxMB-list { + config "false"; + key "grpCount srcPerGrp oifPerEntry"; + + uses m6rib_ConfiguredMaxMB-group; + description "Holds Maximum Configured Memory Information list"; + } + description "Holds Maximum Configured Memory Information"; + } + + // Estimate maximum memory required + // Ephemeral data + container estgrp-items { + + // Ephemeral data + list EstMaxMB-list { + config "false"; + key "grpCount srcPerGrp oifPerEntry"; + + uses m6rib_EstMaxMB-group; + description "Holds Maximum Estimated Memory Information list"; + } + description "Holds Maximum Estimated Memory Information"; + } + } + + grouping m6rib_CurrMaxMB-group { + description "Holds Current Maximum memory available information"; + + // Ephemeral data + leaf max { + config "false"; + type uint64; + description "Maximum memory in MB/KB"; + } + + // Ephemeral data + leaf grpCount { + config "false"; + type uint32; + description "Maximum Group Count"; + } + + // Ephemeral data + leaf srcPerGrp { + config "false"; + type uint32; + description "Sources per Group"; + } + + // Ephemeral data + leaf oifPerEntry { + config "false"; + type uint32; + description "OIFs per Entry"; + } + } + + grouping m6rib_InUseKB-group { + description "Holds In-Use Memory Information"; + + // Ephemeral data + leaf max { + config "false"; + type uint64; + description "Maximum memory in MB/KB"; + } + + // Ephemeral data + leaf grpCount { + config "false"; + type uint32; + description "Maximum Group Count"; + } + + // Ephemeral data + leaf srcPerGrp { + config "false"; + type uint32; + description "Sources per Group"; + } + + // Ephemeral data + leaf oifPerEntry { + config "false"; + type uint32; + description "OIFs per Entry"; + } + } + + grouping m6rib_ConfiguredMaxMB-group { + description "Holds Maximum Configured Memory Information"; + + // Ephemeral data + leaf max { + config "false"; + type uint64; + description "Maximum memory in MB/KB"; + } + + // Ephemeral data + leaf grpCount { + config "false"; + type uint32; + description "Maximum Group Count"; + } + + // Ephemeral data + leaf srcPerGrp { + config "false"; + type uint32; + description "Sources per Group"; + } + + // Ephemeral data + leaf oifPerEntry { + config "false"; + type uint32; + description "OIFs per Entry"; + } + } + + grouping m6rib_EstMaxMB-group { + description "Holds Maximum Estimated Memory Information"; + + // Ephemeral data + leaf max { + config "false"; + type uint64; + description "Maximum memory in MB/KB"; + } + + // Ephemeral data + leaf grpCount { + config "false"; + type uint32; + description "Maximum Group Count"; + } + + // Ephemeral data + leaf srcPerGrp { + config "false"; + type uint32; + description "Sources per Group"; + } + + // Ephemeral data + leaf oifPerEntry { + config "false"; + type uint32; + description "OIFs per Entry"; + } + } + + grouping m6rib_Vrf-group { + description "This objects holds M6RIB context level information"; + + // Ephemeral data + leaf name { + config "false"; + type string; + description "Vrf Name"; + } + + // Ephemeral data + leaf cid { + config "false"; + type uint32; + description "Vrf Identifier"; + } + + // Ephemeral data + leaf tableId { + config "false"; + type string; + description "Table Identifier"; + } + + // Ephemeral data + leaf totalNumRoutes { + config "false"; + type uint32; + description "Total Number of Routes"; + } + + // Ephemeral data + leaf totalNumGroups { + config "false"; + type uint32; + description "Total Number of Groups"; + } + + // Ephemeral data + leaf starGRoute { + config "false"; + type uint32; + description "Star G Count"; + } + + // Ephemeral data + leaf sgRoute { + config "false"; + type uint32; + description "SG Route Count"; + } + + // Ephemeral data + leaf starGPrfx { + config "false"; + type uint32; + description "Star-G Route Prefix"; + } + + // This object holds m6rib route group information + // Ephemeral data + container group-items { + + // Ephemeral data + list Group-list { + config "false"; + key "grpAddr"; + + uses m6rib_Group-group; + description "This object holds M6RIB route group information list"; + } + description "This object holds M6RIB route group information"; + } + } + + grouping m6rib_Group-group { + description "This object holds M6RIB route group information"; + + // Ephemeral data + leaf grpAddr { + config "false"; + type address_Ip; + description "Group Address"; + } + + // Ephemeral data + leaf grpMasklen { + config "false"; + type uint32; + description "Group Mask Length"; + } + + // Ephemeral data + leaf bidir { + config "false"; + type boolean; + description "Bidirectional Flag"; + } + + // This object holds m6rib route source information + // Ephemeral data + container source-items { + + // Ephemeral data + list Source-list { + config "false"; + key "srcAddr"; + + uses m6rib_Source-group; + description "This object holds M6RIB Route Source information list"; + } + description "This object holds M6RIB Route Source information"; + } + } + + grouping m6rib_Source-group { + description "This object holds M6RIB Route Source information"; + + // Ephemeral data + leaf srcAddr { + config "false"; + type address_Ip; + description "Source IPv6 Address"; + } + + // Ephemeral data + leaf pending { + config "false"; + type boolean; + description "Pending flag"; + } + + // Ephemeral data + leaf uptime { + config "false"; + type string; + description "Route Uptime in HH:MM:SS format"; + } + + // Ephemeral data + leaf oifcount { + config "false"; + type uint32; + description "Outgoing Interface Count"; + } + + // Ephemeral data + leaf statsPkts { + config "false"; + type uint32; + description "Packets Forwarded by IPv6"; + } + + // Ephemeral data + leaf statsBytes { + config "false"; + type uint32; + description "Byte Count of Packets IPv6 forwarded"; + } + + // Ephemeral data + leaf statsRateBuf { + config "false"; + type string; + description "Rate Buffer Count of IPv6 packets forwarded"; + } + + // Ephemeral data + leaf lispSrcRloc { + config "false"; + type string; + description "Lisp Source Rloc Count"; + } + + // Ephemeral data + leaf routeIif { + config "false"; + type string; + description "Route Incoming Interface"; + } + + // Ephemeral data + leaf rpfNbr { + config "false"; + type address_Ip; + description "RPF Neighbor IPv6 Address"; + } + + // Ephemeral data + leaf internal { + config "false"; + type boolean; + description "RPF Internal Flag"; + } + + // Ephemeral data + leaf rpfNbrUptime { + config "false"; + type union { + type string; + type uint64; + } + description "RPF Neighbor uptime"; + } + + // Ephemeral data + leaf fabricOif { + config "false"; + type boolean; + description "Fabric OIF Flag"; + } + + // Ephemeral data + leaf fabricLoser { + config "false"; + type boolean; + description "Fabric Loser Flag"; + } + + // Ephemeral data + leaf numVpcSviOifs { + config "false"; + type uint32; + description "Number of vpc svi OIFs"; + } + + // Ephemeral data + leaf routeMdtIod { + config "false"; + type boolean; + description "Route MDT IOD Flag"; + } + + // Ephemeral data + leaf mdtEncapIndex { + config "false"; + type uint32; + description "MDT Encap Index"; + } + + // This object holds m6rib mpib information + // Ephemeral data + container mpib-items { + + // Ephemeral data + list Mpib-list { + config "false"; + key "mpibName"; + + uses m6rib_Mpib-group; + description "This object holds M6RIB route owner information list"; + } + description "This object holds M6RIB route owner information"; + } + + // This object holds m6rib OIF information + // Ephemeral data + container oif-items { + + // Ephemeral data + list Oif-list { + config "false"; + key "oifName"; + + uses m6rib_Oif-group; + description "This object holds M6RIB Outgoing Interface information list"; + } + description "This object holds M6RIB Outgoing Interface information"; + } + } + + grouping m6rib_Mpib-group { + description "This object holds M6RIB route owner information"; + + // Ephemeral data + leaf mpibName { + config "false"; + type string; + description "MPIB name"; + } + + // Ephemeral data + leaf oifCount { + config "false"; + type uint32; + description "OIF count"; + } + + // Ephemeral data + leaf staleRoute { + config "false"; + type boolean; + description "Stale Route Flag"; + } + } + + grouping m6rib_Oif-group { + description "This object holds M6RIB Outgoing Interface information"; + + // Ephemeral data + leaf oifName { + config "false"; + type string; + description "OIF name"; + } + + // Ephemeral data + leaf oifUptime { + config "false"; + type string; + description "OIF Uptime in HH:MM:SS Format"; + } + + // Ephemeral data + leaf oifRPF { + config "false"; + type boolean; + description "OIF RPF flag"; + } + + // Ephemeral data + leaf oifLispEncapEntries { + config "false"; + type uint32; + description "Lisp Encap Entries Count"; + } + + // This object holds lisp encap information + // Ephemeral data + container lispencap-items { + + // Ephemeral data + list LispEncap-list { + config "false"; + key "index"; + + uses m6rib_LispEncap-group; + description "This object holds lisp encap information list"; + } + description "This object holds lisp encap information"; + } + + // This object holds m6rib OIF MPIB information + // Ephemeral data + container oifmpib-items { + + // Ephemeral data + list OifMpib-list { + config "false"; + key "oifMpibName"; + + uses m6rib_OifMpib-group; + description "This object holds M6RIB Outgoing Interface owner information list"; + } + description "This object holds M6RIB Outgoing Interface owner information"; + } + } + + grouping m6rib_LispEncap-group { + description "This object holds lisp encap information"; + + // Ephemeral data + leaf index { + config "false"; + type uint32; + description "Lisp Encap Index"; + } + + // Ephemeral data + leaf srcRloc { + config "false"; + type address_Ip; + description "Source remote location"; + } + + // Ephemeral data + leaf dstRloc { + config "false"; + type address_Ip; + description "Destination remote location"; + } + } + + grouping m6rib_OifMpib-group { + description "This object holds M6RIB Outgoing Interface owner information"; + + // Ephemeral data + leaf oifMpibName { + config "false"; + type string; + description "OIF MPIB name"; + } + + // Ephemeral data + leaf staleOif { + config "false"; + type boolean; + description "Stale OIF Flag"; + } + + // Ephemeral data + leaf vpcSvi { + config "false"; + type boolean; + description "VPC SVI Flag"; + } + } + + grouping m6rib_Dom-group { + description "This objects hold per MRIB information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Admin State + leaf adminSt { + + type nw_AdminSt; + default "disabled"; + description "Admin State"; + } + + // Per-Dom Controls + leaf ctrl { + + type rtdmc_DomCtrl; + description "Domain Controls"; + } + + // Protocol packet MTU + leaf mtu { + + type rtdmc_Mtu; + description "Maximum Transmission Unit"; + } + + // Auto Enable + leaf autoEnable { + + type rtdmc_AutoEnable; + description "Auto Enable"; + } + leaf logNbhChng { + type boolean; + description "Log Neighbhor changes"; + } + leaf flushRoutes { + type boolean; + description "Flush Routes"; + } + leaf bfd { + type boolean; + description "BFD"; + } + + leaf jpDelay { + + type rtdmc_JpDelayRange; + description "Join-Prune message inter-packet delay"; + } + + leaf regRateLmt { + + type rtdmc_RegRateRange; + description "Register rate limit for data packets per second"; + } + leaf rfcStrict { + type boolean; + description "Do not process joins from unknown neighbors"; + } + leaf sptSwitchGraceful { + type boolean; + description "Graceful switch to SPT"; + } + + // This object holds m6rib config information + container config-items { + + uses m6rib_Config-group; + description "This object holds M6RIB config information"; + } + + // This object holds m6rib rpf-meter config information + container rpfmeter-items { + + uses m6rib_RpfMeter-group; + description "Holds M6RIB rpf-meter config information"; + } + + // This object holds m6rib last-hop-meter config information + container lasthopmeter-items { + + uses m6rib_LastHopMeter-group; + description "M6RIB last hop meter Configuration information"; + } + container eventhist-items { + list EventHistory-list { + key "type"; + + uses m6rib_EventHistory-group; + description "Holds Configuration details of event-history buffers list"; + } + description "Holds Configuration details of event-history buffers"; + } + + // This object holds m6rib Notify information + container loglevel-items { + + uses m6rib_LogLevel-group; + description "Holds M6RIB logging level information"; + } + + // This object holds m6rib Notify information + container notify-items { + + uses m6rib_Notify-group; + description "This object holds m6rib Notify information"; + } + + // This object holds global config for mrib + container trace-items { + + uses m6rib_Trace-group; + description "This object holds global configuration for Bintrace"; + } + } + + grouping m6rib_Config-group { + description "This object holds M6RIB config information"; + + // Holddown Enable + leaf holdEnable { + + type m6rib_HoldAdminSt; + description "Holddown Enable"; + } + + // Holddown second + leaf holddown { + + type m6rib_HoldDownType; + description "holddown second"; + } + leaf compressBit { + type boolean; + description "M6RIB Compress Bitfield"; + } + + // Mfdm-buffer-route-count size + leaf mfdmSize { + + type m6rib_MfdmSize; + description "Mfdm buffer route size"; + } + + // Multipath Mode + leaf mode { + + type m6rib_MultipathMode; + description "M6RIB ECMP Multicast load splitting"; + } + + // Multipath Resilient + leaf modeResilient { + + type m6rib_ResilientType; + description "Multipath Resilient RPF interface mode"; + } + } + + grouping m6rib_RpfMeter-group { + description "Holds M6RIB rpf-meter config information"; + leaf hwDropAll { + type boolean; + description "hardware drop all configuration"; + } + + leaf kbps { + + type m6rib_Kbps; + description "rpf-meter in killobytes/seconds"; + } + + leaf burstSize { + + type m6rib_BurstSize; + description "rpf-meter in killobytes"; + } + } + + grouping m6rib_LastHopMeter-group { + description "M6RIB last hop meter Configuration information"; + + leaf kbps { + + type m6rib_Kbps; + description "rpf-meter in killobytes/seconds"; + } + + leaf burstSize { + + type m6rib_BurstSize; + description "rpf-meter in killobytes"; + } + } + + grouping m6rib_EventHistory-group { + description "Holds Configuration details of event-history buffers"; + + leaf type { + + type m6rib_EhType; + description "configures type of event history"; + } + + leaf size { + + type m6rib_Size; + description "configures buffer size in text/kb"; + } + } + + grouping m6rib_LogLevel-group { + description "Holds M6RIB logging level information"; + + // logging leve + leaf level { + + type m6rib_LogLevel; + description "Logging Level"; + } + leaf type { + type string; + description "Logging type"; + } + } + + grouping m6rib_Notify-group { + description "This object holds m6rib Notify information"; + + // Notify interval + leaf interval { + + type m6rib_Interval; + description "Notify Interval"; + } + } + + grouping m6rib_Trace-group { + description "This object holds global configuration for Bintrace"; + leaf traceEnable { + type boolean; + description "Configure multicast and enable bintrace"; + } + + // trace entries + leaf traceEntryCnt { + + type m6rib_TraceCountType; + description "Update number of bintrace entries"; + } + + // trace records + leaf traceRecCnt { + + type m6rib_TraceCountType; + description "Update number of bintrace record per entry"; + } + } + + grouping m6rib_RouteDb-group { + description "This object holds M6RIB route database information"; + + // This objects hold per pim domain (vrf) information + // Ephemeral data + container vrf-items { + + // Ephemeral data + list Vrf-list { + config "false"; + key "name"; + + uses m6rib_Vrf-group; + description "This objects holds M6RIB context level information list"; + } + description "This objects holds M6RIB context level information"; + } + } + + grouping macsec_Entity-group { + description "Macsec control plane entity"; + + // This objects hold per macsec instance information. There is + // only one instance of macsec running in the system today + container inst-items { + + uses macsec_Inst-group; + description "Macsec Instance object"; + } + } + + grouping macsec_Inst-group { + description "Macsec Instance object"; + + // macsec shutdown + leaf macsecShutdown { + + type macsec_MacsecShutdown; + description "Enable or disable Macsec Shutdown"; + } + container if-items { + list If-list { + key "id"; + + uses macsec_If-group; + description "Interface for Macsec keychain CLI list"; + } + description "Interface for Macsec keychain CLI"; + } + container eapol-items { + list Eapol-list { + key "id"; + + uses macsec_Eapol-group; + description "Interface for Macsec Eapol mac-address CLI list"; + } + description "Interface for Macsec Eapol mac-address CLI"; + } + + // This object holds macsec information that is operated at a + // interface level + container policy-items { + list Policy-list { + key "policyName"; + + uses macsec_Policy-group; + description "Macsec Policy Instance list"; + } + description "Macsec Policy Instance"; + } + } + + grouping macsec_If-group { + description "Interface for Macsec keychain CLI"; + + // Key Chain Name + leaf keychainName { + + type macsec_KeyChainName; + description "Name of Macsec Key Chain"; + } + + // Policy Name + leaf policyName { + + type macsec_PolicyName; + description "Name of Macsec Policy"; + } + + // Fallback Key Chain Name + leaf fallbackKeychainName { + + type macsec_KeyChainName; + description "Name of Macsec Fallback Key Chain"; + } + + // Interface Index + leaf id { + + type nw_IfId; + description "Interface Index"; + } + } + + grouping macsec_Eapol-group { + description "Interface for Macsec Eapol mac-address CLI"; + leaf macAddress { + type address_Mac; + default "03:00:00:c2:80:01"; + description "Macsec EAPOL Mac Address"; + } + + // Ether type + leaf etherType { + + type macsec_EtherType; + description "Macsec EAPOL Ether Type"; + } + + // Interface Index + leaf id { + + type nw_IfId; + description "Interface Index"; + } + } + + grouping macsec_Policy-group { + description "Macsec Policy Instance"; + + // Policy Name + leaf policyName { + + type macsec_PolicyName; + description "Name of Macsec Policy"; + } + + // Key Server Priority + leaf keySvrPrio { + + type macsec_KeySvrPrio; + description "Key Server Priority for Macsec Policy"; + } + + // Confidentiality Offset + leaf confOffset { + + type macsec_ConfOffset; + description "Confidentiality Offset for Macsec Policy"; + } + + // Security Policy + leaf secPolicy { + + type macsec_SecPolicy; + description "Security Policy for Macsec Policy"; + } + + // Replay Protection Window Size + leaf replayWindow { + + type macsec_ReplayWindow; + description "Replay Window for Macsec Policy"; + } + + // Cipher Suite + leaf cipherSuite { + + type macsec_CipherSuite; + description "Cipher Suite for Macsec Policy"; + } + + // SAK expiry time + leaf sakExpiryTime { + + type macsec_SakExpiryTime; + description "Security Association Key Expiry Time for Macsec Policy"; + } + + // Include icv indicator + leaf includeIcvParam { + + type macsec_IncludeIcvParam; + description "Include ICV Indicator paramset in MKPDU for Macsec Policy"; + } + } + + grouping mcastfwd_Entity-group { + description "Holds Multicast Forwarding Entity Information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This objects hold per mcastfwd instance information. There is only + // one instance of mcastfwd running in the system today + container inst-items { + + uses mcastfwd_Inst-group; + description "Holds Multicast Forwarding Instance information"; + } + } + + grouping mcastfwd_Inst-group { + description "Holds Multicast Forwarding Instance information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // Inter Packet Delay + leaf jpDelay { + + type rtdmc_JPDelay; + description "Inter Packet Delay"; + } + + // Null Register Inter Batch Delay + leaf nrDelay { + + type rtdmc_NRDelay; + description "Null Register Inter Batch Delay"; + } + + // Number of routes in a null register + leaf nrNumRt { + + type rtdmc_NRNumRt; + description "Null Register Number of Routes"; + } + leaf regStop { + type boolean; + description "Register until stops"; + } + + // This objects hold per igmp domain information + container dom-items { + + uses mcastfwd_Dom-group; + description "Holds Multicast Forwarding Domain information"; + } + container eventhist-items { + list EventHistory-list { + key "type"; + + uses mcastfwd_EventHistory-group; + description "Holds Multicast Forwarding Event-History Buffer Configurations list"; + } + description "Holds Multicast Forwarding Event-History Buffer Configurations"; + } + + container loglevel-items { + + uses mcastfwd_LogLevel-group; + description "Configures logging level"; + } + + container swrepli-items { + + uses mcastfwd_SwRepli-group; + description "Configures software replicate"; + } + } + + grouping mcastfwd_Dom-group { + description "Holds Multicast Forwarding Domain information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Admin State + leaf adminSt { + + type nw_AdminSt; + default "disabled"; + description "Admin State"; + } + + // Per-Dom Controls + leaf ctrl { + + type rtdmc_DomCtrl; + description "Domain Controls"; + } + + // Protocol packet MTU + leaf mtu { + + type rtdmc_Mtu; + description "Maximum Transmission Unit"; + } + + // Auto Enable + leaf autoEnable { + + type rtdmc_AutoEnable; + description "Auto Enable"; + } + leaf logNbhChng { + type boolean; + description "Log Neighbhor changes"; + } + leaf flushRoutes { + type boolean; + description "Flush Routes"; + } + leaf bfd { + type boolean; + description "BFD"; + } + + leaf jpDelay { + + type rtdmc_JpDelayRange; + description "Join-Prune message inter-packet delay"; + } + + leaf regRateLmt { + + type rtdmc_RegRateRange; + description "Register rate limit for data packets per second"; + } + leaf rfcStrict { + type boolean; + description "Do not process joins from unknown neighbors"; + } + leaf sptSwitchGraceful { + type boolean; + description "Graceful switch to SPT"; + } + } + + grouping mcastfwd_EventHistory-group { + description "Holds Multicast Forwarding Event-History Buffer Configurations"; + + leaf type { + + type mcastfwd_EhType; + description "Configures type of event history"; + } + + leaf size { + + type mcastfwd_Size; + description "Configures buffer size in text/kb"; + } + } + + grouping mcastfwd_LogLevel-group { + description "Configures logging level"; + + leaf lvltype { + + type mcastfwd_LvlType; + description "Configures type of logging level"; + } + + leaf level { + + type mcastfwd_Level; + description "Configures level values from 0-7"; + } + } + + grouping mcastfwd_SwRepli-group { + description "Configures software replicate"; + + leaf type { + + type mcastfwd_SwRep; + description "Enable software replication of PIM ASM leak packets and incoming interface"; + } + } + + grouping mcastfwdv6_Entity-group { + description "Holds Multicast Forwarding Entity Information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // This objects hold per mcastfwd instance information. + // There is only one instance of mcastfwd running in the + // system today + container inst-items { + + uses mcastfwdv6_Inst-group; + description "Holds Multicast Forwarding V6 Instance information"; + } + } + + grouping mcastfwdv6_Inst-group { + description "Holds Multicast Forwarding V6 Instance information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Inter Packet Delay + leaf jpDelay { + + type rtdmc_JPDelay; + description "Inter Packet Delay"; + } + + // Null Register Inter Batch Delay + leaf nrDelay { + + type rtdmc_NRDelay; + description "Null Register Inter Batch Delay"; + } + + // Number of routes in a null register + leaf nrNumRt { + + type rtdmc_NRNumRt; + description "Null Register Number of Routes"; + } + leaf regStop { + type boolean; + description "Register until stops"; + } + + // This objects hold per mcastfwdv6 domain information + container dom-items { + + uses mcastfwdv6_Dom-group; + description "Holds Multicast Forwarding Domain information"; + } + container eventhist-items { + list EventHistory-list { + key "type"; + + uses mcastfwdv6_EventHistory-group; + description "Holds Multicast Forwarding V6 Event-History Buffer Config list"; + } + description "Holds Multicast Forwarding V6 Event-History Buffer Config"; + } + + container loglevel-items { + + uses mcastfwdv6_LogLevel-group; + description "Configures logging level"; + } + + container swrepli-items { + + uses mcastfwdv6_SwRepli-group; + description "Configures software replicate"; + } + } + + grouping mcastfwdv6_Dom-group { + description "Holds Multicast Forwarding Domain information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Admin State + leaf adminSt { + + type nw_AdminSt; + default "disabled"; + description "Admin State"; + } + + // Per-Dom Controls + leaf ctrl { + + type rtdmc_DomCtrl; + description "Domain Controls"; + } + + // Protocol packet MTU + leaf mtu { + + type rtdmc_Mtu; + description "Maximum Transmission Unit"; + } + + // Auto Enable + leaf autoEnable { + + type rtdmc_AutoEnable; + description "Auto Enable"; + } + leaf logNbhChng { + type boolean; + description "Log Neighbhor changes"; + } + leaf flushRoutes { + type boolean; + description "Flush Routes"; + } + leaf bfd { + type boolean; + description "BFD"; + } + + leaf jpDelay { + + type rtdmc_JpDelayRange; + description "Join-Prune message inter-packet delay"; + } + + leaf regRateLmt { + + type rtdmc_RegRateRange; + description "Register rate limit for data packets per second"; + } + leaf rfcStrict { + type boolean; + description "Do not process joins from unknown neighbors"; + } + leaf sptSwitchGraceful { + type boolean; + description "Graceful switch to SPT"; + } + } + + grouping mcastfwdv6_EventHistory-group { + description "Holds Multicast Forwarding V6 Event-History Buffer Config"; + + leaf type { + + type mcastfwdv6_EhType; + description "Configures type of event history"; + } + + leaf size { + + type mcastfwdv6_Size; + description "Configures buffer size in text/kb"; + } + } + + grouping mcastfwdv6_LogLevel-group { + description "Configures logging level"; + + leaf lvltype { + + type mcastfwdv6_LvlType; + description "Configures type of logging level"; + } + + leaf level { + + type mcastfwdv6_Level; + description "Configures level values from 0-7"; + } + } + + grouping mcastfwdv6_SwRepli-group { + description "Configures software replicate"; + + leaf type { + + type mcastfwdv6_SwRep; + description + "Enable software replication of PIM ASM leak + packets and incoming interface"; + } + } + + grouping mld_Entity-group { + description "MLD Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per mld instance information. There is only + // one instance of mld running in the system today + container inst-items { + + uses mld_Inst-group; + description "MLD Instance"; + } + } + + grouping mld_Inst-group { + description "MLD Instance"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Control + leaf instCtrl { + + type ipmc_InstCtrl; + description "Inst Controls"; + } + + // Bootup route add delay to RIB + leaf bootupDelay { + + type ipmc_BootupDelay; + description "Bootup Route Add Delay"; + } + leaf flushRoute { + type boolean; + description "Flush Routes on Restart"; + } + leaf rtrAlert { + type boolean; + description "Enforce Router Alert"; + } + leaf anyQueryDest { + type boolean; + description "Allow any destination-IP for General Queries "; + } + + // syslog-Threshold + leaf syslogThreshold { + + type ipmc_SyslogThresT; + description "IGMP table syslog threshold percentage"; + } + leaf spoofCheck { + type boolean; + description "Enable spoof check for IGMP"; + } + leaf strictQuerElect { + type boolean; + description "Consider subnet check for L3 igmp querier election"; + } + + // This objects hold per mld domain information + container dom-items { + list Dom-list { + key "name"; + + uses mld_Dom-group; + description "This object holds MLD domain information list"; + } + description "This object holds MLD domain information"; + } + container eventhist-items { + list EventHistory-list { + key "type"; + + uses mld_EventHistory-group; + description "This object holds configuration details of event-history buffers list"; + } + description "This object holds configuration details of event-history buffers"; + } + } + + grouping mld_Dom-group { + description "This object holds MLD domain information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // This objects hold per mld interface information + container if-items { + list If-list { + key "id"; + + uses mld_If-group; + description "This object holds per MLD interface information list"; + } + description "This object holds per MLD interface information"; + } + + // This objects hold per mld domain information + container ssmxlate-items { + list SsmXlate-list { + key "srcAddr grpPfx"; + + uses mld_SsmXlate-group; + description "Holds Source Specific Multicast (SSM) translation information list"; + } + description "Holds Source Specific Multicast (SSM) translation information"; + } + } + + grouping mld_If-group { + description "This object holds per MLD interface information"; + + leaf mldVersion { + + type mld_Ver; + description "MLD supported version"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + // Interface Control + leaf ifCtrl { + + type ipmc_IfCtrl; + description "Controls"; + } + + // Group Timeout + leaf grpTimeout { + + type ipmc_GrpTimeout; + description "Group Membership Timeout"; + } + leaf actQuer { + config "false"; + type address_Ip; + description "IGMP active querier IP"; + } + leaf nextQuerTime { + config "false"; + type union { + type string; + type uint64; + } + description "IGMP next query time"; + } + + // Flags + leaf flags { + config "false"; + + type ipmc_IfFlags; + description "Flags"; + } + leaf entryCount { + type uint32; + description "Dynamic entry count"; + } + leaf stEntryCount { + type uint32; + description "Static Entry count"; + } + leaf querExpiry { + config "false"; + type union { + type string; + type uint64; + } + description "Querier expiry time"; + } + leaf reportLl { + type boolean; + description "Report link local"; + } + leaf immediateLeave { + type boolean; + description "Fast leave"; + } + + // Allow v3 ASM + leaf allowv3Asm { + + type ipmc_Allowv3AsmType; + description "Allow v3 ASM"; + } + leaf suppressv3Gsq { + type boolean; + description "Suppress v3 GSQ"; + } + + // This objects hold IP Multicast Group JoinType information + container jointype-items { + list JoinType-list { + key "type"; + + uses mld_JoinType-group; + description "This object holds IP Multicast Group JoinType information list"; + } + description "This object holds IP Multicast Group JoinType information"; + } + + // This object holds resource (router state) limit policy + // to limit amount of multicast routing state on the router + container limit-items { + + uses mld_ResP-group; + description "Holds Resource policy to limit amount of multicast routing state on the router"; + } + + // This object holds mld reports policy state per Interface + container reppol-items { + + uses mld_RepP-group; + description "This object holds mld reports policy state per Interface"; + } + + // This object holds static mld reports policy state per Interface + container streppol-items { + list StRepP-list { + key "joinType"; + + uses mld_StRepP-group; + description "Holds Static MLD report policy list"; + } + description "Holds Static MLD report policy"; + } + + // This object holds querier information per interface + container querierp-items { + + uses mld_QuerierP-group; + description "Holds MLD querier information"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping mld_JoinType-group { + description "This object holds IP Multicast Group JoinType information"; + + // Join Type of the groups + leaf type { + + type ipmc_JoinType; + description "Join Type of the groups"; + } + + // This objects hold IP Multicast Group version information + container ver-items { + list Version-list { + key "version"; + + uses mld_Version-group; + description "This object holds IP Multicast Group version information list"; + } + description "This object holds IP Multicast Group version information"; + } + } + + grouping mld_Version-group { + description "This object holds IP Multicast Group version information"; + + // MLD version + leaf version { + + type ipmc_Ver; + description "Group version"; + } + + // This object holds mld group configuration per Interface + container group-items { + list Group-list { + key "grp"; + + uses mld_Group-group; + description "MLD group information per interface list"; + } + description "MLD group information per interface"; + } + } + + grouping mld_Group-group { + description "MLD group information per interface"; + leaf grp { + type address_Ip; + description "Route address name for choosing groups"; + } + leaf useStaticOif { + type boolean; + default "true"; + description "Indicates if Static Outgoing Interface is used"; + } + + // This object holds static mld source per group + container source-items { + list Source-list { + key "src"; + + uses mld_Source-group; + description "This object holds static mld source per group list"; + } + description "This object holds static mld source per group"; + } + } + + grouping mld_Source-group { + description "This object holds static mld source per group"; + leaf src { + type address_Ip; + description "Source IP address"; + } + leaf useStaticOif { + type boolean; + default "true"; + description "Indicates if Static Outgoing Interface is used"; + } + } + + grouping mld_ResP-group { + description "Holds Resource policy to limit amount of multicast routing state on the router"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Maximum Multicast Entries + leaf max { + + type mcast_NumEntries; + description "Maximum Multicast Entries"; + } + + // Reserved Multicast Entries + leaf rsvd { + + type mcast_NumEntries; + description "Reserved Multicast Entries"; + } + leaf rtMap { + type string; + description "Reserved Entries Route Map"; + } + } + + grouping mld_RepP-group { + description "This object holds mld reports policy state per Interface"; + leaf rtMap { + type string; + description "Route Map"; + } + leaf pfxList { + type string; + description "Prefix List"; + } + leaf useAccessGrpCommand { + type boolean; + description "Flag to use access-group"; + } + } + + grouping mld_StRepP-group { + description "Holds Static MLD report policy"; + leaf rtMap { + type string; + description "Route Map"; + } + leaf pfxList { + type string; + description "Prefix List"; + } + leaf useAccessGrpCommand { + type boolean; + description "Flag to use access-group"; + } + + // Join Type of the groups + leaf joinType { + + type ipmc_JoinType; + description "Join Type of Groups"; + } + } + + grouping mld_QuerierP-group { + description "Holds MLD querier information"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Querier IP address + leaf addr { + + type mcast_QuerierIp; + description "Address"; + } + + // Query interval + leaf queryIntvl { + + type mcast_QueryIntvl; + description "Query Interval"; + } + + // Query response interval + leaf rspIntvl { + + type mcast_QueryRspIntvl; + description "Response Interval of Querier"; + } + + // Robustness factor + leaf robustFac { + + type mcast_RobustFactor; + description "Robustness Factor"; + } + + // Startup query interval + leaf startQueryIntvl { + + type mcast_StartQueryIntvl; + description "Startup Query Interval"; + } + + // Startup query count + leaf startQueryCnt { + + type mcast_QueryCnt; + description "Startup Query Count"; + } + + // Querier timeout + leaf querierTimeout { + + type mcast_QuerierTimeout; + description "Querier Timeout"; + } + + // Last member query count + leaf lastMbrCnt { + + type mcast_LastMbrQueryCnt; + description "Last Member Query Count"; + } + + // Last member response time + leaf lastMbrRespTime { + + type mcast_LastMbrRespTime; + description "Last Member Response Time"; + } + } + + grouping mld_SsmXlate-group { + description "Holds Source Specific Multicast (SSM) translation information"; + + // Group IP Prefix address + leaf grpPfx { + + type mcast_GrpIp; + description "Address"; + } + leaf srcAddr { + type address_Ip; + description "Address"; + } + } + + grouping mld_EventHistory-group { + description "This object holds configuration details of event-history buffers"; + + leaf type { + + type mld_EhType; + description "Configures type of event history"; + } + + leaf size { + + type mld_Size; + description "Configures buffer size in text per kb"; + } + } + + grouping mldsnoop_Entity-group { + description "Holds MLD Snooping Entity Information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per mld instance information. There is only + // one instance of mld running in the system today + container inst-items { + + uses mldsnoop_Inst-group; + description "Holds MLD Snooping Instance information"; + } + } + + grouping mldsnoop_Inst-group { + description "Holds MLD Snooping Instance information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // All router multicast group address (GIPo), outer multicast + // encapsulation ip address + leaf allRtrMcastEncap { + config "false"; + + type mcast_GrpIp; + description "All Router Multicast Encapsulation"; + } + + // Flags + leaf flags { + config "false"; + + type ipmcsnoop_InstFlags; + description "Flags"; + } + + // This objects hold per mld domain information + container dom-items { + + uses mldsnoop_Dom-group; + description "Holds MLD Snooping Domain information"; + } + + // This objects hold per Instance statistics operational + // information. This is a singleton within Instance + container inststats-items { + + uses mldsnoop_InstStats-group; + description "Instance Statistics"; + } + } + + grouping mldsnoop_Dom-group { + description "Holds MLD Snooping Domain information"; + leaf operCfgRecovery { + config "false"; + type boolean; + description "Running configuration recovery"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "IP Multicast snooping domain name"; + } + + // Id for this domain @@@ This comes from the domain id assigned by the + // PE for the bridge domain + leaf id { + config "false"; + + type l2_DomId; + description "Operational domain identifier"; + } + leaf encap { + type string; + description "L2 Domain Fabric Encapsulation"; + } + + // Admin State + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Administrative State"; + } + + // Controls + leaf ctrl { + + type ipmcsnoop_DomControl; + description "Controls for IP milticast domains"; + } + + // IGMP database + container db-items { + list Db-list { + config "false"; + key "type"; + + uses mldsnoop_Db-group; + description "Database list"; + } + description "Database"; + } + + // This objects hold per mld domain statistics operational + // information. This is a singleton within a Dom + container domstats-items { + + uses mldsnoop_DomStats-group; + description "Domain Statistics"; + } + + // Multicast router if that is configured statically + container strtrif-items { + list StRtrIf-list { + config "false"; + key "id"; + + uses mldsnoop_StRtrIf-group; + description "MLD Static Router Interface list"; + } + description "MLD Static Router Interface"; + } + + // Multicast router if @@@ Mulitcast router if in the BD. These can be either + // configured by the admin or discovered through protocols + // like PIM, IGMP, MLD + container rtrif-items { + list RtrIf-list { + config "false"; + key "id"; + + uses mldsnoop_RtrIf-group; + description "Router Interface list"; + } + description "Router Interface"; + } + + // This objects is the parent for vlan config mode params + container vlan-items { + list Vlan-list { + key "vlanid"; + + uses mldsnoop_Vlan-group; + description "Holds MLD snooping vlan configurations list"; + } + description "Holds MLD snooping vlan configurations"; + } + + // This objects is the parent for Interface config mode params + container intf-items { + list Intf-list { + key "id"; + + uses mldsnoop_Intf-group; + description "Holds MLD snooping Interface configurations list"; + } + description "Holds MLD snooping Interface configurations"; + } + + // This objects holds configurable params in + // bridge domain config mode + container bd-items { + list BD-list { + key "bdid"; + + uses mldsnoop_BD-group; + description "Holds MLD Snooping Bridge Domain Configurations list"; + } + description "Holds MLD Snooping Bridge Domain Configurations"; + } + + // This objects holds configurable params in global config mode + container gl-items { + + uses mldsnoop_Gl-group; + description "Holds MLD Snooping Configurations in Global Configuration Mode"; + } + } + + grouping mldsnoop_Db-group { + description "Database"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type of the repository + leaf type { + config "false"; + + type ipmcsnoop_DbT; + description "Database Type identifying the oper data to display"; + } + leaf totalMacCount { + config "false"; + type uint32; + description "Total mac count"; + } + + // Multicast Group records + container mcgrp-items { + list McGrpRec-list { + config "false"; + key "addr"; + + uses mldsnoop_McGrpRec-group; + description "Multicast Group Record list"; + } + description "Multicast Group Record"; + } + } + + grouping mldsnoop_McGrpRec-group { + description "Multicast Group Record"; + + leaf mldVersion { + config "false"; + + type mld_Ver; + description "Mld snooping version"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Group address + leaf addr { + config "false"; + + type mcast_GrpIp; + description "Multicast Group Address"; + } + + // EPG entries in mcast group record + container epg-items { + list EpgRec-list { + config "false"; + key "fabEncap"; + + uses mldsnoop_EpgRec-group; + description "Endpoint Group Record list"; + } + description "Endpoint Group Record"; + } + + // MLD report record snooped by mld-snoop application + container rep-items { + list ReportRec-list { + config "false"; + key "mcastSrc mldVersion"; + + uses mldsnoop_ReportRec-group; + description "Report Record list"; + } + description "Report Record"; + } + } + + grouping mldsnoop_EpgRec-group { + description "Endpoint Group Record"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf fabEncap { + config "false"; + type string; + description "Fabric Encapsulation"; + } + + // Epg id, identified using the circuit endpoint + // id in the system + leaf id { + config "false"; + + type l2_DomId; + description "Endpoint Group ID"; + } + + // MLD report record snooped by mld-snoop application + container rep-items { + list ReportRec-list { + config "false"; + key "mcastSrc mldVersion"; + + uses mldsnoop_ReportRec-group; + description "Report Record list"; + } + description "Report Record"; + } + } + + grouping mldsnoop_ReportRec-group { + description "Report Record"; + + leaf mldVersion { + config "false"; + + type mld_Ver; + description "Mld snooping version"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Multicast traffic source + leaf mcastSrc { + config "false"; + + type ipmcsnoop_McastSrc; + description "Multicast Source Address"; + } + + // Filter mode + leaf filtMode { + config "false"; + + type mcast_FiltMode; + description "Filter Mode"; + } + + // Filter mode + leaf flags { + config "false"; + + type ipmcsnoop_RepFlags; + description "Flags"; + } + + // OIF list (outgoing interface list) + container oif-items { + list OIFRec-list { + config "false"; + key "id"; + + uses mldsnoop_OIFRec-group; + description "OIF Record list"; + } + description "OIF Record"; + } + } + + grouping mldsnoop_OIFRec-group { + description "OIF Record"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Multicast traffic source + leaf id { + config "false"; + + type nw_IfId; + description "ID"; + } + + // Host Record List (Used for Explicit Host Tracking) + container host-items { + list HostRec-list { + config "false"; + key "addr"; + + uses mldsnoop_HostRec-group; + description "Host Record list"; + } + description "Host Record"; + } + } + + grouping mldsnoop_HostRec-group { + description "Host Record"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf addr { + config "false"; + type address_Ip; + description "Host Address"; + } + } + + grouping mldsnoop_DomStats-group { + description "Domain Statistics"; + } + + grouping mldsnoop_StRtrIf-group { + description "MLD Static Router Interface"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + config "false"; + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + config "false"; + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + config "false"; + + type nw_IfAdminSt; + description "Admin State"; + } + leaf encap { + config "false"; + type string; + description "Enable Encapsulation when flooding packets"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + } + + grouping mldsnoop_RtrIf-group { + description "Router Interface"; + + // Identifier for the if + leaf id { + config "false"; + + type nw_IfId; + description "Router interface identifier"; + } + } + + grouping mldsnoop_Vlan-group { + description "Holds MLD snooping vlan configurations"; + + leaf vlanid { + + type nw_IfId; + description "Vlan ID for MLD Snooping Configuration"; + } + leaf rprtFldAllIntf { + type boolean; + description "Enable Report-Flood on all Active Interfaces of VLAN"; + } + + leaf mldSnoop { + + type mldsnoop_MldSnoopVlan; + description "Enable/Disable MLD Snooping per Vlan"; + } + + // Circuit endpoint representing EPG + container cktep-items { + list CktEp-list { + key "encap"; + + uses mldsnoop_CktEp-group; + description "Represents Endpoint Encapsulation for a circuit list"; + } + description "Represents Endpoint Encapsulation for a circuit"; + } + + // Multicast Snoop Configured statically + container mcgrp-items { + list StMcGrp-list { + key "addr"; + + uses mldsnoop_StMcGrp-group; + description "Holds Static IP Multicast Group Information list"; + } + description "Holds Static IP Multicast Group Information"; + } + + // This objects is the parent for Interface config mode params + container intf-items { + list Intf-list { + key "id"; + + uses mldsnoop_Intf-group; + description "Holds MLD snooping Interface configurations list"; + } + description "Holds MLD snooping Interface configurations"; + } + + container mldsnbase-items { + + uses mldsnoop_MldsnBase-group; + description "Holds MLD Snooping Parameters for all Configuration Modes"; + } + + // This objects holds MLD snooping timers for vlan + container gtimers-items { + + uses mldsnoop_GTimers-group; + description "Holds Global MLD Snooping Timers"; + } + + // This objects holds multicast mac address table params + container mactable-items { + list MacTable-list { + key "macAddress"; + + uses mldsnoop_MacTable-group; + description "Holds MLD Snooping Mac-Address Table Configurations list"; + } + description "Holds MLD Snooping Mac-Address Table Configurations"; + } + + // This objects holds multicast router snoop params + container mrouter-items { + + uses mldsnoop_MRouter-group; + description "Holds MLD Snooping Static Multicast Router Configurations"; + } + + // This objects holds multicast proxy snoop params + container proxy-items { + + uses mldsnoop_Proxy-group; + description "Holds MLD Snooping Proxy Configurations"; + } + + // Querier policy + container querierp-items { + + uses mldsnoop_QuerierP-group; + description "Holds MLD Snooping Querier Policy Configurations"; + } + + // Route control policy for mld multicast snoop. + container actrl-items { + + uses mldsnoop_ACtrl-group; + description "Holds MLD Snooping Access Control Policy Configurations"; + } + + // Report policy for mld multicast snoop + container rpolicy-items { + list RPolicy-list { + key "rtMap"; + + uses mldsnoop_RPolicy-group; + description "Holds MLD Snooping Report Policy Configurations list"; + } + description "Holds MLD Snooping Report Policy Configurations"; + } + } + + grouping mldsnoop_CktEp-group { + description "Represents Endpoint Encapsulation for a circuit"; + leaf encap { + type string; + description "Fabric Encapsulation"; + } + } + + grouping mldsnoop_StMcGrp-group { + description "Holds Static IP Multicast Group Information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Multicast group address + leaf addr { + + type mcast_GrpIp; + description "Multicast Group IP Address"; + } + + // IPMC Source IP + container src-items { + list McSrc-list { + key "id"; + + uses mldsnoop_McSrc-group; + description "Holds MLD Snooping Source Specific Information list"; + } + description "Holds MLD Snooping Source Specific Information"; + } + + // Target Interface (outgoing interface list) + container if-items { + list TgtIf-list { + key "id"; + + uses mldsnoop_TgtIf-group; + description "Holds Outgoing Interface Information list"; + } + description "Holds Outgoing Interface Information"; + } + } + + grouping mldsnoop_McSrc-group { + description "Holds MLD Snooping Source Specific Information"; + + // Multicast traffic source + leaf id { + + type ipmcsnoop_McastSrc; + description "Multicast Source IP Address"; + } + + // Target Interface (outgoing interface list) + container if-items { + list TgtIf-list { + key "id"; + + uses mldsnoop_TgtIf-group; + description "Holds Outgoing Interface Information list"; + } + description "Holds Outgoing Interface Information"; + } + } + + grouping mldsnoop_TgtIf-group { + description "Holds Outgoing Interface Information"; + leaf vsi { + type boolean; + description "Specifies if this interface is VSI"; + } + leaf accGrp { + type boolean; + description "Specifies if this interface is Access group"; + } + leaf pfxList { + type boolean; + description "Specifies prefix list route map for this interface"; + } + + // Target interface Id + leaf id { + + type nw_IfId; + description "Multicast Source IP Address"; + } + } + + grouping mldsnoop_Intf-group { + description "Holds MLD snooping Interface configurations"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + leaf rtrGrdVlanId { + + type ipmcsnoop_RtrGrdVlanIdT; + description "Router-Guard Vlan Identifier"; + } + leaf rtrGrdEnable { + type boolean; + description "Indicates if Router-Guard is Enabled on the Interface"; + } + leaf reportFlood { + type boolean; + description "Indicates if Report Flood is Enabled on the Interface"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + } + + grouping mldsnoop_MldsnBase-group { + description "Holds MLD Snooping Parameters for all Configuration Modes"; + + leaf v2ReportSuppr { + + type mldsnoop_V2ReportSuppr; + description "MLDv2 Report Suppression and Proxy Reporting"; + } + + leaf llGrpSuppr { + + type ipmcsnoop_LlGrpSuppr; + description "Link Local Group Suppression"; + } + + leaf reportSuppr { + + type ipmcsnoop_ReportSuppr; + description "IGMPv1/v2 report Suppression for VLAN"; + } + + leaf expTracking { + + type ipmcsnoop_ExpTracking; + description "Configures Explicit Host for a VLAN"; + } + } + + grouping mldsnoop_GTimers-group { + description "Holds Global MLD Snooping Timers"; + + leaf fastLeave { + + type ipmcsnoop_FastLeave; + description "Indicates if Fastleave is Enabled"; + } + + // Group timeout + // Default value handled in local MO type + leaf grpTimeout { + + // Type is a Local-MO-Defined-Type + type mcast_GrpTimeout_GTimers_grpTimeout { + range "0..10081"; + } + description "Group Membership Timeout"; + } + + leaf maxGqMiss { + + type ipmcsnoop_MaxGqMiss; + description "Maximum General Query Miss Count"; + } + leaf useGrpAddr { + type boolean; + description "Use Group IP Address for Proxy-Leave"; + } + } + + grouping mldsnoop_MacTable-group { + description "Holds MLD Snooping Mac-Address Table Configurations"; + leaf macAddress { + type address_Mac; + description "Specify MAC Address for a VLAN/BD"; + } + + // Target Interface (outgoing interface list) + container if-items { + list TgtIf-list { + key "id"; + + uses mldsnoop_TgtIf-group; + description "Holds Outgoing Interface Information list"; + } + description "Holds Outgoing Interface Information"; + } + container mif-items { + list MIf-list { + key "intf"; + + uses mldsnoop_MIf-group; + description "Holds MLD Snooping Multicast Router's Interface Configurations list"; + } + description "Holds MLD Snooping Multicast Router's Interface Configurations"; + } + } + + grouping mldsnoop_MIf-group { + description "Holds MLD Snooping Multicast Router's Interface Configurations"; + leaf intf { + type string; + description "Interface for Static-Mrouter"; + } + leaf vsi { + type boolean; + description "Specify Interface is VSI"; + } + } + + grouping mldsnoop_MRouter-group { + description "Holds MLD Snooping Static Multicast Router Configurations"; + + // Global property + leaf vpcPeerLink { + + type ipmcsnoop_Vpc; + description "Specify vpc-peer-link as Static Mrouter for all VLAN/BD"; + } + + // Target Interface (outgoing interface list) + container if-items { + list TgtIf-list { + key "id"; + + uses mldsnoop_TgtIf-group; + description "Holds Outgoing Interface Information list"; + } + description "Holds Outgoing Interface Information"; + } + container mif-items { + list MIf-list { + key "intf"; + + uses mldsnoop_MIf-group; + description "Holds MLD Snooping Multicast Router's Interface Configurations list"; + } + description "Holds MLD Snooping Multicast Router's Interface Configurations"; + } + } + + grouping mldsnoop_Proxy-group { + description "Holds MLD Snooping Proxy Configurations"; + + leaf maxRespTime { + + type ipmcsnoop_Mrt; + description "Configures MRT for Switch's Proxy General-Queries"; + } + } + + grouping mldsnoop_QuerierP-group { + description "Holds MLD Snooping Querier Policy Configurations"; + + leaf mldsnVer { + + type mldsnoop_Ver; + description "MLD snooping version"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Querier IP address + leaf addr { + + type mcast_QuerierIp; + description "Address"; + } + + // Query interval + leaf queryIntvl { + + type mcast_QueryIntvl; + description "Query Interval"; + } + + // Query response interval + leaf rspIntvl { + + type mcast_QueryRspIntvl { + range "1..25"; + } + description "Response Interval of Querier"; + } + + // Robustness factor + leaf robustFac { + + type mcast_RobustFactor; + description "Robustness Factor"; + } + + // Startup query interval + leaf startQueryIntvl { + + type mcast_StartQueryIntvl; + description "Startup Query Interval"; + } + + // Startup query count + leaf startQueryCnt { + + type mcast_QueryCnt; + description "Startup Query Count"; + } + + // Last member query interval + leaf lastMbrIntvl { + + type mcast_LastMbrQueryIntvl; + description "Last Member Query Interval"; + } + + // Querier timeout + leaf timeout { + + type mcast_QuerierTimeout; + description "Configures Querier Timeout"; + } + } + + grouping mldsnoop_ACtrl-group { + description "Holds MLD Snooping Access Control Policy Configurations"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Direction [in/out] + leaf direction { + + type rtctrl_RtCtrlDir; + description "Direction"; + } + leaf rtMap { + type string; + description "Route Map"; + } + + // Target Interface (outgoing interface list) + container if-items { + list TgtIf-list { + key "id"; + + uses mldsnoop_TgtIf-group; + description "Holds Outgoing Interface Information list"; + } + description "Holds Outgoing Interface Information"; + } + } + + grouping mldsnoop_RPolicy-group { + description "Holds MLD Snooping Report Policy Configurations"; + + // Route map name to control the distribution + leaf rtMap { + + type mldsnoop_RtMapType; + description "Route Map Name to control the distribution"; + } + + // Target Interface (outgoing interface list) + container if-items { + list TgtIf-list { + key "id"; + + uses mldsnoop_TgtIf-group; + description "Holds Outgoing Interface Information list"; + } + description "Holds Outgoing Interface Information"; + } + } + + grouping mldsnoop_BD-group { + description "Holds MLD Snooping Bridge Domain Configurations"; + + leaf bdid { + + type nw_IfId; + description "Bridge Domain Identifier"; + } + } + + grouping mldsnoop_Gl-group { + description "Holds MLD Snooping Configurations in Global Configuration Mode"; + container eventhist-items { + list EventHistory-list { + key "type"; + + uses mldsnoop_EventHistory-group; + description "Holds MLD Snooping Event-History Buffer Configurations list"; + } + description "Holds MLD Snooping Event-History Buffer Configurations"; + } + + container rtrgrd-items { + + uses mldsnoop_RtrGrd-group; + description "Holds Router Guard Configuration for all switchports or specific vlan"; + } + + container mldsnbase-items { + + uses mldsnoop_MldsnBase-group; + description "Holds MLD Snooping Parameters for all Configuration Modes"; + } + + // This objects holds traffic related snooping params + container mctraf-items { + + uses mldsnoop_McTraf-group; + description "Holds MLD Snooping Multicast Traffic Configurations"; + } + + // This objects holds MLD snooping timers for vlan + container gtimers-items { + + uses mldsnoop_GTimers-group; + description "Holds Global MLD Snooping Timers"; + } + + // This objects holds vlan specific MLD snooping params + container gvlan-items { + + uses mldsnoop_GVlan-group; + description "Holds MLD Snooping Vlan Specific Configurations"; + } + + // This Object holds global debug + container gdebug-items { + + uses mldsnoop_GDebug-group; + description "Holds MLD Snooping Debugs Enabling Configuration"; + } + + // This objects holds multicast router snoop params + container mrouter-items { + + uses mldsnoop_MRouter-group; + description "Holds MLD Snooping Static Multicast Router Configurations"; + } + + // This objects holds multicast proxy snoop params + container proxy-items { + + uses mldsnoop_Proxy-group; + description "Holds MLD Snooping Proxy Configurations"; + } + } + + grouping mldsnoop_EventHistory-group { + description "Holds MLD Snooping Event-History Buffer Configurations"; + + leaf type { + + type mldsnoop_EhType; + description "configures type of event history{rib/vpc/vlan/vlanev/mfdm/mfdm-ev}"; + } + + leaf size { + + type mldsnoop_Size; + description "configures buffer size in text/kb"; + } + } + + grouping mldsnoop_RtrGrd-group { + description "Holds Router Guard Configuration for all switchports or specific vlan"; + leaf state { + type boolean; + description "Configures Router Guard for Multicast packets on all switchports"; + } + } + + grouping mldsnoop_McTraf-group { + description "Holds MLD Snooping Multicast Traffic Configurations"; + + leaf holddownTimer { + + type mcast_HolddownTimer; + description "Configures Initial Holddown Period After Switchover/Restart"; + } + } + + grouping mldsnoop_GVlan-group { + description "Holds MLD Snooping Vlan Specific Configurations"; + + leaf mldSnoop { + + type mldsnoop_MldSnoopGl; + description "Enable/Disable MLD Snooping globally"; + } + + leaf disableNveStRtrPort { + + type ipmcsnoop_DisableNveStRtrPort; + description "Disable NVE Static Router Port"; + } + + leaf vxlanUmcDropVlan { + + type ipmcsnoop_VxlanVlanRange; + description + "Drop Unknown Multicast Traffic on Vlan(s) - + Range 1-3967"; + } + } + + grouping mldsnoop_GDebug-group { + description "Holds MLD Snooping Debugs Enabling Configuration"; + + leaf syslogThreshold { + + type ipmcsnoop_SyslogThrshold; + description "IGMP Snooping Syslog Threshold Percentage"; + } + } + + grouping mldsnoop_InstStats-group { + description "Instance Statistics"; + } + + grouping mplsldp_LDP-group { + description "MPLS LDP Entity, anchoring all LDP specific MOs"; + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Platform wide LDP state + container ldpbindings-items { + + uses mplsldp_LdpBindings-group; + description "Global LDP binding state"; + } + + // Neibgbor discovery operational state + container discovery_state-items { + + uses mplsldp_DiscoveryState-group; + description "Neibgbor discovery operational state"; + } + + // Platform wide LDP state + container global-items { + + uses mplsldp_Global-group; + description "Platform wide LDP configuration and state"; + } + + // Contains LDP IGP synchronization information + container igp_sync-items { + + uses mplsldp_IgpSync-group; + description "IGP Synchronization Information"; + } + + // LDP Label Advertisements + container advlbl-items { + + uses mplsldp_AdvLbl-group; + description "Control if labels are advertised. When this MO exists, labels are advertised (the default). When this MO does not exist, no labels will be advertised to neighbors."; + } + + // LDP Label Advertisements for prefix list + container advlblpfx-items { + list AdvLblPfx-list { + key "pfxList"; + + uses mplsldp_AdvLblPfx-group; + description "Advertises local labels for some destination prefixes list"; + } + description "Advertises local labels for some destination prefixes"; + } + + // LDP Label Advertisements interface + container advlblintf-items { + list AdvLblIntf-list { + key "interface"; + + uses mplsldp_AdvLblIntf-group; + description "Advertises local labels for a particular interface list"; + } + description "Advertises local labels for a particular interface"; + } + + // LDP Session backoff parameters + container backoffparams-items { + + uses mplsldp_BackoffParams-group; + description "LDP Session backoff parameters"; + } + + // LDP Discovery + container discovery-items { + + uses mplsldp_Discovery-group; + description "Anchors configuration related to LDP neighbor discovery"; + } + + // LDP Explicit Null + container explicitnull-items { + + uses mplsldp_ExplicitNull-group; + description "LDP Explicit Null advertises an explicit-null label in situations where an implicit-null label would normally be advertised"; + } + + // LDP Explicit Null for prefix list + container explnullforlist-items { + + uses mplsldp_ExplNullForList-group; + description "Controls which label bindings will be advertised as explicit-null rather than inplicit-null"; + } + + // LDP Explicit Null to access list + container explnulltolist-items { + + uses mplsldp_ExplNullToList-group; + description "Controls to which neighbors label bindings will be advertised as explicit-null rather than implicit-null"; + } + + // LDP Graceful restart + container gr-items { + + uses mplsldp_Gr-group; + description "LDP Graceful restart parameters"; + } + + // LDP session holdtime + container holdtime-items { + + uses mplsldp_HoldTime-group; + description "LDP session holdtime parameters"; + } + + // LDP logging neighbor, password, rollover changes + container logging-items { + + uses mplsldp_Logging-group; + description "LDP logging parameters"; + } + + // LDP default route + container defaultroute-items { + + uses mplsldp_DefaultRoute-group; + description "Allow MPLS forwarding for ip default route"; + } + + // LDP neighbor Parameters + container neighbor-items { + list Neighbor-list { + key "nbrAddr"; + + uses mplsldp_Neighbor-group; + description "LDP neighbor parameters class list"; + } + description "LDP neighbor parameters class"; + } + + // LDP Password + container password-items { + + uses mplsldp_Password-group; + description "Anchors configuration related to LDP password parameters"; + } + + // LDP router id + container routerid-items { + + uses mplsldp_RouterId-group; + description "LDP router id class"; + } + + // LDP session protection + container sessprot-items { + + uses mplsldp_SessProt-group; + description "Enables LDP sessions to be protected during a link failure. It protects all LDP sessions, unless you specify a prefix list"; + } + + // LDP label allocate global + container labelallocate-items { + + uses mplsldp_LabelAllocate-group; + description "Configures local label allocation filters for MPLS LDP"; + } + + // Peers operational state + container peers-items { + list Peers-list { + config "false"; + key "peerLsrId"; + + uses mplsldp_Peers-group; + description "Peers operational state list"; + } + description "Peers operational state"; + } + + // This object holds MPLS LDP information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses mplsldp_If-group; + description "Object holds LDP information that is operated at interface level list"; + } + description "Object holds LDP information that is operated at interface level"; + } + } + + grouping mplsldp_LdpBindings-group { + description "Global LDP binding state"; + + // Per address family operational state + container address_families-items { + + uses mplsldp_BindingAddressFamilies-group; + description "Per address family operational state"; + } + } + + grouping mplsldp_BindingAddressFamilies-group { + description "Per address family operational state"; + + // Containing data related to the IPv4 address family + container ipv4-items { + + uses mplsldp_BindingIpv4-group; + description "Containing data related to the IPv4 address family"; + } + } + + grouping mplsldp_BindingIpv4-group { + description "Containing data related to the IPv4 address family"; + + // LDP address and label binding information + container bindings-items { + + uses mplsldp_BindingList-group; + description "LDP address and label binding information"; + } + } + + grouping mplsldp_BindingList-group { + description "LDP address and label binding information"; + + leaf localLabelFilteringSpecifications { + config "false"; + + type mplsldp_LocalLabelFilteringSpecifications; + description "LDP Local Label Filtering Specifications"; + } + + // LDP Advertisement Specifications + container advertisement_specifications-items { + + uses mplsldp_BindingAdvertisementSpecifications-group; + description "LDP Advertisement Specifications"; + } + + // List of address bindings learned by LDP + // Ephemeral data + container address-items { + + // Ephemeral data + list BindingAddress-list { + config "false"; + key "address"; + + uses mplsldp_BindingAddress-group; + description "List of address bindings learned by LDP list"; + } + description "List of address bindings learned by LDP"; + } + } + + grouping mplsldp_BindingAdvertisementSpecifications-group { + description "LDP Advertisement Specifications"; + leaf oldStyleAssignmentOfPrefixAcls { + config "false"; + type boolean; + description "LDP Advertisement Specifications - Old Style Assignment of Prefix ACLs to Entries"; + } + + leaf peerAcl { + config "false"; + + type mplsldp_AclType; + description "LDP Advertisement Specifications - Peer ACL"; + } + + leaf prefixAcl { + config "false"; + + type mplsldp_AclType; + description "LDP Advertisement Specifications - Prefix ACL"; + } + } + + grouping mplsldp_BindingAddress-group { + description "List of address bindings learned by LDP"; + + // Ephemeral data + leaf address { + config "false"; + type address_Ip; + description "The IPv4 address learned from an Address message received from or advertised to a peer"; + } + + // Ephemeral data + leaf localtag { + config "false"; + + type mplsldp_LocalBindingTag; + description "The label value in the local binding"; + } + + // List of LDP peers from which this address is received + // Ephemeral data + container peer-items { + + // Ephemeral data + list BindingPeer-list { + config "false"; + key "lsrId"; + + uses mplsldp_BindingPeer-group; + description "LDP peer from which this address is received list"; + } + description "LDP peer from which this address is received"; + } + + // List of LDP peer to which this binding is advertised + // Ephemeral data + container advertisedtolist-items { + + // Ephemeral data + list BindingAdvertisedToList-list { + config "false"; + key "lsrId"; + + uses mplsldp_BindingAdvertisedToList-group; + description "LDP peer to which this address is advertised list"; + } + description "LDP peer to which this address is advertised"; + } + } + + grouping mplsldp_BindingPeer-group { + description "LDP peer from which this address is received"; + + // Ephemeral data + leaf lsrId { + config "false"; + type address_Ip; + description "The LSR ID of the peer, as a portion of the peer LDP ID"; + } + + // Ephemeral data + leaf labelSpaceId { + config "false"; + type uint32; + description "The Label Space ID of the peer, as a portion of the peer LDP ID"; + } + + // Ephemeral data + leaf remotetag { + config "false"; + + type mplsldp_RemoteBindingTag; + description "The label value in the remote binding"; + } + } + + grouping mplsldp_BindingAdvertisedToList-group { + description "LDP peer to which this address is advertised"; + + // Ephemeral data + leaf lsrId { + config "false"; + type address_Ip; + description "The LSR ID of the peer, as a portion of the peer LDP ID"; + } + + // Ephemeral data + leaf labelSpaceId { + config "false"; + type uint32; + description "The Label Space ID of the peer, as a portion of the peer LDP ID"; + } + } + + grouping mplsldp_DiscoveryState-group { + description "Neibgbor discovery operational state"; + + // List of interfaces for LDP Basic Descovery + container interfaces-items { + list Interfaces-list { + config "false"; + key "ifIdString"; + + uses mplsldp_Interfaces-group; + description "List of interfaces for LDP Basic Discovery list"; + } + description "List of interfaces for LDP Basic Discovery"; + } + + // List of targeted neighbors for extended discovery + container targeted-items { + list Targeted-list { + config "false"; + key "name"; + + uses mplsldp_Targeted-group; + description "List of targeted neighbors for extended discovery list"; + } + description "List of targeted neighbors for extended discovery"; + } + } + + grouping mplsldp_Interfaces-group { + description "List of interfaces for LDP Basic Discovery"; + + leaf ifId { + config "false"; + + type nw_IfId; + description "Interface id used for LDP Basic Discovery"; + } + + leaf ifIdString { + config "false"; + + type mplsldp_InterfaceString; + description "Interface id name used for LDP Basic Discovery"; + } + + leaf interfaceStatus { + config "false"; + + type mplsldp_InterfaceStatus; + description "Discovery interface status"; + } + + leaf interfaceEnableStatus { + config "false"; + + type mplsldp_InterfaceEnableStatus; + description "Discovery interface enable status"; + } + leaf nexthello { + config "false"; + type uint32; + description "The time when the next Hello message will be sent (s)"; + } + leaf helloInterval { + config "false"; + type uint32; + description "LDP adjacency hello interval (s)"; + } + leaf transportIpAddress { + config "false"; + type address_Ip; + description "LDP adjacency transport IP address"; + } + + leaf clients { + config "false"; + + type mplsldp_IntfClients; + description "Hello adjacency clients"; + } + + // Per address family operational state + container discovery_address_families-items { + + uses mplsldp_DiscoveryAddressFamilies-group; + description "Per address family operational state"; + } + } + + grouping mplsldp_DiscoveryAddressFamilies-group { + description "Per address family operational state"; + + // Containing data related to the IPv4 address family + container discovery_ipv4-items { + + uses mplsldp_DiscoveryIpv4-group; + description "Containing data related to the IPv4 address family"; + } + } + + grouping mplsldp_DiscoveryIpv4-group { + description "Containing data related to the IPv4 address family"; + + // Containing a list of hello adjacencies + container hello_adjacencies-items { + + uses mplsldp_HelloAdjacencies-group; + description "Containing a list of hello adjacencies"; + } + } + + grouping mplsldp_HelloAdjacencies-group { + description "Containing a list of hello adjacencies"; + + // List of hello adjacencies + container hello_adjacency-items { + + uses mplsldp_HelloAdjacency-group; + description "List of hello adjacencies"; + } + } + + grouping mplsldp_HelloAdjacency-group { + description "List of hello adjacencies"; + leaf adjacentaddress { + config "false"; + type address_Ip; + description "Neighbor address of the hello adjacency"; + } + leaf transportaddress { + config "false"; + type address_Ip; + description "Transport address of the hello adjacency"; + } + leaf reachabilityaddress { + config "false"; + type address_Ip; + description "Reachability address of the hello adjacency"; + } + leaf nexthello { + config "false"; + type uint16; + description "The time when the next Hello message will be sent (s)"; + } + + leaf password { + config "false"; + + type mplsldp_LdpPasswordStatus; + description "Hello adjacency password information"; + } + + // Containing hello holdtime state information + container hello_holdtime-items { + + uses mplsldp_HelloHoldtime-group; + description "Containing hello holdtime state information"; + } + + // A container containing an absolute reference to an LDP peer + container ldp_peer-items { + + uses mplsldp_LdpPeer-group; + description "Reference to an LDP peer, by the LDP ID, which consists of the LSR ID and the Label Space ID"; + } + } + + grouping mplsldp_HelloHoldtime-group { + description "Containing hello holdtime state information"; + leaf adjacent { + config "false"; + type uint32; + description "The holdtime value learned from the adjacent LSR (s)"; + } + leaf negotiated { + config "false"; + type uint32; + description "The holdtime negotiated between this LSR and the adjacent LSR (s)"; + } + leaf holdtime { + config "false"; + type uint32; + description "The current holdtime for this LSR (s)"; + } + leaf remaining { + config "false"; + type uint32; + description "The time remaining until the holdtime timer expires (s)"; + } + } + + grouping mplsldp_LdpPeer-group { + description "Reference to an LDP peer, by the LDP ID, which consists of the LSR ID and the Label Space ID"; + leaf lsrId { + config "false"; + type address_Ip; + description "The LSR ID of the peer, as a portion of the peer LDP ID"; + } + leaf labelSpaceId { + config "false"; + type uint32; + description "The Label Space ID of the peer, as a portion of the peer LDP ID"; + } + } + + grouping mplsldp_Targeted-group { + description "List of targeted neighbors for extended discovery"; + + leaf name { + config "false"; + + type mplsldp_TargetedHelloIdentifier; + description "The targeted hello entry identifier"; + } + + leaf interfaceState { + config "false"; + + type mplsldp_TargetedInterfaceState; + description "Targeted Hello State"; + } + + leaf transmissionState { + config "false"; + + type mplsldp_InterfaceStatus; + description "Targeted Hello Transmission State"; + } + leaf helloInterval { + config "false"; + type uint32; + description "LDP adjacency hello interval (s)"; + } + leaf transportIpAddress { + config "false"; + type address_Ip; + description "LDP adjacency transport IP address"; + } + + // Per address family operational state + container tgt_address_families-items { + + uses mplsldp_TargetedAddressFamilies-group; + description "Per address family operational state"; + } + } + + grouping mplsldp_TargetedAddressFamilies-group { + description "Per address family operational state"; + + // Containing data related to the IPv4 address family + container targeted_ipv4-items { + + uses mplsldp_TargetedIpv4-group; + description "Containing data related to the IPv4 address family"; + } + } + + grouping mplsldp_TargetedIpv4-group { + description "Containing data related to the IPv4 address family"; + + // Containing a list of hello adjacencies + container targeted_hello_adjacencies-items { + + uses mplsldp_TargetedHelloAdjacencies-group; + description "Containing a list of hello adjacencies"; + } + } + + grouping mplsldp_TargetedHelloAdjacencies-group { + description "Containing a list of hello adjacencies"; + + // List of hello adjacencies + container targeted_hello_adjacency-items { + + uses mplsldp_TargetedHelloAdjacency-group; + description "List of hello adjacencies"; + } + } + + grouping mplsldp_TargetedHelloAdjacency-group { + description "List of hello adjacencies"; + leaf adjacentaddress { + config "false"; + type address_Ip; + description "Neighbor address of the hello adjacency"; + } + leaf transportaddress { + config "false"; + type address_Ip; + description "Transport address of the hello adjacency"; + } + leaf reachabilityaddress { + config "false"; + type address_Ip; + description "Reachability address of the hello adjacency"; + } + leaf nexthello { + config "false"; + type uint16; + description "The time when the next Hello message will be sent (s)"; + } + + leaf password { + config "false"; + + type mplsldp_LdpPasswordStatus; + description "Hello adjacency password information"; + } + + // Containing hello holdtime state information + container targeted_hello_holdtime-items { + + uses mplsldp_TargetedHelloHoldtime-group; + description "Containing hello holdtime state information"; + } + + // A container containing an absolute reference to an LDP peer + container targeted_ldp_peer-items { + + uses mplsldp_TargetedLdpPeer-group; + description "Reference to an LDP peer, by the LDP ID, which consists of the LSR ID and the Label Space ID"; + } + } + + grouping mplsldp_TargetedHelloHoldtime-group { + description "Containing hello holdtime state information"; + leaf adjacent { + config "false"; + type uint32; + description "The holdtime value learned from the adjacent LSR (s)"; + } + leaf negotiated { + config "false"; + type uint32; + description "The holdtime negotiated between this LSR and the adjacent LSR (s)"; + } + leaf holdtime { + config "false"; + type uint32; + description "The current holdtime for this LSR (s)"; + } + leaf remaining { + config "false"; + type uint32; + description "The time remaining until the holdtime timer expires (s)"; + } + } + + grouping mplsldp_TargetedLdpPeer-group { + description "Reference to an LDP peer, by the LDP ID, which consists of the LSR ID and the Label Space ID"; + leaf lsrId { + config "false"; + type address_Ip; + description "The LSR ID of the peer, as a portion of the peer LDP ID"; + } + leaf labelSpaceId { + config "false"; + type uint32; + description "The Label Space ID of the peer, as a portion of the peer LDP ID"; + } + } + + grouping mplsldp_Global-group { + description "Platform wide LDP configuration and state"; + + // Per address family operational state + container address_families-items { + + uses mplsldp_AddressFamilies-group; + description "Per address family operational state"; + } + + // Contains LDP backoff configuration information + container backoff-items { + + uses mplsldp_Backoff-group; + description "LDP Backoff Configuration Information"; + } + + // Contains LDP graceful restart configuration information + container graceful_restart_state-items { + + uses mplsldp_GracefulRestartState-group; + description "LDP Graceful Restart Configuration Information"; + } + + // Contains LDP capabilities information + container capabilities-items { + list Capabilities-list { + config "false"; + key "capability"; + + uses mplsldp_Capabilities-group; + description "LDP Capabilities Information list"; + } + description "LDP Capabilities Information"; + } + + // Contains LDP configuration parameters Information + container parameters-items { + + uses mplsldp_Parameters-group; + description "LDP Configuration Parameters Information"; + } + } + + grouping mplsldp_AddressFamilies-group { + description "Per address family operational state"; + + // Containing data related to the IPv4 address family + container ipv4-items { + + uses mplsldp_Ipv4-group; + description "Containing data related to the IPv4 address family"; + } + } + + grouping mplsldp_Ipv4-group { + description "Containing data related to the IPv4 address family"; + + // LDP address and label binding information + container bindings-items { + + uses mplsldp_Bindings-group; + description "LDP address and label binding information"; + } + } + + grouping mplsldp_Bindings-group { + description "LDP address and label binding information"; + + leaf localLabelFilteringSpecifications { + config "false"; + + type mplsldp_LocalLabelFilteringSpecifications; + description "LDP Local Label Filtering Specifications"; + } + + // List of address bindings learned by LDP + container address-items { + list Address-list { + config "false"; + key "address"; + + uses mplsldp_Address-group; + description "List of address bindings learned by LDP list"; + } + description "List of address bindings learned by LDP"; + } + + // Contains LDP Bindings Summary Information + container summary-items { + list Summary-list { + config "false"; + key "peer"; + + uses mplsldp_Summary-group; + description "LDP Bindings Summary Information list"; + } + description "LDP Bindings Summary Information"; + } + } + + grouping mplsldp_Address-group { + description "List of address bindings learned by LDP"; + leaf address { + config "false"; + type address_Ip; + description "The IPv4 address learned from an Address message received from or advertised to a peer"; + } + + leaf localtag { + config "false"; + + type mplsldp_LocalBindingTag; + description "The label value in the local binding"; + } + + // LDP Advertisement Specifications + container advertisement_specifications-items { + + uses mplsldp_AdvertisementSpecifications-group; + description "LDP Advertisement Specifications"; + } + + // List of LDP peers from which this address is received + container peer-items { + list Peer-list { + config "false"; + key "lsrId"; + + uses mplsldp_Peer-group; + description "LDP peer from which this address is received list"; + } + description "LDP peer from which this address is received"; + } + + // List of LDP peer to which this binding is advertised + container advertised_to_list-items { + list AdvertisedToList-list { + config "false"; + key "lsrId"; + + uses mplsldp_AdvertisedToList-group; + description "LDP peer to which this address is advertised list"; + } + description "LDP peer to which this address is advertised"; + } + } + + grouping mplsldp_AdvertisementSpecifications-group { + description "LDP Advertisement Specifications"; + leaf oldStyleAssignmentOfPrefixAcls { + config "false"; + type boolean; + description "LDP Advertisement Specifications - Old Style Assignment of Prefix ACLs to Entries"; + } + + leaf peerAcl { + config "false"; + + type mplsldp_AclType; + description "LDP Advertisement Specifications - Peer ACL"; + } + + leaf prefixAcl { + config "false"; + + type mplsldp_AclType; + description "LDP Advertisement Specifications - Prefix ACL"; + } + } + + grouping mplsldp_Peer-group { + description "LDP peer from which this address is received"; + leaf lsrId { + config "false"; + type address_Ip; + description "The LSR ID of the peer, as a portion of the peer LDP ID"; + } + leaf labelSpaceId { + config "false"; + type uint32; + description "The Label Space ID of the peer, as a portion of the peer LDP ID"; + } + + leaf remotetag { + config "false"; + + type mplsldp_RemoteBindingTag; + description "The label value in the remote binding"; + } + } + + grouping mplsldp_AdvertisedToList-group { + description "LDP peer to which this address is advertised"; + leaf lsrId { + config "false"; + type address_Ip; + description "The LSR ID of the peer, as a portion of the peer LDP ID"; + } + leaf labelSpaceId { + config "false"; + type uint32; + description "The Label Space ID of the peer, as a portion of the peer LDP ID"; + } + } + + grouping mplsldp_Summary-group { + description "LDP Bindings Summary Information"; + + leaf peer { + config "false"; + + type mplsldp_BindingSummaryPeerType; + description "LDP Bindings Summary - Peer"; + } + leaf totalPrefixes { + config "false"; + type uint32; + description "LDP Bindings Summary - Total Number of Prefixes"; + } + leaf totalInLabels { + config "false"; + type uint32; + description "LDP Bindings Summary - Total Number of In Labels"; + } + leaf totalOutLabels { + config "false"; + type uint32; + description "LDP Bindings Summary - Total Number of Out Labels"; + } + leaf totalTibRouteAllocated { + config "false"; + type uint32; + description "LDP Bindings Summary - Total tib Route Info Allocated"; + } + leaf totalPreviousTibRemoteLabelEntries { + config "false"; + type uint32; + description "LDP Bindings Summary - Total Previous tib Remote Label Entries"; + } + leaf currentPreviousTibRemoteLabelEntries { + config "false"; + type uint32; + description "LDP Bindings Summary - Current Previous tib Remote Label Entries"; + } + leaf totalPreviousTibRemoteLabelQueues { + config "false"; + type uint32; + description "LDP Bindings Summary - Total Previous tib Remote Label Queues"; + } + leaf currentPreviousTibRemoteLabelQueues { + config "false"; + type uint32; + description "LDP Bindings Summary - Current Previous tib Remote Label Queues"; + } + } + + grouping mplsldp_Backoff-group { + description "LDP Backoff Configuration Information"; + + leaf initialBackoff { + config "false"; + + type mplsldp_InitBackoff; + description "LDP Session Initial Backoff (s)"; + } + + leaf maximumBackoff { + config "false"; + + type mplsldp_MaxBackoff; + description "LDP Session Maximum Backoff (s)"; + } + } + + grouping mplsldp_GracefulRestartState-group { + description "LDP Graceful Restart Configuration Information"; + leaf adminConfig { + config "false"; + type boolean; + description "Is LDP graceful restart enabled or not ?"; + } + + leaf forwardingHolding { + config "false"; + + type mplsldp_FwdHoldTime; + description "Interval for keeping the node in recovery mode (s)"; + } + + leaf maxRecovery { + config "false"; + + type mplsldp_RecoveryTime; + description "Time for the remote peer to maintain the MPLS forwarding state after the local node has succesfully reconnected (s)"; + } + + leaf neighborLiveness { + config "false"; + + type mplsldp_NbrLiveTime; + description "Time for which the remote LDP peers will wait for the local node to reconnect after a failure (s)"; + } + + // Contains list of LDP down neighbor information + container down_neighbor-items { + list DownNeighbor-list { + config "false"; + key "peerlsrId"; + + uses mplsldp_DownNeighbor-group; + description "List of LDP Down Neighbor Information list"; + } + description "List of LDP Down Neighbor Information"; + } + + // Contains list of LDP graceful restart enabled session information + container grsession-items { + list GrSession-list { + config "false"; + key "lsrId"; + + uses mplsldp_GrSession-group; + description "List of LDP Graceful Restart Enabled Session Information list"; + } + description "List of LDP Graceful Restart Enabled Session Information"; + } + } + + grouping mplsldp_DownNeighbor-group { + description "List of LDP Down Neighbor Information"; + + leaf status { + config "false"; + + type mplsldp_DownNeighborStatus; + description "Down neighbor status"; + } + leaf peerlsrId { + config "false"; + type address_Ip; + description "The LSR ID of the peer, as a portion of the peer LDP ID"; + } + leaf peerlabelSpaceId { + config "false"; + type uint32; + description "The Label Space ID of the peer, as a portion of the peer LDP ID"; + } + leaf locallsrId { + config "false"; + type address_Ip; + description "The LSR ID of the local LDP identifier, as a portion of the local LDP ID"; + } + leaf locallabelSpaceId { + config "false"; + type uint32; + description "The Label Space ID of the local LDP identifier, as a portion of the local LDP ID"; + } + } + + grouping mplsldp_GrSession-group { + description "List of LDP Graceful Restart Enabled Session Information"; + leaf lsrId { + config "false"; + type address_Ip; + description "The LSR ID of the peer, as a portion of the peer LDP ID"; + } + leaf labelSpaceId { + config "false"; + type uint32; + description "The Label Space ID of the peer, as a portion of the peer LDP ID"; + } + + leaf state { + config "false"; + + type mplsldp_PeerStateType; + description "Graceful restart enabled session state"; + } + } + + grouping mplsldp_Capabilities-group { + description "LDP Capabilities Information"; + + leaf capability { + config "false"; + + type mplsldp_CapabilityDescription; + description "Capability supported by LDP"; + } + } + + grouping mplsldp_Parameters-group { + description "LDP Configuration Parameters Information"; + + leaf featureSetManagerState { + config "false"; + + type mplsldp_FeaturesetManagerStateType; + description "LDP Configuration Parameters - Feature Set Manager State"; + } + leaf protocolVersion { + config "false"; + type uint32; + default "1"; + description "LDP Configuration Parameters - Protocol Version"; + } + leaf sessionHoldTime { + config "false"; + type uint32; + default "180"; + description "LDP Configuration Parameters - Session Hold Time (s)"; + } + + leaf overrideSessionHoldTime { + config "false"; + + type mplsldp_enableDisableFlagType; + description "LDP Configuration Parameters - Override Adjacency Session Hold Time"; + } + leaf keepAliveInterval { + config "false"; + type uint32; + default "60"; + description "LDP Configuration Parameters - Keep Alive Interval (s)"; + } + leaf discoveryHelloHoldTime { + config "false"; + type uint32; + default "15"; + description "LDP Configuration Parameters - Discovery Hello Hold Time (s)"; + } + leaf discoveryHelloInterval { + config "false"; + type uint32; + default "5"; + description "LDP Configuration Parameters - Discovery Hello Interval (s)"; + } + leaf discoveryTargetedHelloHoldTime { + config "false"; + type uint32; + default "90"; + description "LDP Configuration Parameters - Discovery Targeted Hello Hold Time (s)"; + } + leaf discoveryTargetedHelloInterval { + config "false"; + type uint32; + default "10"; + description "LDP Configuration Parameters - Discovery Targeted Hello Interval (s)"; + } + + leaf acceptingTargetedHellos { + config "false"; + + type mplsldp_enableDisableFlagType; + description "LDP Configuration Parameters - Accepting Targeted Hellos"; + } + + leaf targetedHellosAcl { + config "false"; + + type mplsldp_AclType; + description "LDP Configuration Parameters - Targeted Hello ACL"; + } + + leaf omittingTransportAddressOptionTransmittedHellos { + config "false"; + + type mplsldp_enableDisableFlagType; + description "LDP Configuration Parameters - Omitting transport address option in transmitted hellos ?"; + } + + leaf ignoringTransportAddressOptionReceivedHellos { + config "false"; + + type mplsldp_enableDisableFlagType; + description "LDP Configuration Parameters - Ignoring transport address option in received hellos"; + } + + leaf acceptingUndirectedHellosNonbroadcastAddresses { + config "false"; + + type mplsldp_enableDisableFlagType; + description "LDP Configuration Parameters - Accepting undirected hellos to non-broadcast addresses"; + } + leaf downstreamOnDemandMaxHopCount { + config "false"; + type uint8; + default "255"; + description "LDP Configuration Parameters - Downstream on Demand Max Hop Count"; + } + + leaf protocolType { + config "false"; + + type mplsldp_ParametersProtocolType; + description "LDP Configuration Parameters - Protocol Type"; + } + + leaf loopDetection { + config "false"; + + type mplsldp_LoopDetectionType; + description "LDP Loop Detection Enabled ?"; + } + + // Contains LDP Configuration Parameters Information - Features + container features-items { + list Features-list { + config "false"; + key "feature"; + + uses mplsldp_Features-group; + description " LDP Configuration Parameters - Features list"; + } + description " LDP Configuration Parameters - Features"; + } + } + + grouping mplsldp_Features-group { + description " LDP Configuration Parameters - Features"; + + leaf feature { + config "false"; + + type mplsldp_FeatureType; + description "LDP Configuration Parameters - Feature Name"; + } + } + + grouping mplsldp_IgpSync-group { + description "IGP Synchronization Information"; + + // Per interface IGP synchronization information + container igp_sync_interface-items { + list IgpSyncInterface-list { + config "false"; + key "ifIdString"; + + uses mplsldp_IgpSyncInterface-group; + description "Per interface IGP synchronization information list"; + } + description "Per interface IGP synchronization information"; + } + } + + grouping mplsldp_IgpSyncInterface-group { + description "Per interface IGP synchronization information"; + + leaf ifIdString { + config "false"; + + type mplsldp_InterfaceString; + description "Interface id name used for IGP synchronization"; + } + + leaf ifId { + config "false"; + + type nw_IfId; + description "LDP IGP Synchronization Interface Id"; + } + + leaf status { + config "false"; + + type mplsldp_LdpIgpStatusType; + description "LDP IGP Synchronization Status"; + } + + leaf syncEnableStatus { + config "false"; + + type mplsldp_LdpIgpSyncEnableType; + description "LDP IGP Synchronization Enable Status"; + } + + leaf syncStatus { + config "false"; + + type mplsldp_LdpIgpSyncStatusType; + description "LDP IGP Synchronization Sync Status"; + } + + leaf peerStatus { + config "false"; + + type mplsldp_LdpIgpPeerStatusType; + description "LDP IGP Synchronization Peer Reachable Status"; + } + leaf syncDelayTime { + config "false"; + type uint32; + description "LDP IGP Synchronization Delay Time Value (s)"; + } + leaf syncDelayTimeLeft { + config "false"; + type uint64; + description "LDP IGP Synchronization Delay Time Left Value (s)"; + } + leaf igpHoldDownTime { + config "false"; + type uint32; + description "LDP IGP Synchronization IGP Hold Down Time (ms)"; + } + leaf grEnabled { + config "false"; + type boolean; + description "LDP Discovery Information - Graceful Enabled for Session"; + } + + leaf igpEnabled { + config "false"; + + type mplsldp_IgpEnabledType; + description "LDP Discovery Information - IGP that Enabled Sync"; + } + + // LDP IGP Sync Peer information + container igp_sync_peer-items { + + uses mplsldp_IgpSyncPeer-group; + description "LDP IGP Sync Peer Information"; + } + } + + grouping mplsldp_IgpSyncPeer-group { + description "LDP IGP Sync Peer Information"; + leaf lsrId { + config "false"; + type address_Ip; + description "The LSR ID of the peer, as a portion of the peer LDP ID"; + } + leaf labelSpaceId { + config "false"; + type uint32; + description "The Label Space ID of the peer, as a portion of the peer LDP ID"; + } + } + + grouping mplsldp_AdvLbl-group { + description "Control if labels are advertised. When this MO exists, labels are advertised (the default). When this MO does not exist, no labels will be advertised to neighbors."; + leaf advLbl { + type boolean; + default "true"; + description "The advLbl property enables the label advertisements"; + } + } + + grouping mplsldp_AdvLblPfx-group { + description "Advertises local labels for some destination prefixes"; + + leaf pfxList { + + type mplsldp_LdpPrefixListName; + description "Prefix list specifying controls on destination prefixes"; + } + + leaf peerPfxList { + + type mplsldp_LdpPrefixListName; + description "Prefix list specifying controls on LDP peers"; + } + } + + grouping mplsldp_AdvLblIntf-group { + description "Advertises local labels for a particular interface"; + + leaf interface { + + type nw_IfId; + description "Advertise /32 interface address"; + } + } + + grouping mplsldp_BackoffParams-group { + description "LDP Session backoff parameters"; + + leaf initBackoff { + + type mplsldp_InitBackoff; + description "Initial session backoff time (seconds)"; + } + + leaf maxBackoff { + + type mplsldp_MaxBackoff; + description "Maximum session backoff time (seconds)"; + } + } + + grouping mplsldp_Discovery-group { + description "Anchors configuration related to LDP neighbor discovery"; + + // LDP Discovery Hello + container discoveryhello-items { + + uses mplsldp_DiscoveryHello-group; + description "LDP Discovery hello parameters"; + } + + // LDP Discovery Targeted Hello + container discoverytgthello-items { + + uses mplsldp_DiscoveryTgtHello-group; + description "LDP Discovery Targeted Hello parameters"; + } + } + + grouping mplsldp_DiscoveryHello-group { + description "LDP Discovery hello parameters"; + + leaf helloHoldtime { + + type mplsldp_HelloHoldTime; + description "LDP discovery Hello holdtime defines the period of time that a discovered LDP neighbor is remembered without receipt of an LDP hello message from the neighbor. The range is from 1 to 65535 seconds"; + } + + leaf helloIntvl { + + type mplsldp_IntvlTime; + description "LDP discovery Hello interval defines the period of time between the sending of consecutive hello messages. The range is from 1 to 65535 seconds"; + } + } + + grouping mplsldp_DiscoveryTgtHello-group { + description "LDP Discovery Targeted Hello parameters"; + + leaf tgtHelloHoldtime { + + type mplsldp_TgtHoldTime; + description "LDP discovery Targeted Hello holdtime defines the period of time that a discovered LDP neighbor is remembered without receipt of an LDP hello message from the neighbor. The range is from 1 to 65535 seconds"; + } + + leaf tgtHelloIntvl { + + type mplsldp_TgtIntvlTime; + description "LDP discovery Targeted Hello interval defines the period of time between the sending of consecutive hello messages. The range is from 1 to 65535 seconds"; + } + + // LDP Discovery target hello accept + container distgthelloaccept-items { + + uses mplsldp_DisTgtHelloAccept-group; + description "LDP Discovery target hello accept parameters"; + } + } + + grouping mplsldp_DisTgtHelloAccept-group { + description "LDP Discovery target hello accept parameters"; + leaf accept { + type boolean; + default "true"; + description "The accept property configures the router to respond to requests for targeted-hello messages from all neighbors"; + } + + leaf pfxList { + + type mplsldp_LdpPrefixListName; + description "Neighbor prefix list to specify acceptable targeted hello sources"; + } + } + + grouping mplsldp_ExplicitNull-group { + description "LDP Explicit Null advertises an explicit-null label in situations where an implicit-null label would normally be advertised"; + leaf explicitNull { + type boolean; + default "true"; + description "The explicitNull property advertises Explicit Null label in place of Implicit Null"; + } + } + + grouping mplsldp_ExplNullForList-group { + description "Controls which label bindings will be advertised as explicit-null rather than inplicit-null"; + + leaf forPfxList { + + type mplsldp_LdpPrefixListName; + description "Prefix list specifying controls on destination prefixes"; + } + + leaf toPfxList { + + type mplsldp_LdpPrefixListName; + description "Access list specifying controls on LDP peers"; + } + } + + grouping mplsldp_ExplNullToList-group { + description "Controls to which neighbors label bindings will be advertised as explicit-null rather than implicit-null"; + + leaf toPfxList { + + type mplsldp_LdpPrefixListName; + description "Access list specifying controls on LDP peers"; + } + } + + grouping mplsldp_Gr-group { + description "LDP Graceful restart parameters"; + leaf graceful { + type boolean; + default "true"; + description "The graceful property configures LDP graceful restart"; + } + + leaf forwardingHoldtime { + + type mplsldp_FwdHoldTime; + description "LDP forwarding state holding time. Specifies the amount of time the MPLS forwarding state should be preserved after the control plane restarts."; + } + + leaf recoveryTime { + + type mplsldp_RecoveryTime; + description "LDP maximum recovery time. Specifies the amount of time a router should hold stale label-FEC bindings after an LDP session has been reestablished."; + } + + leaf neighborLivenessTime { + + type mplsldp_NbrLiveTime; + description "LDP Neighbor-Liveness time. Specifies the amount of time a router should wait for an LDP session to be reestablished."; + } + } + + grouping mplsldp_HoldTime-group { + description "LDP session holdtime parameters"; + leaf infinite { + type boolean; + default "false"; + description "Ignore LDP session holdtime"; + } + + leaf sessionHoldTime { + + type mplsldp_SessionHoldTime; + description "LDP session holdtime specifies how long an LDP session is maintained in the absence of LDP messages from the session peer. The range is from 15 to 65535 seconds"; + } + } + + grouping mplsldp_Logging-group { + description "LDP logging parameters"; + leaf nbrChanges { + type boolean; + default "true"; + description "Log LDP neighbor state changes"; + } + leaf config { + type boolean; + default "true"; + description "Log LDP password configuration changes"; + } + + leaf configRateLimit { + + type mplsldp_RateLimit; + description "LDP logging password configuration rate limit"; + } + leaf rollover { + type boolean; + default "true"; + description "Log LDP password rollover events"; + } + + leaf rolloverRateLimit { + + type mplsldp_RateLimit; + description "LDP logging password rollover rate limit"; + } + } + + grouping mplsldp_DefaultRoute-group { + description "Allow MPLS forwarding for ip default route"; + leaf defaultRoute { + type boolean; + default "true"; + description "Allow MPLS forwarding for ip default route"; + } + } + + grouping mplsldp_Neighbor-group { + description "LDP neighbor parameters class"; + leaf nbrAddr { + type address_Ip; + description "IP address for LDP neighbor"; + } + leaf implicitWithdraw { + type boolean; + default "false"; + description "Enable LDP neighbor implicit withdraw"; + } + + leaf pfxList { + + type mplsldp_LdpPrefixListName; + description "Specifies the prefix list to be used to filter label bindings for the specified LDP neighbor."; + } + leaf targeted { + type boolean; + default "false"; + description "Establish LDP targeted session"; + } + } + + grouping mplsldp_Password-group { + description "Anchors configuration related to LDP password parameters"; + + // LDP Password fallback class + container passwordfallback-items { + + uses mplsldp_PasswordFallback-group; + description "Configures a backup MD5 keychain for peers that have no keychain configured"; + } + + // LDP Password option + container passwordoption-items { + list PasswordOption-list { + key "seqNum"; + + uses mplsldp_PasswordOption-group; + description "Configures an MD5 password for LDP sessions with neighbors whose LDP router IDs are permitted by a specified prefix list list"; + } + description "Configures an MD5 password for LDP sessions with neighbors whose LDP router IDs are permitted by a specified prefix list"; + } + + // LDP Password required + container passwordrequired-items { + + uses mplsldp_PasswordRequired-group; + description "Specifies that LDP must use a password when establishing a session between LDP peers."; + } + } + + grouping mplsldp_PasswordFallback-group { + description "Configures a backup MD5 keychain for peers that have no keychain configured"; + leaf keyChain { + type string; + description "The key-chain keychain-name keyword-argument pair specifies a keychain of multiple MD5 keys to be used for the LDP sessions."; + } + } + + grouping mplsldp_PasswordOption-group { + description "Configures an MD5 password for LDP sessions with neighbors whose LDP router IDs are permitted by a specified prefix list"; + + leaf seqNum { + + type mplsldp_SeqNum; + description "The number argument defines the order in which the prefix lists are evaluated in the determination of a neighbor password. The valid range is from 1 to 32767."; + } + + leaf pfxList { + + type mplsldp_LdpPrefixListName; + description "Specifies the name of the prefix list that includes the LDP router IDs of those neighbors for which the password applies"; + } + leaf keyChain { + type string; + description "Specifies a keychain of multiple MD5 keys to be used for the LDP sessions."; + } + } + + grouping mplsldp_PasswordRequired-group { + description "Specifies that LDP must use a password when establishing a session between LDP peers."; + leaf required { + type boolean; + default "true"; + description "Specifies that LDP must use a password when establishing a session between LDP peers."; + } + + leaf reqPfxList { + + type mplsldp_LdpPrefixListName; + description "Specifies a prefix list, which specifies that a password is mandatory only for LDP sessions with neighbors whose LDP router IDs are permitted by the list"; + } + } + + grouping mplsldp_RouterId-group { + description "LDP router id class"; + leaf force { + type boolean; + default "false"; + description "LDP router id force keyword enables the router ID to take effect more quickly"; + } + + leaf if { + + type nw_IfId; + description "Specifies the preferred interface for determining the LDP router ID, which is typically determined the next time that the interface is shut down or the address is deconfigured"; + } + } + + grouping mplsldp_SessProt-group { + description "Enables LDP sessions to be protected during a link failure. It protects all LDP sessions, unless you specify a prefix list"; + leaf infinite { + type boolean; + default "false"; + description "The infinite keyword allows the LDP targeted hello adjacency to exist indefinitely following the loss of the LDP link hello adjacency."; + } + + leaf duration { + + type mplsldp_ProtectDuration; + description "The duration keyword enables you to specify how long the router should retain the LDP targeted hello adjacency following the loss of the LDP link hello adjacency. The range is from 30 to 2,147,483 seconds."; + } + + leaf pfxList { + + type mplsldp_LdpPrefixListName; + description "Prefix list for LDP peers that should be protected. Session protection is then enabled for the peer routers in that prefix list"; + } + } + + grouping mplsldp_LabelAllocate-group { + description "Configures local label allocation filters for MPLS LDP"; + + leaf lblAllocT { + + type mplsldp_LblAllocT; + description "Specifies label allocation type"; + } + + leaf pfxList { + + type mplsldp_LdpPrefixListName; + description "Specifies a prefix list to be used as a filter for MPLS LDP local label allocation."; + } + } + + grouping mplsldp_Peers-group { + description "Peers operational state"; + leaf peerLsrId { + config "false"; + type address_Ip; + description "The LSR ID of peer, as a portion of the peer LDP ID"; + } + leaf lsrId { + config "false"; + type address_Ip; + description "The LSR ID of local LDP, as a portion of the local LDP ID"; + } + leaf labelSpaceId { + config "false"; + type uint32; + description "The Label Space ID of local LDP, as a portion of the local LDP ID"; + } + + leaf peerState { + config "false"; + + type mplsldp_PeerStateType; + description "LDP Neighbor Information - Peer State"; + } + + leaf peerHoldTime { + config "false"; + + type mplsldp_HelloHoldTime; + description "LDP Neighbor Information - Peer Hold Time (ms)"; + } + leaf keepAliveInterval { + config "false"; + type uint32; + description "LDP Neighbor Information - Keep Alive Interval (ms)"; + } + leaf nextKeepAlive { + config "false"; + type uint32; + description "Time to send the next KeepAlive message"; + } + + leaf labelAdvertisementMode { + config "false"; + + type mplsldp_LabelAdvertisementModeType; + description "Label advertisement mode"; + } + + leaf clients { + config "false"; + + type mplsldp_NeighborPeerClientType; + description "LDP Neighbor Information - Clients"; + } + + leaf password { + config "false"; + + type mplsldp_LdpPasswordStatus; + description "LDP peer password information"; + } + + // List of interfaces for LDP Basic Descovery + container discovery_interfaces-items { + list DiscoverySourcesInterfaces-list { + config "false"; + key "ifIdString"; + + uses mplsldp_DiscoverySourcesInterfaces-group; + description "List of interfaces for LDP Basic Descovery list"; + } + description "List of interfaces for LDP Basic Descovery"; + } + + // List of targeted interfaces for LDP Basic Descovery + container discovery_targeted-items { + list TargetedDiscoverySourcesInterfaces-list { + config "false"; + key "name"; + + uses mplsldp_TargetedDiscoverySourcesInterfaces-group; + description "List of interfaces for LDP Basic Descovery list"; + } + description "List of interfaces for LDP Basic Descovery"; + } + + // Neighbor Session Protection Information + container session_protection-items { + + uses mplsldp_PeerSessionProtection-group; + description "Neighbor session protection details"; + } + + // Operational state information learned from the peer + container received_peer_state-items { + + uses mplsldp_ReceivedPeerState-group; + description "Operational state information learned from the peer"; + } + + container peer_capabilities-items { + + uses mplsldp_PeerCapabilities-group; + description "Per peer capabilities"; + } + + // TCP connection state + container tcp-items { + + uses mplsldp_TcpConnection-group; + description "TCP connection state"; + } + + // Peer connection information + container connection-items { + + uses mplsldp_Connection-group; + description "Peer connection information"; + } + } + + grouping mplsldp_DiscoverySourcesInterfaces-group { + description "List of interfaces for LDP Basic Descovery"; + + leaf ifIdString { + config "false"; + + type mplsldp_InterfaceString; + description "Interface id name used for LDP Basic Discovery"; + } + + // Per address family operational state + container peer_address_families-items { + + uses mplsldp_PeerAddressFamilies-group; + description "Per address family operational state"; + } + } + + grouping mplsldp_PeerAddressFamilies-group { + description "Per address family operational state"; + + // Containing data related to the IPv4 address family + container peer_ipv4-items { + + uses mplsldp_PeerIpv4-group; + description "Containing data related to the IPv4 address family"; + } + } + + grouping mplsldp_PeerIpv4-group { + description "Containing data related to the IPv4 address family"; + + // Containing a list of hello adjacencies + container peer_hello_adjacencies-items { + + uses mplsldp_PeerHelloAdjacencies-group; + description "Containing a list of hello adjacencies"; + } + } + + grouping mplsldp_PeerHelloAdjacencies-group { + description "Containing a list of hello adjacencies"; + + // List of hello adjacencies + container peer_hello_adjacency-items { + + uses mplsldp_PeerHelloAdjacency-group; + description "List of hello adjacencies"; + } + } + + grouping mplsldp_PeerHelloAdjacency-group { + description "List of hello adjacencies"; + leaf localaddress { + config "false"; + type address_Ip; + description "Local address of the hello adjacency"; + } + leaf adjacentaddress { + config "false"; + type address_Ip; + description "Neighbor address of the hello adjacency"; + } + + // Containing hello holdtime state information + container peer_hello_holdtime-items { + + uses mplsldp_PeerHelloHoldtime-group; + description "Containing hello holdtime state information"; + } + + // A container containing an absolute reference to an LDP peer + container ldp_peer-items { + + uses mplsldp_DiscoveryLdpPeer-group; + description "Reference to an LDP peer, by the LDP ID, which consists of the LSR ID and the Label Space ID"; + } + } + + grouping mplsldp_PeerHelloHoldtime-group { + description "Containing hello holdtime state information"; + leaf adjacent { + config "false"; + type uint32; + description "The holdtime value learned from the adjacent LSR (s)"; + } + leaf negotiated { + config "false"; + type uint32; + description "The holdtime negotiated between this LSR and the adjacent LSR (s)"; + } + leaf holdtime { + config "false"; + type uint32; + description "The current holdtime for this LSR (s)"; + } + leaf remaining { + config "false"; + type uint32; + description "The time remaining until the holdtime timer expires (s)"; + } + } + + grouping mplsldp_DiscoveryLdpPeer-group { + description "Reference to an LDP peer, by the LDP ID, which consists of the LSR ID and the Label Space ID"; + leaf lsrId { + config "false"; + type address_Ip; + description "The LSR ID of the peer, as a portion of the peer LDP ID"; + } + leaf labelSpaceId { + config "false"; + type uint32; + description "The Label Space ID of the peer, as a portion of the peer LDP ID"; + } + } + + grouping mplsldp_TargetedDiscoverySourcesInterfaces-group { + description "List of interfaces for LDP Basic Descovery"; + + leaf name { + config "false"; + + type mplsldp_TargetedHelloIdentifier; + description "The targeted hello entry identifier"; + } + + // Per address family operational state + container targeted_peer_address_families-items { + + uses mplsldp_TargetedPeerAddressFamilies-group; + description "Per address family operational state"; + } + } + + grouping mplsldp_TargetedPeerAddressFamilies-group { + description "Per address family operational state"; + + // Containing data related to the IPv4 address family + container targeted_peer_ipv4-items { + + uses mplsldp_TargetedPeerIpv4-group; + description "Containing data related to the IPv4 address family"; + } + } + + grouping mplsldp_TargetedPeerIpv4-group { + description "Containing data related to the IPv4 address family"; + + // Containing a list of hello adjacencies + container targeted_peer_hello_adjacencies-items { + + uses mplsldp_TargetedPeerHelloAdjacencies-group; + description "Containing a list of hello adjacencies"; + } + } + + grouping mplsldp_TargetedPeerHelloAdjacencies-group { + description "Containing a list of hello adjacencies"; + + // List of hello adjacencies + container targeted_peer_hello_adjacency-items { + + uses mplsldp_TargetedPeerHelloAdjacency-group; + description "List of hello adjacencies"; + } + } + + grouping mplsldp_TargetedPeerHelloAdjacency-group { + description "List of hello adjacencies"; + leaf localaddress { + config "false"; + type address_Ip; + description "Local address of the hello adjacency"; + } + leaf adjacentaddress { + config "false"; + type address_Ip; + description "Neighbor address of the hello adjacency"; + } + leaf nexthello { + config "false"; + type uint32; + description "The time when the next Hello message will be sent (s)"; + } + + leaf interfaceState { + config "false"; + + type mplsldp_TargetedInterfaceState; + description "Targeted Hello State"; + } + + // Containing hello holdtime state information + container targeted_peer_hello_holdtime-items { + + uses mplsldp_TargetedPeerHelloHoldtime-group; + description "Containing hello holdtime state information"; + } + + // A container containing an absolute reference to an LDP peer + container targeted_ldp_peer-items { + + uses mplsldp_TargetedDiscoveryLdpPeer-group; + description "Reference to an LDP peer, by the LDP ID, which consists of the LSR ID and the Label Space ID"; + } + } + + grouping mplsldp_TargetedPeerHelloHoldtime-group { + description "Containing hello holdtime state information"; + leaf adjacent { + config "false"; + type uint32; + description "The holdtime value learned from the adjacent LSR (s)"; + } + leaf negotiated { + config "false"; + type uint32; + description "The holdtime negotiated between this LSR and the adjacent LSR (s)"; + } + leaf holdtime { + config "false"; + type uint32; + description "The current holdtime for this LSR (s)"; + } + leaf remaining { + config "false"; + type uint32; + description "The time remaining until the holdtime timer expires (s)"; + } + } + + grouping mplsldp_TargetedDiscoveryLdpPeer-group { + description "Reference to an LDP peer, by the LDP ID, which consists of the LSR ID and the Label Space ID"; + leaf lsrId { + config "false"; + type address_Ip; + description "The LSR ID of the peer, as a portion of the peer LDP ID"; + } + leaf labelSpaceId { + config "false"; + type uint32; + description "The Label Space ID of the peer, as a portion of the peer LDP ID"; + } + } + + grouping mplsldp_PeerSessionProtection-group { + description "Neighbor session protection details"; + + leaf peerProtectionState { + config "false"; + + type mplsldp_NeighborPeerProtectionState; + description "LDP Neighbor Information - Peer Protection State"; + } + leaf peerProtectionDuration { + config "false"; + type uint32; + description "LDP Neighbor Information - Peer Protection Duration (s)"; + } + + leaf peerProtectionAcl { + config "false"; + + type mplsldp_AclType; + description "LDP Neighbor Information - Peer Protection ACL Name"; + } + } + + grouping mplsldp_ReceivedPeerState-group { + description "Operational state information learned from the peer"; + + // Per peer graceful restart attributes + container graceful_restart-items { + + uses mplsldp_GracefulRestart-group; + description "Operational state information learned from the peer"; + } + } + + grouping mplsldp_GracefulRestart-group { + description "Operational state information learned from the peer"; + + leaf state { + config "false"; + + type mplsldp_GrStateType; + description "Graceful Restart State"; + } + leaf neighborLivenessTimer { + config "false"; + type uint32; + description "Neighbor Liveness Timer (s)"; + } + leaf maxRecoveryTime { + config "false"; + type uint32; + description "Max Recovery Time (s)"; + } + leaf forwardingStateHoldingTime { + config "false"; + type uint32; + description "Forwarding State Holding Time (s)"; + } + } + + grouping mplsldp_PeerCapabilities-group { + description "Per peer capabilities"; + + // Per peer capabilities received + container capabilities_received-items { + list CapabilitiesReceived-list { + config "false"; + key "capability"; + + uses mplsldp_CapabilitiesReceived-group; + description "Per peer capabilities received list"; + } + description "Per peer capabilities received"; + } + + // Per peer capabilities sent + container capabilities_sent-items { + list CapabilitiesSent-list { + config "false"; + key "capability"; + + uses mplsldp_CapabilitiesSent-group; + description "Per peer capabilities received list"; + } + description "Per peer capabilities received"; + } + } + + grouping mplsldp_CapabilitiesReceived-group { + description "Per peer capabilities received"; + + leaf capability { + config "false"; + + type mplsldp_CapabilityDescription; + description "Capability supported by LDP"; + } + } + + grouping mplsldp_CapabilitiesSent-group { + description "Per peer capabilities received"; + + leaf capability { + config "false"; + + type mplsldp_CapabilityDescription; + description "Capability supported by LDP"; + } + } + + grouping mplsldp_TcpConnection-group { + description "TCP connection state"; + leaf remoteTcpAddress { + config "false"; + type address_Ip; + description "TCP connection state remote TCP Address"; + } + leaf remoteTcpPort { + config "false"; + type uint32; + description "TCP connection state remote TCP port"; + } + leaf localTcpAddress { + config "false"; + type address_Ip; + description "TCP connection state local TCP Address"; + } + leaf localTcpPort { + config "false"; + type uint32; + description "TCP connection state local TCP port"; + } + } + + grouping mplsldp_Connection-group { + description "Peer connection information"; + + leaf protocolState { + config "false"; + + type mplsldp_ProtocolStateType; + description "LDP peer protocol state"; + } + leaf messagesSent { + config "false"; + type uint32; + description "Total messages sent to peer"; + } + leaf messagesReceived { + config "false"; + type uint32; + description "Total messages received by peer"; + } + } + + grouping mplsldp_If-group { + description "Object holds LDP information that is operated at interface level"; + leaf mplsIp { + type boolean; + default "false"; + description "The mplsIp property enables MPLS LDP on the specified interface"; + } + leaf igpAuto { + type boolean; + default "true"; + description "Enables MPLS LDP interior gateway protocol autoconfig"; + } + leaf igpSync { + type boolean; + default "true"; + description "Enables MPLS LDP interior gateway protocol sync"; + } + + leaf delayTime { + + type mplsldp_DelayTime; + description "Configures a delay time for MPLS LDP IGP synchronization on the specified interface."; + } + leaf discTrnspIntf { + type boolean; + default "false"; + description "Use interface address for LDP transport address"; + } + leaf discTrnspIp { + type address_Ip; + description "IP address to use for LDP transport address"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping mpls_Entity-group { + description "Root MPLS Manager entity anchoring general MPLS MOs"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This object holds mpls information that is operated at a + // interface level + container If-items { + list If-list { + key "id"; + + uses mpls_If-group; + description "MPLS Protocol Interface list"; + } + description "MPLS Protocol Interface"; + } + } + + grouping mpls_If-group { + description "MPLS Protocol Interface"; + + leaf operSt { + config "false"; + + type mpls_OperSt; + description "Administrative State of Interface"; + } + leaf deleted { + config "false"; + type boolean; + default "true"; + description "Is this MO pending deletion"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping mplsstatic_Entity-group { + description "Root MPLS Static entity anchoring MPLS Static MOs"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // MPLS Static address family domain + container af-items { + list Af-list { + key "type"; + + uses mplsstatic_Af-group; + description "MPLS Static Address Family list"; + } + description "MPLS Static Address Family"; + } + } + + grouping mplsstatic_Af-group { + description "MPLS Static Address Family"; + + // Type + leaf type { + + type mplsstatic_AfT; + description "Type of Address Family (IPv4, IPv6, etc.)"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Prefix local label + container pfxlabel-items { + list PfxLclLbl-list { + key "label"; + + uses mplsstatic_PfxLclLbl-group; + description "Local Label for an IP Prefix (IPv4 or IPv6) list"; + } + description "Local Label for an IP Prefix (IPv4 or IPv6)"; + } + + // Named LSP + container lsp-items { + list NamedLSP-list { + key "name"; + + uses mplsstatic_NamedLSP-group; + description "Parent of LSPs with Names list"; + } + description "Parent of LSPs with Names"; + } + } + + grouping mplsstatic_PfxLclLbl-group { + description "Local Label for an IP Prefix (IPv4 or IPv6)"; + leaf pfx { + type address_Ip; + description "Local Label Prefix/Subnet"; + } + + leaf label { + + type mplsstatic_InLabelVal; + description "Local In Label Value"; + } + + // This object holds primary nexthop information + // for prefix local label + container nh-items { + + uses mplsstatic_Nh-group; + description "Next Hop Information For Prefix Local Label"; + } + + // This object holds auto resolve nexthop information + // for prefix local label + container autoresolvenh-items { + + uses mplsstatic_AutoResolveNh-group; + description "Auto-Resolved Next Hop"; + } + + // This object holds backup nexthop information + // for prefix local label + container backupnh-items { + + uses mplsstatic_BackupNh-group; + description "Backup Next Hop Information For Prefix Local Label"; + } + } + + grouping mplsstatic_Nh-group { + description "Next Hop Information For Prefix Local Label"; + + leaf outLbl { + + type mplsstatic_OutLabelVal; + description "Outgoing Label Value"; + } + leaf nhAddr { + type address_Ip; + description "Next Hop - IP Address"; + } + } + + grouping mplsstatic_AutoResolveNh-group { + description "Auto-Resolved Next Hop"; + + leaf outLbl { + + type mplsstatic_OutLabelVal; + description "Outgoing Label Value"; + } + } + + grouping mplsstatic_BackupNh-group { + description "Backup Next Hop Information For Prefix Local Label"; + + leaf outLbl { + + type mplsstatic_OutLabelVal; + description "Outgoing Label Value"; + } + leaf nhAddr { + type address_Ip; + description "Backup Next Hop IP Address"; + } + + leaf if { + + type nw_IfId; + description "Backup Next Hop Interface"; + } + } + + grouping mplsstatic_NamedLSP-group { + description "Parent of LSPs with Names"; + + leaf name { + + type mplsstatic_LspName; + description "Name of the Parent LSP"; + } + + // Cross-connect local label + container xclabel-items { + list XcLclLbl-list { + key "label"; + + uses mplsstatic_XcLclLbl-group; + description "Local Label for Cross-Connect list"; + } + description "Local Label for Cross-Connect"; + } + + // Policy local label + container pollabel-items { + list PolicyLclLbl-list { + key "label"; + + uses mplsstatic_PolicyLclLbl-group; + description "Local Label for a Policy-Based Prefix (IPv4 or IPv6) list"; + } + description "Local Label for a Policy-Based Prefix (IPv4 or IPv6)"; + } + } + + grouping mplsstatic_XcLclLbl-group { + description "Local Label for Cross-Connect"; + + leaf name { + + type mplsstatic_LspName; + description "Cross-Connect Label LSP Name"; + } + + leaf label { + + type mplsstatic_InLabelVal; + description "Local In Label Value"; + } + + // This object holds primary nexthop information + // for cross-connect local label + container nh-items { + list XcNh-list { + key "pathId"; + + uses mplsstatic_XcNh-group; + description "Next Hop Information For Cross-Connect FECs list"; + } + description "Next Hop Information For Cross-Connect FECs"; + } + } + + grouping mplsstatic_XcNh-group { + description "Next Hop Information For Cross-Connect FECs"; + + leaf outLblStack { + + type mplsstatic_OutLblStack; + description "Outgoing label stack"; + } + leaf pathId { + type uint16; + description "Cross-Connect FEC Next Hop Path identifier"; + } + leaf nhAddr { + type address_Ip; + description "Next Hop - IP Address"; + } + } + + grouping mplsstatic_PolicyLclLbl-group { + description "Local Label for a Policy-Based Prefix (IPv4 or IPv6)"; + leaf pfx { + type address_Ip; + description "Policy-Based Local Label Prefix/Subnet"; + } + + leaf name { + + type mplsstatic_LspName; + description "Policy-Based Local Label LSP Name"; + } + + leaf label { + + type mplsstatic_InLabelVal; + description "Local In Label Value"; + } + + // This object holds primary nexthop information + // for policy local label + container nh-items { + list PolNh-list { + key "pathId"; + + uses mplsstatic_PolNh-group; + description "Next Hop for Policy FECs list"; + } + description "Next Hop for Policy FECs"; + } + } + + grouping mplsstatic_PolNh-group { + description "Next Hop for Policy FECs"; + + leaf outLblStack { + + type mplsstatic_OutLblStack; + description "Outgoing Label Stack"; + } + leaf pathId { + type uint16; + description "Policy FEC Next Hop Path Identifier"; + } + leaf nhAddr { + type address_Ip; + description "Next Hop - IP Address"; + } + } + + grouping mplsstripcl_MplsStripclMode-group { + description "MPLS Stripcl Mode"; + + leaf type { + + type mplsstripcl_StripclModeType; + description "MPLS Stripcl Mode Type"; + } + } + + grouping mplsstripcl_MplsTA-group { + description "MPLS tap-aggregation"; + leaf ta { + type boolean; + default "false"; + description "enable mode tap-aggregation"; + } + leaf tAvlanId { + type uint16; + description "tap-aggregation vlan"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rsethIf-items { + + uses l2_RsEthIf_source-group; + description "Ethernet Interface"; + } + } + + grouping ulib_LabelTable-group { + description "Label Table. Contains aggregate properties for allocated labels and anchors children that describe the allocated labels"; + + leaf operLabels { + config "false"; + + type ulib_LabelCnt; + description "Total Number of Labels"; + } + + leaf operIPv4Prefixes { + config "false"; + + type ulib_LabelCnt; + description "Total Number of IPv4 Prefixes"; + } + + leaf operIPv6Prefixes { + config "false"; + + type ulib_LabelCnt; + description "Total Number of IPv6 Prefixes"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Label Table Clients + container client-items { + list Clients-list { + config "false"; + key "name"; + + uses ulib_Clients-group; + description "Label Table Clients: other components on the same device acting as clients to the ULIB service list"; + } + description "Label Table Clients: other components on the same device acting as clients to the ULIB service"; + } + + // Label Range + container lblrange-items { + + uses ulib_LblRange-group; + description "Allowed MPLS label ranges for dynamically allocated and statically configured labels"; + } + + // Labels + // Ephemeral data + container lbl-items { + + // Ephemeral data + list Labels-list { + config "false"; + key "label"; + + uses ulib_Labels-group; + description "A single MPLS label list"; + } + description "A single MPLS label"; + } + } + + grouping ulib_Clients-group { + description "Label Table Clients: other components on the same device acting as clients to the ULIB service"; + + leaf name { + config "false"; + + type ulib_ClientName; + description "Name of the ulib client"; + } + leaf index { + config "false"; + type uint32; + description "Index of the ulib client"; + } + leaf uuid { + config "false"; + type uint32; + description "UUID of the ulib client"; + } + leaf mtsSap { + config "false"; + type uint32; + description "MTS-SAP of the client"; + } + leaf staleTime { + config "false"; + type union { + type string; + type uint64; + } + description "Time to wait for clients to reclaim resources before cleaning"; + } + + leaf flag { + config "false"; + + type ulib_ClientFlag; + description "Internal flags for the client"; + } + leaf regMsg { + config "false"; + type uint32; + description "Number of register messages received from the client"; + } + leaf convMsg { + config "false"; + type uint32; + description "Number of convergence messages received from the client"; + } + leaf fecMsg { + config "false"; + type uint32; + description "Number of FEC messages received from the client"; + } + leaf fecAdd { + config "false"; + type uint32; + description "Number of FECs added by the client"; + } + leaf ileAdd { + config "false"; + type uint32; + description "Number of ILEs created by the client"; + } + leaf fecDel { + config "false"; + type uint32; + description "Number of FECs deleted by the client"; + } + leaf ileDel { + config "false"; + type uint32; + description "Number of ILEs deleted by the client"; + } + leaf lastXid { + config "false"; + type uint32; + description "Last transaction id sent in a FEC transaction by the client"; + } + leaf fecAck { + config "false"; + type uint32; + description "Number of FEC Acknowledgement messages sent to the client"; + } + } + + grouping ulib_LblRange-group { + description "Allowed MPLS label ranges for dynamically allocated and statically configured labels"; + + // Config : Dynamic Label Range + leaf dynLblMin { + + type ulib_DynLblMin; + description "Minimum dynamic label, configured value"; + } + + leaf dynLblMax { + + type ulib_DynLblMax; + description "Maximum dynamic label, configured value"; + } + + // Config : Static Label Range + leaf staticLblMin { + + type ulib_LabelVal; + description "Minimum Static Label, configured value"; + } + + leaf staticLblMax { + + type ulib_LabelVal; + description "Maximum Static Label, configured value"; + } + + // Oper : Dynamic Label Range + leaf operDynLblMin { + config "false"; + + type ulib_LabelVal; + description "Minimum dynamic label, operational value"; + } + + leaf operDynLblMax { + config "false"; + + type ulib_LabelVal; + description "Maximum dynamic label, operational value"; + } + + // Oper : Static Label Range + leaf operStaticLblMin { + config "false"; + + type ulib_LabelVal; + description "Minimum static label, operational value"; + } + + leaf operStaticLblMax { + config "false"; + + type ulib_LabelVal; + description "Maximum static label, operational value"; + } + + // Fault : Static Labels Out Of Range + leaf operStaticLblsOutOfRange { + config "false"; + + type ulib_LabelCnt; + description "Number of static labels that are no longer inside the static range due to a change in the configured ranges."; + } + } + + grouping ulib_Labels-group { + description "A single MPLS label"; + + // Ephemeral data + leaf label { + config "false"; + type uint32; + description "Label value"; + } + + // Ephemeral data + leaf fecType { + config "false"; + + type ulib_FecType; + description "Corresponding FEC type"; + } + + // Ephemeral data + leaf labelByteStats { + config "false"; + type uint64; + description "Sum of packet lengths in bytes for incoming packets with this label"; + } + + // Ephemeral data + leaf labelPacketStats { + config "false"; + type uint64; + description "Count of incoming packets with this label"; + } + + // IPv4 FEC + // Ephemeral data + container FecIPv4-items { + + uses ulib_FecIPv4-group; + description "Represents an MPLS IPv4 FEC"; + } + + // IPv6 FEC + // Ephemeral data + container FecIPv6-items { + + uses ulib_FecIPv6-group; + description "Represents an MPLS IPv6 FEC"; + } + + // Policy IPv4 FEC + // Ephemeral data + container FecPolicyIPv4-items { + + uses ulib_FecPolicyIPv4-group; + description "Represents a Policy MPLS IPv4 FEC"; + } + + // Policy IPv6 FEC + // Ephemeral data + container FecPolicyIPv6-items { + + uses ulib_FecPolicyIPv6-group; + description "Represents a Policy MPLS IPv6 FEC"; + } + + // None FEC + // Ephemeral data + container FecNone-items { + + uses ulib_FecNone-group; + description "Represents a 'None' FEC; a FEC that is only defined by an incoming label"; + } + + // SR-TE FEC + // Ephemeral data + container FecSRTE-items { + + uses ulib_FecSRTE-group; + description "Represents an SR-TE FEC"; + } + + // Per-CE FEC + // Ephemeral data + container FecPerCE-items { + + uses ulib_FecPerCE-group; + description "Represents a Per-CE FEC"; + } + + // Reserved FEC + // Ephemeral data + container FecReserved-items { + + uses ulib_FecReserved-group; + description "Placeholder for a reserved FEC number. This is not a real instantiated FEC."; + } + + // Deagg FEC + // Ephemeral data + container FecDeagg-items { + + uses ulib_FecDeagg-group; + description "Represents a Deaggregate (Per-VRF) FEC"; + } + + // ADJ_SID FEC + // Ephemeral data + container FecAdjSID-items { + + uses ulib_FecAdjSID-group; + description "Represents an Adjacency SID FEC. Used in Segment-Routing for associating a SID with an adjacency"; + } + + // NHLFE + // Ephemeral data + container Nhlfe-items { + + // Ephemeral data + list Nhlfe-list { + config "false"; + key "idx"; + + uses ulib_Nhlfe-group; + description "Represents an NHLFE entry on a FEC, describing the outgoing information needed for forwarding list"; + } + description "Represents an NHLFE entry on a FEC, describing the outgoing information needed for forwarding"; + } + } + + grouping ulib_FecIPv4-group { + description "Represents an MPLS IPv4 FEC"; + + // Ephemeral data + leaf fecType { + config "false"; + + type ulib_FecType; + description "Forwarding Equivalence Class (FEC) Type"; + } + + // Ephemeral data + leaf state { + config "false"; + + type ulib_FecState; + description "Forwarding Equivalence Class (FEC) State"; + } + + // Ephemeral data + leaf tableId { + config "false"; + + type ulib_TableId; + description "Forwarding Equivalence Class (FEC) Table ID"; + } + + // Ephemeral data + leaf prefix { + config "false"; + type address_Ip; + description "Forwarding Equivalence Class (FEC) IP Prefix"; + } + + // Ephemeral data + leaf maskLength { + config "false"; + type uint8; + description "Forwarding Equivalence Class (FEC) IP Mask Length"; + } + } + + grouping ulib_FecIPv6-group { + description "Represents an MPLS IPv6 FEC"; + + // Ephemeral data + leaf fecType { + config "false"; + + type ulib_FecType; + description "Forwarding Equivalence Class (FEC) Type"; + } + + // Ephemeral data + leaf state { + config "false"; + + type ulib_FecState; + description "Forwarding Equivalence Class (FEC) State"; + } + + // Ephemeral data + leaf tableId { + config "false"; + + type ulib_TableId; + description "Forwarding Equivalence Class (FEC) Table ID"; + } + + // Ephemeral data + leaf prefix { + config "false"; + type address_Ip; + description "Forwarding Equivalence Class (FEC) IP Prefix"; + } + + // Ephemeral data + leaf maskLength { + config "false"; + type uint8; + description "Forwarding Equivalence Class (FEC) IP Mask Length"; + } + } + + grouping ulib_FecPolicyIPv4-group { + description "Represents a Policy MPLS IPv4 FEC"; + + // Ephemeral data + leaf fecType { + config "false"; + + type ulib_FecType; + description "Forwarding Equivalence Class (FEC) Type"; + } + + // Ephemeral data + leaf state { + config "false"; + + type ulib_FecState; + description "Forwarding Equivalence Class (FEC) State"; + } + + // Ephemeral data + leaf tableId { + config "false"; + + type ulib_TableId; + description "Forwarding Equivalence Class (FEC) Table ID"; + } + + // Ephemeral data + leaf prefix { + config "false"; + type address_Ip; + description "Forwarding Equivalence Class (FEC) IP Prefix"; + } + + // Ephemeral data + leaf maskLength { + config "false"; + type uint8; + description "Forwarding Equivalence Class (FEC) IP Mask Length"; + } + } + + grouping ulib_FecPolicyIPv6-group { + description "Represents a Policy MPLS IPv6 FEC"; + + // Ephemeral data + leaf fecType { + config "false"; + + type ulib_FecType; + description "Forwarding Equivalence Class (FEC) Type"; + } + + // Ephemeral data + leaf state { + config "false"; + + type ulib_FecState; + description "Forwarding Equivalence Class (FEC) State"; + } + + // Ephemeral data + leaf tableId { + config "false"; + + type ulib_TableId; + description "Forwarding Equivalence Class (FEC) Table ID"; + } + + // Ephemeral data + leaf prefix { + config "false"; + type address_Ip; + description "Forwarding Equivalence Class (FEC) IP Prefix"; + } + + // Ephemeral data + leaf maskLength { + config "false"; + type uint8; + description "Forwarding Equivalence Class (FEC) IP Mask Length"; + } + } + + grouping ulib_FecNone-group { + description "Represents a 'None' FEC; a FEC that is only defined by an incoming label"; + + // Ephemeral data + leaf label { + config "false"; + type uint32; + description "None - Forwarding Equivalence Class (FEC) MPLS Label"; + } + + // Ephemeral data + leaf fecType { + config "false"; + + type ulib_FecType; + description "None - Forwarding Equivalence Class (FEC) Type"; + } + + // Ephemeral data + leaf state { + config "false"; + + type ulib_FecState; + description "None - Forwarding Equivalence Class (FEC) State"; + } + } + + grouping ulib_FecSRTE-group { + description "Represents an SR-TE FEC"; + + // Ephemeral data + leaf id { + config "false"; + type uint32; + description "SRTE - Forwarding Equivalence Class (FEC) Identifier"; + } + + // Ephemeral data + leaf fecType { + config "false"; + + type ulib_FecType; + description "SRTE - Forwarding Equivalence Class (FEC) Type"; + } + + // Ephemeral data + leaf state { + config "false"; + + type ulib_FecState; + description "SRTE - Forwarding Equivalence Class (FEC) State"; + } + } + + grouping ulib_FecPerCE-group { + description "Represents a Per-CE FEC"; + + // Ephemeral data + leaf nextHopSet { + config "false"; + type uint32; + description "Per-CE Forwarding Equivalence Class (FEC) Next-Hop Set Id"; + } + + // Ephemeral data + leaf addressFamily { + config "false"; + + type ulib_EphemeralAddressFamily; + description "Per-CE Forwarding Equivalence Class (FEC) Address Family"; + } + + leaf fecType { + config "false"; + + type ulib_FecType; + description "Forwarding Equivalence Class (FEC) Type"; + } + + leaf state { + config "false"; + + type ulib_FecState; + description "Forwarding Equivalence Class (FEC) State"; + } + + leaf tableId { + config "false"; + + type ulib_TableId; + description "Forwarding Equivalence Class (FEC) Table ID"; + } + } + + grouping ulib_FecReserved-group { + description "Placeholder for a reserved FEC number. This is not a real instantiated FEC."; + + // Ephemeral data + leaf fecType { + config "false"; + + type ulib_FecType; + description "Forwarding Equivalence Class (FEC) Type"; + } + + // Ephemeral data + leaf state { + config "false"; + + type ulib_FecState; + description "Forwarding Equivalence Class (FEC) State"; + } + + // Ephemeral data + leaf tableId { + config "false"; + + type ulib_TableId; + description "Forwarding Equivalence Class (FEC) Table ID"; + } + } + + grouping ulib_FecDeagg-group { + description "Represents a Deaggregate (Per-VRF) FEC"; + + // Ephemeral data + leaf fecType { + config "false"; + + type ulib_FecType; + description "Forwarding Equivalence Class (FEC) Type"; + } + + // Ephemeral data + leaf state { + config "false"; + + type ulib_FecState; + description "Forwarding Equivalence Class (FEC) State"; + } + + // Ephemeral data + leaf tableId { + config "false"; + + type ulib_TableId; + description "Forwarding Equivalence Class (FEC) Table ID"; + } + } + + grouping ulib_FecAdjSID-group { + description "Represents an Adjacency SID FEC. Used in Segment-Routing for associating a SID with an adjacency"; + + // Ephemeral data + leaf ifIndex { + config "false"; + type uint32; + description "Adjacency SID Forwarding Equivalence Class (FEC) Interface Index"; + } + + // Ephemeral data + leaf appId { + config "false"; + type uint32; + description "Adjacency SID Forwarding Equivalence Class (FEC) Application Id"; + } + + // Ephemeral data + leaf nextHop { + config "false"; + type address_Ip; + description "Adjacency SID Forwarding Equivalence Class (FEC) Next-hop IP Address"; + } + + leaf fecType { + config "false"; + + type ulib_FecType; + description "Forwarding Equivalence Class (FEC) Type"; + } + + leaf state { + config "false"; + + type ulib_FecState; + description "Forwarding Equivalence Class (FEC) State"; + } + + leaf tableId { + config "false"; + + type ulib_TableId; + description "Forwarding Equivalence Class (FEC) Table ID"; + } + } + + grouping ulib_Nhlfe-group { + description "Represents an NHLFE entry on a FEC, describing the outgoing information needed for forwarding"; + + // Ephemeral data + leaf idx { + config "false"; + type uint32; + description "Next Hop Label Forwarding Entry (NHLFE) Index"; + } + + // Ephemeral data + leaf ip { + config "false"; + type address_Ip; + description "Next Hop Label Forwarding Entry (NHLFE) IP address"; + } + + // Ephemeral data + leaf outLabel { + config "false"; + + type ulib_OutLblStack; + description "Next Hop Label Forwarding Entry (NHLFE) Outgoing MPLS label"; + } + + // Ephemeral data + leaf interface { + config "false"; + + type ulib_InterfaceStr; + description "Next Hop Label Forwarding Entry (NHLFE) Outgoing Interface"; + } + + // Ephemeral data + leaf outLabelByteStats { + config "false"; + type uint64; + description "Sum of packet lengths in bytes for packets traversing this NHLFE"; + } + + // Ephemeral data + leaf outLabelPacketStats { + config "false"; + type uint64; + description "Count of outgoing packets traversing this NHLFE"; + } + leaf weight { + config "false"; + type uint32; + description "Weight of Nexthop Element"; + } + } + + grouping mrib_Entity-group { + description "Holds MRIB entity information"; + + // This objects hold per mrib instance information + container inst-items { + + uses mrib_Inst-group; + description "Holds per MRIB instance information"; + } + } + + grouping mrib_Inst-group { + description "Holds per MRIB instance information"; + + // This objects hold per MRIB information + container dom-items { + list Dom-list { + key "name"; + + uses mrib_Dom-group; + description "This objects holds MRIB vrf domain level information list"; + } + description "This objects holds MRIB vrf domain level information"; + } + + container loglevel-items { + + uses mrib_LogLevel-group; + description "Configure logging level"; + } + + // This object holds mrib route db information + // Ephemeral data + container routeDb-items { + + uses mrib_RouteDb-group; + description "This object holds MRIB route database information"; + } + } + + grouping mrib_Dom-group { + description "This objects holds MRIB vrf domain level information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Admin State + leaf adminSt { + + type nw_AdminSt; + default "disabled"; + description "Admin State"; + } + + // Per-Dom Controls + leaf ctrl { + + type rtdmc_DomCtrl; + description "Domain Controls"; + } + + // Protocol packet MTU + leaf mtu { + + type rtdmc_Mtu; + description "Maximum Transmission Unit"; + } + + // Auto Enable + leaf autoEnable { + + type rtdmc_AutoEnable; + description "Auto Enable"; + } + leaf logNbhChng { + type boolean; + description "Log Neighbhor changes"; + } + leaf flushRoutes { + type boolean; + description "Flush Routes"; + } + leaf bfd { + type boolean; + description "BFD"; + } + + leaf jpDelay { + + type rtdmc_JpDelayRange; + description "Join-Prune message inter-packet delay"; + } + + leaf regRateLmt { + + type rtdmc_RegRateRange; + description "Register rate limit for data packets per second"; + } + leaf rfcStrict { + type boolean; + description "Do not process joins from unknown neighbors"; + } + leaf sptSwitchGraceful { + type boolean; + description "Graceful switch to SPT"; + } + + // This object holds mrib config information + container config-items { + + uses mrib_Config-group; + description "Holds MRIB config information"; + } + container eventHist-items { + list EventHistory-list { + key "type"; + + uses mrib_EventHistory-group; + description "Configure event-history buffers list"; + } + description "Configure event-history buffers"; + } + container rpfselect-items { + list RpfSelect-list { + key "vrfName srcPfx"; + + uses mrib_RpfSelect-group; + description "Configure IP multicast RPF select configuration list"; + } + description "Configure IP multicast RPF select configuration"; + } + + // ServiceReflect -> Ingress -> grpList ServiceReflect -> Egress -> grpList ServiceReflect -> Source-Interface -> Src_intf Parent + container sr-items { + + uses mrib_ServiceReflect-group; + description "Holds SR NAT Mode Information - Ingress/Egress"; + } + + // This object holds global config for mrib + container trace-items { + + uses mrib_Trace-group; + description "This object holds global configuration for Bintrace"; + } + } + + grouping mrib_Config-group { + description "Holds MRIB config information"; + + // Holddown Enable + leaf holdEnable { + + type mrib_HoldAdminSt; + description "Holddown Enable"; + } + + // Holddown second + leaf holddown { + + type mrib_HoldDownType; + description "holddown second"; + } + + // Mode Enable + leaf ModeEnable { + + type mrib_ModeAdminSt; + description "Mode Enable"; + } + + // Multipath Mode + leaf Mode { + + type mrib_MultipathMode; + description "MRIB Multipath Mode"; + } + + // Multipath Resilient + leaf modeResilient { + + type mrib_ResilientType; + description "MRIB Multipath Resilient"; + } + + // Mfdm-buffer-route type + leaf mfdmType { + + type mrib_MfdmType; + description "Mfdm buffer route type"; + } + + // Mfdm-buffer-route-count size + leaf mfdmSize { + + type mrib_MfdmSize; + description "Mfdm buffer route size"; + } + } + + grouping mrib_EventHistory-group { + description "Configure event-history buffers"; + + leaf type { + + type mrib_EhType; + description "configures type of event history"; + } + + leaf size { + + type mrib_Size; + description "configures buffer size in text/kb"; + } + } + + grouping mrib_RpfSelect-group { + description "Configure IP multicast RPF select configuration"; + leaf srcPfx { + type address_Ip; + description "Source IP prefix address"; + } + + // Vrf name + leaf vrfName { + + type l3_VrfName; + description "Vrf Name for RPF check"; + } + } + + grouping mrib_ServiceReflect-group { + description "Holds SR NAT Mode Information - Ingress/Egress"; + + // This is an MO which will have all groups in Ingress + // mode. + container ingress-items { + list IngressMode-list { + key "grpList"; + + uses mrib_IngressMode-group; + description "Holds SR NAT Mode Information - Ingress list"; + } + description "Holds SR NAT Mode Information - Ingress"; + } + + // This is an MO which will have all groups in Egress + // mode. + container egress-items { + list EgressMode-list { + key "grpList"; + + uses mrib_EgressMode-group; + description "Holds SR NAT Mode Information - Egress list"; + } + description "Holds SR NAT Mode Information - Egress"; + } + + // This is an MO which has the source interface info for + // SR NAT + container sourceintf-items { + + uses mrib_SrcIntf-group; + description + "Holds SR NAT source interface Information - can + only be a loopback information."; + } + + // ServiceReflect -> mode This is mode. + container natmode-items { + + uses mrib_Mode-group; + description "Holds SR NAT Mode Information"; + } + + // This object holds sr nat rule information Parent + container rule-items { + + uses mrib_SrRule-group; + description "This parent MO has all the SR NAT rules"; + } + } + + grouping mrib_IngressMode-group { + description "Holds SR NAT Mode Information - Ingress"; + leaf grpList { + type address_Ip; + description "IP multicast group address"; + } + } + + grouping mrib_EgressMode-group { + description "Holds SR NAT Mode Information - Egress"; + leaf grpList { + type address_Ip; + description "IP multicast group address"; + } + } + + grouping mrib_SrcIntf-group { + description + "Holds SR NAT source interface Information - can + only be a loopback information."; + + leaf srcIntf { + + type nw_IfId; + description + "Source intf can only be loopback + interfaces"; + } + } + + grouping mrib_Mode-group { + description "Holds SR NAT Mode Information"; + + leaf mode { + + type mrib_SrModeType; + description "IP multicast group address"; + } + leaf noRewriteEnabled { + type boolean; + description "IP multicast group address"; + } + } + + grouping mrib_SrRule-group { + description "This parent MO has all the SR NAT rules"; + container pregrp-items { + list Rule-list { + key "preTransGrp postTransGrp grpMasklen preTransSrc postTransSrc srcMasklen udpsrcPort udpDestPort staticOif"; + + uses mrib_Rule-group; + description "Holds the rule info - (S,G), port, oif etc list"; + } + description "Holds the rule info - (S,G), port, oif etc"; + } + } + + grouping mrib_Rule-group { + description "Holds the rule info - (S,G), port, oif etc"; + leaf preTransGrp { + type address_Ip; + description "Group Address that needs translation"; + } + leaf postTransGrp { + type address_Ip; + description "Group Address to be translated into."; + } + + // Group Mask Len + leaf grpMasklen { + + type mrib_MaskLen; + description + "Group Mask Length - Applies to G1 and + G2."; + } + leaf preTransSrc { + type address_Ip; + description "Source Address to be translated"; + } + leaf postTransSrc { + type address_Ip; + description "Source Address to be translated into"; + } + + // Group Mask Len + leaf srcMasklen { + + type mrib_MaskLen; + description + "Source Mask Length - applies to S1 + and S2"; + } + + // udp-port ID + leaf udpsrcPort { + + type mrib_PortId; + description "to UDP source port for NATing"; + } + + // udp-dest-port ID + leaf udpDestPort { + + type mrib_PortId; + description "to UDP Destination port for NATing"; + } + + leaf staticOif { + + type nw_IfId; + description + "Static OIF can only be physical + interfaces"; + } + } + + grouping mrib_Trace-group { + description "This object holds global configuration for Bintrace"; + leaf traceEnable { + type boolean; + description "Configure multicast and enable bintrace"; + } + + // trace entries + leaf traceEntryCnt { + + type mrib_TraceCountType; + description "Update number of bintrace entries"; + } + + // trace records + leaf traceRecCnt { + + type mrib_TraceCountType; + description "Update number of bintrace record per entry"; + } + } + + grouping mrib_LogLevel-group { + description "Configure logging level"; + + leaf type { + + type mrib_LogType; + description "Configures logging type"; + } + + leaf level { + + type mrib_LvlType; + description "Configures level values from 0-7"; + } + } + + grouping mrib_RouteDb-group { + description "This object holds MRIB route database information"; + + // This objects hold per pim domain (vrf) information + // Ephemeral data + container vrf-items { + + // Ephemeral data + list Vrf-list { + config "false"; + key "name"; + + uses mrib_Vrf-group; + description "This object holds per MRIB domain (vrf) information list"; + } + description "This object holds per MRIB domain (vrf) information"; + } + } + + grouping mrib_Vrf-group { + description "This object holds per MRIB domain (vrf) information"; + + // Ephemeral data + leaf name { + config "false"; + type string; + description "Vrf Name"; + } + + // Ephemeral data + leaf totalNumRoutes { + config "false"; + type uint32; + description "Total Number of Routes"; + } + + // Ephemeral data + leaf starGRoute { + config "false"; + type uint32; + description "Star G Count"; + } + + // Ephemeral data + leaf sgRoute { + config "false"; + type uint32; + description "SG Count"; + } + + // Ephemeral data + leaf starGPrfx { + config "false"; + type uint32; + description "Star G Prefix"; + } + + // This object holds mrib route group information + // Ephemeral data + container group-items { + + // Ephemeral data + list Group-list { + config "false"; + key "grpAddr"; + + uses mrib_Group-group; + description "Holds MRIB route group information list"; + } + description "Holds MRIB route group information"; + } + } + + grouping mrib_Group-group { + description "Holds MRIB route group information"; + + // Ephemeral data + leaf grpAddr { + config "false"; + type address_Ip; + description "Group Address"; + } + + // Ephemeral data + leaf grpMasklen { + config "false"; + type uint32; + description "Group Mask Length"; + } + + // Ephemeral data + leaf bidir { + config "false"; + type boolean; + description "Bidirectional flag"; + } + + // This object holds mrib route source information + // Ephemeral data + container source-items { + + // Ephemeral data + list Source-list { + config "false"; + key "srcAddr"; + + uses mrib_Source-group; + description "This object holds MRIB route source information list"; + } + description "This object holds MRIB route source information"; + } + } + + grouping mrib_Source-group { + description "This object holds MRIB route source information"; + + // Ephemeral data + leaf srcAddr { + config "false"; + type address_Ip; + description "Source Address"; + } + + // Ephemeral data + leaf pending { + config "false"; + type boolean; + description "Pending flag"; + } + + // Ephemeral data + leaf uptime { + config "false"; + type union { + type string; + type uint64; + } + description "Uptime"; + } + + // Ephemeral data + leaf oifcount { + config "false"; + type uint32; + description "OIF Count"; + } + + // Ephemeral data + leaf statsPkts { + config "false"; + type uint32; + description "Statistics packets"; + } + + // Ephemeral data + leaf statsBytes { + config "false"; + type uint32; + description "Statistics Bytes"; + } + + // Ephemeral data + leaf statsRateBuf { + config "false"; + type string; + description "Statistics Rate Buffer"; + } + + // Ephemeral data + leaf lispSrcRloc { + config "false"; + type string; + description "lisp source rloc"; + } + + // Ephemeral data + leaf routeIif { + config "false"; + type string; + description "Route Incoming Interface"; + } + + // Ephemeral data + leaf rpfNbr { + config "false"; + type string; + description "RPF Neighbor"; + } + + // Ephemeral data + leaf internal { + config "false"; + type boolean; + description "Internal"; + } + + // Ephemeral data + leaf rpfNbrUptime { + config "false"; + type union { + type string; + type uint64; + } + description "uptime of RPF neighbor"; + } + + // Ephemeral data + leaf fabricOif { + config "false"; + type boolean; + description "Fabric OIF"; + } + + // Ephemeral data + leaf fabricLoser { + config "false"; + type boolean; + description "Fabric Loser"; + } + + // Ephemeral data + leaf numVpcSviOifs { + config "false"; + type uint32; + description "Number of vpc svi OIFs"; + } + + // Ephemeral data + leaf routeMdtIod { + config "false"; + type boolean; + description "Route MDT IOD"; + } + + // Ephemeral data + leaf mdtEncapIndex { + config "false"; + type uint32; + description "MDT Encap Index"; + } + + // This object holds mrib mpib information + // Ephemeral data + container mpib-items { + + // Ephemeral data + list Mpib-list { + config "false"; + key "mpibName"; + + uses mrib_Mpib-group; + description "This object holds MPIB information list"; + } + description "This object holds MPIB information"; + } + + // This object holds mrib OIF information + // Ephemeral data + container oif-items { + + // Ephemeral data + list Oif-list { + config "false"; + key "oifName"; + + uses mrib_Oif-group; + description "This object holds MRIB OIF information list"; + } + description "This object holds MRIB OIF information"; + } + } + + grouping mrib_Mpib-group { + description "This object holds MPIB information"; + + // Ephemeral data + leaf mpibName { + config "false"; + type string; + description "MPIB name"; + } + + // Ephemeral data + leaf oifCount { + config "false"; + type uint32; + description "OIF count"; + } + + // Ephemeral data + leaf staleRoute { + config "false"; + type boolean; + description "Stale Route"; + } + } + + grouping mrib_Oif-group { + description "This object holds MRIB OIF information"; + + // Ephemeral data + leaf oifName { + config "false"; + type string; + description "OIF name"; + } + + // Ephemeral data + leaf oifUptime { + config "false"; + type union { + type string; + type uint64; + } + description "OIF Uptime"; + } + + // Ephemeral data + leaf oifRPF { + config "false"; + type boolean; + description "OIF RPF"; + } + + // Ephemeral data + leaf oifLispEncapEntries { + config "false"; + type uint32; + description "Lisp Encap Entries Count"; + } + + // This object holds lisp encap information + // Ephemeral data + container lispEncap-items { + + // Ephemeral data + list LispEncap-list { + config "false"; + key "index"; + + uses mrib_LispEncap-group; + description "This object holds Lisp Encapsulation information list"; + } + description "This object holds Lisp Encapsulation information"; + } + + // This object holds mrib OIF MPIB information + // Ephemeral data + container oifMpib-items { + + // Ephemeral data + list OifMpib-list { + config "false"; + key "oifMpibName"; + + uses mrib_OifMpib-group; + description "This object holds MRIB OIF MPIB information list"; + } + description "This object holds MRIB OIF MPIB information"; + } + } + + grouping mrib_LispEncap-group { + description "This object holds Lisp Encapsulation information"; + + // Ephemeral data + leaf index { + config "false"; + type uint32; + description "Lisp Encap Index"; + } + + // Ephemeral data + leaf srcRloc { + config "false"; + type address_Ip; + description "Source remote location"; + } + + // Ephemeral data + leaf dstRloc { + config "false"; + type address_Ip; + description "Destination remote location"; + } + } + + grouping mrib_OifMpib-group { + description "This object holds MRIB OIF MPIB information"; + + // Ephemeral data + leaf oifMpibName { + config "false"; + type string; + description "OIF MPIB name"; + } + + // Ephemeral data + leaf staleOif { + config "false"; + type boolean; + description "Flag indicating if OIF is Stale"; + } + + // Ephemeral data + leaf VpcSvi { + config "false"; + type boolean; + description "Flag indicating VPC SVI"; + } + } + + grouping msdp_Entity-group { + description "Holds MSDP control plane entity information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per MSDP instance information + container inst-items { + + uses msdp_Inst-group; + description "Holds per MSDP instance information"; + } + } + + grouping msdp_Inst-group { + description "Holds per MSDP instance information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // This objects hold per domain (vrf) MSDP information + container dom-items { + list Dom-list { + key "name"; + + uses msdp_Dom-group; + description "Holds per domain (vrf) MSDP information list"; + } + description "Holds per domain (vrf) MSDP information"; + } + + container loglevel-items { + + uses msdp_LogLevel-group; + description "Configure logging level"; + } + } + + grouping msdp_Dom-group { + description "Holds per domain (vrf) MSDP information"; + + leaf origIf { + + type nw_IfId; + description "Originator Interface identifying IP address in RP field of Source-Active message. Supported interfaces include Ethernet-like, port/channel, loopback and vlan interfaces"; + } + + leaf srcActiveMsgIntvl { + + type msdp_SrcActiveMsgIntvl; + description "Source Active message Interval"; + } + + leaf reConnIntvl { + + type msdp_ReConnIntvl; + description "Reconnect Interval"; + } + + leaf ctrl { + + type msdp_DomCtrl; + description "Flush routes"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // msdp databases + // Ephemeral data + container db-items { + + // Ephemeral data + list Db-list { + config "false"; + key "type"; + + uses msdp_Db-group; + description "Holds information about MSDP Database list"; + } + description "Holds information about MSDP Database"; + } + + // This object holds group limt and source range info + container maxgrp-items { + list MaxGrpP-list { + key "srcPfx"; + + uses msdp_MaxGrpP-group; + description "Holds group limit and source range information list"; + } + description "Holds group limit and source range information"; + } + container eventHist-items { + list EventHistory-list { + key "type"; + + uses msdp_EventHistory-group; + description "Configure event-history buffers list"; + } + description "Configure event-history buffers"; + } + + // This object holds MSDP information pertaining to a peer + container peer-items { + list Peer-list { + key "addr"; + + uses msdp_Peer-group; + description "Holds MSDP information pertaining to a peer list"; + } + description "Holds MSDP information pertaining to a peer"; + } + + container interleakp-items { + + uses msdp_InterLeakP-group; + description "Holds information of Redistribution policy"; + } + } + + grouping msdp_Db-group { + description "Holds information about MSDP Database"; + + // Type of the repository + // Ephemeral data + leaf type { + config "false"; + + type msdp_DbT; + description "Indicates different database type for different show command"; + } + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // This object holds the MSDP SA-Cache related information + // Ephemeral data + container src-items { + + // Ephemeral data + list Route-list { + config "false"; + key "src grp rp"; + + uses msdp_Route-group; + description "Holds the MSDP SA-Cache related information list"; + } + description "Holds the MSDP SA-Cache related information"; + } + + // This class holds information of learnt sources + // Ephemeral data + container source-items { + + // Ephemeral data + list Source-list { + config "false"; + key "addr"; + + uses msdp_Source-group; + description "Holds information of MSDP sources list"; + } + description "Holds information of MSDP sources"; + } + } + + grouping msdp_Route-group { + description "Holds the MSDP SA-Cache related information"; + + // Ephemeral data + leaf src { + config "false"; + type address_Ip; + description "Source Address"; + } + + // Ephemeral data + leaf grp { + config "false"; + type address_Ip; + description "Group Address"; + } + + // Ephemeral data + leaf rp { + config "false"; + type address_Ip; + description "RP Address"; + } + + // Ephemeral data + leaf peer { + config "false"; + type address_Ip; + description "IP address of MSDP Peer"; + } + + // Ephemeral data + leaf asn { + config "false"; + type string; + description "AS Number"; + } + + // Ephemeral data + leaf createTs { + config "false"; + type union { + type string; + type uint64; + } + description "Creation timestamp of the entry"; + } + + // Ephemeral data + leaf expireTs { + config "false"; + type union { + type string; + type uint64; + } + description "Expiry timestamp of the entry"; + } + + // Ephemeral data + leaf saCnt { + config "false"; + type uint32; + description "Source-Active Message Request Count"; + } + + // Ephemeral data + leaf dataPkt { + config "false"; + type uint32; + description "Count of data packets forwarded"; + } + } + + grouping msdp_Source-group { + description "Holds information of MSDP sources"; + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "Source Address"; + } + + // Ephemeral data + leaf grpCnt { + config "false"; + type uint32; + description "Number of groups learnt"; + } + + // Ephemeral data + leaf grpLimit { + config "false"; + type uint32; + description "Configured group limit"; + } + + // Ephemeral data + leaf srcPfx { + config "false"; + type address_Ip; + description "Source prefix of the corresponding group limit"; + } + + // Ephemeral data + leaf violations { + config "false"; + type uint32; + description "Source group exceeds the maximum group limit configured."; + } + } + + grouping msdp_MaxGrpP-group { + description "Holds group limit and source range information"; + leaf srcPfx { + type address_Ip; + description "Source prefix"; + } + + leaf maxGrp { + + type msdp_MaxGrpLimit; + description "Max Group count"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping msdp_EventHistory-group { + description "Configure event-history buffers"; + + leaf type { + + type msdp_EhType; + description "configures type of event history"; + } + + leaf size { + + type msdp_Size; + description "configures buffer size in text/kb"; + } + } + + grouping msdp_Peer-group { + description "Holds MSDP information pertaining to a peer"; + leaf addr { + type address_Ip; + description "IP address of MSDP Peer"; + } + + // Administrative state up/down + leaf adminSt { + + type nw_AdminSt; + description "Administrative state enabled/disabled"; + } + + // source interface + leaf srcIf { + + type nw_IfId; + description "Source Interface. Supported interfaces include Ethernet-like, port/channel, loopback and vlan interfaces"; + } + + // Remote ASN + leaf asn { + + type msdp_Asn; + description "Autonomous System Number"; + } + + // sa-limit + leaf srcActiveMsgLimit { + + type msdp_SrcActiveMsgLimit; + description "Source Active msg Limit"; + } + + // Keepalive interval, how often you send keepalives + leaf kaIntvl { + + type msdp_KaIntvl; + description "Keepalive interval, how often you send keepalives"; + } + + // Keepalive timeout + leaf kaTimeout { + + type msdp_KaTimeout; + description "Keepalive Timeout"; + } + + // Operationsl state + leaf operSt { + config "false"; + + type msdp_OperSt; + description "Operational Status"; + } + + // Remote port of TCP connection to this peer + leaf remPort { + config "false"; + + type l4_Port; + description "Remote TCP connection port to this peer"; + } + + // Local port of TCP connection to this peer + leaf localPort { + config "false"; + + type l4_Port; + description "Local TCP connection port to this peer"; + } + + // Reason for last reset + leaf lastResetOperQual { + config "false"; + + type msdp_LastResetT; + description "Reason for last reset"; + } + leaf discontinuityTs { + config "false"; + type union { + type string; + type uint64; + } + description "Discontinuity Time"; + } + leaf upTs { + config "false"; + type union { + type string; + type uint64; + } + description "Uptime"; + } + leaf connTmrTs { + config "false"; + type union { + type string; + type uint64; + } + description "Connect Timer Timestamp"; + } + + // Count of established transitions + leaf establishTransitions { + config "false"; + + type nw_Counter32; + description "Count of established transitions"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // This object holds authentication policy information + container auth-items { + + uses msdp_AuthP-group; + description "Holds Authentication Policy information"; + } + + // This object holds mesh group information + container meshgrp-items { + + uses msdp_MeshGrp-group; + description "Holds mesh group policy information"; + } + + // SA policy MO + container rtctrl-items { + list RtCtrlP-list { + key "direction"; + + uses msdp_RtCtrlP-group; + description "Source Active Route Control policy list"; + } + description "Source Active Route Control policy"; + } + + // This object holds the MSDP peer related statistics + // Ephemeral data + container peerstats-items { + + uses msdp_PeerStats-group; + description "Holds the MSDP peer related statistics"; + } + } + + grouping msdp_AuthP-group { + description "Holds Authentication Policy information"; + + // Authentication type + leaf type { + + type msdp_AuthT; + description "Authentication type"; + } + + // Authentication key + leaf key { + + type msdp_AuthKey; + description "Authentication key"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping msdp_MeshGrp-group { + description "Holds mesh group policy information"; + + // Mesh Group name + leaf grpName { + + type msdp_GrpNameT; + description "Mesh Group Name"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + } + + grouping msdp_RtCtrlP-group { + description "Source Active Route Control policy"; + + // Prefix list to control the distribution + leaf pfxList { + + type msdp_PrefixT; + description "Prefix list to control the distribution"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Direction [in/out] + leaf direction { + + type rtctrl_RtCtrlDir; + description "Direction"; + } + leaf rtMap { + type string; + description "Route Map"; + } + } + + grouping msdp_PeerStats-group { + description "Holds the MSDP peer related statistics"; + + // Ephemeral data + leaf lastMessageRcvd { + config "false"; + type union { + type string; + type uint64; + } + description "Last Message Received Timestamp"; + } + + // Count of SA requests received + // Ephemeral data + leaf saReqRcvd { + config "false"; + + type nw_Counter32; + description "Count of SA Request Received"; + } + + // Count of SA requests sent + // Ephemeral data + leaf saReqSent { + config "false"; + + type nw_Counter32; + description " Count of SA Request Sent"; + } + + // Count of SA responses received + // Ephemeral data + leaf saRspRcvd { + config "false"; + + type nw_Counter32; + description "Count of SA Response Received"; + } + + // Count of SA responses sent + // Ephemeral data + leaf saRspSent { + config "false"; + + type nw_Counter32; + description "Count of SA Response Sent"; + } + + // Count of control messages received + // Ephemeral data + leaf ctrlMessagesRcvd { + config "false"; + + type nw_Counter32; + description "Count of Control Messages Received"; + } + + // Count of control messages sent + // Ephemeral data + leaf ctrlMessagesSent { + config "false"; + + type nw_Counter32; + description "Count of Control Messages Sent"; + } + + // Count of data packets received + // Ephemeral data + leaf dataMessagesRcvd { + config "false"; + + type nw_Counter32; + description "Count of Data Messages Received"; + } + + // Count of data packets sent + // Ephemeral data + leaf dataMessagesSent { + config "false"; + + type nw_Counter32; + description "Count of Data Messages Sent"; + } + + // Count of notifications received + // Ephemeral data + leaf notifRcvd { + config "false"; + + type nw_Counter32; + description "Count of SA Notifications Received"; + } + + // Count of SA notifications sent + // Ephemeral data + leaf notifSent { + config "false"; + + type nw_Counter32; + description "Count of SA Notifications Sent"; + } + + // Count of keepalive messages received + // Ephemeral data + leaf kaRcvd { + config "false"; + + type nw_Counter32; + description "Count of Keepalives Received"; + } + + // Count of keepalive messages sent + // Ephemeral data + leaf kaSent { + config "false"; + + type nw_Counter32; + description "Count of Keepalives Sent"; + } + + // Count of RPF check failures + // Ephemeral data + leaf rpfChkFail { + config "false"; + + type nw_Counter32; + description "Count of RPF Check Failures"; + } + + // Count of connection attempts + // Ephemeral data + leaf connAttempts { + config "false"; + + type nw_Counter32; + description "Count of Connection Attempts"; + } + + // Count of SA-cache entries learnt from this peer + // Ephemeral data + leaf rtCnt { + config "false"; + + type nw_Counter32; + description "Count of SG cache entries learnt"; + } + } + + grouping msdp_InterLeakP-group { + description "Holds information of Redistribution policy"; + + leaf pfxList { + + type msdp_PrefixT; + description "pfxlist name"; + } + + leaf srcLeak { + + type msdp_Source; + description "Source of route leak distribution"; + } + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Scope of the policy (intra protocol, inter protcol, + // default route) + leaf scope { + + type rtleak_Scope; + description "Scope"; + } + leaf rtMap { + type string; + description "Route Map"; + } + } + + grouping msdp_LogLevel-group { + description "Configure logging level"; + + leaf type { + + type msdp_LogType; + description "Configures logging type"; + } + + leaf level { + + type msdp_LvlType; + description "Configures log level"; + } + } + + grouping mvpn_Entity-group { + description "Holds MVPN control plane entity information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This object holds per mvpn instance information + container inst-items { + + uses mvpn_Inst-group; + description "Holds per MVPN instance information"; + } + } + + grouping mvpn_Inst-group { + description "Holds per MVPN instance information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // Inter Packet Delay + leaf jpDelay { + + type rtdmc_JPDelay; + description "Inter Packet Delay"; + } + + // Null Register Inter Batch Delay + leaf nrDelay { + + type rtdmc_NRDelay; + description "Null Register Inter Batch Delay"; + } + + // Number of routes in a null register + leaf nrNumRt { + + type rtdmc_NRNumRt; + description "Null Register Number of Routes"; + } + leaf regStop { + type boolean; + description "Register until stops"; + } + + // This object holds per mvpn domain (vrf) information + container dom-items { + list Dom-list { + key "name"; + + uses mvpn_Dom-group; + description "Holds per mvpn domain (vrf) information list"; + } + description "Holds per mvpn domain (vrf) information"; + } + } + + grouping mvpn_Dom-group { + description "Holds per mvpn domain (vrf) information"; + leaf asmUseSharedTree { + type boolean; + description "ASM use shared tree configured"; + } + leaf enforceBGPmdtSafi { + type boolean; + default "true"; + description "Depend on BGP MDT SAFI for auto-discovery"; + } + + leaf pimHelloIntvl { + + type mvpn_PimHelloIntvl; + description "PIM hello interval used between peers"; + } + + leaf pimJoinPruneIntvl { + + type mvpn_PimJPIntvl; + description "Join-Prune interval used between peers"; + } + leaf mdtDefaultGroup { + type address_Ip; + description "IP multicast group address"; + } + leaf mdtDefaultEnabled { + type boolean; + description "This property helps us manage mdtDefaultGroup property"; + } + + leaf mdtSourceIntf { + + type nw_IfId; + description "Source interface to be used in the backbone network"; + } + leaf mdtSrcEnabled { + type boolean; + description "This property helps us manage mdtSourceIntf property"; + } + + leaf dataMtuValue { + + type mvpn_DataMtuVal; + description "MTU Value configured for the mdt"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // This object holds Data MDT settings per group + // address in a dom + container group-items { + list DataGrp-list { + key "grpAddr"; + + uses mvpn_DataGrp-group; + description "This Object holds MDT data per Group Information list"; + } + description "This Object holds MDT data per Group Information"; + } + } + + grouping mvpn_DataGrp-group { + description "This Object holds MDT data per Group Information"; + leaf grpAddr { + type address_Ip; + description + "List of group range prefixes, only + multicast allowed"; + } + + leaf rtMap { + + type mvpn_RtMapType; + description "Route Map Name to control the distribution"; + } + } + + grouping nd_Entity-group { + description "Neighbor Discover Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per nd instance information. There is + // only one instance of nd running in the system today + container inst-items { + + uses nd_Inst-group; + description "Neighbor Discovery Instance"; + } + } + + grouping nd_Inst-group { + description "Neighbor Discovery Instance"; + + // Solicitated neighbor advertisement + leaf solicitNghbrAdvertisement { + + type nw_AdminSt; + default "disabled"; + description "Solicit neighbor advertisement"; + } + + // Solicitated neighbor advertisement with complete entry + leaf acceptSolicitNghbrEntry { + + type nd_SolicitAcceptValue; + description "Accept or no-accept entry in Solicit neighbor advertisement"; + } + + // Solicitated neighbor advertisement Probe value Probe Value as 0 means no-probe + leaf probeIntervalForSolicitNghbr { + + type nd_SolicitProbeValue; + description "Probe interval"; + } + + // Aging timer for nd cached entires + leaf agingInterval { + + type nd_AgingInterval; + description "Aging Interval"; + } + + // Off-list timer for neighbor discovery + leaf offListTimeout { + + type nd_OffListTimeout; + description "Off-list timeout"; + } + + // IPv6 Route Distance + leaf ipv6AdjRouteDistance { + + type nd_adjRouteDist; + description "Ipv6 Adjacency Route Distance"; + } + + // ND Cache Limit + leaf cacheLimit { + + type nd_NdCacheLimit; + description "Cache Limit"; + } + + // ND Cache SysLog Rate + leaf cacheSyslogRate { + + type nd_NdCacheSyslogRate; + description "Cache Syslog Rate"; + } + + // Config error in this MO + leaf configErr { + config "false"; + + type nd_ConfigErrInst; + description "Config error Inst"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // This objects hold per ND domain (vrf) information + container dom-items { + list Dom-list { + key "name"; + + uses nd_Dom-group; + description "Neighbor Discovery Domain list"; + } + description "Neighbor Discovery Domain"; + } + + // Glean throttling helps to discard packets at line card when + // adjacency of the next hop is getting resolved. + // Ref: + // Guide: Cisco Nexus 9000 Series NX-OS Unicast Routing Configuration Guide + // Chapter: Configuring IPv4 + container ipv6gleanthrottle-items { + + uses nd_IpV6Throttle-group; + description "IPV6 throttling"; + } + + // This object holds IPv6 ND Sync for VPC + container vpc-items { + + uses nd_Vpc-group; + description "Ipv6 Nd Synchronize"; + } + + // Ephemeral data + container l2stat-items { + + uses nd_L2Stat-group; + description "L2 Interface Statistics"; + } + + // Ephemeral data + container offliststat-items { + + // Ephemeral data + list OffListVlan-list { + config "false"; + key "vlanId addr"; + + uses nd_OffListVlan-group; + description "ND offlist vlan statistics list"; + } + description "ND offlist vlan statistics"; + } + + // Ephemeral data + container proxystat-items { + + uses nd_ProxyStat-group; + description "ND Proxy Statistics"; + } + + // icmpv6 packet counters (global) + // Ephemeral data + container glblpktstats-items { + + uses nd_GlobalTrafficStats-group; + description "ICMPv6/ND global traffic counters"; + } + + // Link Local Global VADDR statistics + // Ephemeral data + container vaddrllstat-items { + + // Ephemeral data + list VaddrLinkLocalStat-list { + config "false"; + key "vAddr"; + + uses nd_VaddrLinkLocalStat-group; + description "ICMPv6/ND link local vaddr statistics list"; + } + description "ICMPv6/ND link local vaddr statistics"; + } + + // Ephemeral data + container vpcstat-items { + + uses nd_VPCStat-group; + description "ND/ICMPv6 VPC statistics"; + } + } + + grouping nd_Dom-group { + description "Neighbor Discovery Domain"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // ND databases + container db-items { + list Db-list { + config "false"; + key "type"; + + uses nd_Db-group; + description "Database list"; + } + description "Database"; + } + + // This object holds nd information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses nd_If-group; + description "Neighbor Discovery Interface list"; + } + description "Neighbor Discovery Interface"; + } + + // Only Global level VADDR statistics + // Ephemeral data + container vaddrstatglobal-items { + + // Ephemeral data + list VaddrGlobalStat-list { + config "false"; + key "vAddr"; + + uses nd_VaddrGlobalStat-group; + description "ND offlist vlan statistics list"; + } + description "ND offlist vlan statistics"; + } + } + + grouping nd_Db-group { + description "Database"; + + // Type of the repository + leaf type { + config "false"; + + type nd_DbT; + description "Type"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // ND adjacency definitions + container adj-items { + list AdjEp-list { + config "false"; + key "ifId addr"; + + uses nd_AdjEp-group; + description "Adjacency list"; + } + description "Adjacency"; + } + } + + grouping nd_AdjEp-group { + description "Adjacency"; + + // Logical interface that this ep is associated with + leaf ifId { + config "false"; + + type nw_IfId; + description "Logical Interface ID"; + } + + // Operational state + leaf operSt { + config "false"; + + type nd_AdjOperSt; + description "Operational State"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf addr { + config "false"; + type address_Ip; + description "IPv6 address"; + } + + // Mac address + leaf mac { + config "false"; + + type nd_AdjMac; + description "MAC"; + } + } + + grouping nd_If-group { + description "Neighbor Discovery Interface"; + + // Extract next hop MAC address embedded in IPV6 address + leaf macExtract { + + type nd_MacExtract; + description "Extract next hop MAC address"; + } + + // Disable sending RDNSS in + // Router-Advertisement messages + leaf dnsSuppress { + + type nw_AdminSt; + default "disabled"; + description "Do not send RDNSS in router advertisement"; + } + + // Disable sending DNSSL (DNS search-list) in + // Router-Advertisement messages + leaf dnsSearchListSuppress { + + type nw_AdminSt; + default "disabled"; + description "Do not send DNSSL in router advertisement"; + } + + // Disable sending Route Information Options in RA messages + leaf routeSuppress { + + type nw_AdminSt; + default "disabled"; + description "Do Not send Route Information in RA"; + } + + // Set Default Router Preference Value (RFC 4191) + leaf routerPreference { + + type nd_RtPrefForCmd; + default "unspecified"; + description "Set Router Preference (RFC 4191)"; + } + + // Interface controls for: + // redirects, managed-config-flag, other-config-flag, + // supress-ra, supress-ra-mtu + leaf ctrl { + + type nd_IfControl; + description "Controls"; + } + + // Neighbor Solicitation: Sent by a node to determine the + // link-layer address of a neighbor, or to verify that a + // neighbor is still reachable via a cached link-layer + // address. Neighbor Solicitations are also used for + // Duplicate Address Detection. Retransmission interval between IPv6 neighbor + // solication messages + leaf nsIntvl { + + type nd_NsIntvl; + description "Neighbor Solicit Interval"; + } + + // Retransmission retry count sending neighbor + // soliciation messages + // + // Routers send out Router Advertisement messages + // periodically, or in response to Router Solicitations Interval between sending ICMPv6 router advertisement + // messages + leaf raIntvl { + + type nd_RaIntvl; + description "Router Advertisement Interval"; + } + + // Interval between RA transmissions minimum + leaf raIntvlMin { + + type nd_RaIntvlMin; + description "Router Advertisement Interval Minimum"; + } + + // Router Advertisement (RA) messages also contain Internet + // parameters such as the hop limit that hosts should + // use in outgoing packets and, optionally, link parameters + // such as the link MTU. This facilitates centralized + // administration of critical parameters that can be set on + // routers and automatically propagated to all attached + // hosts Hop limit + leaf hopLimit { + + type nd_HopLimit; + description "Hop limit"; + } + + // Link MTU (sent in RA message) + leaf mtu { + + type nd_Mtu; + description "MTU"; + } + + // Router Lifetime. The lifetime associated with the + // default router in units of seconds. + leaf raLifetime { + + type nd_RaLifetime; + description "Router Advertisement lifetime"; + } + + leaf defaultRaLifetime { + + type nw_AdminSt; + description "Default RA Lifetime enabled"; + } + + // Reachable time. The time, in milliseconds, that a + // node assumes a neighbor is reachable after having + // received a reachability confirmation. Used by the + // Neighbor Unreachability Detection algorithm + leaf reachableTime { + + type nd_ReachableTime; + description "Reachable time"; + } + + // Retransmit timer. The time, in milliseconds, between + // retransmitted Neighbor Solicitation messages. Used + // by address resolution and the Neighbor Unreachability + // Detection algorithm. A value of zero means unspecified + // (by this router) + leaf retransTimer { + + type nd_RetransTimer; + description "Retransmit timer"; + } + + // Duplicate address detection attempts limit + leaf dadAttempts { + + type nd_DadAttempts; + description "Dad attempts"; + } + + // Discover host from DADNS + leaf dadnsInterval { + + type nd_DadnsInverval; + description "Dadns interval"; + } + + // To Handle the config fault for this MO + leaf configError { + config "false"; + + type nd_ConfigErr; + default "noerror"; + description "Config error"; + } + + // Delete adj on mac delete notif without probe + leaf delAdjOnMacDel { + + type nw_AdminSt; + default "disabled"; + description "Delete adj on mac delete notif without probe"; + } + leaf bootFileUrl { + type string { + length "0..128"; + } + description "The URL for a boot file in string"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Static ND adjacency definitions + container sadj-items { + list StAdjEp-list { + config "false"; + key "addr"; + + uses nd_StAdjEp-group; + description "ND Static Adjacency list"; + } + description "ND Static Adjacency"; + } + + // DNS Search-list statistics + // Ephemeral data + container dnsslif-items { + + uses nd_DNSIfSearchListStats-group; + description "ND interface DNS statistics"; + } + + // DNS Server statistics + // Ephemeral data + container dnsstat-items { + + uses nd_DNSIfStats-group; + description "ND interface DNS statistics"; + } + + // This object holds all IPv6 ND Routes as children + container routes-items { + + uses nd_IfRoutes-group; + description "Ipv6 Nd Route All"; + } + + // This object holds IPv6 ICMP Neighbor oper related properties + // Ephemeral data + container ngbrdata-items { + + // Ephemeral data + list NeighborData-list { + config "false"; + key "ngbrAddr"; + + uses nd_NeighborData-group; + description "IPv6 ICMP Neighbor Data list"; + } + description "IPv6 ICMP Neighbor Data"; + } + container ndlocalproxy-items { + list NdLocalProxy-list { + key "prefix"; + + uses nd_NdLocalProxy-group; + description "IPv6 ND Local Proxy With No Hardware Flooding list"; + } + description "IPv6 ND Local Proxy With No Hardware Flooding"; + } + + // A list of prefixes to be placed in Prefix Information + // options in Router Advertisement messages sent from the + // interface. + container pfx-items { + list Pfx-list { + key "addr"; + + uses nd_Pfx-group; + description "Prefix to be advertised list"; + } + description "Prefix to be advertised"; + } + + container defpfx-items { + + uses nd_DefaultPrefix-group; + description "Default Prefix to be advertised"; + } + + // ND DNS Server + container dns-items { + list RouteAdvDNSServer-list { + key "dnsServerAddr dnsSequenceNum"; + + uses nd_RouteAdvDNSServer-group; + description "Route advertisement DNS server list"; + } + description "Route advertisement DNS server"; + } + + // ND DNS Search List + container dnssl-items { + list RouteAdvDNSSearchList-list { + key "dnsSearchListName dnsSequenceNum"; + + uses nd_RouteAdvDNSSearchList-group; + description "Route advertisement DNS search list list"; + } + description "Route advertisement DNS search list"; + } + + // Ephemeral data + container rtrstat-items { + + // Ephemeral data + list RouterStat-list { + config "false"; + key "routerAddr"; + + uses nd_RouterStat-group; + description "Router statistics list"; + } + description "Router statistics"; + } + + // Interface statistics ND packet counters (per-i/f) + // Ephemeral data + container ifstats-items { + + uses nd_IfStats-group; + description "interface statistics"; + } + + // VADDR Statistics per i/f for specific client + // Ephemeral data + container vaddrstat-items { + + // Ephemeral data + list VaddrStat-list { + config "false"; + key "vaddrProto"; + + uses nd_VaddrStat-group; + description "ND VADDR statistics list"; + } + description "ND VADDR statistics"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping nd_StAdjEp-group { + description "ND Static Adjacency"; + + // Operational state + leaf operSt { + config "false"; + + type nd_StAdjOperSt; + description "Operational State"; + } + + // Operational state qualifier + leaf operStQual { + config "false"; + + type nd_StAdjOperStQual; + description "Operational State Qualifier"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf addr { + config "false"; + type address_Ip; + description "IPv6 address"; + } + + // Mac address + leaf mac { + config "false"; + + type nd_AdjMac; + description "MAC"; + } + + container rtfvEpDefRefToStAdjEpV6-items { + + list RtFvEpDefRefToStAdjEpV6-list { + config "false"; + key "tDn"; + + uses fv_RtFvEpDefRefToStAdjEpV6_target-group; + } + } + } + + grouping nd_DNSIfSearchListStats-group { + description "ND interface DNS statistics"; + + // Ephemeral data + leaf dnsSearchListSuppress { + config "false"; + type boolean; + description "ND DNS search-list suppress"; + } + + // Ephemeral data + container server-items { + + // Ephemeral data + list DNSSearchListStats-list { + config "false"; + key "dnsSearchList"; + + uses nd_DNSSearchListStats-group; + description "ND DNS search-list statistics list"; + } + description "ND DNS search-list statistics"; + } + } + + grouping nd_DNSSearchListStats-group { + description "ND DNS search-list statistics"; + + // Ephemeral data + leaf dnsSearchList { + config "false"; + type string; + description "ND DNS search-list name"; + } + + // Ephemeral data + leaf dnsSearchListLife { + config "false"; + type uint32; + description "ND DNS search-list lifetime"; + } + + // Ephemeral data + leaf dnsSearchListSeq { + config "false"; + type uint32; + description "ND DNS search-list sequence no"; + } + } + + grouping nd_DNSIfStats-group { + description "ND interface DNS statistics"; + + // Ephemeral data + leaf dnsServerSuppress { + config "false"; + type boolean; + description "ND DNS server suppress"; + } + + // Ephemeral data + container server-items { + + // Ephemeral data + list DNSServerStats-list { + config "false"; + key "addr"; + + uses nd_DNSServerStats-group; + description "ND DNS server statistics list"; + } + description "ND DNS server statistics"; + } + } + + grouping nd_DNSServerStats-group { + description "ND DNS server statistics"; + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "ND DNS server name"; + } + + // Ephemeral data + leaf dnsServerLife { + config "false"; + type uint32; + description "ND DNS server lifetime"; + } + + // Ephemeral data + leaf dnsServerSeq { + config "false"; + type uint32; + description "ND DNS server sequence no"; + } + } + + grouping nd_IfRoutes-group { + description "Ipv6 Nd Route All"; + + // This object holds IPv6 ND Route command related properties + container rt-items { + list Route-list { + key "ndRouteAddr"; + + uses nd_Route-group; + description "Ipv6 Nd Route (specific) list"; + } + description "Ipv6 Nd Route (specific)"; + } + } + + grouping nd_Route-group { + description "Ipv6 Nd Route (specific)"; + leaf ndRouteAddr { + type address_Ip; + description "Nd Route IPv6 address"; + } + + // Nd Route Life Time + leaf ndRouteLifeTime { + + type nd_NdRtLifeTime; + description "Nd Route life time"; + } + + // Nd Route Infinite Life Time + leaf ndRouteLifeTimeInfinite { + + type nw_AdminSt; + default "disabled"; + description "Nd Route life time infinite"; + } + + // Set Default Route Preference Value for ND Route (RFC 4191) + leaf routePreference { + + type nd_RtPrefForNdRt; + description "Set Route Preference for ND Route (RFC 4191)"; + } + + // Verify if route is present in Route table + leaf verifyReachability { + + type nw_AdminSt; + default "disabled"; + description "Verify if route is present in Route table"; + } + } + + grouping nd_NeighborData-group { + description "IPv6 ICMP Neighbor Data"; + + // Ephemeral data + leaf ngbrAddr { + config "false"; + type address_Ip; + description "IPv6 ICMP Neighbor Address"; + } + + // Ephemeral data + leaf ngbrAge { + config "false"; + type string; + description "IPv6 ICMP Neighbor Age"; + } + + // Ephemeral data + leaf ngbrMac { + config "false"; + type address_Mac; + description "IPv6 ICMP Neighbor MAC"; + } + + // Ephemeral data + leaf ngbrState { + config "false"; + type string; + description "IPv6 ICMP Neighbor State"; + } + + // IPv6 ICMP Neighbor Interface + // Ephemeral data + leaf ngbrInterface { + config "false"; + + type nw_IfId; + description "IPv6 ICMP Neighbor Interface"; + } + + // IPv6 ICMP Neighbor Physical Interface + // Ephemeral data + leaf ngbrPhyInterface { + config "false"; + + type nw_IfId; + description "IPv6 ICMP Neighbor Physical Interface"; + } + + // Ephemeral data + leaf ngbrSyncedViaCFSoE { + config "false"; + type boolean; + description "IPv6 ICMP Adjacency Synced Via CFSoE"; + } + + // Ephemeral data + leaf ngbrThrottledViaGlean { + config "false"; + type boolean; + description "IPv6 ICMP Adjacency Throttled For Glean"; + } + } + + grouping nd_NdLocalProxy-group { + description "IPv6 ND Local Proxy With No Hardware Flooding"; + leaf prefix { + type address_Ip; + description "Prefix"; + } + } + + grouping nd_Pfx-group { + description "Prefix to be advertised"; + leaf addr { + type address_Ip; + description "Prefix address"; + } + + // Valid lifetime of the prefix @@@ (0xffffffff == infinite) + leaf lifetime { + + type nd_Lifetime; + description "Valid Lifetime"; + } + + // Preferred lifetime of the prefix @@@ (0xffffffff == infinite) + leaf prefLifetime { + + type nd_PrefLifetime; + description "Preferred Lifetime"; + } + + // RA prefix Controls + leaf ctrl { + + type nd_PfxControl; + description "Prefix Controls"; + } + } + + grouping nd_DefaultPrefix-group { + description "Default Prefix to be advertised"; + + // Default prefix + leaf defPrefix { + + type nw_AdminSt; + description "Default prefix"; + } + + // Valid lifetime of the prefix default + leaf defLifetime { + + type nd_Lifetime; + description "Valid lifetime for default prefix"; + } + + // Preferred lifetime of the prefix default + leaf defPrefLifetime { + + type nd_PrefLifetime; + description "Preferred lifetime for default prefix"; + } + + // Default RA prefix Controls + leaf ctrl { + + type nd_PfxControl; + description "Prefix Controls"; + } + } + + grouping nd_RouteAdvDNSServer-group { + description "Route advertisement DNS server"; + leaf dnsServerAddr { + type address_Ip; + description "DNS server IPv6 address"; + } + + // DNS Server Life Time + // Default value handled in local MO type + leaf dnsServerLifeTime { + + // Type is a Local-MO-Defined-Type + type nd_DNSServerLifeTime_RouteAdvDNSServer_dnsServerLifeTime; + description "DNS server life time"; + } + + // DNS Server Infinite Life Time + leaf dnsServerLifeTimeInfinite { + + type nw_AdminSt; + default "disabled"; + description "DNS server life time infinite"; + } + + // DNS Server Sequence Number + leaf dnsSequenceNum { + + type nd_DNSSeqNum; + description "DNS server sequence number"; + } + + // Flag to indicate if dns server is configured or not + leaf dnsServer { + + type nw_AdminSt; + default "disabled"; + description "IPv6 nd ra DNS server"; + } + } + + grouping nd_RouteAdvDNSSearchList-group { + description "Route advertisement DNS search list"; + leaf dnsSearchListName { + type string; + description "DNS search list name"; + } + + // DNS Search List Life Time + // Default value handled in local MO type + leaf dnsSearchListLifeTime { + + // Type is a Local-MO-Defined-Type + type nd_DNSServerLifeTime_RouteAdvDNSSearchList_dnsSearchListLifeTime; + description "DNS search list life time"; + } + + // DNS Search List Infinite Life Time + leaf dnsSearchListLifeTimeInfinite { + + type nw_AdminSt; + default "disabled"; + description "DNS search list life time infinite"; + } + + // DNS Search List Sequence Number + leaf dnsSequenceNum { + + type nd_DNSSeqNum; + description "DNS search list sequence number"; + } + + // Flag to indicate if dns search list is configured or not + leaf dnssl { + + type nw_AdminSt; + default "disabled"; + description "IPv6 nd ra DNS search list"; + } + } + + grouping nd_RouterStat-group { + description "Router statistics"; + + // Ephemeral data + leaf routerAddr { + config "false"; + type address_Ip; + } + + // Ephemeral data + leaf ifName { + config "false"; + type string; + description "Router address associated with nterface"; + } + + // Ephemeral data + leaf lastUpdateTime { + config "false"; + type decimal64 { + fraction-digits 6; + } + description "Last update time"; + } + + // Ephemeral data + leaf hopLimit { + config "false"; + type uint32; + description "Current hop limit"; + } + + // Ephemeral data + leaf lifetime { + config "false"; + type uint32; + description "Current lifetime"; + } + + // Ephemeral data + leaf addrFlag { + config "false"; + type uint16; + description "Addr flag"; + } + + // Ephemeral data + leaf otherFlag { + config "false"; + type uint16; + description "Other flag"; + } + + // Ephemeral data + leaf mtu { + config "false"; + type uint16; + description "Mtu"; + } + + // Ephemeral data + leaf homeagentFlag { + config "false"; + type uint16; + description "Homeagent flag"; + } + + // Ephemeral data + leaf preference { + config "false"; + + type nd_RouterPreference; + description "Preference flag"; + } + + // Ephemeral data + leaf reachableTime { + config "false"; + type uint64; + description "Reachable time"; + } + + // Ephemeral data + leaf retransmissionTime { + config "false"; + type uint64; + description "Retransmission time"; + } + + // Ephemeral data + container pfxstat-items { + + // Ephemeral data + list RaPrefixStat-list { + config "false"; + key "prefixAddr"; + + uses nd_RaPrefixStat-group; + description "RA prefix statistics list"; + } + description "RA prefix statistics"; + } + } + + grouping nd_RaPrefixStat-group { + description "RA prefix statistics"; + + // Ephemeral data + leaf prefixAddr { + config "false"; + type address_Ip; + description "Prefix address"; + } + + // Ephemeral data + leaf onlinkFlag { + config "false"; + type boolean; + description "Onlink flag"; + } + + // Ephemeral data + leaf autonomousFlag { + config "false"; + type boolean; + description "Autonomous flag"; + } + + // Ephemeral data + leaf validLifetime { + config "false"; + type uint64; + description "Valid lifetime"; + } + + // Ephemeral data + leaf prefLifetime { + config "false"; + type uint32; + description "preferred lifetime"; + } + } + + grouping nd_IfStats-group { + description "interface statistics"; + + // Total Messages sent @@@ ICMPV6_PKT_MSGS_SNT_CNT + // Ephemeral data + leaf totSent { + config "false"; + + type nw_Counter64; + description "Total messages sent"; + } + + // Total Messages received @@@ ICMPV6_PKT_MSGS_RECV_CNT + // Ephemeral data + leaf totRvcd { + config "false"; + + type nw_Counter64; + description "Total messages received"; + } + + // Error Messages sent @@@ ICMPV6_PKT_ERR_SNT_CNT + // Ephemeral data + leaf errSent { + config "false"; + + type nw_Counter64; + description "Error messages sent"; + } + + // Error Messages received @@@ ICMPV6_PKT_ERR_RECV_CNT + // Ephemeral data + leaf errRcvd { + config "false"; + + type nw_Counter64; + description "Error messages received"; + } + + // Interface Down Drop Count sent @@@ ICMPV6_PKT_SNT_DROP_IF_DOWN_CNT + // Ephemeral data + leaf ifDownDropSent { + config "false"; + + type nw_Counter64; + description "Interface Down Drop Count sent"; + } + + // Interface Down Drop Count received @@@ ICMPV6_PKT_RECV_DROP_IF_DOWN_CNT + // Ephemeral data + leaf ifDownDropRcvd { + config "false"; + + type nw_Counter64; + description "Interface Down Drop Count received"; + } + + // Adjacency not recovered from AM after HA @@@ ICMPV6_PKT_DROPPED_HA_NOT_READY + // Ephemeral data + leaf dropHaNotRdy { + config "false"; + + type nw_Counter64; + description "Adjacency not recovered from AM after HA"; + } + + // Pkts allowed due to inv ttl on vPC-MCT @@@ ICMPV6_PKT_ALLOW_MCT_TTL_CNT + // Ephemeral data + leaf dropInvldTtlMct { + config "false"; + + type nw_Counter64; + description "Pkts allowed due to inv ttl on vPC-MCT"; + } + + // Pkts dropped as source mac addr is own @@@ ICMPV6_PKT_RECV_DROP_OWN_SRC_MAC_COUNT + // Ephemeral data + leaf dropSrcMacOwnRcvd { + config "false"; + + type nw_Counter64; + description "Pkts dropped as source mac addr is own"; + } + + // Pkts dropped as tgt ip addr is not own @@@ ICMPV6_PKT_RECV_DROP_TARGET_NOT_US_COUNT + // Ephemeral data + leaf dropTgtIpNotOwnRcvd { + config "false"; + + type nw_Counter64; + description "Pkts dropped as tgt ip addr is not own"; + } + + // Pkts dropped as src ip addr is not own @@@ ICMPV6_PKT_RECV_DROP_SRC_NOT_US_COUNT + // Ephemeral data + leaf dropSrcIpNotOwnRcvd { + config "false"; + + type nw_Counter64; + description "Pkts dropped as src ip addr is not own"; + } + + // Destination Unreachables sent @@@ ICMPV6_PKT_DEST_UNREACHS_SNT_CNT + // Ephemeral data + leaf destUnreachSent { + config "false"; + + type nw_Counter64; + description "Destination Unreachables sent"; + } + + // Destination Unreachables received @@@ ICMPV6_PKT_DEST_UNREACHS_RECV_CNT + // Ephemeral data + leaf destUnreachRcvd { + config "false"; + + type nw_Counter64; + description "Destination Unreachables received"; + } + + // Administratively Prohibited sent @@@ ICMPV6_PKT_ADMIN_PROHIBS_SNT_CNT + // Ephemeral data + leaf adminProhibSent { + config "false"; + + type nw_Counter64; + description "Administratively Prohibited sent"; + } + + // Administratively Prohibited received @@@ ICMPV6_PKT_ADMIN_PROHIBS_RECV_CNT + // Ephemeral data + leaf adminProhibRcvd { + config "false"; + + type nw_Counter64; + description "Administratively Prohibited received"; + } + + // Time Exceeded sent @@@ ICMPV6_PKT_TIME_EXCDS_SNT_CNT + // Ephemeral data + leaf timeExcdSent { + config "false"; + + type nw_Counter64; + description "Time Exceeded sent "; + } + + // Time Exceeded received @@@ ICMPV6_PKT_TIME_EXCDS_RECV_CNT + // Ephemeral data + leaf timeExcdRcvd { + config "false"; + + type nw_Counter64; + description "Time Exceeded received"; + } + + // Parameter Problems sent @@@ ICMPV6_PKT_PARM_PROBS_SNT_CNT + // Ephemeral data + leaf parmPrblmSent { + config "false"; + + type nw_Counter64; + description "Parameter Problems sent"; + } + + // Parameter Problems received @@@ ICMPV6_PKT_PARM_PROBS_RECV_CNT + // Ephemeral data + leaf parmPrblmRcvd { + config "false"; + + type nw_Counter64; + description "Parameter Problems received"; + } + + // Echo Request sent @@@ ICMPV6_PKT_ECHOS_SNT_CNT + // Ephemeral data + leaf echoReqSent { + config "false"; + + type nw_Counter64; + description "Echo Request sent"; + } + + // Echo Request received @@@ ICMPV6_PKT_ECHOS_RECV_CNT + // Ephemeral data + leaf echoReqRcvd { + config "false"; + + type nw_Counter64; + description "Echo Request received"; + } + + // Echo Replies sent @@@ ICMPV6_PKT_ECHO_REPLIES_SNT_CNT + // Ephemeral data + leaf echoRepSent { + config "false"; + + type nw_Counter64; + description "Echo Replies sent"; + } + + // Echo Replies received @@@ ICMPV6_PKT_ECHO_REPLIES_RECV_CNT + // Ephemeral data + leaf echoRepRcvd { + config "false"; + + type nw_Counter64; + description "Echo Replies received"; + } + + // Redirects sent @@@ ICMPV6_PKT_REDIRECTS_SNT_CNT + // Ephemeral data + leaf redirSent { + config "false"; + + type nw_Counter64; + description "Redirects sent"; + } + + // Redirects received @@@ ICMPV6_PKT_REDIRECTS_RECV_CNT + // Ephemeral data + leaf redirRcvd { + config "false"; + + type nw_Counter64; + description "Redirects received"; + } + + // Packet Too Big sent @@@ ICMPV6_PKT_TOO_BIG_SNT_CNT + // Ephemeral data + leaf tooBigSent { + config "false"; + + type nw_Counter64; + description "Packet Too Big sent"; + } + + // Packet Too Big received @@@ ICMPV6_PKT_TOO_BIG_RECV_CNT + // Ephemeral data + leaf tooBigRcvd { + config "false"; + + type nw_Counter64; + description "Packet Too Big received"; + } + + // Router Advertisements sent @@@ ICMPV6_PKT_ROUTER_ADV_SNT_CNT + // Ephemeral data + leaf raSent { + config "false"; + + type nw_Counter64; + description "Router Advertisements sent"; + } + + // Router Advertisements received @@@ ICMPV6_PKT_ROUTER_ADV_RECV_CNT + // Ephemeral data + leaf raRcvd { + config "false"; + + type nw_Counter64; + description "Router Advertisements received"; + } + + // Router Solicitations sent @@@ ICMPV6_PKT_ROUTER_SOLICITS_SNT_CNT + // Ephemeral data + leaf rsSent { + config "false"; + + type nw_Counter64; + description "Router Solicitations sent"; + } + + // Router Solicitations received @@@ ICMPV6_PKT_ROUTER_SOLICITS_RECV_CNT + // Ephemeral data + leaf rsRcvd { + config "false"; + + type nw_Counter64; + description "Router Solicitations received"; + } + + // Neighbor Advertisements sent @@@ ICMPV6_PKT_NEIGHBOR_ADV_SNT_CNT + // Ephemeral data + leaf naSent { + config "false"; + + type nw_Counter64; + description "Neighbor Advertisements sent"; + } + + // Neighbor Advertisements received @@@ ICMPV6_PKT_NEIGHBOR_ADV_RECV_CNT + // Ephemeral data + leaf naRcvd { + config "false"; + + type nw_Counter64; + description "Neighbor Advertisements received"; + } + + // Neighbor Solicitations sent @@@ ICMPV6_PKT_NEIGHBOR_SOLICITS_SNT_CNT + // Ephemeral data + leaf nsSent { + config "false"; + + type nw_Counter64; + description "Neighbor Solicitations sent"; + } + + // Neighbor Solicitations received @@@ ICMPV6_PKT_NEIGHBOR_SOLICITS_RECV_CNT + // Ephemeral data + leaf nsRcvd { + config "false"; + + type nw_Counter64; + description "Neighbor Solicitations received"; + } + + // Duplicate router RA received @@@ ICMPV6_PKT_DUP_ROUTER + // Ephemeral data + leaf dupRAReceived { + config "false"; + + type nw_Counter64; + description "Duplicate router RA received"; + } + + // Fastpath Packets @@@ ICMPV6_PKT_FASTPATH_RECV_CNT + // Ephemeral data + leaf fastpthRcvd { + config "false"; + + type nw_Counter64; + description "Fastpath Packets"; + } + + // Ignored Fastpath Packets - Fastpath disabled @@@ ICMPV6_PKT_RECV_DROP_FASTPATH_DISABLED_CNT + // Ephemeral data + leaf fastpathDsbleIgnRcvd { + config "false"; + + type nw_Counter64; + description "Ignored Fastpath Packets - Fastpath disabled"; + } + + // Ignored Fastpath Packets - others @@@ ICMPV6_PKT_RECV_DROP_REQUEST_IGNORE_CNT + // Ephemeral data + leaf fastpathOtherIgnRcvd { + config "false"; + + type nw_Counter64; + description "Ignored fastpath packets - others"; + } + + // Ephemeral data + leaf lastNghbrSolicitSent { + config "false"; + type string; + description "Last neighbor solicitation sent"; + } + + // Ephemeral data + leaf lastNghbrAdvertisementSent { + config "false"; + type string; + description "Last neighbor advertisement sent"; + } + + // Ephemeral data + leaf lastRouterAdvertisementSent { + config "false"; + type string; + description "Last router advertisement sent"; + } + + // Ephemeral data + leaf nextRouterAdvertisementSent { + config "false"; + type string; + description "Next neighbor advertisement sent"; + } + + // Ephemeral data + leaf nsRetransmitInterval { + config "false"; + type uint64; + description "NS retransmit interval"; + } + + // Ephemeral data + leaf ndNudRetryBase { + config "false"; + type uint64; + description "ND NUD retry base"; + } + + // Ephemeral data + leaf ndNudRetryInterval { + config "false"; + type uint64; + description "ND NUD retry interval"; + } + + // Ephemeral data + leaf ndNudRetryAttemps { + config "false"; + type uint64; + description "ND NUD retry attempts"; + } + + // Ephemeral data + leaf sendRedirect { + config "false"; + type boolean; + description "Error send redirects"; + } + + // Ephemeral data + leaf redirectCause { + config "false"; + type uint64; + description "Error redirect cause"; + } + + // Ephemeral data + leaf sendUnreachables { + config "false"; + type boolean; + description "ND NUD retry interval"; + } + + // Ephemeral data + leaf maxDadAttempts { + config "false"; + type uint16; + description "Maximum DAD attempts"; + } + + // Ephemeral data + leaf currentDadAttempt { + config "false"; + type uint16; + description "Current DAD attempt"; + } + + // Ephemeral data + leaf ifState { + config "false"; + type string; + description "Interface state"; + } + + // Ephemeral data + leaf ifAddr { + config "false"; + type string; + description "Interface IPv6 address/s"; + } + + // Ephemeral data + leaf linkLocalAddr { + config "false"; + type string; + description "IPv6 link local address"; + } + + // Ephemeral data + leaf linkLocalAddrState { + config "false"; + type string; + description "IPv6 address state"; + } + + // Ephemeral data + leaf ndMacExtractState { + config "false"; + type string; + description "ND mac-extract state"; + } + + // Ephemeral data + leaf statsLastReset { + config "false"; + type string; + description "Interface statistics last reset"; + } + + // Vinci specific: Proxy NA count @@@ ICMPV6_PKT_PROXY_NA_CNT + // Ephemeral data + leaf proxyNaCount { + config "false"; + + type nw_Counter64; + description "Proxy NA count"; + } + + // Vinci specific: Proxy NA to BD count @@@ ICMPV6_PKT_FLOOD_BACK_TO_BD_NA + // Ephemeral data + leaf proxyNaToBdCount { + config "false"; + + type nw_Counter64; + description "Proxy NA to BD count"; + } + + // Vinci specific: Proxy NS to BD count @@@ ICMPV6_PKT_FLOOD_BACK_TO_BD_NS + // Ephemeral data + leaf proxyNsToBdCount { + config "false"; + + type nw_Counter64; + description "Proxy NS to BD count"; + } + + // Vinci specific: RARP NS Count @@@ ICMPV6_PKT_NS_SENT_FOR_RARP_CASE + // Ephemeral data + leaf rarpNsCount { + config "false"; + + type nw_Counter64; + description "RARP NS count"; + } + + // Ephemeral data + container ra-items { + + uses nd_RouterAdv-group; + description "Router advertisement"; + } + + // Ephemeral data + container vip-items { + + uses nd_IfVipClientStats-group; + description "Interface virtual client"; + } + + // Ephemeral data + container addr-items { + + // Ephemeral data + list IfIPv6AddrStats-list { + config "false"; + key "addr"; + + uses nd_IfIPv6AddrStats-group; + description "Interface address list"; + } + description "Interface address"; + } + + // Ephemeral data + container pfx-items { + + // Ephemeral data + list PrefixStats-list { + config "false"; + key "addr"; + + uses nd_PrefixStats-group; + description "prefix statistics list"; + } + description "prefix statistics"; + } + + // Ephemeral data + container rt-items { + + // Ephemeral data + list RouteStats-list { + config "false"; + key "addr"; + + uses nd_RouteStats-group; + description "interface nd route statistics list"; + } + description "interface nd route statistics"; + } + + // Ephemeral data + container addrtree-items { + + // Ephemeral data + list AddrTreeStats-list { + config "false"; + key "addr"; + + uses nd_AddrTreeStats-group; + description "Address tree statistics list"; + } + description "Address tree statistics"; + } + } + + grouping nd_RouterAdv-group { + description "Router advertisement"; + + // Ephemeral data + leaf raInterval { + config "false"; + type uint64; + description "Router advertisement interval"; + } + + // Ephemeral data + leaf raIntervalMin { + config "false"; + type uint64; + description "Router advertisement minimum interval"; + } + + // Ephemeral data + leaf mFlag { + config "false"; + type boolean; + description "Managed address configuration flag"; + } + + // Ephemeral data + leaf oFlag { + config "false"; + type boolean; + description "Other stateful configuration flag"; + } + + // Ephemeral data + leaf hopLimit { + config "false"; + type uint64; + description "Current hop limit"; + } + + // Ephemeral data + leaf mtu { + config "false"; + type uint64; + description "MTU"; + } + + // Ephemeral data + leaf routerLifetime { + config "false"; + type uint64; + description "Router lifetime"; + } + + // Ephemeral data + leaf reachableTime { + config "false"; + type uint64; + description "Reachable time"; + } + + // Ephemeral data + leaf retransmitTime { + config "false"; + type uint64; + description "Retransmit time"; + } + + // Ephemeral data + leaf suppressRa { + config "false"; + type boolean; + description "Suppress RA"; + } + + // Ephemeral data + leaf suppressRaMtu { + config "false"; + type boolean; + description "Suppress RA MTU"; + } + } + + grouping nd_IfVipClientStats-group { + description "Interface virtual client"; + + // Ephemeral data + container vipaddr-items { + + // Ephemeral data + list IfVipAddrStats-list { + config "false"; + key "addr"; + + uses nd_IfVipAddrStats-group; + description "Interface virtual address list"; + } + description "Interface virtual address"; + } + } + + grouping nd_IfVipAddrStats-group { + description "Interface virtual address"; + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "Virtual IPv6 address"; + } + + // Ephemeral data + leaf lastNghbrSolicitSent { + config "false"; + type string; + description "Last neighbor solicitation sent"; + } + + // Ephemeral data + leaf lastNghbrAdvertisementSent { + config "false"; + type string; + description "Last neighbor advertisement sent"; + } + + // Ephemeral data + leaf lastRouterAdvertisementSent { + config "false"; + type string; + description "Last router advertisement sent"; + } + + // Ephemeral data + leaf nextRouterAdvertisementSent { + config "false"; + type string; + description "Next neighbor advertisement sent"; + } + } + + grouping nd_IfIPv6AddrStats-group { + description "Interface address"; + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "IPv6 address"; + } + + // Ephemeral data + leaf addrState { + config "false"; + type string; + description "IPv6 address state"; + } + } + + grouping nd_PrefixStats-group { + description "prefix statistics"; + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "Prefix address"; + } + + // Ephemeral data + leaf maskLen { + config "false"; + type uint16; + description "Mask Length"; + } + + // Ephemeral data + leaf enabled { + config "false"; + type boolean; + description "Address enabled or not"; + } + + // Valid lifetime of the prefix @@@ (0xffffffff == infinite) + // Ephemeral data + leaf lifetime { + config "false"; + + type nd_Lifetime; + description "Valid Lifetime"; + } + + // Preferred lifetime of the prefix @@@ (0xffffffff == infinite) + // Ephemeral data + leaf prefLifetime { + config "false"; + + type nd_Lifetime; + description "Preferred Lifetime"; + } + + // Ephemeral data + leaf onLink { + config "false"; + type boolean; + description "ND prefix on-link"; + } + + // Ephemeral data + leaf offLink { + config "false"; + type boolean; + description "ND prefix off-link"; + } + + // Ephemeral data + leaf autonomous { + config "false"; + type boolean; + description "ND prefix autonomous"; + } + + // Ephemeral data + leaf rtrAddr { + config "false"; + type boolean; + description "ND prefix rtr-address"; + } + + // Ephemeral data + leaf ifAssignedAddr { + config "false"; + type boolean; + description "nd prefix interface assigned address"; + } + + // Ephemeral data + leaf refCount { + config "false"; + type uint32; + description "nd prefix reference count"; + } + } + + grouping nd_RouteStats-group { + description "interface nd route statistics"; + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "Route address"; + } + + // Ephemeral data + leaf routePreference { + config "false"; + + type nd_RouterPreference; + description "Route Preference"; + } + + // Valid lifetime of the prefix @@@ (0xffffffff == infinite) + // Ephemeral data + leaf routeLifetime { + config "false"; + + type nd_OperNdRtLifeTime; + description "Route Lifetime"; + } + + // Ephemeral data + leaf octetUnits { + config "false"; + type uint32; + description "Route Info Option TLV len(units of octects)"; + } + + // Ephemeral data + leaf verifyReachability { + config "false"; + type boolean; + description "Reachability-verify"; + } + + // Ephemeral data + leaf advRouteInRoute { + config "false"; + type boolean; + description "Adv route in Route Info Option"; + } + + // Ephemeral data + leaf advRouteWithZeroLifetime { + config "false"; + type boolean; + description "Adv route with zero lifetime"; + } + } + + grouping nd_AddrTreeStats-group { + description "Address tree statistics"; + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "IPv6 address"; + } + + // Ephemeral data + leaf maskLen { + config "false"; + type uint8; + description "Address mask length"; + } + + // Ephemeral data + leaf addrType { + config "false"; + + type nd_AddrType; + description "IPv6 address"; + } + + // Ephemeral data + leaf dadState { + config "false"; + type string; + description "Dad state"; + } + + // Ephemeral data + leaf dadAttempt { + config "false"; + type uint16; + description "Dad attempt"; + } + } + + grouping nd_VaddrStat-group { + description "ND VADDR statistics"; + + // Ephemeral data + leaf vaddrProto { + config "false"; + type string; + description "VADDR protocol"; + } + + // Ephemeral data + leaf groupId { + config "false"; + type uint16; + description "Group id"; + } + + // Ephemeral data + leaf clientUUID { + config "false"; + type uint32; + description "client UUID"; + } + + // Ephemeral data + leaf clientState { + config "false"; + + type nd_VaddrClientState; + description "Client state"; + } + + // Ephemeral data + leaf clientInUse { + config "false"; + type uint16; + description "Client in use"; + } + + // Ephemeral data + leaf clientActiveState { + config "false"; + type string; + description "Client active or not"; + } + leaf interface { + config "false"; + type string; + description "Interface"; + } + leaf context { + config "false"; + type string; + description "Context Name (context-id)"; + } + + // VADDR Statistics per i/f for + // specific client(protocol) -> VIP addr + // Ephemeral data + container vip-items { + + // Ephemeral data + list VaddrStatVip-list { + config "false"; + key "vAddr"; + + uses nd_VaddrStatVip-group; + description "VIP statistics list"; + } + description "VIP statistics"; + } + } + + grouping nd_VaddrStatVip-group { + description "VIP statistics"; + + // Ephemeral data + leaf vAddr { + config "false"; + type address_Ip; + description "Virtual IPv6 address"; + } + + // Ephemeral data + leaf virtualMac { + config "false"; + type string; + description "Virtual MAC"; + } + + // Total Messages sent @@@ ICMPV6_PKT_MSGS_SNT_CNT + // Ephemeral data + leaf totSent { + config "false"; + + type nw_Counter64; + description "Total messages sent"; + } + + // Total Messages received @@@ ICMPV6_PKT_MSGS_RECV_CNT + // Ephemeral data + leaf totRvcd { + config "false"; + + type nw_Counter64; + description "Total messages received"; + } + + // Error Messages sent @@@ ICMPV6_PKT_ERR_SNT_CNT + // Ephemeral data + leaf errSent { + config "false"; + + type nw_Counter64; + description "Error messages sent"; + } + + // Error Messages received @@@ ICMPV6_PKT_ERR_RECV_CNT + // Ephemeral data + leaf errRcvd { + config "false"; + + type nw_Counter64; + description "Error messages received"; + } + + // Interface Down Drop Count sent @@@ ICMPV6_PKT_SNT_DROP_IF_DOWN_CNT + // Ephemeral data + leaf ifDownDropSent { + config "false"; + + type nw_Counter64; + description "Interface Down Drop Count sent"; + } + + // Interface Down Drop Count received @@@ ICMPV6_PKT_RECV_DROP_IF_DOWN_CNT + // Ephemeral data + leaf ifDownDropRcvd { + config "false"; + + type nw_Counter64; + description "Interface Down Drop Count received"; + } + + // Adjacency not recovered from AM after HA @@@ ICMPV6_PKT_DROPPED_HA_NOT_READY + // Ephemeral data + leaf dropHaNotRdy { + config "false"; + + type nw_Counter64; + description "Adjacency not recovered from AM after HA"; + } + + // Pkts allowed due to inv ttl on vPC-MCT @@@ ICMPV6_PKT_ALLOW_MCT_TTL_CNT + // Ephemeral data + leaf dropInvldTtlMct { + config "false"; + + type nw_Counter64; + description "Pkts allowed due to inv ttl on vPC-MCT"; + } + + // Pkts dropped as source mac addr is own @@@ ICMPV6_PKT_RECV_DROP_OWN_SRC_MAC_COUNT + // Ephemeral data + leaf dropSrcMacOwnRcvd { + config "false"; + + type nw_Counter64; + description "Pkts dropped as source mac addr is own"; + } + + // Pkts dropped as tgt ip addr is not own @@@ ICMPV6_PKT_RECV_DROP_TARGET_NOT_US_COUNT + // Ephemeral data + leaf dropTgtIpNotOwnRcvd { + config "false"; + + type nw_Counter64; + description "Pkts dropped as tgt ip addr is not own"; + } + + // Pkts dropped as src ip addr is not own @@@ ICMPV6_PKT_RECV_DROP_SRC_NOT_US_COUNT + // Ephemeral data + leaf dropSrcIpNotOwnRcvd { + config "false"; + + type nw_Counter64; + description "Pkts dropped as src ip addr is not own"; + } + + // Destination Unreachables sent @@@ ICMPV6_PKT_DEST_UNREACHS_SNT_CNT + // Ephemeral data + leaf destUnreachSent { + config "false"; + + type nw_Counter64; + description "Destination Unreachables sent"; + } + + // Destination Unreachables received @@@ ICMPV6_PKT_DEST_UNREACHS_RECV_CNT + // Ephemeral data + leaf destUnreachRcvd { + config "false"; + + type nw_Counter64; + description "Destination Unreachables received"; + } + + // Administratively Prohibited sent @@@ ICMPV6_PKT_ADMIN_PROHIBS_SNT_CNT + // Ephemeral data + leaf adminProhibSent { + config "false"; + + type nw_Counter64; + description "Administratively Prohibited sent"; + } + + // Administratively Prohibited received @@@ ICMPV6_PKT_ADMIN_PROHIBS_RECV_CNT + // Ephemeral data + leaf adminProhibRcvd { + config "false"; + + type nw_Counter64; + description "Administratively Prohibited received"; + } + + // Time Exceeded sent @@@ ICMPV6_PKT_TIME_EXCDS_SNT_CNT + // Ephemeral data + leaf timeExcdSent { + config "false"; + + type nw_Counter64; + description "Time Exceeded sent "; + } + + // Time Exceeded received @@@ ICMPV6_PKT_TIME_EXCDS_RECV_CNT + // Ephemeral data + leaf timeExcdRcvd { + config "false"; + + type nw_Counter64; + description "Time Exceeded received"; + } + + // Parameter Problems sent @@@ ICMPV6_PKT_PARM_PROBS_SNT_CNT + // Ephemeral data + leaf parmPrblmSent { + config "false"; + + type nw_Counter64; + description "Parameter Problems sent"; + } + + // Parameter Problems received @@@ ICMPV6_PKT_PARM_PROBS_RECV_CNT + // Ephemeral data + leaf parmPrblmRcvd { + config "false"; + + type nw_Counter64; + description "Parameter Problems received"; + } + + // Echo Request sent @@@ ICMPV6_PKT_ECHOS_SNT_CNT + // Ephemeral data + leaf echoReqSent { + config "false"; + + type nw_Counter64; + description "Echo Request sent"; + } + + // Echo Request received @@@ ICMPV6_PKT_ECHOS_RECV_CNT + // Ephemeral data + leaf echoReqRcvd { + config "false"; + + type nw_Counter64; + description "Echo Request received"; + } + + // Echo Replies sent @@@ ICMPV6_PKT_ECHO_REPLIES_SNT_CNT + // Ephemeral data + leaf echoRepSent { + config "false"; + + type nw_Counter64; + description "Echo Replies sent"; + } + + // Echo Replies received @@@ ICMPV6_PKT_ECHO_REPLIES_RECV_CNT + // Ephemeral data + leaf echoRepRcvd { + config "false"; + + type nw_Counter64; + description "Echo Replies received"; + } + + // Redirects sent @@@ ICMPV6_PKT_REDIRECTS_SNT_CNT + // Ephemeral data + leaf redirSent { + config "false"; + + type nw_Counter64; + description "Redirects sent"; + } + + // Redirects received @@@ ICMPV6_PKT_REDIRECTS_RECV_CNT + // Ephemeral data + leaf redirRcvd { + config "false"; + + type nw_Counter64; + description "Redirects received"; + } + + // Packet Too Big sent @@@ ICMPV6_PKT_TOO_BIG_SNT_CNT + // Ephemeral data + leaf tooBigSent { + config "false"; + + type nw_Counter64; + description "Packet Too Big sent"; + } + + // Packet Too Big received @@@ ICMPV6_PKT_TOO_BIG_RECV_CNT + // Ephemeral data + leaf tooBigRcvd { + config "false"; + + type nw_Counter64; + description "Packet Too Big received"; + } + + // Router Advertisements sent @@@ ICMPV6_PKT_ROUTER_ADV_SNT_CNT + // Ephemeral data + leaf raSent { + config "false"; + + type nw_Counter64; + description "Router Advertisements sent"; + } + + // Router Advertisements received @@@ ICMPV6_PKT_ROUTER_ADV_RECV_CNT + // Ephemeral data + leaf raRcvd { + config "false"; + + type nw_Counter64; + description "Router Advertisements received"; + } + + // Router Solicitations sent @@@ ICMPV6_PKT_ROUTER_SOLICITS_SNT_CNT + // Ephemeral data + leaf rsSent { + config "false"; + + type nw_Counter64; + description "Router Solicitations sent"; + } + + // Router Solicitations received @@@ ICMPV6_PKT_ROUTER_SOLICITS_RECV_CNT + // Ephemeral data + leaf rsRcvd { + config "false"; + + type nw_Counter64; + description "Router Solicitations received"; + } + + // Neighbor Advertisements sent @@@ ICMPV6_PKT_NEIGHBOR_ADV_SNT_CNT + // Ephemeral data + leaf naSent { + config "false"; + + type nw_Counter64; + description "Neighbor Advertisements sent"; + } + + // Neighbor Advertisements received @@@ ICMPV6_PKT_NEIGHBOR_ADV_RECV_CNT + // Ephemeral data + leaf naRcvd { + config "false"; + + type nw_Counter64; + description "Neighbor Advertisements received"; + } + + // Neighbor Solicitations sent @@@ ICMPV6_PKT_NEIGHBOR_SOLICITS_SNT_CNT + // Ephemeral data + leaf nsSent { + config "false"; + + type nw_Counter64; + description "Neighbor Solicitations sent"; + } + + // Neighbor Solicitations received @@@ ICMPV6_PKT_NEIGHBOR_SOLICITS_RECV_CNT + // Ephemeral data + leaf nsRcvd { + config "false"; + + type nw_Counter64; + description "Neighbor Solicitations received"; + } + + // Duplicate router RA received @@@ ICMPV6_PKT_DUP_ROUTER + // Ephemeral data + leaf dupRAReceived { + config "false"; + + type nw_Counter64; + description "Duplicate router RA received"; + } + + // Ephemeral data + leaf lastNghbrSolicitSent { + config "false"; + type string; + description "Last neighbor solicitation sent"; + } + + // Ephemeral data + leaf lastNghbrAdvertisementSent { + config "false"; + type string; + description "Last neighbor advertisement sent"; + } + + // Ephemeral data + leaf lastRouterAdvertisementSent { + config "false"; + type string; + description "Last router advertisement sent"; + } + + // Ephemeral data + leaf nextRouterAdvertisementSent { + config "false"; + type string; + description "Next neighbor advertisement sent"; + } + } + + grouping nd_VaddrGlobalStat-group { + description "ND offlist vlan statistics"; + + // Ephemeral data + leaf vAddr { + config "false"; + type address_Ip; + description "Virtual IPv6 address"; + } + + // Ephemeral data + leaf protocol { + config "false"; + type string; + description "Protocol"; + } + + // Ephemeral data + leaf virtualMac { + config "false"; + type string; + description "Virtual MAC"; + } + + // Ephemeral data + leaf groupId { + config "false"; + type uint16; + description "Group id"; + } + + // Ephemeral data + leaf clientUUID { + config "false"; + type uint32; + description "client UUID"; + } + + // Ephemeral data + leaf clientState { + config "false"; + + type nd_VaddrClientState; + description "Client state"; + } + + // Ephemeral data + leaf clientInUse { + config "false"; + type uint16; + description "Client in use"; + } + + // Ephemeral data + leaf clientActiveState { + config "false"; + type string; + description "Client active or not"; + } + + // Ephemeral data + leaf interface { + config "false"; + type string; + description "Interface"; + } + + // Ephemeral data + leaf context { + config "false"; + type string; + description "Context Name (context-id)"; + } + } + + grouping nd_IpV6Throttle-group { + description "IPV6 throttling"; + + // Enable / Disable glean throttling + leaf adminSt { + + type nw_AdminSt; + default "disabled"; + description "Glean throttle state"; + } + + // Threshold for syslog for number of packets hitting the entry + leaf syslog { + + type nd_SyslogCnt; + description "Glean throttle syslog for number of packets"; + } + + // Max throttle packets count. Crossing this threshold, + // packet will not be throttled for a particular adjacency + leaf maxPacket { + + type nd_MaxPacket; + description "Glean throttle pack count"; + } + + // Timeout for throttle setting for a particular adjacency + leaf timeout { + + type nd_ThrTimeout; + description "Ipv4 glean throttle timeout"; + } + } + + grouping nd_Vpc-group { + description "Ipv6 Nd Synchronize"; + + // This objects hold per vpc domain information. There is only + // one vpc domain that is configurable in the system + container dom-items { + list VpcDom-list { + key "domainId"; + + uses nd_VpcDom-group; + description "VPC Domain list"; + } + description "VPC Domain"; + } + } + + grouping nd_VpcDom-group { + description "VPC Domain"; + + leaf domainId { + + type vpc_DomId; + description "Respective VPC Domain"; + } + + // Enable/Disable IPV6 ND SYNC + leaf ndSync { + + type nw_AdminSt; + default "disabled"; + description "IPV6 ND Sync"; + } + } + + grouping nd_L2Stat-group { + description "L2 Interface Statistics"; + + // Ephemeral data + container if-items { + + // Ephemeral data + list L2If-list { + config "false"; + key "id"; + + uses nd_L2If-group; + description "L2 Interface list"; + } + description "L2 Interface"; + } + } + + grouping nd_L2If-group { + description "L2 Interface"; + + leaf id { + config "false"; + + type nw_IfId; + description "Interface"; + } + + // Ephemeral data + leaf ndPackets { + config "false"; + type uint64; + description "Total ND Packets On L2 Interface"; + } + } + + grouping nd_OffListVlan-group { + description "ND offlist vlan statistics"; + + // Ephemeral data + leaf vlanId { + config "false"; + type uint16; + description "Offlist vlan id"; + } + + // Ephemeral data + leaf totalOfflistEntries { + config "false"; + type uint16; + description "Total offlist entries for vlan"; + } + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "Address"; + } + + // Ephemeral data + leaf age { + config "false"; + type string; + description "Age"; + } + + // Ephemeral data + leaf macAddr { + config "false"; + type string; + description "Mac address"; + } + + // Ephemeral data + leaf flags { + config "false"; + type uint16; + description "Address"; + } + } + + grouping nd_ProxyStat-group { + description "ND Proxy Statistics"; + + // Ephemeral data + container vlan-items { + + // Ephemeral data + list VlanIntf-list { + config "false"; + key "id"; + + uses nd_VlanIntf-group; + description "Vlan Interface list"; + } + description "Vlan Interface"; + } + } + + grouping nd_VlanIntf-group { + description "Vlan Interface"; + + // Ephemeral data + leaf id { + config "false"; + + type nw_IfId; + description "Interface"; + } + + // Ephemeral data + container if-items { + + // Ephemeral data + list PhysicalIntf-list { + config "false"; + key "id"; + + uses nd_PhysicalIntf-group; + description "Physical Interface list"; + } + description "Physical Interface"; + } + } + + grouping nd_PhysicalIntf-group { + description "Physical Interface"; + + leaf id { + config "false"; + + type nw_IfId; + description "Interface"; + } + + // Ephemeral data + leaf numProxies { + config "false"; + type string; + description "Number of Proxies in Last 24 Hours"; + } + } + + grouping nd_GlobalTrafficStats-group { + description "ICMPv6/ND global traffic counters"; + + // Total Messages sent @@@ ICMPV6_PKT_MSGS_SNT_CNT + // Ephemeral data + leaf totSent { + config "false"; + + type nw_Counter64; + description "Total messages sent"; + } + + // Total Messages received @@@ ICMPV6_PKT_MSGS_RECV_CNT + // Ephemeral data + leaf totRvcd { + config "false"; + + type nw_Counter64; + description "Total messages received"; + } + + // Error Messages sent @@@ ICMPV6_PKT_ERR_SNT_CNT + // Ephemeral data + leaf errSent { + config "false"; + + type nw_Counter64; + description "Error messages sent"; + } + + // Error Messages received @@@ ICMPV6_PKT_ERR_RECV_CNT + // Ephemeral data + leaf errRcvd { + config "false"; + + type nw_Counter64; + description "Error messages received"; + } + + // Interface Down Drop Count sent @@@ ICMPV6_PKT_SNT_DROP_IF_DOWN_CNT + // Ephemeral data + leaf ifDownDropSent { + config "false"; + + type nw_Counter64; + description "Interface Down Drop Count sent"; + } + + // Interface Down Drop Count received @@@ ICMPV6_PKT_RECV_DROP_IF_DOWN_CNT + // Ephemeral data + leaf ifDownDropRcvd { + config "false"; + + type nw_Counter64; + description "Interface Down Drop Count received"; + } + + // Adjacency not recovered from AM after HA @@@ ICMPV6_PKT_DROPPED_HA_NOT_READY + // Ephemeral data + leaf dropHaNotRdy { + config "false"; + + type nw_Counter64; + description "Adjacency not recovered from AM after HA"; + } + + // Pkts allowed due to inv ttl on vPC-MCT @@@ ICMPV6_PKT_ALLOW_MCT_TTL_CNT + // Ephemeral data + leaf dropInvldTtlMct { + config "false"; + + type nw_Counter64; + description "Pkts allowed due to inv ttl on vPC-MCT"; + } + + // Pkts dropped as source mac addr is own @@@ ICMPV6_PKT_RECV_DROP_OWN_SRC_MAC_COUNT + // Ephemeral data + leaf dropSrcMacOwnRcvd { + config "false"; + + type nw_Counter64; + description "Pkts dropped as source mac addr is own"; + } + + // Pkts dropped as tgt ip addr is not own @@@ ICMPV6_PKT_RECV_DROP_TARGET_NOT_US_COUNT + // Ephemeral data + leaf dropTgtIpNotOwnRcvd { + config "false"; + + type nw_Counter64; + description "Pkts dropped as tgt ip addr is not own"; + } + + // Pkts dropped as src ip addr is not own @@@ ICMPV6_PKT_RECV_DROP_SRC_NOT_US_COUNT + // Ephemeral data + leaf dropSrcIpNotOwnRcvd { + config "false"; + + type nw_Counter64; + description "Pkts dropped as src ip addr is not own"; + } + + // Destination Unreachables sent @@@ ICMPV6_PKT_DEST_UNREACHS_SNT_CNT + // Ephemeral data + leaf destUnreachSent { + config "false"; + + type nw_Counter64; + description "Destination Unreachables sent"; + } + + // Destination Unreachables received @@@ ICMPV6_PKT_DEST_UNREACHS_RECV_CNT + // Ephemeral data + leaf destUnreachRcvd { + config "false"; + + type nw_Counter64; + description "Destination Unreachables received"; + } + + // Administratively Prohibited sent @@@ ICMPV6_PKT_ADMIN_PROHIBS_SNT_CNT + // Ephemeral data + leaf adminProhibSent { + config "false"; + + type nw_Counter64; + description "Administratively Prohibited sent"; + } + + // Administratively Prohibited received @@@ ICMPV6_PKT_ADMIN_PROHIBS_RECV_CNT + // Ephemeral data + leaf adminProhibRcvd { + config "false"; + + type nw_Counter64; + description "Administratively Prohibited received"; + } + + // Time Exceeded sent @@@ ICMPV6_PKT_TIME_EXCDS_SNT_CNT + // Ephemeral data + leaf timeExcdSent { + config "false"; + + type nw_Counter64; + description "Time Exceeded sent "; + } + + // Time Exceeded received @@@ ICMPV6_PKT_TIME_EXCDS_RECV_CNT + // Ephemeral data + leaf timeExcdRcvd { + config "false"; + + type nw_Counter64; + description "Time Exceeded received"; + } + + // Parameter Problems sent @@@ ICMPV6_PKT_PARM_PROBS_SNT_CNT + // Ephemeral data + leaf parmPrblmSent { + config "false"; + + type nw_Counter64; + description "Parameter Problems sent"; + } + + // Parameter Problems received @@@ ICMPV6_PKT_PARM_PROBS_RECV_CNT + // Ephemeral data + leaf parmPrblmRcvd { + config "false"; + + type nw_Counter64; + description "Parameter Problems received"; + } + + // Echo Request sent @@@ ICMPV6_PKT_ECHOS_SNT_CNT + // Ephemeral data + leaf echoReqSent { + config "false"; + + type nw_Counter64; + description "Echo Request sent"; + } + + // Echo Request received @@@ ICMPV6_PKT_ECHOS_RECV_CNT + // Ephemeral data + leaf echoReqRcvd { + config "false"; + + type nw_Counter64; + description "Echo Request received"; + } + + // Echo Replies sent @@@ ICMPV6_PKT_ECHO_REPLIES_SNT_CNT + // Ephemeral data + leaf echoRepSent { + config "false"; + + type nw_Counter64; + description "Echo Replies sent"; + } + + // Echo Replies received @@@ ICMPV6_PKT_ECHO_REPLIES_RECV_CNT + // Ephemeral data + leaf echoRepRcvd { + config "false"; + + type nw_Counter64; + description "Echo Replies received"; + } + + // Redirects sent @@@ ICMPV6_PKT_REDIRECTS_SNT_CNT + // Ephemeral data + leaf redirSent { + config "false"; + + type nw_Counter64; + description "Redirects sent"; + } + + // Redirects received @@@ ICMPV6_PKT_REDIRECTS_RECV_CNT + // Ephemeral data + leaf redirRcvd { + config "false"; + + type nw_Counter64; + description "Redirects received"; + } + + // Packet Too Big sent @@@ ICMPV6_PKT_TOO_BIG_SNT_CNT + // Ephemeral data + leaf tooBigSent { + config "false"; + + type nw_Counter64; + description "Packet Too Big sent"; + } + + // Packet Too Big received @@@ ICMPV6_PKT_TOO_BIG_RECV_CNT + // Ephemeral data + leaf tooBigRcvd { + config "false"; + + type nw_Counter64; + description "Packet Too Big received"; + } + + // Router Advertisements sent @@@ ICMPV6_PKT_ROUTER_ADV_SNT_CNT + // Ephemeral data + leaf raSent { + config "false"; + + type nw_Counter64; + description "Router Advertisements sent"; + } + + // Router Advertisements received @@@ ICMPV6_PKT_ROUTER_ADV_RECV_CNT + // Ephemeral data + leaf raRcvd { + config "false"; + + type nw_Counter64; + description "Router Advertisements received"; + } + + // Router Solicitations sent @@@ ICMPV6_PKT_ROUTER_SOLICITS_SNT_CNT + // Ephemeral data + leaf rsSent { + config "false"; + + type nw_Counter64; + description "Router Solicitations sent"; + } + + // Router Solicitations received @@@ ICMPV6_PKT_ROUTER_SOLICITS_RECV_CNT + // Ephemeral data + leaf rsRcvd { + config "false"; + + type nw_Counter64; + description "Router Solicitations received"; + } + + // Neighbor Advertisements sent @@@ ICMPV6_PKT_NEIGHBOR_ADV_SNT_CNT + // Ephemeral data + leaf naSent { + config "false"; + + type nw_Counter64; + description "Neighbor Advertisements sent"; + } + + // Neighbor Advertisements received @@@ ICMPV6_PKT_NEIGHBOR_ADV_RECV_CNT + // Ephemeral data + leaf naRcvd { + config "false"; + + type nw_Counter64; + description "Neighbor Advertisements received"; + } + + // Neighbor Solicitations sent @@@ ICMPV6_PKT_NEIGHBOR_SOLICITS_SNT_CNT + // Ephemeral data + leaf nsSent { + config "false"; + + type nw_Counter64; + description "Neighbor Solicitations sent"; + } + + // Neighbor Solicitations received @@@ ICMPV6_PKT_NEIGHBOR_SOLICITS_RECV_CNT + // Ephemeral data + leaf nsRcvd { + config "false"; + + type nw_Counter64; + description "Neighbor Solicitations received"; + } + + // Duplicate router RA received @@@ ICMPV6_PKT_DUP_ROUTER + // Ephemeral data + leaf dupRAReceived { + config "false"; + + type nw_Counter64; + description "Duplicate router RA received"; + } + + // Fastpath Packets @@@ ICMPV6_PKT_FASTPATH_RECV_CNT + // Ephemeral data + leaf fastpthRcvd { + config "false"; + + type nw_Counter64; + description "Fastpath Packets"; + } + + // Ignored Fastpath Packets - Fastpath disabled @@@ ICMPV6_PKT_RECV_DROP_FASTPATH_DISABLED_CNT + // Ephemeral data + leaf fastpathDsbleIgnRcvd { + config "false"; + + type nw_Counter64; + description "Ignored Fastpath Packets - Fastpath disabled"; + } + + // Ignored Fastpath Packets - others @@@ ICMPV6_PKT_RECV_DROP_REQUEST_IGNORE_CNT + // Ephemeral data + leaf fastpathOtherIgnRcvd { + config "false"; + + type nw_Counter64; + description "Ignored fastpath packets - others"; + } + + // @@@ ICMPV6_PKT_MLD_V1_QUERY_SNT_CNT + // Ephemeral data + leaf mldV1QueriesSent { + config "false"; + + type nw_Counter64; + description "V1 queries sent"; + } + + // @@@ ICMPV6_PKT_MLD_V1_QUERY_RECV_CNT + // Ephemeral data + leaf mldV1QueriesRecv { + config "false"; + + type nw_Counter64; + description "V1 queries received"; + } + + // @@@ ICMPV6_PKT_MLD_V2_QUERY_SNT_CNT + // Ephemeral data + leaf mldV2QueriesSent { + config "false"; + + type nw_Counter64; + description "V2 queries sent"; + } + + // @@@ ICMPV6_PKT_MLD_V2_QUERY_RECV_CNT + // Ephemeral data + leaf mldV2QueriesRecv { + config "false"; + + type nw_Counter64; + description "V2 queries received"; + } + + // @@@ ICMPV6_PKT_MLD_V1_REPORTS_SNT_CNT + // Ephemeral data + leaf mldV1ReportsSent { + config "false"; + + type nw_Counter64; + description "V1 reports sent"; + } + + // @@@ ICMPV6_PKT_MLD_V1_REPORTS_RECV_CNT + // Ephemeral data + leaf mldV1ReportsRecv { + config "false"; + + type nw_Counter64; + description "V1 reports received"; + } + + // @@@ ICMPV6_PKT_MLD_V2_REPORTS_SNT_CNT + // Ephemeral data + leaf mldV2ReportsSent { + config "false"; + + type nw_Counter64; + description "V2 reports sent"; + } + + // @@@ ICMPV6_PKT_MLD_V2_REPORTS_RECV_CNT + // Ephemeral data + leaf mldV2ReportsRecv { + config "false"; + + type nw_Counter64; + description "V2 reports received"; + } + + // @@@ ICMPV6_PKT_MLD_V1_LEAVES_SNT_CNT + // Ephemeral data + leaf mldV1LeavesSent { + config "false"; + + type nw_Counter64; + description "V1 leaves sent"; + } + + // @@@ ICMPV6_PKT_MLD_V1_LEAVES_RECV_CNT + // Ephemeral data + leaf mldV1LeavesRecv { + config "false"; + + type nw_Counter64; + description "V1 leaves received"; + } + } + + grouping nd_VaddrLinkLocalStat-group { + description "ICMPv6/ND link local vaddr statistics"; + + // Ephemeral data + leaf vAddr { + config "false"; + type address_Ip; + description "Virtual IPv6 address"; + } + + // Ephemeral data + leaf virtualMac { + config "false"; + type string; + description "Virtual MAC"; + } + + // Ephemeral data + leaf interface { + config "false"; + type string; + description "Interface name"; + } + + // Ephemeral data + leaf active { + config "false"; + type string; + description "Active state"; + } + } + + grouping nd_VPCStat-group { + description "ND/ICMPv6 VPC statistics"; + + // Ephemeral data + leaf cfsStatus { + config "false"; + type string; + description "IPv6 ND sync status"; + } + + // Ephemeral data + leaf layer3Routing { + config "false"; + type string; + description "IPv6 ND L3 routing"; + } + + // Ephemeral data + leaf syncProcDropRecvPullReq { + config "false"; + type uint16; + description "Drop the received CFS pull request"; + } + + // Ephemeral data + leaf syncProcDropRecvPushMsg { + config "false"; + type uint16; + description "Drop the received CFS push message"; + } + + // Ephemeral data + leaf syncIgnoreSendPullReq { + config "false"; + type uint16; + description "Ignore to send pull request using CFSoE"; + } + + // Ephemeral data + leaf syncIgnoreSendPushMsg { + config "false"; + type uint16; + description "Ignore to send push message using CFSoE"; + } + + // Ephemeral data + leaf syncDropIMApiFailed { + config "false"; + type uint16; + description "IM api failed while processing CFS payload"; + } + + // Ephemeral data + leaf syncDropMcemApiFailed { + config "false"; + type uint16; + description "MCECM api failed while processing CFS payload"; + } + + // Ephemeral data + leaf syncDropInvalidPcIod { + config "false"; + type uint16; + description "Invalid MCT port-channel iod for CFS payload"; + } + + // Ephemeral data + leaf syncProcDropPtLookupFailed { + config "false"; + type uint16; + description "PT lookup failed while processing CFS payload"; + } + + // Ephemeral data + leaf syncProcDropRespFailedNomct { + config "false"; + type uint16; + description "Invalid MCT iod while processing CFS payload"; + } + + // Ephemeral data + leaf syncProcDropRespFailed { + config "false"; + type uint16; + description "Sending CFS response failed for CFS payload"; + } + + // Ephemeral data + leaf syncProcDropMCEMIfindexVpcConvFailed { + config "false"; + type uint16; + description "Unabled to retrieve VPC id from ifindex for push"; + } + + // Ephemeral data + leaf syncProcDropMCEMVpcIfindexConvFailed { + config "false"; + type uint16; + description "Unabled to retrieve ifindex from vpc id"; + } + + // Ephemeral data + leaf PeriodicSyncProcDropMCEMIfindexVpcConvFailed { + config "false"; + type uint16; + description "Unabled to retrieve VPC id from ifindex during periodic sync"; + } + + // Ephemeral data + leaf periodicSyncProcDropMCEMVpcIfindexConvFailed { + config "false"; + type uint16; + description "Unabled to retrieve ifindex from vpc id during periodic sync"; + } + + // Ephemeral data + leaf syncProcRespSent { + config "false"; + type uint16; + description "Response sent via CFSoE"; + } + + // Ephemeral data + leaf syncProcRespRcvd { + config "false"; + type uint16; + description "Response received via CFSoE"; + } + + // Ephemeral data + leaf syncProcRespRcvdErr { + config "false"; + type uint16; + description "Response received via CFSoE with errors"; + } + + // Ephemeral data + leaf syncProcRcvdMsg { + config "false"; + type uint16; + description "Received message via CFSoE"; + } + + // Ephemeral data + leaf syncProcSendFailed { + config "false"; + type uint16; + description "Send message failed via CFSoE"; + } + + // Ephemeral data + leaf syncProcCfsRelDlvryFailed { + config "false"; + type uint16; + description "MCECM send api failed via CFSoE"; + } + + // Ephemeral data + leaf syncProcCfsRelDlvrySuccess { + config "false"; + type uint16; + description "Send message succeeded via CFSoE"; + } + + // Ephemeral data + leaf offlistProcDropPtAddFailed { + config "false"; + type uint16; + description "PT add failed while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropNoMem { + config "false"; + type uint16; + description "Memory alloc failed while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropTmrCreateFailed { + config "false"; + type uint16; + description "Timer create failed while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropAddAdjFailed { + config "false"; + type uint16; + description "Adjacency addition failed while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropPtLookupFailed { + config "false"; + type uint16; + description "PT lookup failed while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcNoDropVlanMismatch { + config "false"; + type uint16; + description "VLAN mismatch while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropSVIInvalid { + config "false"; + type uint16; + description "SVI is invalid while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcNoDropSVIDown { + config "false"; + type uint16; + description "SVI is down while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropMCTDown { + config "false"; + type uint16; + description "MCT is down while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropCtxtInvalid { + config "false"; + type uint16; + description "Ctxt_type is invalid while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropVRFInvalid { + config "false"; + type uint16; + description "VRF invalid while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropL3addrInvalid { + config "false"; + type uint16; + description "IP address invalid while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropL3addrSanityFailed { + config "false"; + type uint16; + description "IP address sanity failed while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropMacSanityFailed { + config "false"; + type uint16; + description "MAC sanity failed while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropOwnMac { + config "false"; + type uint16; + description "Own MAC while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropOwnIpv6Addr { + config "false"; + type uint16; + description "Own IPv6 address while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropOwnVIPv6Addr { + config "false"; + type uint16; + description "Own VIPv6 address while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropCreateAdjFailed { + config "false"; + type uint16; + description "Create adjacency failed while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropSubnetMismatch { + config "false"; + type uint16; + description "Subnet mismatch while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropAdjAlreadyExist { + config "false"; + type uint16; + description "Adj already exist while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcNoDropIpv6Disabled { + config "false"; + type uint16; + description "IPv6 disabled on interface while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcDropCount { + config "false"; + type uint16; + description "Total drop count while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcNoDropCount { + config "false"; + type uint16; + description "Total do not count while processing offlist DB"; + } + + // Ephemeral data + leaf offlistProcAddAdj { + config "false"; + type uint16; + description "Total adjacency additions in offlist DB"; + } + + // Ephemeral data + leaf offlistProcDelAdj { + config "false"; + type uint16; + description "Total adjacency deletion in offlist DB"; + } + + // Ephemeral data + leaf offlistProcAdjAlreadyExist { + config "false"; + type uint16; + description "Total duplicate adjacencies ignored in offlist DB"; + } + } + + grouping ngmvpn_Entity-group { + description "Fabric Group Manager Entity, which hold NGMVPN entity information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This objects hold per ngmvpn instance information. There is only + // one instance of ngmvpn running in the system today + container inst-items { + + uses ngmvpn_Inst-group; + description "NGMVPN Instance MO"; + } + } + + grouping ngmvpn_Inst-group { + description "NGMVPN Instance MO"; + leaf overlayDistributedDr { + type boolean; + description "Overlay Distributed DR flag"; + } + leaf overlaySptOnly { + type boolean; + default "true"; + description "Overlay SPT only flag"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // Address family type + // Ephemeral data + container af-items { + + // Ephemeral data + list Af-list { + config "false"; + key "type"; + + uses ngmvpn_Af-group; + description "Specifies IPv4 or IPv6 type Address-Family list"; + } + description "Specifies IPv4 or IPv6 type Address-Family"; + } + container eventhist-items { + list EventHistory-list { + key "type"; + + uses ngmvpn_EventHistory-group; + description "This object holds configuration details of event-history buffers list"; + } + description "This object holds configuration details of event-history buffers"; + } + } + + grouping ngmvpn_Af-group { + description "Specifies IPv4 or IPv6 type Address-Family"; + + // Type + // Ephemeral data + leaf type { + config "false"; + + type ngmvpn_AfT; + description "Type of Address-Family, where 0 represents IPv4 and 1 represents IPv6"; + } + + // This object holds mrib route db information + // Ephemeral data + container db-items { + + // Ephemeral data + list Db-list { + config "false"; + key "dbtype"; + + uses ngmvpn_Db-group; + description "NGMVPN DB to query either ipv4 or ipv6 routes list"; + } + description "NGMVPN DB to query either ipv4 or ipv6 routes"; + } + } + + grouping ngmvpn_Db-group { + description "NGMVPN DB to query either ipv4 or ipv6 routes"; + + // Type of the repository + // Ephemeral data + leaf dbtype { + config "false"; + + type ngmvpn_DbT; + description "DB Type, where 0 represents IPv4 routes and 1 represents IPv6 routes"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // This objects hold per pim domain (vrf) information + // Ephemeral data + container vni-items { + + // Ephemeral data + list Vni-list { + config "false"; + key "id"; + + uses ngmvpn_Vni-group; + description "Holds NGMVPN VNI information list"; + } + description "Holds NGMVPN VNI information"; + } + + // This objects hold per pim domain (vrf) information + // Ephemeral data + container vrf-items { + + // Ephemeral data + list Vrf-list { + config "false"; + key "name"; + + uses ngmvpn_Vrf-group; + description "Holds per NGMVPN domain (vrf) information list"; + } + description "Holds per NGMVPN domain (vrf) information"; + } + } + + grouping ngmvpn_Vni-group { + description "Holds NGMVPN VNI information"; + + // Ephemeral data + leaf id { + config "false"; + type uint32; + description "VNI ID"; + } + + // Ephemeral data + container l2route-items { + + // Ephemeral data + list L2route-list { + config "false"; + key "src grp"; + + uses ngmvpn_L2route-group; + description "NGMVPN L2 route information list"; + } + description "NGMVPN L2 route information"; + } + } + + grouping ngmvpn_L2route-group { + description "NGMVPN L2 route information"; + + // Ephemeral data + leaf maskLen { + config "false"; + type uint32; + description "Mask Length"; + } + + // Ephemeral data + leaf src { + config "false"; + type address_Ip; + description "Source Address"; + } + + // Ephemeral data + leaf grp { + config "false"; + type address_Ip; + description "Group Address"; + } + + // Fabric node + // Ephemeral data + container fabNode-items { + + // Ephemeral data + list FabNode-list { + config "false"; + key "ipAddr"; + + uses ngmvpn_FabNode-group; + description "Interested Fabric nodes list"; + } + description "Interested Fabric nodes"; + } + } + + grouping ngmvpn_FabNode-group { + description "Interested Fabric nodes"; + + // Ephemeral data + leaf ipAddr { + config "false"; + type address_Ip; + description "Fabric node IP Address"; + } + } + + grouping ngmvpn_Vrf-group { + description "Holds per NGMVPN domain (vrf) information"; + + // Ephemeral data + leaf name { + config "false"; + type string; + description "Vrf Name"; + } + + // This object holds mrib route group information + // Ephemeral data + container group-items { + + // Ephemeral data + list Group-list { + config "false"; + key "grpAddr"; + + uses ngmvpn_Group-group; + description "NGMVPN Route Group list"; + } + description "NGMVPN Route Group"; + } + } + + grouping ngmvpn_Group-group { + description "NGMVPN Route Group"; + + // Ephemeral data + leaf grpAddr { + config "false"; + type address_Ip; + description "Group Address"; + } + leaf maskLen { + config "false"; + type uint32; + description "Mask Length of the group address"; + } + + // This object holds mrib route group information + // Ephemeral data + container source-items { + + // Ephemeral data + list Source-list { + config "false"; + key "srcAddr"; + + uses ngmvpn_Source-group; + description "NGMVPN Route Source address list"; + } + description "NGMVPN Route Source address"; + } + } + + grouping ngmvpn_Source-group { + description "NGMVPN Route Source address"; + + // Ephemeral data + leaf srcAddr { + config "false"; + type address_Ip; + description "Source Address"; + } + leaf maskLen { + config "false"; + type uint32; + description "Mask Length of the source address"; + } + leaf uptime { + config "false"; + type string; + description "Uptime of the route"; + } + + // Fabric node + // Ephemeral data + container fabNode-items { + + // Ephemeral data + list FabNode-list { + config "false"; + key "ipAddr"; + + uses ngmvpn_FabNode-group; + description "Interested Fabric nodes list"; + } + description "Interested Fabric nodes"; + } + } + + grouping ngmvpn_EventHistory-group { + description "This object holds configuration details of event-history buffers"; + + leaf type { + + type ngmvpn_EhType; + description "Configures type of event history"; + } + + leaf size { + + type ngmvpn_Size; + description "Configures buffer size in text per kb"; + } + } + + grouping openflow_Entity-group { + description "Openflow Entity Object"; + + // Admin State of OpenFlow + leaf ofAdminSt { + + type nw_AdminSt; + default "disabled"; + description "OpenFlow Admin State"; + } + + // This object holds per openflow instance information. There is + // only one instance of openflow switch instance configuration + // allowed today + container pipeline-items { + list Inst-list { + key "pipelineId"; + + uses openflow_Inst-group; + description "Openflow Switch Instance list"; + } + description "Openflow Switch Instance"; + } + } + + grouping openflow_Inst-group { + description "Openflow Switch Instance"; + leaf switchId { + type uint8 { + range "1"; + } + default "1"; + description "Openflow Logical switch-id"; + } + leaf pipelineId { + type uint16 { + range "1..65535"; + } + description "Openflow Forwarding pipeline-id"; + } + + // This object holds openflow information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses openflow_If-group; + description "OpenFlow Network Interface Port list"; + } + description "OpenFlow Network Interface Port"; + } + + container agent-items { + + uses openflow_Agent-group; + description "Openflow Agent Configuration Object"; + } + container ip-items { + list Controller-list { + key "ipaddr port vrf"; + + uses openflow_Controller-group; + description "OpenFlow Controller Config list"; + } + description "OpenFlow Controller Config"; + } + } + + grouping openflow_If-group { + description "OpenFlow Network Interface Port"; + + leaf id { + + type nw_IfId; + description "To hold openflow port interface id"; + } + + // openflow admin state of the network interface + leaf ofPort { + + type nw_AdminSt; + default "disabled"; + description "Track whether Openflow is enabled on the Interface"; + } + } + + grouping openflow_Agent-group { + description "Openflow Agent Configuration Object"; + leaf defaultMiss { + type enumeration { + enum continue-controller { + value 1; + description "continue-controller"; + } + enum continue-drop { + value 2; + description "continue-drop"; + } + enum continue-normal { + value 3; + description "continue-normal"; + } + enum controller { + value 4; + description "controller"; + } + enum drop { + value 5; + description "drop"; + } + enum normal { + value 6; + description "normal"; + } + } + default "drop"; + description "Openflow Default Miss flow action"; + } + leaf sourceIpAddr { + type address_Ip; + description "Source IP Addr for Connection to OpenFlow Controller"; + } + leaf statsCollectInterval { + type uint16 { + range "0..600"; + } + default "7"; + description "OpenFlow Statistics Collection Interval"; + } + leaf packetInPPS { + type uint16 { + range "0..65535"; + } + default "0"; + description "Openflow Channel Packets In Rate in PPS"; + } + leaf controllerBurstPPS { + type uint16 { + range "0..65535"; + } + default "0"; + description "Openflow Channel Packets to Controller In PPS"; + } + leaf datapathId { + type string { + length "0..20"; + } + description "OpenFlow Protocol Datapath Id"; + } + leaf protoVersion { + type enumeration { + enum 1.0 { + value 1; + description "OpenFlow 1.0 Protocol"; + } + enum 1.3 { + value 2; + description "OpenFlow 1.3 Protocol"; + } + enum Negotiate { + value 3; + description "Protocol Version Negotiated"; + } + } + default "Negotiate"; + description "Openflow Protocol Version"; + } + leaf logFlowMod { + type boolean; + default "false"; + description "OpenFlow Mod Requests Logging Enable"; + } + + // Shutdown OpenFlow Switch + leaf shutdown { + + type nw_AdminSt; + default "disabled"; + description "Shutdown OpenFlow Switch Instance"; + } + leaf maxBackOff { + type uint16 { + range "1..65535"; + } + default "8"; + description "Openflow Protocol Max Backoff Timer"; + } + leaf probeInterval { + type uint16 { + range "5..65535"; + } + default "180"; + description "Openflow Protocol Probe Interval"; + } + container subswitch-items { + list SubSwitch-list { + key "subSwitchId"; + + uses openflow_SubSwitch-group; + description "Openflow Logical Sub-Switch Instance list"; + } + description "Openflow Logical Sub-Switch Instance"; + } + } + + grouping openflow_SubSwitch-group { + description "Openflow Logical Sub-Switch Instance"; + leaf subSwitchId { + type uint16 { + range "2..10"; + } + description "Openflow Logical Sub-switch id"; + } + + // Vlan BitMap + leaf vlan { + + type l2_VlanBitmap; + description "Openflow Logical Sub-switch Vlan Bitmap"; + } + leaf packetInPPS { + type uint16 { + range "0..65535"; + } + default "0"; + description "Openflow Channel Packets In Rate in PPS"; + } + leaf controllerBurstPPS { + type uint16 { + range "0..65535"; + } + default "0"; + description "Openflow Channel Packets to Controller In PPS"; + } + leaf datapathId { + type string { + length "0..20"; + } + description "OpenFlow Protocol Datapath Id"; + } + leaf protoVersion { + type enumeration { + enum 1.0 { + value 1; + description "OpenFlow 1.0 Protocol"; + } + enum 1.3 { + value 2; + description "OpenFlow 1.3 Protocol"; + } + enum Negotiate { + value 3; + description "Protocol Version Negotiated"; + } + } + default "Negotiate"; + description "Openflow Protocol Version"; + } + leaf logFlowMod { + type boolean; + default "false"; + description "OpenFlow Mod Requests Logging Enable"; + } + + // Shutdown OpenFlow Switch + leaf shutdown { + + type nw_AdminSt; + default "disabled"; + description "Shutdown OpenFlow Switch Instance"; + } + leaf maxBackOff { + type uint16 { + range "1..65535"; + } + default "8"; + description "Openflow Protocol Max Backoff Timer"; + } + leaf probeInterval { + type uint16 { + range "5..65535"; + } + default "180"; + description "Openflow Protocol Probe Interval"; + } + container ip-items { + list Controller-list { + key "ipaddr port vrf"; + + uses openflow_Controller-group; + description "OpenFlow Controller Config list"; + } + description "OpenFlow Controller Config"; + } + } + + grouping openflow_Controller-group { + description "OpenFlow Controller Config"; + leaf ipaddr { + type address_Ip; + description "OpenFlow Controller Host IP Addr"; + } + leaf port { + type uint16 { + range "1..65535"; + } + description "OpenFlow Controller Host Port Number"; + } + leaf transport { + type enumeration { + enum tcp { + value 1; + description "Transmission Control Protocol (TCP)."; + } + enum tls { + value 2; + description "Transport Layer Security (TLS)."; + } + } + default "tcp"; + description "OpenFlow Controller Security TLS or TCP"; + } + + // vrf type + leaf vrf { + + type l3_VrfName; + description "OpenFlow Channel Interface VRF type default or management or vrf name"; + } + } + + grouping ospfv3_Entity-group { + description "OSPFv3 control plane entity information"; + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This object holds OSPFv3 information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses ospfv3_If-group; + description "OSPFv3 information operated at interface level list"; + } + description "OSPFv3 information operated at interface level "; + } + + // This object holds per OSPFv3 instance information. + container inst-items { + list Inst-list { + key "name"; + + uses ospfv3_Inst-group; + description "OSPFv3 router instance information list"; + } + description "OSPFv3 router instance information"; + } + } + + grouping ospfv3_If-group { + description "OSPFv3 information operated at interface level "; + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + // OSPFv3 Instance name + leaf instance { + + type ospfv3_InstanceName; + description "OSPFv3 instance name used with area command"; + } + + // Dom name + leaf dom { + config "false"; + + type ospfv3_DomName; + description "Dom to which the interface belongs to"; + } + leaf mtuIgnore { + type boolean; + description "Disable OSPF MTU mismatch detection"; + } + + // BFD control + leaf bfdCtrl { + + type ospfv3_BfdControl; + description "Bidirectional Forwarding Detection (BFD) control"; + } + + // Instance identifier under interface + leaf instanceId { + + type ospfv3_InstanceID; + description "OSPFv3 instance identifier under interface"; + } + + // Passive interface control + leaf passive { + + type ospfv3_PassiveControl; + description "Suppress routing updates on the interface"; + } + + // Network type + leaf nwT { + + type ospfv3_NwT; + description "Network Type, can be Point-to-point or Broadcast"; + } + + // Priority, used in determining the designated router on + // this network + leaf prio { + + type ospfv3_DesigPrio; + description "Router priority, used in determining the designated router on this network"; + } + + // Cost of the interface + leaf cost { + + type ospfv3_IfCost; + description "Cost associated with interface"; + } + + // Area to which this interface belongs to + leaf area { + + type ospfv3_AreaId; + description "Area associated with interface"; + } + leaf advSecondary { + type boolean; + default "true"; + description "Advertise secondary IPv6 addresses"; + } + + // Hello interval, interval between hello packets that + // OSPFv3 sends on the interface + leaf helloIntvl { + + type ospfv3_HelloIntvl; + description "Interval between hello packets that OSPFv3 sends on the interface"; + } + + // Dead interval, interval during which at least one + // hello packet must be received from a neighbor before + // the router declares that neighbor as down + leaf deadIntvl { + + type ospfv3_DeadIntvl; + description + "Dead interval, interval during which at least one + hello packet must be received from a neighbor before + the router declares that neighbor as down"; + } + + // Retransmit interval, time between LSA retransmissions. + // When a router sends an LSA to its neighbor, it keeps + // the LSA until it receives an acknowledgement from the + // neighbor. If the router receives no acknowldegement + // within the retransmit interval, the local router + // resends the LSA + leaf reTxIntvl { + + type ospfv3_ReTxIntvl; + description "Retransmit interval, the time between LSA retransmissions"; + } + + // Transmit delay, estimated time needed to send an LSA + // update packet + leaf txDelay { + + type ospfv3_TxDelay; + description "Transmit delay, estimated time needed to send an LSA update packet"; + } + + // This object holds authentication new policy information for interface + container auth-items { + + uses ospfv3_IfAuthNewP-group; + description "This object holds authentication new policy information for interface"; + } + + // This object holds multi-area information + // at a interface level + container multiarea-items { + list MultiArea-list { + key "multiareaid"; + + uses ospfv3_MultiArea-group; + description "This object holds multi-area information operated at interface level list"; + } + description "This object holds multi-area information operated at interface level"; + } + + container rtospfIfDefToOspfv3If-items { + + list RtOspfIfDefToOspfv3If-list { + config "false"; + key "tDn"; + + uses ospf_RtOspfIfDefToOspfv3If_target-group; + } + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping ospfv3_IfAuthNewP-group { + description "This object holds authentication new policy information for interface"; + + // Security Parameter Index + leaf spi { + + type ospfv3_AuthSpi; + description "Security Parameter Index"; + } + + // Authentication key + leaf authKey { + + type ospfv3_AuthKey; + description "Key used for authentication"; + } + + // Authentication key encrypted with 3DES/CiscoType7 or Cleartext + leaf authKeyEncrType { + + type ospfv3_AuthKeyEncrType; + default "cleartext"; + description "Authentication key encryption type which can be Cleartext, 3DES or CiscoType7"; + } + + // Authentication type + leaf authType { + + type ospfv3_AuthType; + description "Authentication types which can be md5, sha1 or disable."; + } + } + + grouping ospfv3_MultiArea-group { + description "This object holds multi-area information operated at interface level"; + + // Multi Area id + leaf multiareaid { + + type ospfv3_AreaId; + description "Holds multi area identifier (ID)"; + } + } + + grouping ospfv3_Inst-group { + description "OSPFv3 router instance information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern "[A-Za-z0-9_][A-Za-z0-9_-]{0,19}"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + leaf flushRoutes { + type boolean; + default "false"; + description "Flush routes on non-graceful controlled restart"; + } + leaf isolate { + type boolean; + default "false"; + description "Isolate this router from OSPFv3 perspective"; + } + + // This object holds per OSPFv3 VRF information + container dom-items { + list Dom-list { + key "name"; + + uses ospfv3_Dom-group; + description "OSPFv3 VRF information list"; + } + description "OSPFv3 VRF information"; + } + } + + grouping ospfv3_Dom-group { + description "OSPFv3 VRF information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + pattern "[A-Za-z0-9!@#$\\^\\*=\\+\\{\\}\\.;:_-]{1,32}"; + } + description "This object holds name information"; + } + + // Router id for this VRF, if this is not specified + // the router-id is automatically picked up based on the + // first interface that comes up in that VRF + leaf rtrId { + + type ip_RtrId; + description "Router identifier for this VRF"; + } + leaf bfdCtrl { + type boolean; + default "false"; + description "Holds the controls for bfd"; + } + + // Admin state + leaf adminSt { + + type nw_AdminSt; + description "OSPFv3 VRF administrative state"; + } + + // VRF Operational state + leaf operSt { + config "false"; + + type ospfv3_OperSt; + description "Operational state of VRF"; + } + + // Operational Router id for this VRF, if it is not specified + // the router-id is automatically picked up based on the + // first interface that comes up in that VRF + leaf operRtrId { + config "false"; + + type ip_RtrId; + description "Operational Router identifier for this VRF"; + } + leaf nameLookup { + type boolean; + default "false"; + description "Enable Name Lookup for OSPFv3 Neighbors"; + } + leaf passiveIntfDefault { + type boolean; + default "false"; + description "Suppress routing updates on the interface"; + } + + // Bandwidth Reference value. If bwRefUnit is mbps, then the + // range is 1 to 4000000 and if bwRefUnit is gbps, then the + // range is 1 to 4000 + leaf bwRef { + + type ospfv3_BwRef; + description + "Bandwidth reference value, holds the range from 1-4000000 if unit is mbps + and holds range from 1-4000 if unit is gbps"; + } + + // Bandwidth Reference Unit + leaf bwRefUnit { + + type ospfv3_BwRefUnit; + description "Bandwidth reference unit (Mbps or Gbps)"; + } + leaf discardRouteInt { + type boolean; + default "true"; + description "Holds the controls for discard-route internal"; + } + leaf discardRouteExt { + type boolean; + default "true"; + description "Holds the controls for discard-route external"; + } + + // Adjacency change logging level + leaf adjChangeLogLevel { + + type ospfv3_AdjChangeLogLevel; + description "Adjacency change logging level"; + } + + // This object holds OSPFv3 area information + container area-items { + list Area-list { + key "id"; + + uses ospfv3_Area-group; + description "Configures OSPFv3 area properties list"; + } + description "Configures OSPFv3 area properties"; + } + + // This object holds authentication new policy information for Dom + container auth-items { + + uses ospfv3_DomAuthNewP-group; + description "This object holds authentication new policy information for Dom"; + } + + // This object holds per address family OSPFv3 VRF information + container af-items { + list DomAf-list { + key "type"; + + uses ospfv3_DomAf-group; + description "OSPFv3 VRF information of IPv6 unicast address-family list"; + } + description "OSPFv3 VRF information of IPv6 unicast address-family"; + } + + // This object holds lsa related frequency controls, none of + // these need to be exposed to the user + container lsactrl-items { + + uses ospfv3_LsaCtrl-group; + description "Link State Advertisement(LSA) related frequency controls"; + } + + // This object holds per VRF graceful restart information + container gr-items { + + uses ospfv3_Gr-group; + description "Object holding per OSPFv3 VRF graceful restart information"; + } + + // This object holds per domain max-lsa information + container maxlsa-items { + + uses ospfv3_MaxLsaP-group; + description "Max-LSA(Link State Advertisement) Database overflow for each domain or VRF"; + } + + // This object holds per domain Max metric information + container maxmetriclsa-items { + + uses ospfv3_MaxMetricLsaP-group; + description "Max-Metric Link State Advertisement(LSA) information per Domain/VRF"; + } + } + + grouping ospfv3_Area-group { + description "Configures OSPFv3 area properties"; + + // Area id + leaf id { + + type ospfv3_AreaId; + description "Area Id as an integer or ip address"; + } + + // Area type (stub | nssa ) + leaf type { + + type ospfv3_AreaT; + description "Configure area type as NSSA or stub"; + } + leaf summary { + type boolean; + default "true"; + description "Originate summary LSA into other areas"; + } + leaf redistribute { + type boolean; + default "true"; + description "Send redistributed LSAs into NSSA area"; + } + leaf supressFa { + type boolean; + default "false"; + description "Supress forwarding address in translated LSA"; + } + + // NSSA translator role + leaf nssaTransRole { + + type ospf_NssaTransRole; + description "Not-so-stubby area(NSSA) translator role"; + } + + // This object holds per address family OSPFv3 VRF information + container areaaf-items { + list AreaAf-list { + key "type"; + + uses ospfv3_AreaAf-group; + description "OSPFv3 area address family domain list"; + } + description "OSPFv3 area address family domain"; + } + + // This object holds authentication new policy information for area + container auth-items { + + uses ospfv3_AreaAuthNewP-group; + description "This object holds authentication new policy information for area"; + } + + // This object holds information about OSPFv3 virtual + // links + container vlink-items { + list Vlink-list { + key "nbrRtrId"; + + uses ospfv3_Vlink-group; + description "This object holds information about OSPFv3 virtual link list"; + } + description "This object holds information about OSPFv3 virtual link"; + } + + // This objects holds control distribution of default route leak policy + container defrtleak-items { + + uses ospfv3_DefRtLeakP-group; + description "Default route leak or the distribution policy"; + } + } + + grouping ospfv3_AreaAf-group { + description "OSPFv3 area address family domain"; + + // Address family type + leaf type { + + type ospfv3_AfT; + description "Unicast IP address family type"; + } + + // Area cost, specifies cost for default summary LSAs. + // Used with nssa/stub area types. + leaf cost { + + type ospfv3_AreaCost; + description "Specify cost for default inter-area-prefix LSA"; + } + + // Lsa Leak Control concrete class. + container lsaleakctrlp-items { + list LsaLeakCtrlP-list { + key "direction"; + + uses ospfv3_LsaLeakCtrlP-group; + description "This object holds link-state advertisement(LSA) leak control policies list"; + } + description "This object holds link-state advertisement(LSA) leak control policies"; + } + + // Inter-area route summarization. This is configured + // on ABRs, summarizing routes between areas in the + // autonomous system + container iartsum-items { + list InterAreaRtSum-list { + key "addr"; + + uses ospfv3_InterAreaRtSum-group; + description "Inter-area Route Summarization configured on ABRs list"; + } + description "Inter-area Route Summarization configured on ABRs"; + } + } + + grouping ospfv3_LsaLeakCtrlP-group { + description "This object holds link-state advertisement(LSA) leak control policies"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Scope of the policy (intra protocol, inter protcol, + // default route) + leaf scope { + + type rtleak_Scope; + description "Scope"; + } + leaf rtMap { + type string; + description "Route Map"; + } + + leaf direction { + + type rtleak_RtCtrlDir; + description + "Direction: Specifies whether to apply this policy in the + incoming or outgoing direction."; + } + } + + grouping ospfv3_InterAreaRtSum-group { + description "Inter-area Route Summarization configured on ABRs"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf addr { + type address_Ip; + description "Address"; + } + + // Summary address no Advertise + leaf ctrl { + + type ospf_SumControl; + description "Summary address no advertise"; + } + + // Area range cost + leaf cost { + + type ospf_SumCost; + description "Area range cost for route summarization"; + } + } + + grouping ospfv3_AreaAuthNewP-group { + description "This object holds authentication new policy information for area"; + + // Security Parameter Index + leaf spi { + + type ospfv3_AuthSpi; + description "Security Parameter Index"; + } + + // Authentication key + leaf authKey { + + type ospfv3_AuthKey; + description "Key used for authentication"; + } + + // Authentication key encrypted with 3DES/CiscoType7 or Cleartext + leaf authKeyEncrType { + + type ospfv3_AuthKeyEncrType; + default "cleartext"; + description "Authentication key encryption type which can be Cleartext, 3DES or CiscoType7"; + } + + // Authentication type + leaf authType { + + type ospfv3_AuthType; + description "Authentication types which can be md5, sha1 or disable."; + } + } + + grouping ospfv3_Vlink-group { + description "This object holds information about OSPFv3 virtual link"; + + // Router id associated with virtual link neighbor + leaf nbrRtrId { + + type ip_RtrId; + description "Router id associated with virtual link neighbor"; + } + + // Hello interval, interval between hello packets that + // OSPFv3 sends on the interface + leaf helloIntvl { + + type ospfv3_HelloIntvl; + description "Interval between hello packets that OSPFv3 sends on the interface"; + } + + // Dead interval, interval during which at least one + // hello packet must be received from a neighbor before + // the router declares that neighbor as down + leaf deadIntvl { + + type ospfv3_DeadIntvl; + description + "Dead interval, interval during which at least one + hello packet must be received from a neighbor before + the router declares that neighbor as down"; + } + + // Retransmit interval, time between LSA retransmissions. + // When a router sends an LSA to its neighbor, it keeps + // the LSA until it receives an acknowledgement from the + // neighbor. If the router receives no acknowldegement + // within the retransmit interval, the local router + // resends the LSA + leaf reTxIntvl { + + type ospfv3_ReTxIntvl; + description "Retransmit interval, the time between LSA retransmissions"; + } + + // Transmit delay, estimated time needed to send an LSA + // update packet + leaf txDelay { + + type ospfv3_TxDelay; + description "Transmit delay, estimated time needed to send an LSA update packet"; + } + + // This object holds authentication new policy information for vlink + container auth-items { + + uses ospfv3_VlinkAuthNewP-group; + description "This object holds authentication new policy information for vlink"; + } + } + + grouping ospfv3_VlinkAuthNewP-group { + description "This object holds authentication new policy information for vlink"; + + // Security Parameter Index + leaf spi { + + type ospfv3_AuthSpi; + description "Security Parameter Index"; + } + + // Authentication key + leaf authKey { + + type ospfv3_AuthKey; + description "Key used for authentication"; + } + + // Authentication key encrypted with 3DES/CiscoType7 or Cleartext + leaf authKeyEncrType { + + type ospfv3_AuthKeyEncrType; + default "cleartext"; + description "Authentication key encryption type which can be Cleartext, 3DES or CiscoType7"; + } + + // Authentication type + leaf authType { + + type ospfv3_AuthType; + description "Authentication types which can be md5, sha1 or disable."; + } + } + + grouping ospfv3_DefRtLeakP-group { + description "Default route leak or the distribution policy"; + + // Scope of the policy (intra protocol, inter protcol, + // default route) + leaf scope { + + type rtleak_Scope; + default "defrt"; + description "Scope"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Policy to control distribution of default route"; + } + leaf always { + type boolean; + description "Always advertise default leak"; + } + } + + grouping ospfv3_DomAuthNewP-group { + description "This object holds authentication new policy information for Dom"; + + // Security Parameter Index + leaf spi { + + type ospfv3_AuthSpi; + description "Security Parameter Index"; + } + + // Authentication key + leaf authKey { + + type ospfv3_AuthKey; + description "Key used for authentication"; + } + + // Authentication key encrypted with 3DES/CiscoType7 or Cleartext + leaf authKeyEncrType { + + type ospfv3_AuthKeyEncrType; + default "cleartext"; + description "Authentication key encryption type which can be Cleartext, 3DES or CiscoType7"; + } + + // Authentication type + leaf authType { + + type ospfv3_DomAuthType; + description "Authentication types which can be md5 or sha1."; + } + } + + grouping ospfv3_DomAf-group { + description "OSPFv3 VRF information of IPv6 unicast address-family"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Address family type + leaf type { + + type ospfv3_AfT; + description "IPv6 unicast address family type"; + } + + // Default metric + leaf defaultMetric { + + type ospfv3_DefMetric; + description "Specify default metric for redistributed routes"; + } + + // MAX ECMP + leaf maxEcmp { + + type ospfv3_Ecmp; + description "Maximum Equal Cost Multi Path(ECMP)"; + } + + // Distance + leaf adminDistance { + + type ospfv3_AdminDist; + description "Adminitrative distance value"; + } + leaf defRtNssaPbitClear { + type boolean; + description + "Override RFC 3101 behaviour and add default route on ABR + even if P-bit is clear in received type-7 default route LSA"; + } + + // This object holds spf computation frequency controls, none + // of these need to be exposed to the user + container spfcomp-items { + + uses ospfv3_SpfComp-group; + description "Shortest Path First(SPF) computation frequency controls"; + } + + // This objects holds control distribution of default route leak policy + container defrtleak-items { + + uses ospfv3_DefRtLeakP-group; + description "Default route leak or the distribution policy"; + } + + // Inter protocol route leak policy. This defines distribution + // of routes from other protocols to OSPFV3 + container interleak-items { + list InterLeakP-list { + key "proto inst asn"; + + uses ospfv3_InterLeakP-group; + description "Redistribute information from another routing protocol list"; + } + description "Redistribute information from another routing protocol"; + } + + // Leak controls related to the number of routes leaked + container leakctrl-items { + + uses ospfv3_LeakCtrlP-group; + description "Maximum number of prefixes redistributed to protocol"; + } + + container ribleak-items { + + uses ospfv3_RibLeakP-group; + description "OSPFv3 to Route Information Base(RIB) Route Leak/distribution Policy Per Domain or VRF"; + } + + // External route summarization is specific to external + // routes that are injected into OSPF using route leak. + // Configure external route summarization on ASBRs that + // are leaking routes into OSPF + container extrtsum-items { + list ExtRtSum-list { + key "addr"; + + uses ospfv3_ExtRtSum-group; + description "External Route Summarization on ASBRs that are Leaking Routes into OSPFv3 list"; + } + description "External Route Summarization on ASBRs that are Leaking Routes into OSPFv3"; + } + } + + grouping ospfv3_SpfComp-group { + description "Shortest Path First(SPF) computation frequency controls"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Initial spf schedule delay interval + leaf initIntvl { + + type ospfv3_SpfCompInitIntvl; + description "Initial SPF schedule delay interval"; + } + + // Minimum hold time between spf calculations + leaf holdIntvl { + + type ospfv3_SpfCompHoldIntvl; + description "Minimum hold time interval between SPF calculations"; + } + + // Maximum wait time between spf calculations + leaf maxIntvl { + + type ospfv3_SpfCompMaxIntvl; + description "Maximum wait time between SPF calculations"; + } + } + + grouping ospfv3_InterLeakP-group { + description "Redistribute information from another routing protocol"; + leaf rtMap { + type string { + pattern ".*[!-~]{1,63}.*"; + } + description "Policy to control distribution of default route"; + } + + // Protocol from where the routes are leaked + leaf proto { + + type rtleak_Proto; + description "Protocol"; + } + + // Routing protocol instance, the routing instance of the + // protocol from where the routes are being leaked + leaf inst { + + type rtleak_Inst; + description "Instance"; + } + + // Leak BGP routes from this Autonomous System (AS) <1-4294967295>|<1-65535>[.<0-65535>] Autonomous system number + leaf asn { + + type rtleak_Asn { + pattern "((none)|([1-9]{1}[0-9]{0,8}|[1-3]{1}[0-9]{1,9}|4{1}[0-1]{1}[0-9]{8}|4{1}2{1}[0-8]{1}[0-9]{7}|4{1}2{1}9{1}[0-3]{1}[0-9]{6}|4{1}2{1}9{1}4{1}[0-8]{1}[0-9]{5}|4{1}2{1}9{1}4{1}9{1}[0-5]{1}[0-9]{4}|4{1}2{1}9{1}4{1}9{1}6{1}[0-6]{1}[0-9]{3}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}[0-1]{1}[0-9]{2}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}2{1}[0-8]{1}[0-9]{1}|4{1}2{1}9{1}4{1}9{1}6{1}7{1}2{1}9{1}[0-5]{1})|(([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\\.([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])))"; + } + description "Autonomous System Number"; + } + + // SRv6 Prefix Type which is being leaked + leaf srv6PrefixType { + + type rtleak_Srv6PrefixType; + description "SRv6 Prefix Type; Valid only when proto is srv6"; + } + } + + grouping ospfv3_LeakCtrlP-group { + description "Maximum number of prefixes redistributed to protocol"; + + // Controls on what to do when the number of routes cross + // the maximum route/prefix limit + leaf ctrl { + + type rtleak_Ctrl; + description "Controls"; + } + + // Maximum limit on routes leaked + leaf max { + + type rtleak_MaxPfx; + description "Maximum Limit"; + } + + // Threshold at which warning is issued when number of + // routes crosses the threshold + leaf thresh { + + type rtleak_Thresh; + description "Threshold"; + } + + // Maximum number of retries to retrieve the leaked routes, + // this is applicable only when the routes are withdrawn + leaf retries { + + type rtleak_Retries; + description "Retries"; + } + + // Duration between the retries + leaf duration { + + type rtleak_Duration; + description "Duration"; + } + } + + grouping ospfv3_RibLeakP-group { + description "OSPFv3 to Route Information Base(RIB) Route Leak/distribution Policy Per Domain or VRF"; + leaf rtMap { + type string { + pattern ".*[!-~]{1,63}.*"; + } + description "Route map used in distribution of routes"; + } + + // If always is set to false, only routes that are permitted + // by the route map(rtMap) configuration are downloaded to the + // routing information base (RIB). + leaf always { + + type rtleak_Always; + description "Filter routes into RIB"; + } + } + + grouping ospfv3_ExtRtSum-group { + description "External Route Summarization on ASBRs that are Leaking Routes into OSPFv3"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf addr { + type address_Ip; + description "Address"; + } + + // Summary address no Advertise + leaf ctrl { + + type ospf_SumControl; + description "Summary address no advertise"; + } + + // Summary address tag + leaf tag { + + type ospf_RtTag; + description "Route tag of external route"; + } + } + + grouping ospfv3_LsaCtrl-group { + description "Link State Advertisement(LSA) related frequency controls"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // LSA group pacing interval + leaf gpPacingIntvl { + + type ospfv3_LsaGpPacingIntvl; + description "LSA group pacing interval"; + } + + // Minimum interval between arrival of a LSA + leaf arrivalIntvl { + + type ospfv3_LsaArrivalIntvl; + description "Minimum interval between arrival of a LSA"; + } + + // LSA generation throttle start wait interval + leaf startIntvl { + + type ospfv3_LsaThStartIntvl; + description "LSA generation throttle start wait interval"; + } + + // LSA generation throttle hold interval + leaf holdIntvl { + + type ospfv3_LsaThHoldIntvl; + description "LSA generation throttle hold interval"; + } + + // LSA generation throttle maximum interval + leaf maxIntvl { + + type ospfv3_LsaThMaxIntvl; + description "LSA generation throttle maximum interval"; + } + } + + grouping ospfv3_Gr-group { + description "Object holding per OSPFv3 VRF graceful restart information"; + + // Graceful restart controls + leaf ctrl { + + type ospfv3_GrCtrl; + description "Graceful restart controls like planned, complete and disabled state"; + } + leaf helper { + type boolean; + default "true"; + description "Graceful restart helper mode"; + } + + // Graceful restart period + leaf gracePeriod { + + type ospfv3_GrPeriod; + description "Graceful restart period in seconds starting from 5 to 1800"; + } + leaf restartAge { + config "false"; + type uint32; + description "Graceful restart age"; + } + } + + grouping ospfv3_MaxLsaP-group { + description "Max-LSA(Link State Advertisement) Database overflow for each domain or VRF"; + + // Maximum number of non self-generated LSAs + leaf maxLsa { + + type ospf_MaxLsa; + description "Set maximum number of non self-generated LSAs"; + } + + // Threshold value (%) at which to generate a warning message + leaf thresholdVal { + + type ospf_MaxLsaThresh; + description "Max LSA threshold percentage value at which to generate a warning message"; + } + + // Set count on how many times adjacencies can be suppressed + leaf ignoreCount { + + type ospf_SleepCnt; + description "Set count on how many times adjacencies can be suppressed"; + } + + // Specifies the time (in minutes) to ignore all neighbors after + // the maximum limit of LSAs has been exceeded + leaf ignoreTime { + + type ospf_SleepIntvl; + description "Set time during which all adjacencies are suppressed"; + } + + // Specifies the time in minutes, after which the + // ignore-count is reset to zero. + leaf resetTime { + + type ospf_ResetIntvl; + description "Set number of minutes after which ignore-count is reset to zero"; + } + + leaf logWarning { + + type ospfv3_MaxLsaAct; + description "Log a warning message when limit is exceeded"; + } + } + + grouping ospfv3_MaxMetricLsaP-group { + description "Max-Metric Link State Advertisement(LSA) information per Domain/VRF"; + leaf externalLsa { + type boolean; + description "Set this to max-metric External LSAs"; + } + + // Max metric value to be used for external LSAs + leaf maxMetricExtLsaValue { + + type ospf_MaxMetric; + description "Maximum metric value for external LSAs"; + } + leaf interAreaPrefixLsa { + type boolean; + description "Set this to max-metric Inter-area-prefix LSAs"; + } + + // Max metric value to be used for Inter-area-prefix/summary LSAs + leaf maxMetricSumLsaValue { + + type ospf_MaxMetric; + description "Maximum metric value for Inter-area-prefix/Summary LSAs"; + } + leaf onStartup { + type boolean; + description "Max metric advertised should be effective only at startup"; + } + + // Time (in secs) for which max metric should be advertised + // at startup + leaf startupIntvl { + + type ospf_StartupIntvl; + description "Wait period in seconds after which max metric should be advertised at startup"; + } + leaf stubPrefixLsa { + type boolean; + description "Advertise Max metric for Stub links as well"; + } + + // At startup, advertise max metric until convergence of BGP ASN + leaf awaitConvBgpAsn { + + type rtleak_Asn; + description "At startup, advertise max metric until convergence of BGP ASN"; + } + } + + grouping pim_Entity-group { + description "Holds PIM control plane entity information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This objects hold per pim instance information + container inst-items { + + uses pim_Inst-group; + description "Holds per PIM instance information"; + } + + // This object holds the pim dom related statistics + // Ephemeral data + container pimdomdb-items { + + uses pim_PimDomdb-group; + description "This object holds the PIM domain related statistics"; + } + + // This object holds mrib route db information + // Ephemeral data + container pimifdb-items { + + // Ephemeral data + list PimIfdb-list { + config "false"; + key "ifdbtype"; + + uses pim_PimIfdb-group; + description "Holds PIM route db information list"; + } + description "Holds PIM route db information"; + } + } + + grouping pim_Inst-group { + description "Holds per PIM instance information"; + leaf evpnBorderLeaf { + type boolean; + description "EVPN Border Leaf flag"; + } + leaf extraNet { + type boolean; + description "Extranet RPF Lookup"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // Inter Packet Delay + leaf jpDelay { + + type rtdmc_JPDelay; + description "Inter Packet Delay"; + } + + // Null Register Inter Batch Delay + leaf nrDelay { + + type rtdmc_NRDelay; + description "Null Register Inter Batch Delay"; + } + + // Number of routes in a null register + leaf nrNumRt { + + type rtdmc_NRNumRt; + description "Null Register Number of Routes"; + } + leaf regStop { + type boolean; + description "Register until stops"; + } + + // This objects hold per pim domain (vrf) information + container dom-items { + list Dom-list { + key "name"; + + uses pim_Dom-group; + description "Holds per PIM domain (vrf) information list"; + } + description "Holds per PIM domain (vrf) information"; + } + + // This object holds global config for pim + container gl-items { + + uses pim_Gl-group; + description "This object holds global configuration for PIM"; + } + + // PIM databases + // Ephemeral data + container routedb-items { + + // Ephemeral data + list RouteDb-list { + config "false"; + key "type"; + + uses pim_RouteDb-group; + description "This object holds multicast route database information list"; + } + description "This object holds multicast route database information"; + } + } + + grouping pim_Dom-group { + description "Holds per PIM domain (vrf) information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Admin State + leaf adminSt { + + type nw_AdminSt; + default "disabled"; + description "Admin State"; + } + + // Per-Dom Controls + leaf ctrl { + + type rtdmc_DomCtrl; + description "Domain Controls"; + } + + // Protocol packet MTU + leaf mtu { + + type rtdmc_Mtu; + description "Maximum Transmission Unit"; + } + + // Auto Enable + leaf autoEnable { + + type rtdmc_AutoEnable; + description "Auto Enable"; + } + leaf logNbhChng { + type boolean; + description "Log Neighbhor changes"; + } + leaf flushRoutes { + type boolean; + description "Flush Routes"; + } + leaf bfd { + type boolean; + description "BFD"; + } + + leaf jpDelay { + + type rtdmc_JpDelayRange; + description "Join-Prune message inter-packet delay"; + } + + leaf regRateLmt { + + type rtdmc_RegRateRange; + description "Register rate limit for data packets per second"; + } + leaf rfcStrict { + type boolean; + description "Do not process joins from unknown neighbors"; + } + leaf sptSwitchGraceful { + type boolean; + description "Graceful switch to SPT"; + } + + // This object holds policy for Anycast RP Function + // Specifies the anycast and local interface for the anycast RP + // and all the peer's local info Anycast RP is not supported for BSR and Auto-RP + container acastrpfunc-items { + + uses pim_AcastRPFuncP-group; + description "This object holds policy for Anycast RP Function"; + } + + container assert-items { + + uses pim_Assert-group; + description "This model is used to configure assert events for PIM"; + } + + // This object holds policy for + // Auto-RP method of RP discovery + container autorp-items { + + uses pim_AutoRPP-group; + description "This object holds policy for Auto-RP method of RP discovery"; + } + + // This object holds policy for + // Bootstrap Router method of RP discovery + container bsr-items { + + uses pim_BSRP-group; + description "Holds policy for Bootstrap Router method of RP discovery"; + } + + // PIM databases + container db-items { + list Db-list { + config "false"; + key "type"; + + uses pim_Db-group; + description "This object acts as a database for multicast route information list"; + } + description "This object acts as a database for multicast route information"; + } + + // This object holds the pim dom related statistics + // Ephemeral data + container domstats-items { + + uses pim_DomStats-group; + description "This object holds the PIM domain related statistics"; + } + container eventHist-items { + list EventHistory-list { + key "type"; + + uses pim_EventHistory-group; + description "This object is used to configure event-history buffers list"; + } + description "This object is used to configure event-history buffers"; + } + + // This object holds pim information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses pim_If-group; + description "Holds PIM information that is operated at a interface level list"; + } + description "Holds PIM information that is operated at a interface level"; + } + + // This object holds resource (router state) limit policy + // to limit amount of multicast routing state on the router + container limit-items { + + uses pim_ResP-group; + description "Holds resource (router state) limit policy to limit amount of multicast routing state on the router"; + } + + // This object holds policy for + // Any Source Multicast (ASM) pattern + container asm-items { + + uses pim_ASMPatP-group; + description "Holds policy for Any Source Multicast (ASM) pattern"; + } + + // This object holds policy for + // Source Specific Multicast (SSM) pattern + container ssm-items { + + uses pim_SSMPatP-group; + description "Holds policy for Source Specific Multicast (SSM) pattern"; + } + + // This object holds policy for + // Bidirectional Multicast (BiDir) pattern + container bidir-items { + + uses pim_BidirPatP-group; + description "Holds policy for Bidirectional Multicast (BiDir) pattern"; + } + + // This object holds the MTI pim interface related statistics + // Ephemeral data + container mti-items { + + // Ephemeral data + list MtiProp-list { + config "false"; + key "id"; + + uses pim_MtiProp-group; + description "This object holds the Mti PIM interface related statistics list"; + } + description "This object holds the Mti PIM interface related statistics"; + } + + // This object holds policy for Static RP + container staticrp-items { + + uses pim_StaticRPP-group; + description "Holds policy for Static RP"; + } + + // This object holds the pim control traffic stats + container trstats-items { + + uses pim_TrafficStats-group; + description "Holds the PIM control traffic statistics"; + } + } + + grouping pim_AcastRPFuncP-group { + description "This object holds policy for Anycast RP Function"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Source Interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + + // Anycast RP Unique Local Interface + leaf localIf { + + type nw_IfId; + description "Local Interface"; + } + + // This object holds Anycast RP Peer Info + container peer-items { + list AcastRPPeer-list { + key "addr rpSetAddr"; + + uses pim_AcastRPPeer-group; + description "This object holds Anycast RP Peer Information list"; + } + description "This object holds Anycast RP Peer Information"; + } + } + + grouping pim_AcastRPPeer-group { + description "This object holds Anycast RP Peer Information"; + leaf rpSetAddr { + type address_Ip; + description "IP Address of node performing the function"; + } + leaf addr { + type address_Ip; + description "Address"; + } + } + + grouping pim_Assert-group { + description "This model is used to configure assert events for PIM"; + + // AssertRate + leaf assertRtLmt { + + type rtdmc_AssertRateLmt; + description "Configure Rate limit for pim asserts"; + } + } + + grouping pim_AutoRPP-group { + description "This object holds policy for Auto-RP method of RP discovery"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Auto-RP Control + leaf ctrl { + + type rtdmc_AutoRPCtrl; + description "Control"; + } + + // End Child MOs This object holds policy for + // choosing RPs from among RP candidates + container rpfilter-items { + + uses pim_RPFilterP-group; + description "Holds policy for choosing RPs from among RP candidates"; + } + + // This object holds policy for + // choosing Mapping Agent from among the candidates + container mafilter-items { + + uses pim_MAFilterP-group; + description "This object holds policy for choosing Mapping Agent among the candidates"; + } + + // This object holds policy for RP Function + container rpfunc-items { + + uses pim_RPFuncP-group; + description "Holds policy for RP Function"; + } + + // This object holds policy for + // Auto-RP Mapping Agent Function + container mafunc-items { + + uses pim_MAFuncP-group; + description "This object holds policy for Auto-RP Mapping Agent Function"; + } + } + + grouping pim_RPFilterP-group { + description "Holds policy for choosing RPs from among RP candidates"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + } + + grouping pim_MAFilterP-group { + description "This object holds policy for choosing Mapping Agent among the candidates"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + } + + grouping pim_RPFuncP-group { + description "Holds policy for RP Function"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Source Interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + + // Priority + leaf prio { + + type rtdmc_BSRPrio; + description "Priority"; + } + + // Interval + leaf interval { + + type rtdmc_BSRInterval; + description "Interval"; + } + + // Scope + leaf scope { + + type rtdmc_AutoRPScope; + description "Scope"; + } + leaf addr { + type address_Ip; + description "AutoRP Cand RP Address"; + } + leaf useSendRPAnnCommand { + type boolean; + description "Flag to use send-rp-announce"; + } + + // This object holds multicast group ranges for RP + container range-items { + list RPGrpRange-list { + key "bidir"; + + uses pim_RPGrpRange-group; + description "This object holds multicast group ranges for RP list"; + } + description "This object holds multicast group ranges for RP"; + } + } + + grouping pim_RPGrpRange-group { + description "This object holds multicast group ranges for RP"; + leaf override { + type boolean; + description "Flag to override RP preference to use Static over Dynamic RP"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + leaf pfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Prefix List"; + } + leaf grpList { + type address_Ip; + description "Group List"; + } + leaf grpList1 { + type address_Ip; + description "Group List"; + } + leaf grpList2 { + type address_Ip; + description "Group List"; + } + leaf grpList3 { + type address_Ip; + description "Group List"; + } + leaf ssmNone { + type boolean; + description "SSM None "; + } + leaf bidir { + type boolean; + description "BiDir Groups"; + } + } + + grouping pim_MAFuncP-group { + description "This object holds policy for Auto-RP Mapping Agent Function"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Source Interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + + // Scope + leaf scope { + + type rtdmc_AutoRPScope; + description "Scope"; + } + leaf useSendRPDisCommand { + type boolean; + description "Flag to use send-rp-discovery"; + } + } + + grouping pim_BSRP-group { + description "Holds policy for Bootstrap Router method of RP discovery"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // BSR Control + leaf ctrl { + + type rtdmc_BSRCtrl; + description "Control"; + } + + // End Child MOs This object holds policy for + // choosing RPs from among RP candidates + container rpfilter-items { + + uses pim_RPFilterP-group; + description "Holds policy for choosing RPs from among RP candidates"; + } + + // This object holds policy for + // choosing BSRs from among BSR candidates + container bsrfilter-items { + + uses pim_BSRFilterP-group; + description "Holds BSR policy to filter from other BSR candidates"; + } + + // This object holds policy for RP Function + container rpfunc-items { + + uses pim_RPFuncP-group; + description "Holds policy for RP Function"; + } + + // This object holds policy for + // Bootstrap Router Function + container bsrfunc-items { + + uses pim_BSRFuncP-group; + description "Holds policy for Bootstrap Router Function"; + } + } + + grouping pim_BSRFilterP-group { + description "Holds BSR policy to filter from other BSR candidates"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + } + + grouping pim_BSRFuncP-group { + description "Holds policy for Bootstrap Router Function"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Source Interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + + // Hash Mask Len + leaf hashLen { + + type rtdmc_BSRHashLen { + range "1..32"; + } + description "Hash Mask Len"; + } + + // Priority + leaf prio { + + type rtdmc_BSRPrio; + description "Priority"; + } + + // Priority + leaf interval { + + type rtdmc_BSRInterval; + description "Interval"; + } + } + + grouping pim_Db-group { + description "This object acts as a database for multicast route information"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type of the repository + leaf type { + config "false"; + + type rtdmc_DbT; + description "Type"; + } + container autorp-items { + list AutoRPPInfo-list { + config "false"; + key "addr"; + + uses pim_AutoRPPInfo-group; + description "Holds PIM Auto-RP information list"; + } + description "Holds PIM Auto-RP information"; + } + container bsr-items { + list BSRInfo-list { + config "false"; + key "addr"; + + uses pim_BSRInfo-group; + description "This object holds information related to PIM Selected Bootstrap Router list"; + } + description "This object holds information related to PIM Selected Bootstrap Router"; + } + container grange-items { + list RPGrange-list { + config "false"; + key "addr"; + + uses pim_RPGrange-group; + description "Holds information about RP group range list"; + } + description "Holds information about RP group range"; + } + + // PIM Group/Src MOs + // Ephemeral data + container src-items { + + // Ephemeral data + list Route-list { + config "false"; + key "src grp"; + + uses pim_Route-group; + description "Holds PIM Route, having Group and Source information list"; + } + description "Holds PIM Route, having Group and Source information"; + } + container rp-items { + list RPInfo-list { + config "false"; + key "addr"; + + uses pim_RPInfo-group; + description "PIM Rendezvous Point information list"; + } + description "PIM Rendezvous Point information"; + } + } + + grouping pim_AutoRPPInfo-group { + description "Holds PIM Auto-RP information"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf addr { + config "false"; + type address_Ip; + description "Source address"; + } + leaf expiry { + config "false"; + type union { + type string; + type uint64; + } + description "Expiry timer"; + } + leaf uptime { + config "false"; + type union { + type string; + type uint64; + } + description "Uptime"; + } + leaf priority { + config "false"; + type uint32; + description "Priority"; + } + leaf hashMaskLen { + config "false"; + type uint32; + description "Hash Mask Length"; + } + } + + grouping pim_BSRInfo-group { + description "This object holds information related to PIM Selected Bootstrap Router"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf addr { + config "false"; + type address_Ip; + description "Source address"; + } + leaf expiry { + config "false"; + type union { + type string; + type uint64; + } + description "Expiry timer"; + } + leaf uptime { + config "false"; + type union { + type string; + type uint64; + } + description "Uptime"; + } + leaf priority { + config "false"; + type uint32; + description "Priority"; + } + leaf hashMaskLen { + config "false"; + type uint32; + description "Hash Mask Length"; + } + } + + grouping pim_RPGrange-group { + description "Holds information about RP group range"; + leaf addr { + config "false"; + type address_Ip; + description "IP Address for Group Range"; + } + + leaf flags { + config "false"; + + type rtdmc_GRangeFlags; + description "Group Range flags"; + } + leaf rpAddr { + config "false"; + type address_Ip; + description "RP address for this group range"; + } + } + + grouping pim_Route-group { + description "Holds PIM Route, having Group and Source information"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf ver { + config "false"; + type uint32; + description "Version"; + } + + // Ephemeral data + leaf src { + config "false"; + type address_Ip; + description "Source"; + } + + // Ephemeral data + leaf grp { + config "false"; + type address_Ip; + description "Group"; + } + + // Ephemeral data + leaf rpAddrRoute { + config "false"; + type address_Ip; + description "Route RP addr"; + } + + // Ephemeral data + leaf iif { + config "false"; + + type nw_IfId; + description "Incoming interface"; + } + + // Ephemeral data + leaf rpfNbr { + config "false"; + type address_Ip; + description "RPF Nbr Address"; + } + + // Ephemeral data + leaf rpfSrc { + config "false"; + type address_Ip; + description "RPF Source Address"; + } + + // Ephemeral data + leaf rtType { + config "false"; + + type rtdmc_RtFlags; + description "Route Uptime"; + } + + // Ephemeral data + leaf swPktCnt { + config "false"; + + type rtdmc_PktCntType; + description "Software Packet Count"; + } + + // Ephemeral data + leaf swByteCnt { + config "false"; + + type rtdmc_PktCntType; + description "Software Byte Count"; + } + + // Ephemeral data + leaf hwPktCnt { + config "false"; + + type rtdmc_ByteCntType; + description "Hardware Packet Count"; + } + + // Ephemeral data + leaf hwByteCnt { + config "false"; + + type rtdmc_ByteCntType; + description "Hardware Byte Count"; + } + + // Ephemeral data + leaf assertMetric { + config "false"; + type uint32; + description "Assert metric"; + } + + // Ephemeral data + leaf assertMetricPref { + config "false"; + type uint32; + description "Assert metric preference"; + } + + // Ephemeral data + leaf routeBits { + config "false"; + + type rtdmc_RouteBits; + description "RP WC Bit"; + } + + // Ephemeral data + leaf rtTimeOutInvtl { + config "false"; + type uint32; + description "Route Timeout Interval"; + } + + // Ephemeral data + leaf jpHoldTime { + config "false"; + type uint32; + description "JP Hold time"; + } + } + + grouping pim_RPInfo-group { + description "PIM Rendezvous Point information"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf addr { + config "false"; + type address_Ip; + description "RP address"; + } + leaf local { + config "false"; + type boolean; + description "Is RP local"; + } + leaf uptime { + config "false"; + type union { + type string; + type uint64; + } + description "RP uptime"; + } + leaf arpExp { + config "false"; + type union { + type string; + type uint64; + } + description "Auto RP Expiry timer"; + } + leaf bsrExp { + config "false"; + type union { + type string; + type uint64; + } + description "BSR RP Expiry timer"; + } + leaf bsrAddr { + config "false"; + type address_Ip; + description "Selected BSR Address"; + } + leaf priority { + config "false"; + type uint32; + description "RP Priority"; + } + + leaf discType { + config "false"; + + type rtdmc_RPSourceType; + description "RP source type"; + } + leaf dfOrdinal { + config "false"; + type uint32; + description "Bidir DF Ordinal"; + } + + container rsrP2Grange-items { + + list RsRP2Grange-list { + config "false"; + key "tDn"; + + uses pim_RsRP2Grange_source-group; + description "RP to Group range mapping list"; + } + description "RP to Group range mapping"; + } + } + + grouping pim_DomStats-group { + description "This object holds the PIM domain related statistics"; + + // Ephemeral data + leaf regSent { + config "false"; + + type rtdmc_Counter32; + description "Registers Sent"; + } + + // Ephemeral data + leaf regRcvd { + config "false"; + + type rtdmc_Counter32; + description "Registers Received "; + } + + // Ephemeral data + leaf nullRegSent { + config "false"; + + type rtdmc_Counter32; + description "Null Registers Sent"; + } + + // Ephemeral data + leaf nullRegRcvd { + config "false"; + + type rtdmc_Counter32; + description "Null Registers Received"; + } + + // Ephemeral data + leaf regStopSent { + config "false"; + + type rtdmc_Counter32; + description "Register Stop Sent"; + } + + // Ephemeral data + leaf regStopRcvd { + config "false"; + + type rtdmc_Counter32; + description "Register Stop Received "; + } + + // Ephemeral data + leaf regRcvdSSM { + config "false"; + + type rtdmc_Counter32; + description "Registers Received for SSM"; + } + + // Ephemeral data + leaf regRcvdBiDir { + config "false"; + + type rtdmc_Counter32; + description "Registers Received for BiDir"; + } + + // Ephemeral data + leaf regRcvdAndNotRP { + config "false"; + + type rtdmc_Counter32; + description "Registers Received but not RP"; + } + + // Ephemeral data + leaf bsrBsSent { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap message sent"; + } + + // Ephemeral data + leaf bsrBsRcvd { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap message received"; + } + + // Ephemeral data + leaf bsrCRPSent { + config "false"; + + type rtdmc_Counter32; + description "Candidate RP message sent"; + } + + // Ephemeral data + leaf bsrCRPRcvd { + config "false"; + + type rtdmc_Counter32; + description "Candidate RP message received"; + } + + // Ephemeral data + leaf bsrBsFromNonNbr { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap message from non-neighbor"; + } + + // Ephemeral data + leaf bsrBsFromBorderIF { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap message from border interface"; + } + + // Ephemeral data + leaf bsrBsLenErr { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap length error"; + } + + // Ephemeral data + leaf bsrBsRPFFail { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap messages for which RPF Failed"; + } + + // Ephemeral data + leaf bsrBsRcvdLisNotConf { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap received listen not configured"; + } + + // Ephemeral data + leaf bsrCRPFromBorderIF { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap Candidate RP From border interface"; + } + + // Ephemeral data + leaf bsrCRPRcvdLisNotConf { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap candidate RP received but listen not configured"; + } + + // Ephemeral data + leaf autoRPAnnouncesSent { + config "false"; + + type rtdmc_Counter32; + description "RP announcements sent"; + } + + // Ephemeral data + leaf autoRPAnnouncesRcvd { + config "false"; + + type rtdmc_Counter32; + description "RP announcements received"; + } + + // Ephemeral data + leaf autoRPDiscoveriesSent { + config "false"; + + type rtdmc_Counter32; + description "RP discoveries sent"; + } + + // Ephemeral data + leaf autoRPDiscoveriesRcvd { + config "false"; + + type rtdmc_Counter32; + description "RP discoveries received"; + } + + // Ephemeral data + leaf autoRPRPFFailed { + config "false"; + + type rtdmc_Counter32; + description "Auto RP RPF Failed"; + } + + // Ephemeral data + leaf autoRPFromBorderIF { + config "false"; + + type rtdmc_Counter32; + description "Auto RP from border interface"; + } + + // Ephemeral data + leaf autoRPInvalidType { + config "false"; + + type rtdmc_Counter32; + description "Auto RP invalid type"; + } + + // Ephemeral data + leaf autoRPTTLExp { + config "false"; + + type rtdmc_Counter32; + description "Auto RP TTL expired"; + } + + // Ephemeral data + leaf autoRPRcvdLisNotConf { + config "false"; + + type rtdmc_Counter32; + description "Auto RP received but listen not configured"; + } + + // Ephemeral data + leaf cpRPFFailNoRoute { + config "false"; + + type rtdmc_Counter32; + description "Control plane RPF fail due to no route"; + } + + // Ephemeral data + leaf dpRPFFailNoRoute { + config "false"; + + type rtdmc_Counter32; + description "Data Plane RPF fail due to no route"; + } + + // Ephemeral data + leaf dpNoMcastState { + config "false"; + + type rtdmc_Counter32; + description "Data Plane no multicast state found"; + } + + // Ephemeral data + leaf dpCrtRouteStateCnt { + config "false"; + + type rtdmc_Counter32; + description "Data Plane create route state count"; + } + } + + grouping pim_EventHistory-group { + description "This object is used to configure event-history buffers"; + + leaf type { + + type pim_EhType; + description "configures type of event history"; + } + + leaf size { + + type pim_Size; + description "configures buffer size in text/kb"; + } + } + + grouping pim_If-group { + description "Holds PIM information that is operated at a interface level"; + + // Interface Control + leaf ctrl { + + type pim_IfCtrl; + description "Interface Controls"; + } + + // Designated Router Priority + leaf drPrio { + + type pim_DRPrio; + description "Designated Router Priority level"; + } + + // Designated Router Delay + leaf drDelay { + + type pim_DRDelay; + description "Designated Router Delay value"; + } + leaf jpRtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Join Prune Policy name"; + } + leaf neighRtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Neighbor route-map Policy"; + } + leaf neighpfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Neighbor prefix-list Policy"; + } + leaf border { + type boolean; + description "Border policy - Treat interface as boundary of PIM domain"; + } + leaf borderRouter { + type boolean; + description "Acts as a border router on configuration"; + } + leaf passive { + type boolean; + description "Passive interface - No send or receive"; + } + leaf rtEpPDn { + type string; + description "L3 Router EpP DN"; + } + leaf ipAddr { + config "false"; + type address_Ip; + description "IP Address of the interface"; + } + + leaf bfdInst { + + type pim_BfdInstSt; + description "BFD Instance State"; + } + leaf pimSparseMode { + type boolean; + description "Sparse Mode configured"; + } + leaf rfcStrict { + type boolean; + description "Do not process joins from unknown neighbors on this interface"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + // PIM databases + container db-items { + list Db-list { + config "false"; + key "type"; + + uses pim_Db-group; + description "This object acts as a database for multicast route information list"; + } + description "This object acts as a database for multicast route information"; + } + + // This object holds mrib route db information + // Ephemeral data + container ifdb-items { + + // Ephemeral data + list Ifdb-list { + config "false"; + key "ifdbtype"; + + uses pim_Ifdb-group; + description "Holds PIM route db information list"; + } + description "Holds PIM route db information"; + } + + // This object holds the join-prune traffic policy + container jp-items { + list JPTrP-list { + key "policyDir"; + + uses pim_JPTrP-group; + description "This object holds the join-prune traffic policy list"; + } + description "This object holds the join-prune traffic policy"; + } + + // This object holds the hello traffic policy + container hello-items { + + uses pim_HelloTrP-group; + description "This object holds the hello traffic policy"; + } + + // This object holds the pim control traffic stats + container trstats-items { + + uses pim_TrafficStats-group; + description "Holds the PIM control traffic statistics"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping pim_Ifdb-group { + description "Holds PIM route db information"; + + // Type of the repository + // Ephemeral data + leaf ifdbtype { + config "false"; + + type pim_ifdbT; + description "represents repository type"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // This object holds pim neighbor information + // Ephemeral data + container adj-items { + + // Ephemeral data + list AdjEp-list { + config "false"; + key "addr"; + + uses pim_AdjEp-group; + description "This object holds PIM neighbor information list"; + } + description "This object holds PIM neighbor information"; + } + + // This object holds the pim interface related statistics + // Ephemeral data + container ifprop-items { + + uses pim_IfProp-group; + description "This object holds the PIM interface related statistics"; + } + + // This object holds the pim interface related statistics + // Ephemeral data + container ifstats-items { + + uses pim_IfStats-group; + description "Holds the PIM interface related statistics"; + } + } + + grouping pim_AdjEp-group { + description "This object holds PIM neighbor information"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "Address of neighbor interface"; + } + + // Ephemeral data + leaf nbrName { + config "false"; + type string; + description "Neighbor Name"; + } + + // DR Priority + // Ephemeral data + leaf drPrio { + config "false"; + + type rtdmc_DRPrio; + description "DR Priority"; + } + + // Ephemeral data + leaf uptime { + config "false"; + type string; + description "Uptime of the neighbor"; + } + + // Ephemeral data + leaf expiry { + config "false"; + type string; + description "Neighbor Expiry Timer value"; + } + + // Generation id + // Ephemeral data + leaf genId { + config "false"; + + type rtdmc_GenId; + description "Generation ID"; + } + + // BFD state + // Ephemeral data + leaf bfdSt { + config "false"; + + type rtdmc_BfdOperSt; + description "BFD State"; + } + + // Adjacency state + // Ephemeral data + leaf operSt { + config "false"; + + type rtdmc_AdjOperSt; + description "Operational State"; + } + + // Flags + // Ephemeral data + leaf flags { + config "false"; + + type rtdmc_AdjFlags; + description "Flags"; + } + + // This object holds the pim neighbor related statistics + // Ephemeral data + container adjstats-items { + + uses pim_AdjStats-group; + description "This object holds the PIM neighbor related statistics"; + } + } + + grouping pim_AdjStats-group { + description "This object holds the PIM neighbor related statistics"; + + // Ephemeral data + leaf lastHelloReceived { + config "false"; + type string; + description "Last Hello Received time"; + } + + // Longest Hello Interval + // Ephemeral data + leaf longHelloItvl { + config "false"; + + type rtdmc_HelloItvl; + description "Longest Hello Interval"; + } + + // Last Hold Time advertised by Peer + // Ephemeral data + leaf lastHoldTime { + config "false"; + + type rtdmc_HoldTime; + description "Last Hold Time"; + } + + // non-hello expiry timer resets + // Ephemeral data + leaf nonHelloExpResets { + config "false"; + + type rtdmc_Counter32; + description "Non-Hello Expiry Timer Resets"; + } + } + + grouping pim_IfProp-group { + description "This object holds the PIM interface related statistics"; + + // Ephemeral data + leaf nextHello { + config "false"; + type union { + type string; + type uint64; + } + description "Time when next hello is sent"; + } + + // Ephemeral data + leaf nbrHoldTime { + config "false"; + type uint32; + description "PIM Neighbor HoldTime"; + } + + // Ephemeral data + leaf dr { + config "false"; + type address_Ip; + description "PIM Designated Router information"; + } + + // Generation id + // Ephemeral data + leaf genID { + config "false"; + + type pim_PropGenId; + description "Generation Identifier"; + } + } + + grouping pim_IfStats-group { + description "Holds the PIM interface related statistics"; + + // Ephemeral data + leaf helloSent { + config "false"; + + type rtdmc_Counter32; + description "number of hello sent"; + } + + // Ephemeral data + leaf helloRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of hello rcvd"; + } + + // Ephemeral data + leaf jpSent { + config "false"; + + type rtdmc_Counter32; + description "number of JP sent"; + } + + // Ephemeral data + leaf jpRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of JP rcvd"; + } + + // Ephemeral data + leaf assertRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of assert rcvd"; + } + + // Ephemeral data + leaf graftsSent { + config "false"; + + type rtdmc_Counter32; + description "number of grafts sent"; + } + + // Ephemeral data + leaf graftsRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of grafts rcvd"; + } + + // Ephemeral data + leaf grftAckSent { + config "false"; + + type rtdmc_Counter32; + description "number of graft ack sent"; + } + + // Ephemeral data + leaf grftAckRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of graft ack rcvd"; + } + + // Ephemeral data + leaf dfOfferSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF-offer sent"; + } + + // Ephemeral data + leaf dfOfferRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF-offer rcvd"; + } + + // Ephemeral data + leaf dfWinnerSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF winner sent"; + } + + // Ephemeral data + leaf dfWinnerRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF winner rcvd"; + } + + // Ephemeral data + leaf dfBackoffSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF backoff sent"; + } + + // Ephemeral data + leaf dfBackoffRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF backoff rcvd"; + } + + // Ephemeral data + leaf dfPassesSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF Passes sent"; + } + + // Ephemeral data + leaf dfPassesRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF Passes rcvd"; + } + + // Ephemeral data + leaf chksumErr { + config "false"; + + type rtdmc_Counter32; + description "Checksum errors"; + } + + // Ephemeral data + leaf invalidPktRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of invalid pkt rcvd"; + } + + // Ephemeral data + leaf authFail { + config "false"; + + type rtdmc_Counter32; + description "number of authentication failures"; + } + + // Ephemeral data + leaf pktLenErr { + config "false"; + + type rtdmc_Counter32; + description "number of packet length errors"; + } + + // Ephemeral data + leaf badVerPkt { + config "false"; + + type rtdmc_Counter32; + description "number of bad version pkts"; + } + + // Ephemeral data + leaf pktFrmSelf { + config "false"; + + type rtdmc_Counter32; + description "number of pkts from Self"; + } + + // Ephemeral data + leaf pktFrmNonNbr { + config "false"; + + type rtdmc_Counter32; + description "packets from Non-Neighbor"; + } + + // Ephemeral data + leaf pktOnPassiveIf { + config "false"; + + type rtdmc_Counter32; + description "number of packets on passive interface"; + } + + // Ephemeral data + leaf jpRcvdOnRPF { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd on RPF interface"; + } + + // Ephemeral data + leaf joinNoRP { + config "false"; + + type rtdmc_Counter32; + description "*,G Join rcvd with no RP"; + } + + // Ephemeral data + leaf joinWrongRp { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd on Wrong RP"; + } + + // Ephemeral data + leaf jpSSMRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd for SSM groups"; + } + + // Ephemeral data + leaf jpBidirRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd for Bidir groups"; + } + + // Ephemeral data + leaf jpFilterIn { + config "false"; + + type rtdmc_Counter32; + description "number of JP filtered by inbound policy "; + } + + // Ephemeral data + leaf jpFilterOut { + config "false"; + + type rtdmc_Counter32; + description "number of JP filtered by outbound policy "; + } + } + + grouping pim_JPTrP-group { + description "This object holds the join-prune traffic policy"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf RtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Out Route Map"; + } + leaf pfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "In Prefix List"; + } + + // in route-map for out-bound policy application + // Interval used between peers + leaf itvl { + + type rtdmc_JPItvl; + description "Periodic Interval"; + } + + leaf policyDir { + + type rtdmc_PolicyDirType; + description "Policy Direction "; + } + } + + grouping pim_HelloTrP-group { + description "This object holds the hello traffic policy"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Hello Interval + leaf helloItvl { + + type rtdmc_HelloItvl; + description "Hello Interval"; + } + + // Authentication Type + leaf authT { + + type rtdmc_AuthT; + description "Authentication Type"; + } + + // Authentication Key + leaf authKey { + + type rtdmc_AuthKey; + description "Authentication Key"; + } + } + + grouping pim_TrafficStats-group { + description "Holds the PIM control traffic statistics"; + + // AutoRP Announce Received + leaf autorpAnnRcvd { + config "false"; + + type nw_Counter32; + description "AutoRP Announce Received"; + } + + // AutoRP Discovery received + leaf autorpDiscRcvd { + config "false"; + + type nw_Counter32; + description "AutoRP Discovery Received"; + } + + // AutoRP Announce Sent + leaf autorpAnnSent { + config "false"; + + type nw_Counter32; + description "AutoRP Announce Sent"; + } + + // Auto RP Discovery sent + leaf autorpDiscSent { + config "false"; + + type nw_Counter32; + description "AutoRP Discovery Sent"; + } + + // AutoRP RPF Sent + leaf autorpRpfSent { + config "false"; + + type nw_Counter32; + description "AutoRP RPF Sent"; + } + + // AutoRP Border Deny + leaf autorpBrdDeny { + config "false"; + + type nw_Counter32; + description "AutoRP Border Deny"; + } + + // AutoRP No Listen + leaf autorrpNoListn { + config "false"; + + type nw_Counter32; + description "AutoRP No Listen"; + } + + // AutoRP TTL Expired + leaf autorpTtlExp { + config "false"; + + type nw_Counter32; + description "AutoRP TTL Expired"; + } + + // AutoRP Invalid type + leaf autorpInvType { + config "false"; + + type nw_Counter32; + description "AutoRP Invalid Type"; + } + leaf lastClearTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last Clear Timestamp"; + } + + // Register received + leaf regRcvd { + config "false"; + + type nw_Counter32; + description "Register Received"; + } + + // Null register received + leaf nullRegRcvd { + config "false"; + + type nw_Counter32; + description "Null Register Received"; + } + + // Reg Stop Received + leaf regStopRcvd { + config "false"; + + type nw_Counter32; + description "Reg Stop Received"; + } + + // Bootstrap received + leaf bsRcvd { + config "false"; + + type nw_Counter32; + description "Bootstrap received"; + } + + // Candidate Rp Received + leaf candRpRcvd { + config "false"; + + type nw_Counter32; + description "Candidate RP Received"; + } + + // Null Register Sent + leaf nullRegSent { + config "false"; + + type nw_Counter32; + description "NULL Register sent"; + } + + // Register stop sent + leaf regStopSent { + config "false"; + + type nw_Counter32; + description "Register Stop Sent"; + } + + // Bootstrap sent + leaf bsSent { + config "false"; + + type nw_Counter32; + description "Bootstrap Sent"; + } + + // Candidate RP Sent + leaf candRPSent { + config "false"; + + type nw_Counter32; + description "Candidate RP Sent"; + } + + // BS no NBR + leaf bsNoNbr { + config "false"; + + type nw_Counter32; + description "BS No NBR"; + } + + // BS Border Deny + leaf bsBordDeny { + config "false"; + + type nw_Counter32; + description "BS Border Deny"; + } + + // BS LEngth errors + leaf bsLenErr { + config "false"; + + type nw_Counter32; + description "BS Len Errors"; + } + + // BS RPF Failed + leaf bsRpfFail { + config "false"; + + type nw_Counter32; + description "BS RPF Failed"; + } + + // BS NO Listen + leaf bsNoLis { + config "false"; + + type nw_Counter32; + description "BS No Listen"; + } + + // Candidate RP No Listen + leaf candrpNoLis { + config "false"; + + type nw_Counter32; + description "Candidate RP No Listen"; + } + + // Candidate RP Border Deny + leaf candrpBordDeny { + config "false"; + + type nw_Counter32; + description "Candidate RP Border Deny"; + } + + // REgister received not RP + leaf regRcvdNoRP { + config "false"; + + type nw_Counter32; + description "Register Received not RP"; + } + + // Register Received for SSM + leaf regRcvdForSSM { + config "false"; + + type nw_Counter32; + description "Register Received Not SSM"; + } + + // Register received for bidir + leaf regRcvdForBd { + config "false"; + + type nw_Counter32; + description "Register received for Bidir"; + } + + // no route + leaf noRoute { + config "false"; + + type nw_Counter32; + description "No Route"; + } + } + + grouping pim_ResP-group { + description "Holds resource (router state) limit policy to limit amount of multicast routing state on the router"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Maximum Multicast Entries + leaf max { + + type mcast_NumEntries; + description "Maximum Multicast Entries"; + } + + // Reserved Multicast Entries + leaf rsvd { + + type mcast_NumEntries; + description "Reserved Multicast Entries"; + } + leaf rtMap { + type string; + description "Reserved Entries Route Map"; + } + } + + grouping pim_ASMPatP-group { + description "Holds policy for Any Source Multicast (ASM) pattern"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Controls + leaf ctrl { + + type rtdmc_ASMCtrl; + description "Controls"; + } + leaf preBuildSpt { + type boolean; + description "Pre-Build-SPT"; + } + leaf force { + type boolean; + description "force pre-build-spt"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + leaf pfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Prefix List"; + } + + // This object holds (S,G) expiry timer + // policy for specified range + container sgexp-items { + + uses pim_SGRangeExpP-group; + description "Holds (S,G) expiry timer policy for specified range"; + } + + // This object holds group range + // to use only shared tree + container shared-items { + + uses pim_SharedRangeP-group; + description "Holds group range policy to use only shared tree"; + } + + // This object holds the register traffic policy + container reg-items { + + uses pim_RegTrP-group; + description "This object holds the register traffic policy"; + } + } + + grouping pim_SGRangeExpP-group { + description "Holds (S,G) expiry timer policy for specified range"; + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + leaf pfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Prefix List"; + } + leaf grpList { + type address_Ip; + description "Group List"; + } + leaf grpList1 { + type address_Ip; + description "Group List"; + } + leaf grpList2 { + type address_Ip; + description "Group List"; + } + leaf grpList3 { + type address_Ip; + description "Group List"; + } + leaf ssmNone { + type boolean; + description "SSM None "; + } + + // (S,G) entry inactivity expiry timer + leaf sgExpItvl { + + type rtdmc_SGExpItvl; + description "(S,G) Entry Expiry Timer"; + } + leaf sparse { + type boolean; + description "(S,G) Entry Expiry Timer configured with sparse mode"; + } + } + + grouping pim_SharedRangeP-group { + description "Holds group range policy to use only shared tree"; + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + leaf pfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Prefix List"; + } + leaf grpList { + type address_Ip; + description "Group List"; + } + leaf grpList1 { + type address_Ip; + description "Group List"; + } + leaf grpList2 { + type address_Ip; + description "Group List"; + } + leaf grpList3 { + type address_Ip; + description "Group List"; + } + leaf ssmNone { + type boolean; + description "SSM None "; + } + leaf useSPTCommand { + type boolean; + description "Flag to use spt-threashold command"; + } + } + + grouping pim_RegTrP-group { + description "This object holds the register traffic policy"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf addr { + type address_Ip; + description "Source Address"; + } + + // Source Interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + + // Max Rate + leaf maxRate { + + type rtdmc_RegRate; + description "Maximum Rate"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Register Message Route Map"; + } + leaf pfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Register Message Prefix List"; + } + } + + grouping pim_SSMPatP-group { + description "Holds policy for Source Specific Multicast (SSM) pattern"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // This object holds SSM group range + container range-items { + + uses pim_SSMRangeP-group; + description "SSM Group Range Policy"; + } + } + + grouping pim_SSMRangeP-group { + description "SSM Group Range Policy"; + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + leaf pfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Prefix List"; + } + leaf grpList { + type address_Ip; + description "Group List"; + } + leaf grpList1 { + type address_Ip; + description "Group List"; + } + leaf grpList2 { + type address_Ip; + description "Group List"; + } + leaf grpList3 { + type address_Ip; + description "Group List"; + } + leaf ssmNone { + type boolean; + description "SSM None "; + } + } + + grouping pim_BidirPatP-group { + description "Holds policy for Bidirectional Multicast (BiDir) pattern"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Maximum number of RPs + leaf maxRP { + + type rtdmc_BidirRPLimit; + description "Maximum RPs"; + } + + // Designated Forwarder Offer Burst Interval + leaf dfobItvl { + + type rtdmc_DFOBItvl; + description "Designated Forwarder Offer Burst Interval"; + } + } + + grouping pim_MtiProp-group { + description "This object holds the Mti PIM interface related statistics"; + + // Ephemeral data + leaf id { + config "false"; + type uint32; + description "represents mti ID"; + } + + // Ephemeral data + leaf nextHello { + config "false"; + type union { + type string; + type uint64; + } + description "Time when next hello is sent"; + } + + // Ephemeral data + leaf nbrHoldTime { + config "false"; + type uint32; + description "PIM Neighbor HoldTime"; + } + + // Generation id + // Ephemeral data + leaf genID { + config "false"; + + type pim_PropGenId; + description "Generation Identifier"; + } + + // Ephemeral data + leaf pimMTU { + config "false"; + type uint32; + description "Value of PIM MTU on the mti interface"; + } + + // Ephemeral data + leaf dr { + config "false"; + type address_Ip; + description "Designated router address(DR)"; + } + + // Ephemeral data + leaf nbrCount { + config "false"; + type uint32; + description "PIM Neighbor Count on MTI interface"; + } + + // Ephemeral data + leaf brdrInterface { + config "false"; + type boolean; + description + "Indicates if Interface is Border + interface"; + } + + // This object holds pim neighbor information + // Ephemeral data + container adj-items { + + // Ephemeral data + list MtiAdj-list { + config "false"; + key "addr"; + + uses pim_MtiAdj-group; + description "This object holds PIM neighbor information list"; + } + description "This object holds PIM neighbor information"; + } + + // This object holds the pim interface related statistics + // Ephemeral data + container ifstats-items { + + uses pim_MtiStats-group; + description "Holds the PIM interface related statistics"; + } + } + + grouping pim_MtiAdj-group { + description "This object holds PIM neighbor information"; + + // Ephemeral data + leaf isVpcPeer { + config "false"; + type boolean; + description + "Indicates if this interface is VPC + peer"; + } + + // Ephemeral data + leaf isInactive { + config "false"; + type boolean; + description + "Indicates if this neighbor is + inactive"; + } + + // Ephemeral data + leaf helloAuthPending { + config "false"; + type boolean; + description "Is Hello Auth pending"; + } + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "Address of neighbor interface"; + } + + // Ephemeral data + leaf nbrName { + config "false"; + type string; + description "Neighbor Name"; + } + + // DR Priority + // Ephemeral data + leaf drPrio { + config "false"; + + type rtdmc_DRPrio; + description "DR Priority"; + } + + // Ephemeral data + leaf uptime { + config "false"; + type string; + description "Uptime of the neighbor"; + } + + // Ephemeral data + leaf expiry { + config "false"; + type string; + description "Neighbor Expiry Timer value"; + } + + // Generation id + // Ephemeral data + leaf genId { + config "false"; + + type rtdmc_GenId; + description "Generation ID"; + } + + // BFD state + // Ephemeral data + leaf bfdSt { + config "false"; + + type rtdmc_BfdOperSt; + description "BFD State"; + } + + // Adjacency state + // Ephemeral data + leaf operSt { + config "false"; + + type rtdmc_AdjOperSt; + description "Operational State"; + } + + // This object holds the pim neighbor related statistics + // Ephemeral data + container adjstats-items { + + uses pim_MtiAdjStats-group; + description "This object holds the PIM neighbor related statistics"; + } + } + + grouping pim_MtiAdjStats-group { + description "This object holds the PIM neighbor related statistics"; + + // Ephemeral data + leaf lastHelloReceived { + config "false"; + type string; + description "Last Hello Received time"; + } + + // Longest Hello Interval + // Ephemeral data + leaf longHelloItvl { + config "false"; + + type rtdmc_HelloItvl; + description "Longest Hello Interval"; + } + + // non-hello expiry timer resets + // Ephemeral data + leaf nonHelloExpResets { + config "false"; + + type rtdmc_Counter32; + description "Non-Hello Expiry Timer Resets"; + } + } + + grouping pim_MtiStats-group { + description "Holds the PIM interface related statistics"; + + // Ephemeral data + leaf helloSent { + config "false"; + + type rtdmc_Counter32; + description "number of hello sent"; + } + + // Ephemeral data + leaf helloRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of hello rcvd"; + } + + // Ephemeral data + leaf jpSent { + config "false"; + + type rtdmc_Counter32; + description "number of JP sent"; + } + + // Ephemeral data + leaf jpRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of JP rcvd"; + } + + // Ephemeral data + leaf assertRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of assert rcvd"; + } + + // Ephemeral data + leaf graftsSent { + config "false"; + + type rtdmc_Counter32; + description "number of grafts sent"; + } + + // Ephemeral data + leaf graftsRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of grafts rcvd"; + } + + // Ephemeral data + leaf grftAckSent { + config "false"; + + type rtdmc_Counter32; + description "number of graft ack sent"; + } + + // Ephemeral data + leaf grftAckRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of graft ack rcvd"; + } + + // Ephemeral data + leaf dfOfferSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF-offer sent"; + } + + // Ephemeral data + leaf dfOfferRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF-offer rcvd"; + } + + // Ephemeral data + leaf dfWinnerSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF winner sent"; + } + + // Ephemeral data + leaf dfWinnerRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF winner rcvd"; + } + + // Ephemeral data + leaf dfBackoffSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF backoff sent"; + } + + // Ephemeral data + leaf dfBackoffRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF backoff rcvd"; + } + + // Ephemeral data + leaf dfPassesSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF Passes sent"; + } + + // Ephemeral data + leaf dfPassesRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF Passes rcvd"; + } + + // Ephemeral data + leaf chksumErr { + config "false"; + + type rtdmc_Counter32; + description "Checksum errors"; + } + + // Ephemeral data + leaf invalidPktRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of invalid pkt rcvd"; + } + + // Ephemeral data + leaf authFail { + config "false"; + + type rtdmc_Counter32; + description "number of authentication failures"; + } + + // Ephemeral data + leaf pktLenErr { + config "false"; + + type rtdmc_Counter32; + description "number of packet length errors"; + } + + // Ephemeral data + leaf badVerPkt { + config "false"; + + type rtdmc_Counter32; + description "number of bad version pkts"; + } + + // Ephemeral data + leaf pktFrmSelf { + config "false"; + + type rtdmc_Counter32; + description "number of pkts from Self"; + } + + // Ephemeral data + leaf pktFrmNonNbr { + config "false"; + + type rtdmc_Counter32; + description "packets from Non-Neighbor"; + } + + // Ephemeral data + leaf pktOnPassiveIf { + config "false"; + + type rtdmc_Counter32; + description "number of packets on passive interface"; + } + + // Ephemeral data + leaf jpRcvdOnRPF { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd on RPF interface"; + } + + // Ephemeral data + leaf joinNoRP { + config "false"; + + type rtdmc_Counter32; + description "*,G Join rcvd with no RP"; + } + + // Ephemeral data + leaf joinWrongRp { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd on Wrong RP"; + } + + // Ephemeral data + leaf jpSSMRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd for SSM groups"; + } + + // Ephemeral data + leaf jpBidirRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd for Bidir groups"; + } + + // Ephemeral data + leaf jpFilterIn { + config "false"; + + type rtdmc_Counter32; + description "number of JP filtered by inbound policy "; + } + + // Ephemeral data + leaf jpFilterOut { + config "false"; + + type rtdmc_Counter32; + description "number of JP filtered by outbound policy "; + } + } + + grouping pim_StaticRPP-group { + description "Holds policy for Static RP"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // This object holds Static RP Info + // If rp addr is configured locally, + // router assumes RP functionality + container rp-items { + list StaticRP-list { + key "addr"; + + uses pim_StaticRP-group; + description "Holds Static RP Information.If rp address is configured locally,router assumes RP functionality list"; + } + description "Holds Static RP Information.If rp address is configured locally,router assumes RP functionality"; + } + } + + grouping pim_StaticRP-group { + description "Holds Static RP Information.If rp address is configured locally,router assumes RP functionality"; + leaf addr { + type address_Ip; + description "Address"; + } + + // This object holds multicast group ranges for RP + container range-items { + list RPGrpRange-list { + key "bidir"; + + uses pim_RPGrpRange-group; + description "This object holds multicast group ranges for RP list"; + } + description "This object holds multicast group ranges for RP"; + } + container rpgrplist-items { + list RPGrpList-list { + key "grpListName"; + + uses pim_RPGrpList-group; + description "RP Multicast Group List list"; + } + description "RP Multicast Group List"; + } + } + + grouping pim_RPGrpList-group { + description "RP Multicast Group List"; + leaf grpListName { + type address_Ip; + description "Group List address information"; + } + leaf bidir { + type boolean; + description "Flag to treat Group Ranges as BiDir"; + } + leaf override { + type boolean; + description "Flag to override RP preference to use Static over Dynamic RP"; + } + } + + grouping pim_Gl-group { + description "This object holds global configuration for PIM"; + + // LoggingLevel + leaf logLevel { + + type pim_LoggingLvl; + description "Sets syslog filter level for PIM"; + } + + // logLevel + leaf logLvl { + + type mcast_LogLevelRange; + description "Syslog filter level"; + } + leaf isolate { + type boolean; + description "Isolate this router flag"; + } + } + + grouping pim_RouteDb-group { + description "This object holds multicast route database information"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type of the repository + // Ephemeral data + leaf type { + config "false"; + + type rtdmc_DbT; + description "Type"; + } + + // This objects hold per pim domain (vrf) information + // Ephemeral data + container vrf-items { + + // Ephemeral data + list Vrf-list { + config "false"; + key "name"; + + uses pim_Vrf-group; + description "Holds per PIM domain (vrf) information list"; + } + description "Holds per PIM domain (vrf) information"; + } + } + + grouping pim_Vrf-group { + description "Holds per PIM domain (vrf) information"; + + // Vrf name + // Ephemeral data + leaf name { + config "false"; + + type l3_VrfName; + description "Vrf Name"; + } + + // This object holds PIM route group information + // Ephemeral data + container group-items { + + // Ephemeral data + list Group-list { + config "false"; + key "grpAddr"; + + uses pim_Group-group; + description "Holds PIM route group information list"; + } + description "Holds PIM route group information"; + } + } + + grouping pim_Group-group { + description "Holds PIM route group information"; + + // Ephemeral data + leaf grpAddr { + config "false"; + type address_Ip; + description "Group IP Address"; + } + + // This object holds pim route group information + // Ephemeral data + container source-items { + + // Ephemeral data + list Source-list { + config "false"; + key "srcAddr"; + + uses pim_Source-group; + description "Holds PIM Route Source information list"; + } + description "Holds PIM Route Source information"; + } + } + + grouping pim_Source-group { + description "Holds PIM Route Source information"; + + // Ephemeral data + leaf srcAddr { + config "false"; + type address_Ip; + description "Source IP Address"; + } + leaf rpAddressRoute { + config "false"; + type address_Ip; + description "Route RP address"; + } + leaf assertMetrics { + config "false"; + type uint32; + description "Assert metrics value"; + } + leaf assertMetricPrefs { + config "false"; + type uint32; + description "Configured assert metric preference"; + } + leaf expiry { + config "false"; + type string; + description "Route Expiry Timestamp"; + } + leaf uptime { + config "false"; + type string; + description "Route uptime Timestamp"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf ver { + config "false"; + type uint32; + description "Version"; + } + leaf src { + config "false"; + type address_Ip; + description "Source"; + } + leaf grp { + config "false"; + type address_Ip; + description "Group"; + } + leaf rpAddrRoute { + config "false"; + type address_Ip; + description "Route RP addr"; + } + + leaf iif { + config "false"; + + type nw_IfId; + description "Incoming interface"; + } + leaf rpfNbr { + config "false"; + type address_Ip; + description "RPF Nbr Address"; + } + leaf rpfSrc { + config "false"; + type address_Ip; + description "RPF Source Address"; + } + + leaf rtType { + config "false"; + + type rtdmc_RtFlags; + description "Route Uptime"; + } + + leaf swPktCnt { + config "false"; + + type rtdmc_PktCntType; + description "Software Packet Count"; + } + + leaf swByteCnt { + config "false"; + + type rtdmc_PktCntType; + description "Software Byte Count"; + } + + leaf hwPktCnt { + config "false"; + + type rtdmc_ByteCntType; + description "Hardware Packet Count"; + } + + leaf hwByteCnt { + config "false"; + + type rtdmc_ByteCntType; + description "Hardware Byte Count"; + } + leaf assertMetric { + config "false"; + type uint32; + description "Assert metric"; + } + leaf assertMetricPref { + config "false"; + type uint32; + description "Assert metric preference"; + } + + leaf routeBits { + config "false"; + + type rtdmc_RouteBits; + description "RP WC Bit"; + } + leaf rtTimeOutInvtl { + config "false"; + type uint32; + description "Route Timeout Interval"; + } + leaf jpHoldTime { + config "false"; + type uint32; + description "JP Hold time"; + } + + // PIM OIF list MOs + // Ephemeral data + container oif-items { + + // Ephemeral data + list Oif-list { + config "false"; + key "oIf"; + + uses pim_Oif-group; + description "PIM OIF entry details list"; + } + description "PIM OIF entry details"; + } + } + + grouping pim_Oif-group { + description "PIM OIF entry details"; + + leaf oifFlags { + config "false"; + + type pim_OifFlagsNew; + description "pim route oif lists"; + } + + // Ephemeral data + leaf oIf { + config "false"; + + type nw_IfId; + description "Outgoing interface"; + } + + leaf flags { + config "false"; + + type rtdmc_OifFlags; + description "pim route oif lists"; + } + leaf oifcount { + config "false"; + type uint32; + description "OIF COUNT for the PIM ROute"; + } + } + + grouping pim_PimDomdb-group { + description "This object holds the PIM domain related statistics"; + + // This objects hold per pim domain (vrf) information + // Ephemeral data + container pimdom-items { + + // Ephemeral data + list PimDom-list { + config "false"; + key "name"; + + uses pim_PimDom-group; + description "Holds per PIM domain (vrf) information list"; + } + description "Holds per PIM domain (vrf) information"; + } + } + + grouping pim_PimDom-group { + description "Holds per PIM domain (vrf) information"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Admin State + // Ephemeral data + leaf adminSt { + config "false"; + + type nw_AdminSt; + default "disabled"; + description "Admin State"; + } + + // Per-Dom Controls + // Ephemeral data + leaf ctrl { + config "false"; + + type rtdmc_DomCtrl; + description "Domain Controls"; + } + + // Protocol packet MTU + // Ephemeral data + leaf mtu { + config "false"; + + type rtdmc_Mtu; + description "Maximum Transmission Unit"; + } + + // Auto Enable + // Ephemeral data + leaf autoEnable { + config "false"; + + type rtdmc_AutoEnable; + description "Auto Enable"; + } + + // Ephemeral data + leaf logNbhChng { + config "false"; + type boolean; + description "Log Neighbhor changes"; + } + + // Ephemeral data + leaf flushRoutes { + config "false"; + type boolean; + description "Flush Routes"; + } + + // Ephemeral data + leaf bfd { + config "false"; + type boolean; + description "BFD"; + } + + // Ephemeral data + leaf jpDelay { + config "false"; + + type rtdmc_JpDelayRange; + description "Join-Prune message inter-packet delay"; + } + + // Ephemeral data + leaf regRateLmt { + config "false"; + + type rtdmc_RegRateRange; + description "Register rate limit for data packets per second"; + } + + // Ephemeral data + leaf rfcStrict { + config "false"; + type boolean; + description "Do not process joins from unknown neighbors"; + } + + // Ephemeral data + leaf sptSwitchGraceful { + config "false"; + type boolean; + description "Graceful switch to SPT"; + } + + // This object holds the pim dom related statistics + // Ephemeral data + container domstats-items { + + uses pim_PimDomStats-group; + description "This object holds the PIM domain related statistics"; + } + + // This object holds pim information that is operated at + // interface level + // Ephemeral data + container pimif-items { + + // Ephemeral data + list PimIf-list { + config "false"; + key "id"; + + uses pim_PimIf-group; + description "Holds PIM information that is operated at interface level list"; + } + description "Holds PIM information that is operated at interface level"; + } + } + + grouping pim_PimDomStats-group { + description "This object holds the PIM domain related statistics"; + + // Ephemeral data + leaf regSent { + config "false"; + + type rtdmc_Counter32; + description "Registers Sent"; + } + + // Ephemeral data + leaf regRcvd { + config "false"; + + type rtdmc_Counter32; + description "Registers Received "; + } + + // Ephemeral data + leaf nullRegSent { + config "false"; + + type rtdmc_Counter32; + description "Null Registers Sent"; + } + + // Ephemeral data + leaf nullRegRcvd { + config "false"; + + type rtdmc_Counter32; + description "Null Registers Received"; + } + + // Ephemeral data + leaf regStopSent { + config "false"; + + type rtdmc_Counter32; + description "Register Stop Sent"; + } + + // Ephemeral data + leaf regStopRcvd { + config "false"; + + type rtdmc_Counter32; + description "Register Stop Received "; + } + + // Ephemeral data + leaf regRcvdSSM { + config "false"; + + type rtdmc_Counter32; + description "Registers Received for SSM"; + } + + // Ephemeral data + leaf regRcvdBiDir { + config "false"; + + type rtdmc_Counter32; + description "Registers Received for BiDir"; + } + + // Ephemeral data + leaf regRcvdAndNotRP { + config "false"; + + type rtdmc_Counter32; + description "Registers Received but not RP"; + } + + // Ephemeral data + leaf bsrBsSent { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap message sent"; + } + + // Ephemeral data + leaf bsrBsRcvd { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap message received"; + } + + // Ephemeral data + leaf bsrCRPSent { + config "false"; + + type rtdmc_Counter32; + description "Candidate RP message sent"; + } + + // Ephemeral data + leaf bsrCRPRcvd { + config "false"; + + type rtdmc_Counter32; + description "Candidate RP message received"; + } + + // Ephemeral data + leaf bsrBsFromNonNbr { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap message from non-neighbor"; + } + + // Ephemeral data + leaf bsrBsFromBorderIF { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap message from border interface"; + } + + // Ephemeral data + leaf bsrBsLenErr { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap length error"; + } + + // Ephemeral data + leaf bsrBsRPFFail { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap messages for which RPF Failed"; + } + + // Ephemeral data + leaf bsrBsRcvdLisNotConf { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap received listen not configured"; + } + + // Ephemeral data + leaf bsrCRPFromBorderIF { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap Candidate RP From border interface"; + } + + // Ephemeral data + leaf bsrCRPRcvdLisNotConf { + config "false"; + + type rtdmc_Counter32; + description "Bootstrap candidate RP received but listen not configured"; + } + + // Ephemeral data + leaf autoRPAnnouncesSent { + config "false"; + + type rtdmc_Counter32; + description "RP announcements sent"; + } + + // Ephemeral data + leaf autoRPAnnouncesRcvd { + config "false"; + + type rtdmc_Counter32; + description "RP announcements received"; + } + + // Ephemeral data + leaf autoRPDiscoveriesSent { + config "false"; + + type rtdmc_Counter32; + description "RP discoveries sent"; + } + + // Ephemeral data + leaf autoRPDiscoveriesRcvd { + config "false"; + + type rtdmc_Counter32; + description "RP discoveries received"; + } + + // Ephemeral data + leaf autoRPRPFFailed { + config "false"; + + type rtdmc_Counter32; + description "Auto RP RPF Failed"; + } + + // Ephemeral data + leaf autoRPFromBorderIF { + config "false"; + + type rtdmc_Counter32; + description "Auto RP from border interface"; + } + + // Ephemeral data + leaf autoRPInvalidType { + config "false"; + + type rtdmc_Counter32; + description "Auto RP invalid type"; + } + + // Ephemeral data + leaf autoRPTTLExp { + config "false"; + + type rtdmc_Counter32; + description "Auto RP TTL expired"; + } + + // Ephemeral data + leaf autoRPRcvdLisNotConf { + config "false"; + + type rtdmc_Counter32; + description "Auto RP received but listen not configured"; + } + + // Ephemeral data + leaf cpRPFFailNoRoute { + config "false"; + + type rtdmc_Counter32; + description "Control plane RPF fail due to no route"; + } + + // Ephemeral data + leaf dpRPFFailNoRoute { + config "false"; + + type rtdmc_Counter32; + description "Data Plane RPF fail due to no route"; + } + + // Ephemeral data + leaf dpNoMcastState { + config "false"; + + type rtdmc_Counter32; + description "Data Plane no multicast state found"; + } + + // Ephemeral data + leaf dpCrtRouteStateCnt { + config "false"; + + type rtdmc_Counter32; + description "Data Plane create route state count"; + } + } + + grouping pim_PimIf-group { + description "Holds PIM information that is operated at interface level"; + + // Ephemeral data + leaf id { + config "false"; + + type pim_IfId; + description "Interface Identifier of this endpoint"; + } + + // This object holds pim neighbor information + // Ephemeral data + container pimadj-items { + + // Ephemeral data + list PimAdjEp-list { + config "false"; + key "addr"; + + uses pim_PimAdjEp-group; + description "This object holds PIM adjacency information list"; + } + description "This object holds PIM adjacency information"; + } + + // This object holds the pim interface related statistics + // Ephemeral data + container pimifprop-items { + + uses pim_PimIfProp-group; + description "This object holds the PIM interface related statistics"; + } + + // This object holds the pim interface related statistics + // Ephemeral data + container pimifstats-items { + + uses pim_PimIfStats-group; + description "Holds the PIM interface related statistics"; + } + } + + grouping pim_PimAdjEp-group { + description "This object holds PIM adjacency information"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "Address of neighbor interface"; + } + + // Ephemeral data + leaf nbrName { + config "false"; + type string; + description "Neighbor Name"; + } + + // DR Priority + // Ephemeral data + leaf drPrio { + config "false"; + + type rtdmc_DRPrio; + description "DR Priority"; + } + + // Ephemeral data + leaf uptime { + config "false"; + type string; + description "Uptime of the neighbor"; + } + + // Ephemeral data + leaf expiry { + config "false"; + type string; + description "Neighbor Expiry Timer value"; + } + + // Generation id + // Ephemeral data + leaf genId { + config "false"; + + type rtdmc_GenId; + description "Generation ID"; + } + + // BFD state + // Ephemeral data + leaf bfdSt { + config "false"; + + type rtdmc_BfdOperSt; + description "BFD State"; + } + + // Adjacency state + // Ephemeral data + leaf operSt { + config "false"; + + type rtdmc_AdjOperSt; + description "Operational State"; + } + + // Flags + // Ephemeral data + leaf flags { + config "false"; + + type rtdmc_AdjFlags; + description "Flags"; + } + + // This object holds the pim neighbor related statistics + // Ephemeral data + container adjstats-items { + + uses pim_PimAdjStats-group; + description "This object holds the PIM neighbor related statistics"; + } + } + + grouping pim_PimAdjStats-group { + description "This object holds the PIM neighbor related statistics"; + + // Ephemeral data + leaf lastHelloReceived { + config "false"; + type string; + description "Last Hello Received time"; + } + + // Longest Hello Interval + // Ephemeral data + leaf longHelloItvl { + config "false"; + + type rtdmc_HelloItvl; + description "Longest Hello Interval"; + } + + // Last Hold Time advertised by Peer + // Ephemeral data + leaf lastHoldTime { + config "false"; + + type rtdmc_HoldTime; + description "Last Hold Time"; + } + + // non-hello expiry timer resets + // Ephemeral data + leaf nonHelloExpResets { + config "false"; + + type rtdmc_Counter32; + description "Non-Hello Expiry Timer Resets"; + } + } + + grouping pim_PimIfProp-group { + description "This object holds the PIM interface related statistics"; + + // Ephemeral data + leaf nextHello { + config "false"; + type string; + description "Time when next hello is sent"; + } + + // Ephemeral data + leaf nbrHoldTime { + config "false"; + type uint32; + description "PIM Neighbor HoldTime"; + } + + // Ephemeral data + leaf dr { + config "false"; + type address_Ip; + description "PIM Designated Router information"; + } + + // Generation id + // Ephemeral data + leaf genID { + config "false"; + + type pim_PropGenId; + description "Generation Identifier"; + } + } + + grouping pim_PimIfStats-group { + description "Holds the PIM interface related statistics"; + + // Ephemeral data + leaf helloSent { + config "false"; + + type rtdmc_Counter32; + description "number of hello sent"; + } + + // Ephemeral data + leaf helloRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of hello rcvd"; + } + + // Ephemeral data + leaf jpSent { + config "false"; + + type rtdmc_Counter32; + description "number of JP sent"; + } + + // Ephemeral data + leaf jpRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of JP rcvd"; + } + + // Ephemeral data + leaf assertRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of assert rcvd"; + } + + // Ephemeral data + leaf graftsSent { + config "false"; + + type rtdmc_Counter32; + description "number of grafts sent"; + } + + // Ephemeral data + leaf graftsRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of grafts rcvd"; + } + + // Ephemeral data + leaf grftAckSent { + config "false"; + + type rtdmc_Counter32; + description "number of graft ack sent"; + } + + // Ephemeral data + leaf grftAckRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of graft ack rcvd"; + } + + // Ephemeral data + leaf dfOfferSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF-offer sent"; + } + + // Ephemeral data + leaf dfOfferRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF-offer rcvd"; + } + + // Ephemeral data + leaf dfWinnerSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF winner sent"; + } + + // Ephemeral data + leaf dfWinnerRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF winner rcvd"; + } + + // Ephemeral data + leaf dfBackoffSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF backoff sent"; + } + + // Ephemeral data + leaf dfBackoffRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF backoff rcvd"; + } + + // Ephemeral data + leaf dfPassesSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF Passes sent"; + } + + // Ephemeral data + leaf dfPassesRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF Passes rcvd"; + } + + // Ephemeral data + leaf chksumErr { + config "false"; + + type rtdmc_Counter32; + description "Checksum errors"; + } + + // Ephemeral data + leaf invalidPktRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of invalid pkt rcvd"; + } + + // Ephemeral data + leaf authFail { + config "false"; + + type rtdmc_Counter32; + description "number of authentication failures"; + } + + // Ephemeral data + leaf pktLenErr { + config "false"; + + type rtdmc_Counter32; + description "number of packet length errors"; + } + + // Ephemeral data + leaf badVerPkt { + config "false"; + + type rtdmc_Counter32; + description "number of bad version pkts"; + } + + // Ephemeral data + leaf pktFrmSelf { + config "false"; + + type rtdmc_Counter32; + description "number of pkts from Self"; + } + + // Ephemeral data + leaf pktFrmNonNbr { + config "false"; + + type rtdmc_Counter32; + description "packets from Non-Neighbor"; + } + + // Ephemeral data + leaf pktOnPassiveIf { + config "false"; + + type rtdmc_Counter32; + description "number of packets on passive interface"; + } + + // Ephemeral data + leaf jpRcvdOnRPF { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd on RPF interface"; + } + + // Ephemeral data + leaf joinNoRP { + config "false"; + + type rtdmc_Counter32; + description "*,G Join rcvd with no RP"; + } + + // Ephemeral data + leaf joinWrongRp { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd on Wrong RP"; + } + + // Ephemeral data + leaf jpSSMRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd for SSM groups"; + } + + // Ephemeral data + leaf jpBidirRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd for Bidir groups"; + } + + // Ephemeral data + leaf jpFilterIn { + config "false"; + + type rtdmc_Counter32; + description "number of JP filtered by inbound policy "; + } + + // Ephemeral data + leaf jpFilterOut { + config "false"; + + type rtdmc_Counter32; + description "number of JP filtered by outbound policy "; + } + } + + grouping pim_PimIfdb-group { + description "Holds PIM route db information"; + + // Type of the repository + // Ephemeral data + leaf ifdbtype { + config "false"; + + type pim_ifdbT; + description "represents repository type"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // This objects hold per pim domain (vrf) information + // Ephemeral data + container pimdom-items { + + // Ephemeral data + list PimDom-list { + config "false"; + key "name"; + + uses pim_PimDom-group; + description "Holds per PIM domain (vrf) information list"; + } + description "Holds per PIM domain (vrf) information"; + } + } + + grouping pim6_Entity-group { + description "Holds PIM6 control plane entity information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This objects hold per pim6 instance information + container inst-items { + + uses pim6_Inst-group; + description "This objects hold per PIM6 instance information"; + } + } + + grouping pim6_Inst-group { + description "This objects hold per PIM6 instance information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // Null Register Inter Batch Delay + leaf nrDelay { + + type rtdmc_NRDelay; + description "Null Register Inter Batch Delay"; + } + + // Number of routes in a null register + leaf nrNumRt { + + type rtdmc_NRNumRt; + description "Null Register Number of Routes"; + } + + // PIM6 databases + // Ephemeral data + container db-items { + + // Ephemeral data + list Db-list { + config "false"; + key "type"; + + uses pim6_Db-group; + description "This object holds PIM6 Database information list"; + } + description "This object holds PIM6 Database information"; + } + + // This objects hold per pim6 domain (vrf) information + container dom-items { + list Dom-list { + key "name"; + + uses pim6_Dom-group; + description "This objects hold per PIM6 domain (vrf) information list"; + } + description "This objects hold per PIM6 domain (vrf) information"; + } + + // This object holds global config for pim6 + container gl-items { + + uses pim6_Gl-group; + description "This object holds global configuration for PIM6"; + } + + // This object holds pim6 route db information + // Ephemeral data + container routedb-items { + + uses pim6_RouteDb-group; + description "This object holds PIM6 route database information"; + } + } + + grouping pim6_Db-group { + description "This object holds PIM6 Database information"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Type of the repository + // Ephemeral data + leaf type { + config "false"; + + type rtdmc_DbT; + description "Type"; + } + + // PIM6 bitfield + // Ephemeral data + container bf-items { + + uses pim6_Bitfield-group; + description "PIM6 Bitfield Database"; + } + + // This object holds pim6 information for embed-rp + // Ephemeral data + container embedrp-items { + + // Ephemeral data + list EmbedRp-list { + config "false"; + key "grpAddr"; + + uses pim6_EmbedRp-group; + description "Holds PIM6 Embed-RP operational information list"; + } + description "Holds PIM6 Embed-RP operational information"; + } + + // This object holds global config for pim6 + // Ephemeral data + container syslog-items { + + // Ephemeral data + list Syslog-list { + config "false"; + key "facName"; + + uses pim6_Syslog-group; + description "This object holds syslog data for pim6 protocols list"; + } + description "This object holds syslog data for pim6 protocols"; + } + + // This objects hold per pim6 domain (vrf) information + // Ephemeral data + container vrf-items { + + // Ephemeral data + list Vrf-list { + config "false"; + key "name"; + + uses pim6_Vrf-group; + description "This objects hold per pim6 domain (vrf) information list"; + } + description "This objects hold per pim6 domain (vrf) information"; + } + } + + grouping pim6_Bitfield-group { + description "PIM6 Bitfield Database"; + + // PIM6 bitfield entry + // Ephemeral data + container bfentry-items { + + // Ephemeral data + list BfEntry-list { + config "false"; + key "bfType"; + + uses pim6_BfEntry-group; + description "PIM6 bitfield entry list"; + } + description "PIM6 bitfield entry"; + } + } + + grouping pim6_BfEntry-group { + description "PIM6 bitfield entry"; + + // Ephemeral data + leaf bfType { + config "false"; + type string; + description "Bitfield Type"; + } + + // Ephemeral data + leaf bfAttr { + config "false"; + type uint32; + description "Bitfield attribute"; + } + + // Ephemeral data + leaf bfSgmnt { + config "false"; + type uint32; + description "Bitfield segment"; + } + + // Ephemeral data + leaf bfFlags { + config "false"; + type uint32; + description "Bitfield flags"; + } + + // Ephemeral data + leaf bfCompressArraySize { + config "false"; + type uint32; + description "Bitfield Compression array-size"; + } + + // Ephemeral data + leaf bfPosAllocated { + config "false"; + type uint32; + description "Bitfield positions allocated"; + } + + // routed multicast Bitfield compress index-bitpos + // Ephemeral data + container bfcomp-items { + + // Ephemeral data + list BfComp-list { + config "false"; + key "bfIdx"; + + uses pim6_BfComp-group; + description "Holds Bitfield Compression index-bit position details list"; + } + description "Holds Bitfield Compression index-bit position details"; + } + } + + grouping pim6_BfComp-group { + description "Holds Bitfield Compression index-bit position details"; + + // Ephemeral data + leaf bfCompType { + config "false"; + type string; + description "Bitfield Compression type"; + } + + // Ephemeral data + leaf bfIdx { + config "false"; + type uint32; + description "Bitfield index"; + } + + // Ephemeral data + leaf bfBitPos { + config "false"; + type uint32; + description "Bitfield bit-position"; + } + } + + grouping pim6_EmbedRp-group { + description "Holds PIM6 Embed-RP operational information"; + + // Ephemeral data + leaf grpAddr { + config "false"; + type address_Ip; + description "Group IP Address for Embed-RP"; + } + + // Ephemeral data + leaf rpAddr { + config "false"; + type address_Ip; + description "Embed-RP IP Address"; + } + + // Ephemeral data + leaf illegalFlag { + config "false"; + type boolean; + description "Illegal Flag"; + } + + // Ephemeral data + leaf prefix { + config "false"; + type string; + description "Ip Address in network prefix format"; + } + + // Ephemeral data + leaf prefixLen { + config "false"; + type uint32; + description "Networ Prefix length"; + } + + // Ephemeral data + leaf grpId { + config "false"; + type uint32; + description "Group identifier"; + } + + // Ephemeral data + leaf scope { + config "false"; + type uint32; + description "Scope"; + } + + // Ephemeral data + leaf scopeStr { + config "false"; + type string; + description "Scope String"; + } + + // Ephemeral data + leaf rpIfId { + config "false"; + + type nw_IfId; + description "Embed RP's intername id"; + } + } + + grouping pim6_Syslog-group { + description "This object holds syslog data for pim6 protocols"; + + // Ephemeral data + leaf facName { + config "false"; + type string; + description "Facility Name"; + } + + // Default logLevel + // Ephemeral data + leaf deflogLvl { + config "false"; + + type mcast_LogLevelRange; + description "Default Syslog filter level"; + } + + // Current logLevel + // Ephemeral data + leaf currlogLvl { + config "false"; + + type mcast_LogLevelRange; + description "Current Syslog filter level"; + } + } + + grouping pim6_Vrf-group { + description "This objects hold per pim6 domain (vrf) information"; + + // Vrf name + // Ephemeral data + leaf name { + config "false"; + + type l3_VrfName; + description "Vrf Name"; + } + + // Ephemeral data + leaf cid { + config "false"; + type uint32; + description "Vrf Identifier"; + } + + // Ephemeral data + leaf tableId { + config "false"; + type string; + description "Table Identifier"; + } + + // Ephemeral data + leaf pim6EnbldIntfCount { + config "false"; + type uint32; + description "Total Number PIM6 enabled interfaces"; + } + + // Ephemeral data + leaf bfdEnabled { + config "false"; + type boolean; + description "Flag to enable BFD support"; + } + + // Ephemeral data + leaf totalNumRoutes { + config "false"; + type uint32; + description "Total Number of Routes"; + } + + // Ephemeral data + container autorp-items { + + // Ephemeral data + list AutoRppInfo-list { + config "false"; + key "addr"; + + uses pim6_AutoRppInfo-group; + description "PIM6 Auto-RP information list"; + } + description "PIM6 Auto-RP information"; + } + + // Ephemeral data + container bsr-items { + + // Ephemeral data + list BsrInfo-list { + config "false"; + key "grpAddr"; + + uses pim6_BsrInfo-group; + description "PIM6 Selected Bootstrap Router list"; + } + description "PIM6 Selected Bootstrap Router"; + } + + // Ephemeral data + container grange-items { + + // Ephemeral data + list RpGrange-list { + config "false"; + key "addr"; + + uses pim6_RpGrange-group; + description "Rendezvous Point Group Range Record list"; + } + description "Rendezvous Point Group Range Record"; + } + + // This object holds pim6 route group information + // Ephemeral data + container group-items { + + // Ephemeral data + list Group-list { + config "false"; + key "grpAddr"; + + uses pim6_Group-group; + description "This object holds PIM6 route group information list"; + } + description "This object holds PIM6 route group information"; + } + + // Ephemeral data + container ifrec-items { + + // Ephemeral data + list IfRec-list { + config "false"; + key "pim6IfName"; + + uses pim6_IfRec-group; + description "PIM6 Interface Record list"; + } + description "PIM6 Interface Record"; + } + + // Ephemeral data + container rp-items { + + // Ephemeral data + list RpInfoRec-list { + config "false"; + key "rpAddr"; + + uses pim6_RpInfoRec-group; + description "PIM6 Rendezvous Point Record list"; + } + description "PIM6 Rendezvous Point Record"; + } + + // This object holds the pim6 control traffic stats + // Ephemeral data + container trstats-items { + + uses pim6_TrafficStats-group; + description "This object holds the PIM6 control traffic stats"; + } + + // Ephemeral data + container vrfdetail-items { + + uses pim6_VrfDetails-group; + description "This objects holds PIM6 context details"; + } + } + + grouping pim6_AutoRppInfo-group { + description "PIM6 Auto-RP information"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "Source address"; + } + + // Ephemeral data + leaf expiry { + config "false"; + type union { + type string; + type uint64; + } + description "Expiry timer"; + } + + // Ephemeral data + leaf uptime { + config "false"; + type union { + type string; + type uint64; + } + description "Uptime"; + } + + // Ephemeral data + leaf priority { + config "false"; + type uint32; + description "Priority"; + } + + // Ephemeral data + leaf hashMaskLen { + config "false"; + type uint32; + description "Hash Mask Length"; + } + } + + grouping pim6_BsrInfo-group { + description "PIM6 Selected Bootstrap Router"; + + // Ephemeral data + leaf grpAddr { + config "false"; + type address_Ip; + description "Group IP address"; + } + + // Ephemeral data + leaf bsrAddr { + config "false"; + type address_Ip; + description "BSR IP address"; + } + + // Ephemeral data + leaf rpAddr { + config "false"; + type address_Ip; + description "RP IP address with best hash"; + } + + // Ephemeral data + leaf hash { + config "false"; + type uint32; + description "Hash value"; + } + + // Ephemeral data + leaf hashMaskLen { + config "false"; + type uint32; + description "Hash Mask Length"; + } + + // Ephemeral data + leaf bestHash { + config "false"; + type boolean; + description "Best hash selected flag"; + } + } + + grouping pim6_RpGrange-group { + description "Rendezvous Point Group Range Record"; + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "IP Address for Group Range"; + } + + // Ephemeral data + leaf rpAddr { + config "false"; + type address_Ip; + description "RP IP address for this group range"; + } + + // Ephemeral data + leaf mode { + config "false"; + type string; + description "RP Group range mode"; + } + + // Ephemeral data + leaf userShared { + config "false"; + type uint32; + description "User-shared Range Address"; + } + } + + grouping pim6_Group-group { + description "This object holds PIM6 route group information"; + + // Ephemeral data + leaf grpAddr { + config "false"; + type address_Ip; + description "IPv6 Group Address"; + } + + // Ephemeral data + leaf grpMasklen { + config "false"; + type uint32; + description "Group Mask Length"; + } + + // Ephemeral data + leaf bidir { + config "false"; + type boolean; + description "Bidirectional group"; + } + + // This object holds pim6 route source information + // Ephemeral data + container source-items { + + // Ephemeral data + list Source-list { + config "false"; + key "srcAddr"; + + uses pim6_Source-group; + description "This object holds pim6 route source information list"; + } + description "This object holds pim6 route source information"; + } + } + + grouping pim6_Source-group { + description "This object holds pim6 route source information"; + + // Ephemeral data + leaf srcAddr { + config "false"; + type address_Ip; + description "Source IP Address"; + } + + // Ephemeral data + leaf expiryTs { + config "false"; + type string; + description "Route Expiry Timestamp in HH:MM:SS PST Format"; + } + + // Ephemeral data + leaf assertMetrics { + config "false"; + type uint32; + description "Assert metric value"; + } + + // Ephemeral data + leaf assertMetricPrefs { + config "false"; + type uint32; + description "Assert metric preference"; + } + + // Ephemeral data + leaf oifcount { + config "false"; + type uint32; + description "Outgoing Interface Count"; + } + + // RPF Information route incoming interface + // Ephemeral data + leaf routeIif { + config "false"; + + type nw_IfId; + description "Route Incoming Interface"; + } + + // Ephemeral data + leaf rpfNbr { + config "false"; + type address_Ip; + description "RPF Neighbor IP Address"; + } + + // Ephemeral data + leaf rtTimeOutInvtl { + config "false"; + type uint32; + description "Route Timeout Interval"; + } + + // Ephemeral data + leaf jpHoldTime { + config "false"; + type uint32; + description "JP Hold time"; + } + + // This object holds pim6 OIF information + // Ephemeral data + container oif-items { + + // Ephemeral data + list Oif-list { + config "false"; + key "oifName"; + + uses pim6_Oif-group; + description "This object holds pim6 OIF information list"; + } + description "This object holds pim6 OIF information"; + } + } + + grouping pim6_Oif-group { + description "This object holds pim6 OIF information"; + + // Ephemeral data + leaf oifName { + config "false"; + type string; + description "Outgoing Interface name"; + } + + // Ephemeral data + leaf oifUptime { + config "false"; + type string; + description "OIF Uptime in HH:MM:SS PST format"; + } + + // Ephemeral data + leaf oifRPF { + config "false"; + type boolean; + description "Outgoing Interface RPF"; + } + + // Ephemeral data + leaf oifLispEncapEntries { + config "false"; + type uint32; + description "Lisp Encap Entries Count"; + } + } + + grouping pim6_IfRec-group { + description "PIM6 Interface Record"; + + // Ephemeral data + leaf pim6Dr { + config "false"; + type address_Ip; + description "IPv6 Address of PIM6 DR on the interface"; + } + + // Designated Router Priority + // Ephemeral data + leaf pim6DrPrio { + config "false"; + + type rtdmc_DRPrio; + description "Designated Router Priority on the interface"; + } + + // Ephemeral data + leaf pim6NbrHoldTime { + config "false"; + type uint32; + description "PIM6 Neighbor HoldTime"; + } + + // Generation id + // Ephemeral data + leaf pim6GenID { + config "false"; + + type rtdmc_GenId; + description "Generation ID to be sent in Hello Msgs"; + } + + // Ephemeral data + leaf pim6NextHello { + config "false"; + type string; + description "Next hello time in HH:MM:SS PST format"; + } + + // Ephemeral data + leaf pim6IpAddr { + config "false"; + type address_Ip; + description "IP Address of the interface"; + } + + leaf pim6IfName { + config "false"; + + type nw_IfId; + description "PIM6 Interface Name"; + } + + // Ephemeral data + leaf pim6Border { + config "false"; + type boolean; + description "Is interface Pim6 domain border"; + } + + // Ephemeral data + leaf pim6SparseMode { + config "false"; + type boolean; + description "Pim6 is enabled on the interface"; + } + + // This object holds pim6 neighbor information + // Ephemeral data + container adjrec-items { + + // Ephemeral data + list AdjEpRec-list { + config "false"; + key "addr"; + + uses pim6_AdjEpRec-group; + description "This object holds PIM6 neighbor record list"; + } + description "This object holds PIM6 neighbor record"; + } + + // This object holds the pim6 interface related statistics + // Ephemeral data + container ifstats-items { + + uses pim6_IfStats-group; + description "This object holds the pim6 interface related statistics"; + } + } + + grouping pim6_AdjEpRec-group { + description "This object holds PIM6 neighbor record"; + + // Ephemeral data + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Ephemeral data + leaf addr { + config "false"; + type address_Ip; + description "Address of neighbor interface"; + } + + // Ephemeral data + leaf nbrName { + config "false"; + type string; + description "Neighbor Name"; + } + + // DR Priority + // Ephemeral data + leaf drPrio { + config "false"; + + type rtdmc_DRPrio; + description "DR Priority"; + } + + // Ephemeral data + leaf uptime { + config "false"; + type string; + description "Uptime of the neighbor"; + } + + // Ephemeral data + leaf expiry { + config "false"; + type string; + description "Neighbor Expiry Timer value"; + } + + // Generation id + // Ephemeral data + leaf genId { + config "false"; + + type rtdmc_GenId; + description "Generation ID"; + } + + // BFD state + // Ephemeral data + leaf bfdSt { + config "false"; + + type rtdmc_BfdOperSt; + description "BFD State"; + } + + // Adjacency state + // Ephemeral data + leaf operSt { + config "false"; + + type rtdmc_AdjOperSt; + description "Operational State"; + } + + // Flags + // Ephemeral data + leaf flags { + config "false"; + + type rtdmc_AdjFlags; + description "Flags"; + } + + // This object holds the pim6 neighbor related statistics + // Ephemeral data + container adjstats-items { + + uses pim6_AdjStats-group; + description "This object holds the PIM6 neighbor related statistics"; + } + } + + grouping pim6_AdjStats-group { + description "This object holds the PIM6 neighbor related statistics"; + + // Ephemeral data + leaf lastHelloReceived { + config "false"; + type string; + description "Last Hello Received time"; + } + + // Longest Hello Interval + // Ephemeral data + leaf longHelloItvl { + config "false"; + + type rtdmc_HelloItvl; + description "Longest Hello Interval"; + } + + // Last Hold Time advertised by Peer + // Ephemeral data + leaf lastHoldTime { + config "false"; + + type rtdmc_HoldTime; + description "Last Hold Time"; + } + + // non-hello expiry timer resets + // Ephemeral data + leaf nonHelloExpResets { + config "false"; + + type rtdmc_Counter32; + description "Non-Hello Expiry Timer Resets"; + } + } + + grouping pim6_IfStats-group { + description "This object holds the pim6 interface related statistics"; + + // Ephemeral data + leaf helloSent { + config "false"; + + type rtdmc_Counter32; + description "number of hello sent"; + } + + // Ephemeral data + leaf helloRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of hello rcvd"; + } + + // Ephemeral data + leaf jpSent { + config "false"; + + type rtdmc_Counter32; + description "number of JP sent"; + } + + // Ephemeral data + leaf jpRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of JP rcvd"; + } + + // Ephemeral data + leaf assertSent { + config "false"; + + type rtdmc_Counter32; + description "number of assert sent"; + } + + // Ephemeral data + leaf assertRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of assert rcvd"; + } + + // Ephemeral data + leaf graftsSent { + config "false"; + + type rtdmc_Counter32; + description "number of grafts sent"; + } + + // Ephemeral data + leaf graftsRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of grafts rcvd"; + } + + // Ephemeral data + leaf grftAckSent { + config "false"; + + type rtdmc_Counter32; + description "number of graft ack sent"; + } + + // Ephemeral data + leaf grftAckRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of graft ack rcvd"; + } + + // Ephemeral data + leaf dfOfferSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF-offer sent"; + } + + // Ephemeral data + leaf dfOfferRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF-offer rcvd"; + } + + // Ephemeral data + leaf dfWinnerSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF winner sent"; + } + + // Ephemeral data + leaf dfWinnerRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF winner rcvd"; + } + + // Ephemeral data + leaf dfBackoffSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF backoff sent"; + } + + // Ephemeral data + leaf dfBackoffRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF backoff rcvd"; + } + + // Ephemeral data + leaf dfPassesSent { + config "false"; + + type rtdmc_Counter32; + description "number of DF Passes sent"; + } + + // Ephemeral data + leaf dfPassesRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of DF Passes rcvd"; + } + + // Ephemeral data + leaf chksumErr { + config "false"; + + type rtdmc_Counter32; + description "Checksum errors"; + } + + // Ephemeral data + leaf invalidPktSent { + config "false"; + + type rtdmc_Counter32; + description "number of invalid pkt sent"; + } + + // Ephemeral data + leaf invalidPktRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of invalid pkt rcvd"; + } + + // Ephemeral data + leaf authFail { + config "false"; + + type rtdmc_Counter32; + description "number of authentication failures"; + } + + // Ephemeral data + leaf pktLenErr { + config "false"; + + type rtdmc_Counter32; + description "number of packet length errors"; + } + + // Ephemeral data + leaf badVerPkt { + config "false"; + + type rtdmc_Counter32; + description "number of bad version pkts"; + } + + // Ephemeral data + leaf pktFrmSelf { + config "false"; + + type rtdmc_Counter32; + description "number of pkts from Self"; + } + + // Ephemeral data + leaf pktFrmNonNbr { + config "false"; + + type rtdmc_Counter32; + description "packets from Non-Neighbor"; + } + + // Ephemeral data + leaf pktOnPassiveIf { + config "false"; + + type rtdmc_Counter32; + description "number of packets on passive interface"; + } + + // Ephemeral data + leaf jpRcvdOnRPF { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd on RPF interface"; + } + + // Ephemeral data + leaf joinNoRP { + config "false"; + + type rtdmc_Counter32; + description "*,G Join rcvd with no RP"; + } + + // Ephemeral data + leaf joinWrongRp { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd on Wrong RP"; + } + + // Ephemeral data + leaf jpSSMRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd for SSM groups"; + } + + // Ephemeral data + leaf jpBidirRcvd { + config "false"; + + type rtdmc_Counter32; + description "number of packets rcvd for Bidir groups"; + } + + // Ephemeral data + leaf jpFilterIn { + config "false"; + + type rtdmc_Counter32; + description "number of JP filtered by inbound policy "; + } + + // Ephemeral data + leaf jpFilterOut { + config "false"; + + type rtdmc_Counter32; + description "number of JP filtered by outbound policy "; + } + } + + grouping pim6_RpInfoRec-group { + description "PIM6 Rendezvous Point Record"; + + // Ephemeral data + leaf rpAddr { + config "false"; + type address_Ip; + description "IPv6 address for RP"; + } + + // Ephemeral data + leaf rpLocal { + config "false"; + type boolean; + description "Flag to indicte if RP is local"; + } + + // Ephemeral data + leaf rpUptime { + config "false"; + type string; + description "RP uptime in HH:MM:SS PST Format"; + } + + // Ephemeral data + leaf rpPriority { + config "false"; + type uint32; + description "Priority for cand-RP message"; + } + + // Ephemeral data + leaf rpDiscType { + config "false"; + + type rtdmc_RPSourceType; + description "RP source type"; + } + + // Ephemeral data + leaf rpDfOrdinal { + config "false"; + type uint32; + description "Per RP Bidirectional DF Ordinal"; + } + + // Ephemeral data + leaf rpMetricPref { + config "false"; + type uint32; + description "Router preference to this RP"; + } + + // Ephemeral data + leaf rpMetric { + config "false"; + type uint32; + description "Unicast metric to this RP"; + } + + // This object holds pim6 information that is operated at a + // interface level for DF RP + // Ephemeral data + container rpif-items { + + // Ephemeral data + list RpIf-list { + config "false"; + key "ifName"; + + uses pim6_RpIf-group; + description "Holds PIM6 DF RP Interface operational information list"; + } + description "Holds PIM6 DF RP Interface operational information"; + } + } + + grouping pim6_RpIf-group { + description "Holds PIM6 DF RP Interface operational information"; + + // Ephemeral data + leaf ifName { + config "false"; + + type nw_IfId; + description "DF Interface Name"; + } + + // Ephemeral data + leaf dfWinner { + config "false"; + type address_Ip; + description "DF Winner IP Address"; + } + + // Df state + // Ephemeral data + leaf dfState { + config "false"; + + type rtdmc_DfStates; + description "Current state of DF"; + } + + // Ephemeral data + leaf dfUptime { + config "false"; + type string; + description "Time since using this DF"; + } + + // Ephemeral data + leaf isRpf { + config "false"; + type boolean; + description "RPF flag"; + } + + // Ephemeral data + leaf winnerMetricPref { + config "false"; + type uint32; + description "Preference of DF winner"; + } + + // Ephemeral data + leaf winnerMetric { + config "false"; + type uint32; + description "Metric of DF winner"; + } + } + + grouping pim6_TrafficStats-group { + description "This object holds the PIM6 control traffic stats"; + + // Ephemeral data + leaf lastClearTs { + config "false"; + type union { + type string; + type uint64; + } + description "Last Clear Timestamp"; + } + + // Register received + // Ephemeral data + leaf regRcvd { + config "false"; + + type nw_Counter32; + description "Register Received"; + } + + // Null register received + // Ephemeral data + leaf nullRegRcvd { + config "false"; + + type nw_Counter32; + description "Null Register Received"; + } + + // Reg Stop Received + // Ephemeral data + leaf regStopRcvd { + config "false"; + + type nw_Counter32; + description "Reg Stop Received"; + } + + // Bootstrap received + // Ephemeral data + leaf bsRcvd { + config "false"; + + type nw_Counter32; + description "Bootstrap received"; + } + + // Candidate Rp Received + // Ephemeral data + leaf candRpRcvd { + config "false"; + + type nw_Counter32; + description "Candidate RP Received"; + } + + // Null Register Sent + // Ephemeral data + leaf nullRegSent { + config "false"; + + type nw_Counter32; + description "NULL Register sent"; + } + + // Register stop sent + // Ephemeral data + leaf regStopSent { + config "false"; + + type nw_Counter32; + description "Register Stop Sent"; + } + + // Bootstrap sent + // Ephemeral data + leaf bsSent { + config "false"; + + type nw_Counter32; + description "Bootstrap Sent"; + } + + // Candidate RP Sent + // Ephemeral data + leaf candRPSent { + config "false"; + + type nw_Counter32; + description "Candidate RP Sent"; + } + + // BS no NBR + // Ephemeral data + leaf bsNoNbr { + config "false"; + + type nw_Counter32; + description "BS No NBR"; + } + + // BS Border Deny + // Ephemeral data + leaf bsBordDeny { + config "false"; + + type nw_Counter32; + description "BS Border Deny"; + } + + // BS LEngth errors + // Ephemeral data + leaf bsLenErr { + config "false"; + + type nw_Counter32; + description "BS Len Errors"; + } + + // BS RPF Failed + // Ephemeral data + leaf bsRpfFail { + config "false"; + + type nw_Counter32; + description "BS RPF Failed"; + } + + // BS NO Listen + // Ephemeral data + leaf bsNoLis { + config "false"; + + type nw_Counter32; + description "BS No Listen"; + } + + // Candidate RP No Listen + // Ephemeral data + leaf candrpNoLis { + config "false"; + + type nw_Counter32; + description "Candidate RP No Listen"; + } + + // Candidate RP Border Deny + // Ephemeral data + leaf candrpBordDeny { + config "false"; + + type nw_Counter32; + description "Candidate RP Border Deny"; + } + + // REgister received not RP + // Ephemeral data + leaf regRcvdNoRP { + config "false"; + + type nw_Counter32; + description "Register Received not RP"; + } + + // Register Received for SSM + // Ephemeral data + leaf regRcvdForSSM { + config "false"; + + type nw_Counter32; + description "Register Received Not SSM"; + } + + // Register received for bidir + // Ephemeral data + leaf regRcvdForBd { + config "false"; + + type nw_Counter32; + description "Register received for Bidir"; + } + + // no route + // Ephemeral data + leaf noRoute { + config "false"; + + type nw_Counter32; + description "No Route"; + } + } + + grouping pim6_VrfDetails-group { + description "This objects holds PIM6 context details"; + + // Ephemeral data + leaf stLmt { + config "false"; + type uint64; + description "Configured maximum state limit"; + } + + // Ephemeral data + leaf availStLmt { + config "false"; + type uint64; + description "Available state limit"; + } + + // Ephemeral data + leaf rsvLmt { + config "false"; + type uint64; + description "Configured maximum reserved limit"; + } + + // Ephemeral data + leaf availRsvLmt { + config "false"; + type uint64; + description "Available reserved limit"; + } + + // Ephemeral data + leaf rsvPolName { + config "false"; + type string; + description "Configured Reserve Policy name"; + } + + // Ephemeral data + leaf regRateLmt { + config "false"; + type uint64; + description "Register rate limit in pps"; + } + + // Ephemeral data + leaf sharedTrPolName { + config "false"; + type string; + description "Configured Use-Shared tree route-map policy name"; + } + + // Ephemeral data + container grange-items { + + // Ephemeral data + list SharedRouteRange-list { + config "false"; + key "grangeIp"; + + uses pim6_SharedRouteRange-group; + description "This objects holds PIM6 USe-shared tree route range list"; + } + description "This objects holds PIM6 USe-shared tree route range"; + } + } + + grouping pim6_SharedRouteRange-group { + description "This objects holds PIM6 USe-shared tree route range"; + + // Ephemeral data + leaf grangeIp { + config "false"; + type address_Ip; + description "Group-range IPv6 address"; + } + } + + grouping pim6_Dom-group { + description "This objects hold per PIM6 domain (vrf) information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Admin State + leaf adminSt { + + type nw_AdminSt; + default "disabled"; + description "Admin State"; + } + + // Per-Dom Controls + leaf ctrl { + + type rtdmc_DomCtrl; + description "Domain Controls"; + } + leaf logNbhChng { + type boolean; + description "Log Neighbhor changes"; + } + leaf flushRoutes { + type boolean; + description "Flush Routes"; + } + leaf bfd { + type boolean; + description "BFD"; + } + + leaf regRateLmt { + + type rtdmc_RegRateRange; + description "Register rate limit for data packets per second"; + } + leaf sptSwitchGraceful { + type boolean; + description "Graceful switch to SPT"; + } + + // This object holds policy for Anycast RP Function + // Specifies the anycast and local interface for the anycast RP + // and all the peer's local info Anycast RP is not supported for BSR and Auto-RP + container acastrpfunc-items { + + uses pim6_AcastRpFuncP-group; + description "Anycast RP Function Policy"; + } + + container assert-items { + + uses pim6_Assert-group; + description "This model is used to configure assert events for PIM6"; + } + + // This object holds policy for + // Bootstrap Router method of RP discovery + container bsr-items { + + uses pim6_BsrP-group; + description "This object holds policy for Bootstrap Router method of RP discovery"; + } + container eventhist-items { + list EventHistory-list { + key "type"; + + uses pim6_EventHistory-group; + description "This object holds configuration detais for event-history buffers list"; + } + description "This object holds configuration detais for event-history buffers"; + } + + // This object holds pim6 information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses pim6_If-group; + description "This object holds PIM6 information that is operated at a interface level list"; + } + description "This object holds PIM6 information that is operated at a interface level"; + } + + // This object holds resource (router state) limit policy + // to limit amount of multicast routing state on the router + container limit-items { + + uses pim6_ResP-group; + description "This object holds resource (router state) limit policy"; + } + + // This object holds policy for + // Any Source Multicast (ASM) pattern + container asm-items { + + uses pim6_AsmPatP-group; + description "This object holds policy for Any Source Multicast (ASM) pattern"; + } + + // This object holds policy for + // Source Specific Multicast (SSM) pattern + container ssm-items { + + uses pim6_SsmPatP-group; + description "This object holds policy for SSM Pattern"; + } + + // This object holds policy for + // Bidirectional Multicast (BiDir) pattern + container bidir-items { + + uses pim6_BidirPatP-group; + description "This object holds policy for BiDir Pattern"; + } + + // This object holds policy for Static RP + container staticrp-items { + + uses pim6_StaticRPP-group; + description "This object holds policy for Static RP"; + } + } + + grouping pim6_AcastRpFuncP-group { + description "Anycast RP Function Policy"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Source Interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + + // Anycast RP Unique Local Interface + leaf localIf { + + type nw_IfId; + description "Local Interface"; + } + + // This object holds Anycast RP Peer Info + container peer-items { + list AcastRpPeer-list { + key "addr rpSetAddr"; + + uses pim6_AcastRpPeer-group; + description "Anycast RP Peer information list"; + } + description "Anycast RP Peer information"; + } + } + + grouping pim6_AcastRpPeer-group { + description "Anycast RP Peer information"; + leaf rpSetAddr { + type address_Ip; + description "IP Address of node performing the function"; + } + leaf addr { + type address_Ip; + description "Address"; + } + } + + grouping pim6_Assert-group { + description "This model is used to configure assert events for PIM6"; + + // AssertRate + leaf assertRtLmt { + + type rtdmc_AssertRateLmt; + description "Configure Rate limit for pim asserts"; + } + } + + grouping pim6_BsrP-group { + description "This object holds policy for Bootstrap Router method of RP discovery"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // BSR Control + leaf ctrl { + + type rtdmc_BSRCtrl; + description "Control"; + } + + // End Child MOs This object holds policy for + // choosing RPs from among RP candidates + container rpfilter-items { + + uses pim6_RpFilterP-group; + description "This object holds policy for RP Filter"; + } + + // This object holds policy for + // choosing BSRs from among BSR candidates + container bsrfilter-items { + + uses pim6_BsrFilterP-group; + description "This object holds policy for choosing BSRs among BSR candidates"; + } + + // This object holds policy for RP Function + container rpfunc-items { + + uses pim6_RpFuncP-group; + description "This object holds policy for RP Function"; + } + + // This object holds policy for + // Bootstrap Router Function + container bsrfunc-items { + + uses pim6_BsrFuncP-group; + description "This object holds policy for Bootstrap Router Function"; + } + } + + grouping pim6_RpFilterP-group { + description "This object holds policy for RP Filter"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + } + + grouping pim6_BsrFilterP-group { + description "This object holds policy for choosing BSRs among BSR candidates"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + } + + grouping pim6_RpFuncP-group { + description "This object holds policy for RP Function"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Source Interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + + // Priority + leaf prio { + + type rtdmc_BSRPrio; + description "Priority"; + } + + // Interval + leaf interval { + + type rtdmc_BSRInterval; + description "Interval"; + } + + // Scope + leaf scope { + + type rtdmc_AutoRPScope; + description "Scope"; + } + leaf addr { + type address_Ip; + description "AutoRP Cand RP Address"; + } + leaf useSendRPAnnCommand { + type boolean; + description "Flag to use send-rp-announce"; + } + + // This object holds multicast group ranges for RP + container range-items { + list RpGrpRange-list { + key "bidir"; + + uses pim6_RpGrpRange-group; + description "This object holds multicast group ranges for RP list"; + } + description "This object holds multicast group ranges for RP"; + } + } + + grouping pim6_RpGrpRange-group { + description "This object holds multicast group ranges for RP"; + leaf override { + type boolean; + description "Flag to override RP preference to choose static RP"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + leaf pfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Prefix List"; + } + leaf grpList { + type address_Ip; + description "Group List"; + } + leaf grpList1 { + type address_Ip; + description "Group List"; + } + leaf grpList2 { + type address_Ip; + description "Group List"; + } + leaf grpList3 { + type address_Ip; + description "Group List"; + } + leaf ssmNone { + type boolean; + description "SSM None "; + } + leaf bidir { + type boolean; + description "BiDir Groups"; + } + } + + grouping pim6_BsrFuncP-group { + description "This object holds policy for Bootstrap Router Function"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Source Interface + leaf srcIf { + + type nw_IfId; + description "Source Interface"; + } + + // Hash Mask Len + leaf hashLen { + + type rtdmc_BSRHashLen { + range "1..32"; + } + description "Hash Mask Len"; + } + + // Priority + leaf prio { + + type rtdmc_BSRPrio; + description "Priority"; + } + + // Priority + leaf interval { + + type rtdmc_BSRInterval; + description "Interval"; + } + } + + grouping pim6_EventHistory-group { + description "This object holds configuration detais for event-history buffers"; + + leaf type { + + type pim6_EhType; + description "configures type of event history"; + } + + leaf size { + + type pim6_Size; + description "configures buffer size in text/kb"; + } + } + + grouping pim6_If-group { + description "This object holds PIM6 information that is operated at a interface level"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + // Interface Control + leaf ctrl { + + type rtdmc_IfCtrl; + description "Controls"; + } + leaf dr { + config "false"; + type address_Ip; + description "PIM DR"; + } + leaf nbrHoldTime { + config "false"; + type uint32; + description "PIM Nbr HoldTime"; + } + + // Generation id + leaf genID { + config "false"; + + type rtdmc_GenId; + description "Generation ID"; + } + leaf nextHello { + config "false"; + type union { + type string; + type uint64; + } + description "Next hello time"; + } + leaf ipAddr { + config "false"; + type address_Ip; + description "IP Address of the interface"; + } + leaf ifName { + config "false"; + type string; + description "Interface Name"; + } + + // Designated Router Priority + leaf drPrio { + + type rtdmc_DRPrio; + description "Designated Router Priority"; + } + leaf jpRtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Join Prune Policy"; + } + leaf neighRtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Neighbor route-map Policy"; + } + leaf neighpfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Neighbor prefix-list Policy"; + } + leaf border { + type boolean; + description "Border policy"; + } + leaf passive { + type boolean; + description "Interface in Passive mode. No send/receive."; + } + leaf rtEpPDn { + type string; + description "RtEpP DN"; + } + + leaf bfdInst { + + type rtdmc_BfdInstSt; + description "BFD Instance"; + } + leaf pimSparseMode { + type boolean; + description "Sparse Mode "; + } + + // This object holds pim6 neighbor information + container adj-items { + list AdjEp-list { + key "addr"; + + uses pim6_AdjEp-group; + description "This object holds PIM6 neighbor information list"; + } + description "This object holds PIM6 neighbor information"; + } + + // PIM6 databases + // Ephemeral data + container db-items { + + // Ephemeral data + list Db-list { + config "false"; + key "type"; + + uses pim6_Db-group; + description "This object holds PIM6 Database information list"; + } + description "This object holds PIM6 Database information"; + } + + // This object holds the join-prune traffic policy + container jp-items { + list JpTrP-list { + key "policyDir"; + + uses pim6_JpTrP-group; + description "This object holds the join-prune traffic policy list"; + } + description "This object holds the join-prune traffic policy"; + } + + // This object holds the hello traffic policy + container hello-items { + + uses pim6_HelloTrP-group; + description "This object holds the hello traffic policy"; + } + + // This object holds the pim6 control traffic stats + // Ephemeral data + container trstats-items { + + uses pim6_TrafficStats-group; + description "This object holds the PIM6 control traffic stats"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping pim6_AdjEp-group { + description "This object holds PIM6 neighbor information"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + leaf addr { + type address_Ip; + description "Address of neighbor interface"; + } + leaf nbrName { + config "false"; + type string; + description "Neighbor Name"; + } + + // DR Priority + leaf drPrio { + config "false"; + + type rtdmc_DRPrio; + description "DR Priority"; + } + leaf uptime { + config "false"; + type string; + description "Uptime of the neighbor"; + } + leaf expiry { + config "false"; + type string; + description "Neighbor Expiry Timer value"; + } + + // Generation id + leaf genId { + config "false"; + + type rtdmc_GenId; + description "Generation ID"; + } + + // BFD state + leaf bfdSt { + config "false"; + + type rtdmc_BfdOperSt; + description "BFD State"; + } + + // Adjacency state + leaf operSt { + config "false"; + + type rtdmc_AdjOperSt; + description "Operational State"; + } + + // Flags + leaf flags { + config "false"; + + type rtdmc_AdjFlags; + description "Flags"; + } + } + + grouping pim6_JpTrP-group { + description "This object holds the join-prune traffic policy"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf RtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Out Route Map"; + } + leaf pfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "In Prefix List"; + } + + // in route-map for out-bound policy application + // Interval used between peers + leaf itvl { + + type rtdmc_JPItvl; + description "Periodic Interval"; + } + + leaf policyDir { + + type rtdmc_PolicyDirType; + description "Policy Direction "; + } + } + + grouping pim6_HelloTrP-group { + description "This object holds the hello traffic policy"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Hello Interval + leaf helloItvl { + + type rtdmc_HelloItvl; + description "Hello Interval"; + } + + // Authentication Type + leaf authT { + + type rtdmc_AuthT; + description "Authentication Type"; + } + + // Authentication Key + leaf authKey { + + type rtdmc_AuthKey; + description "Authentication Key"; + } + } + + grouping pim6_ResP-group { + description "This object holds resource (router state) limit policy"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Maximum Multicast Entries + leaf max { + + type mcast_NumEntries; + description "Maximum Multicast Entries"; + } + + // Reserved Multicast Entries + leaf rsvd { + + type mcast_NumEntries; + description "Reserved Multicast Entries"; + } + leaf rtMap { + type string; + description "Reserved Entries Route Map"; + } + } + + grouping pim6_AsmPatP-group { + description "This object holds policy for Any Source Multicast (ASM) pattern"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // This object holds group range + // to use only shared tree + container shared-items { + + uses pim6_SharedRangeP-group; + description "Shared Tree Group Range Policy"; + } + + // This object holds the register traffic policy + container reg-items { + + uses pim6_RegTrP-group; + description "This object holds the register traffic policy"; + } + } + + grouping pim6_SharedRangeP-group { + description "Shared Tree Group Range Policy"; + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + leaf pfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Prefix List"; + } + leaf grpList { + type address_Ip; + description "Group List"; + } + leaf grpList1 { + type address_Ip; + description "Group List"; + } + leaf grpList2 { + type address_Ip; + description "Group List"; + } + leaf grpList3 { + type address_Ip; + description "Group List"; + } + leaf ssmNone { + type boolean; + description "SSM None "; + } + leaf useSPTCommand { + type boolean; + description "Flag to use spt-threashold command"; + } + } + + grouping pim6_RegTrP-group { + description "This object holds the register traffic policy"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf addr { + type address_Ip; + description "Source Address"; + } + + // Max Rate + leaf maxRate { + + type rtdmc_RegRate; + description "Maximum Rate"; + } + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Register Message Route Map"; + } + leaf pfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Register Message Prefix List"; + } + } + + grouping pim6_SsmPatP-group { + description "This object holds policy for SSM Pattern"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // This object holds SSM group range + container range-items { + + uses pim6_SsmRangeP-group; + description "SSM Group Range Policy"; + } + } + + grouping pim6_SsmRangeP-group { + description "SSM Group Range Policy"; + leaf rtMap { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Route Map"; + } + leaf pfxList { + type string { + pattern ".*[!-~]{0,63}.*"; + } + description "Prefix List"; + } + leaf grpList { + type address_Ip; + description "Group List"; + } + leaf grpList1 { + type address_Ip; + description "Group List"; + } + leaf grpList2 { + type address_Ip; + description "Group List"; + } + leaf grpList3 { + type address_Ip; + description "Group List"; + } + leaf ssmNone { + type boolean; + description "SSM None "; + } + } + + grouping pim6_BidirPatP-group { + description "This object holds policy for BiDir Pattern"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Maximum number of RPs + leaf maxRP { + + type rtdmc_BidirRPLimit; + description "Maximum RPs"; + } + + // Designated Forwarder Offer Burst Interval + leaf dfobItvl { + + type rtdmc_DFOBItvl; + description "Designated Forwarder Offer Burst Interval"; + } + } + + grouping pim6_StaticRPP-group { + description "This object holds policy for Static RP"; + + leaf name { + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name of the given attribute"; + } + + leaf descr { + + type naming_Descr; + description "Description of the specified attribute"; + } + + // This object holds Static RP Info + // If rp addr is configured locally, + // router assumes RP functionality + container rp-items { + list StaticRP-list { + key "addr"; + + uses pim6_StaticRP-group; + description "This object holds Static RP Information list"; + } + description "This object holds Static RP Information"; + } + } + + grouping pim6_StaticRP-group { + description "This object holds Static RP Information"; + leaf addr { + type address_Ip; + description "Address"; + } + + // This object holds multicast group ranges for RP + container range-items { + list RpGrpRange-list { + key "bidir"; + + uses pim6_RpGrpRange-group; + description "This object holds multicast group ranges for RP list"; + } + description "This object holds multicast group ranges for RP"; + } + container rpgrplist-items { + list RpGrpList-list { + key "grpListName"; + + uses pim6_RpGrpList-group; + description "RP Multicast Group List list"; + } + description "RP Multicast Group List"; + } + } + + grouping pim6_RpGrpList-group { + description "RP Multicast Group List"; + leaf grpListName { + type address_Ip; + description "Group List address"; + } + leaf bidir { + type boolean; + description "Treat Group Ranges as BiDir"; + } + leaf override { + type boolean; + description " Prefer Static RP over Dynamic RP"; + } + } + + grouping pim6_Gl-group { + description "This object holds global configuration for PIM6"; + + // logLevel + leaf logLvl { + + type mcast_LogLevelRange; + description "Syslog filter level"; + } + leaf isolate { + type boolean; + description "Isolate this router flag"; + } + } + + grouping pim6_RouteDb-group { + description "This object holds PIM6 route database information"; + + // This objects hold per pim6 domain (vrf) information + // Ephemeral data + container vrf-items { + + // Ephemeral data + list Vrf-list { + config "false"; + key "name"; + + uses pim6_Vrf-group; + description "This objects hold per pim6 domain (vrf) information list"; + } + description "This objects hold per pim6 domain (vrf) information"; + } + } + + grouping ptp_PtpEntity-group { + description "PTP Entity MO for all the PTP global configuration properties"; + leaf domainNum { + type uint32 { + range "0..127"; + } + default "0"; + description "PTP Clock Domain number to use for this clock"; + } + + // PTP priority1 + leaf priority1 { + + type ptp_Priority; + description "PTP priority1 value to use when advertising the clock"; + } + + // PTP priority2 + leaf priority2 { + + type ptp_Priority; + description "PTP priority2 value to use when advertising the clock"; + } + leaf sourceIp { + type address_Ip; + description "PTP source IP address for all the PTP packets in the multicast PTP mode"; + } + leaf peerDelayReqInterval { + type uint32 { + range "0..5"; + } + default "0"; + description "PTP peer delay request interval"; + } + leaf correctionRangeThreshold { + type uint32 { + range "10..1000000000"; + } + default "100000"; + description "PTP correction range threshold"; + } + + // PTP correction range logging enable/disable + leaf correctionRangeLogging { + + type ptp_AdminSt; + description "PTP correction range logging enable/disable"; + } + leaf meanPathDelay { + type uint32 { + range "10..1000000000"; + } + default "1000000000"; + description "PTP Mean Path Delay"; + } + + // PTP device type boundary clock/generalized PTP + leaf deviceType { + + type ptp_DeviceType; + description "PTP Device Type bounday clock/ generalized PTP"; + } + + // PTP clok periodic-update enable + leaf clockPeriodicUpdate { + + type ptp_AdminSt; + description "PTP clock periodic-update enable/disable"; + } + leaf clockPeriodicUpdateInterval { + type uint16 { + range "0..3600"; + } + default "60"; + description "PTP clok periodic-update interval value"; + } + + // PTP clock operation one step enable/disable + leaf clockOperationOneStep { + + type ptp_AdminSt; + description "PTP Clock Operation One Step PTP enable/disable"; + } + + // PTP offload enable/disable + leaf offload { + + type ptp_AdminSt; + description "PTP offload enable/disable"; + } + + // PTP management enable/disable + leaf mgmt { + + type ptp_Mgmt; + description "PTP management packet support enable/disable"; + } + + // PTP forward PTPv1 packets enable/disable + leaf forwardVersion1 { + + type ptp_AdminSt; + description "PTP forwarding of PTPv1 packets enable/disable"; + } + + // PTP N3K Specific Properties PTP multi-domain enable/disable + leaf multiDomain { + + type ptp_AdminSt; + description "PTP multi-domain enable/disable"; + } + leaf multiDomainTransPriority1 { + type uint16 { + range "0..255"; + } + default "255"; + description "PTP multi-domain transition-attributes Priority 1 value"; + } + leaf multiDomainTransPriority2 { + type uint16 { + range "0..255"; + } + default "255"; + description "PTP multi-domain transition-attributes Priority 2 value"; + } + + // PTP acl redirect enable/disable + leaf aclRedirect { + + type ptp_AdminSt; + description "PTP acl redirect enable/disable"; + } + leaf convergenceTime { + type uint16 { + range "3..2600"; + } + description "PTP convergence-time value"; + } + leaf clockIdentity { + type address_Mac; + description "PTP clock-identity MAC Address"; + } + + // PTP grandmaster-capable + leaf grandmasterCapable { + + type ptp_GmCapable; + description "PTP grandmaster-capable enable/disable"; + } + leaf gmCapConvergenceTime { + type uint16 { + range "3..2600"; + } + default "30"; + description "PTP grandmaster-capable convergence-time value"; + } + leaf clockSyncAuto { + type boolean; + description "PTP clock-sync auto yes/no"; + } + + // PTP gm-change notification enable/disable + leaf notifyGmChange { + + type ptp_AdminSt; + description "PTP gm-change notification enable/disable"; + } + + // PTP parent-change notification enable/disable + leaf notifyParentChange { + + type ptp_AdminSt; + description "PTP parent-change notification enable/disable"; + } + + // PTP tolerance mean path delay + leaf toleranceMPDState { + + type ptp_AdminSt; + description "PTP tolerance mean path delay threshold enable/disable"; + } + + leaf toleranceMPDVal { + + type ptp_ToleranceThreshold; + description "PTP tolerance mean path delay threshold"; + } + + // PTP tolerance reverse path delay + leaf toleranceRPDState { + + type ptp_AdminSt; + description "PTP tolerance reverse path delay threshold enable/disable"; + } + + leaf toleranceRPDVal { + + type ptp_ToleranceThreshold; + description "PTP tolerance reverse path delay threshold"; + } + + // Holds multiple PTP Domain information, Valid in N3K device + container domain-items { + list PtpDomain-list { + key "domain"; + + uses ptp_PtpDomain-group; + description "PTP Domain Object for multiple Domain properties list"; + } + description "PTP Domain Object for multiple Domain properties"; + } + + // Holds multiple PTP Correction oper information + container correction-items { + + uses ptp_PtpCorrection-group; + description "PTP Correction Object"; + } + + // MO allows user to enable/disable & customize notifications for significant + // PTP event: Change in Grand Master (GM) clock + container gmchange-items { + + uses ptp_PtpGmChange-group; + description "PTP Grand Master (GM) clock Change Object"; + } + + // MO allows user to enable/disable & customize notifications for significant + // PTP event: Change in Parent clock + container parentchange-items { + + uses ptp_PtpParentChange-group; + description "PTP Parent clock Change Object"; + } + + // MO allows user to enable/disable & customize notifications for significant + // PTP event: Change in PTP state on a port + container portstate-items { + list PtpPortState-list { + config "false"; + key "intf"; + + uses ptp_PtpPortState-group; + description "PTP Port State Change Object list"; + } + description "PTP Port State Change Object"; + } + + // Holds PTP Profile information + container profile-items { + + uses ptp_PtpProfile-group; + description "PTP Profile Object"; + } + + // Holds PTP high-correction notification config + container notifyhighcorr-items { + + uses ptp_PtpNotifyHighCorr-group; + description "PTP high-correction notification"; + } + + // Holds PTP port-state-change notification config + container notifyportstatechg-items { + + uses ptp_PtpNotifyPortStateChg-group; + description "PTP port-state-change notification"; + } + + // Holds PTP Ephemeral oper information + // Ephemeral data + container ephoper-items { + + uses ptp_PtpEph-group; + description "PTP Ephemeral Oper Object"; + } + container if-items { + list PtpIf-list { + key "id"; + + uses ptp_PtpIf-group; + description "Per-interface PTP configuration and management list"; + } + description "Per-interface PTP configuration and management"; + } + } + + grouping ptp_PtpDomain-group { + description "PTP Domain Object for multiple Domain properties"; + leaf domain { + type uint16 { + range "0..127"; + } + description "PTP Clock Domain value"; + } + leaf clockAccThreshold { + type uint16 { + range "0..255"; + } + default "254"; + description "Domain clock-accuracy-threshold value"; + } + leaf clockClassThreshold { + type uint16 { + range "0..255"; + } + default "248"; + description "Domain clock-class-threshold value"; + } + leaf priority { + type uint16 { + range "0..255"; + } + default "255"; + description "Priority value for PTP Domain"; + } + } + + grouping ptp_PtpCorrection-group { + description "PTP Correction Object"; + leaf lastHighCorrectionTime { + config "false"; + type string; + description "last SUP time when the correction occured"; + } + leaf lastHighCorrectionValue { + config "false"; + type int64; + description "PTP last Correction value"; + } + leaf highCorrectionCount { + config "false"; + type uint16; + description "Total PTP Corrections since last timestamp"; + } + } + + grouping ptp_PtpGmChange-group { + description "PTP Grand Master (GM) clock Change Object"; + leaf currentGmId { + config "false"; + type string; + description "current Grand Master clock ID"; + } + leaf previousGmId { + config "false"; + type string; + description "Grand Master clock ID immediately before change"; + } + leaf lastGmChangeTime { + config "false"; + type string; + description "timestamp when the GM ID changed"; + } + } + + grouping ptp_PtpParentChange-group { + description "PTP Parent clock Change Object"; + leaf currentParentId { + config "false"; + type string; + description "current Parent clock ID"; + } + leaf previousParentId { + config "false"; + type string; + description "Parent clock ID immediately before change"; + } + leaf lastParentChangeTime { + config "false"; + type string; + description "timestamp when the Parent ID changed"; + } + } + + grouping ptp_PtpPortState-group { + description "PTP Port State Change Object"; + + // interface for which notification is being sent + leaf intf { + config "false"; + + type nw_IfId; + description "interface for which notification is being sent"; + } + leaf stateChange { + config "false"; + type boolean; + description "indicate if state changed from previous notification"; + } + leaf currentState { + config "false"; + type string; + description "current PTP state of port"; + } + leaf previousState { + config "false"; + type string; + description "state of port just before state being notified"; + } + leaf lastPortStateChangeTime { + config "false"; + type string; + description "timestamp when port state changed"; + } + } + + grouping ptp_PtpProfile-group { + description "PTP Profile Object"; + + // Profile name + leaf profile { + + type ptp_Profile; + description "PTP profile to be configured"; + } + + // Mode for specific profile + leaf mode { + + type ptp_Mode; + description "PTP mode for the speciic profile configured"; + } + } + + grouping ptp_PtpNotifyHighCorr-group { + description "PTP high-correction notification"; + + // PTP high-correction notification enable/disable + leaf notify { + + type ptp_AdminSt; + description "PTP high-correction notification enable/disable"; + } + + // PTP high-correction notification interval + leaf interval { + + type ptp_NotifyHighCorrInterval; + description "PTP high-correction notification interval"; + } + + // PTP high-correction notification periodic-notification + leaf periodic { + + type ptp_AdminSt; + description "PTP high-correction notification periodic-notification"; + } + } + + grouping ptp_PtpNotifyPortStateChg-group { + description "PTP port-state-change notification"; + + // PTP port-state-change notification enable/disable + leaf notify { + + type ptp_AdminSt; + description "PTP port-state-change notification enable/disable"; + } + + // PTP port-state-change notification category + leaf category { + + type ptp_NotifyPortStateChgCategory; + description "PTP port-state-change notification category"; + } + + // PTP port-state-change notification interval + leaf interval { + + type ptp_NotifyPortStateChgInterval; + description "PTP port-state-change notification interval"; + } + + // PTP port-state-change notification periodic-notification + leaf periodic { + + type ptp_AdminSt; + description "PTP port-state-change notification periodic-notification"; + } + } + + grouping ptp_PtpEph-group { + description "PTP Ephemeral Oper Object"; + + // Holds PTP Ephemeral Correction oper information + // Ephemeral data + container pastcorrections-items { + + // Ephemeral data + list PtpEphCorrection-list { + config "false"; + key "supTime"; + + uses ptp_PtpEphCorrection-group; + description "PTP Ephemeral Correction Object list"; + } + description "PTP Ephemeral Correction Object"; + } + } + + grouping ptp_PtpEphCorrection-group { + description "PTP Ephemeral Correction Object"; + + // PTP slave port name + // Ephemeral data + leaf port { + config "false"; + + type nw_IfId; + description "PTP slave port name"; + } + + // Ephemeral data + leaf supTime { + config "false"; + type string; + description "SUP time of correction"; + } + + // Ephemeral data + leaf corrections { + config "false"; + type int64; + description "PTP past corrections"; + } + + // Ephemeral data + leaf meanPathDelay { + config "false"; + type uint64; + description "Mean path delay during correction"; + } + } + + grouping ptp_PtpIf-group { + description "Per-interface PTP configuration and management"; + + // PTP if id + leaf id { + + type nw_IfId; + description "Interface id of port with PTP configuration"; + } + leaf ptp { + type boolean; + default "false"; + description "PTP enable or disable at interface level"; + } + leaf neighborPropagationDelayThreshold { + type uint32 { + range "5..2000000"; + } + default "1000000"; + description "GPTP propagation delay threshold"; + } + leaf vlan { + type string; + default "vlan-1"; + description "PTP VLAN id configuration"; + } + + // Ranges and defaults are different for each timecode for each interval default value will be replaced in BI any time the Type changes + leaf syncIntervalType { + + type ptp_TimeCode; + description "PTP sync interval time code"; + } + leaf syncIntervalVal { + type int16 { + range "-7..1"; + } + description "PTP sync interval value"; + } + + leaf announceIntervalType { + + type ptp_TimeCode; + description "PTP announce interval time code"; + } + leaf announceIntervalVal { + type int16 { + range "-3..4"; + } + default "1"; + description "PTP announce interval value"; + } + + leaf announceTimeoutType { + + type ptp_TimeCode; + description "PTP announce timeout time code"; + } + leaf announceTimeoutVal { + type int16 { + range "2..10"; + } + default "3"; + description "PTP announce timeout value"; + } + + leaf delayRequestMinIntervalType { + + type ptp_TimeCode; + description "PTP delay-request minimum interval time code"; + } + leaf delayRequestMinIntervalVal { + type int16 { + range "-4..6"; + } + description "PTP delay-request minimum interval value"; + } + leaf ptpCost { + type uint16 { + range "0..255"; + } + default "255"; + description "PTP cost value in interface"; + } + leaf ptpInterfaceDomain { + type uint16 { + range "0..127"; + } + default "0"; + description "PTP domain value in interface"; + } + + // ipv4/ipv6 + leaf transport { + + type ptp_TransportType; + description "Transport type for PTP interface with default IPv4"; + } + + // transmission type unicast/multicast + leaf transmission { + + type ptp_TransportMode; + description "Transport mode for PTP interface with default multicast"; + } + + // transmission role slave/master + leaf role { + + type ptp_TransmissionRole; + description "Transport role for PTP interface with default master"; + } + + // PTP packets destination MAC + leaf ptpDestinationMac { + + type ptp_PtpDestinationMac; + description "PTP destination mac forwardable or non-forwardable"; + } + + // PTP packets destination MAC with RX packet not matching + leaf ptpRxNoMatch { + + type ptp_PtpRxNoMatch; + description "PTP packets destination MAC with RX packet not matching"; + } + leaf ucastSrc { + type address_Ip; + description "Source IP address for ucast messages"; + } + + leaf ucastVrf { + + type l3_VrfName; + description "VRF to be used for hello messages"; + } + leaf profileOverride { + type boolean; + default "false"; + description "Allow override of configuration limits imposed by global PTP profile"; + } + + // [no] slave ipv4 //in ptp-master mode N > 1 + // [no] master ipv4 //in ptp-slave mode N > 1 + container master-items { + list UcastTransportIpMaster-list { + key "id"; + + uses ptp_UcastTransportIpMaster-group; + description "IP address for transport mode list"; + } + description "IP address for transport mode"; + } + container slave-items { + list UcastTransportIpSlave-list { + key "id"; + + uses ptp_UcastTransportIpSlave-group; + description "IP address for transport mode list"; + } + description "IP address for transport mode"; + } + } + + grouping ptp_UcastTransportIpMaster-group { + description "IP address for transport mode"; + leaf id { + type address_Ip; + description "IP address value for transport mode"; + } + } + + grouping ptp_UcastTransportIpSlave-group { + description "IP address for transport mode"; + leaf id { + type address_Ip; + description "IP address value for transport mode"; + } + } + + grouping ttag_TtagEntity-group { + description "PTP ttag configuration and management"; + leaf ttagMarkerInterval { + type uint32 { + range "1..25200"; + } + default "60"; + description "PTP ttag marker interval in seconds"; + } + container if-items { + list TtagIf-list { + key "id"; + + uses ttag_TtagIf-group; + description "Per-interface PTP ttag configuration and management list"; + } + description "Per-interface PTP ttag configuration and management"; + } + } + + grouping ttag_TtagIf-group { + description "Per-interface PTP ttag configuration and management"; + + // PTP if id + leaf id { + + type nw_IfId; + description "Interface id of port with PTP configuration"; + } + leaf ttag { + type boolean; + default "false"; + description "Ingress packet with ttag on interface"; + } + leaf ttagStrip { + type boolean; + default "false"; + description "Strip ttag from egress packet on this interface"; + } + leaf ttagMarker { + type boolean; + default "false"; + description "ttag marker packet on interface"; + } + } + + grouping segrt_Entity-group { + description "Segment-routing Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + container srv6-items { + + uses srv6_Entity-group; + description "SRv6 root MO"; + } + + // This objects hold per Segment-routing instance information. + container inst-items { + + uses segrt_Inst-group; + description "Segment-routing Instance"; + } + + // Holds segment-routing TE entity information + container te-items { + + uses srte_TE-group; + description "Traffic Engineering Entity, anchoring all SRTE specific MOs"; + } + } + + grouping srv6_Entity-group { + description "SRv6 root MO"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // Ephemeral data + container sidcounters-items { + + // Ephemeral data + list SidCounters-list { + config "false"; + key "sidAddress"; + + uses srv6_SidCounters-group; + description "SID counters list"; + } + description "SID counters"; + } + + container encapsulation-items { + + uses srv6_Encapsulation-group; + description "Encapsulation address. Either address or interface is used, not both."; + } + + container locators-items { + + uses srv6_Locators-group; + description "Root of all locators"; + } + } + + grouping srv6_SidCounters-group { + description "SID counters"; + + // Ephemeral data + leaf sidAddress { + config "false"; + type address_Ip; + description "SID IPv6 address, no mask length needed"; + } + + // Ephemeral data + leaf sidIsLocal { + config "false"; + type boolean; + description "True if the SID is local, false if it is remote."; + } + + // Ephemeral data + leaf sidCounterInputPkts { + config "false"; + type uint64; + description "Number of packets coming from this SID."; + } + + // Ephemeral data + leaf sidCounterInputBytes { + config "false"; + type uint64; + description "Number of bytes coming from this SID."; + } + + // Ephemeral data + leaf sidCounterOutputPkts { + config "false"; + type uint64; + description "Number of packets sent to this SID."; + } + + // Ephemeral data + leaf sidCounterOutputBytes { + config "false"; + type uint64; + description "Number of bytes sent to this SID."; + } + } + + grouping srv6_Encapsulation-group { + description "Encapsulation address. Either address or interface is used, not both."; + leaf srcAddress { + type address_Ip; + description "IPv6 address"; + } + leaf srcInterface { + type string; + description "Interface, most likely a loopback"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping srv6_Locators-group { + description "Root of all locators"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + container locator-items { + list Locator-list { + key "name"; + + uses srv6_Locator-group; + description "Define one locator list"; + } + description "Define one locator"; + } + } + + grouping srv6_Locator-group { + description "Define one locator"; + + leaf name { + + type srv6_LocName; + description "Locator name"; + } + leaf prefix { + type address_Ip; + description "Locator address"; + } + + leaf state { + config "false"; + + type srv6_LocState; + description "Locator State"; + } + leaf id { + config "false"; + type uint32; + description "Locator Id"; + } + } + + grouping segrt_Inst-group { + description "Segment-routing Instance"; + + // Sets the interval for which Segment-Routing process will wait for the clients + // to cleanup the old SRGB labels + leaf srgbCleanupIntvl { + + type segrt_SrgbCleanupIntvl; + description "SRGB cleanup interval"; + } + + // Sets the interval for which Segment-Routing will retry SRGB allocation with ULIB + leaf srgbAllocRetryIntvl { + + type segrt_SrgbAllocRetryIntvl; + description "SRGB allocation retry interval"; + } + + // Segment-routing operational state + leaf operSt { + config "false"; + + type segrt_OperSt; + description "Segment-routing Operational State"; + } + + // Segment-routing operational state qualifier + leaf operStQual { + config "false"; + + type segrt_OperStQual; + description "Segment-routing Operational State Qualifier"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // This object holds per domain (vrf) information + container dom-items { + list Dom-list { + key "name"; + + uses segrt_Dom-group; + description "Domain list"; + } + description "Domain"; + } + + // Segment Routing Global Block + container srgb-items { + + uses segrt_Srgb-group; + description "Segment Routing Global Block"; + } + } + + grouping segrt_Dom-group { + description "Domain"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // This object holds per address family Segment-routing information + container af-items { + list DomAf-list { + key "afType"; + + uses segrt_DomAf-group; + description "Address Family Domain list"; + } + description "Address Family Domain"; + } + } + + grouping segrt_DomAf-group { + description "Address Family Domain"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + // Address Family Type + leaf afType { + + type segrt_AfType; + description "Address family type"; + } + + // Prefix SID + container pfxsid-items { + list PrefixSid-list { + key "type"; + + uses segrt_PrefixSid-group; + description "Prefix Segment Identifier list"; + } + description "Prefix Segment Identifier"; + } + } + + grouping segrt_PrefixSid-group { + description "Prefix Segment Identifier"; + + // Type of segment identifier + leaf type { + + type segrt_SrDpType; + description "Type of Segment Identifier"; + } + + // MPLS Prefix SID + container mplspfxsid-items { + list MplsPrefixSid-list { + key "pfx"; + + uses segrt_MplsPrefixSid-group; + description "MPLS Prefix Segment Identifier list"; + } + description "MPLS Prefix Segment Identifier"; + } + } + + grouping segrt_MplsPrefixSid-group { + description "MPLS Prefix Segment Identifier"; + leaf pfx { + type address_Ip; + description "Prefix"; + } + + // Type of segment identifier + leaf sidValueType { + + type segrt_SidValueType; + description "Type of Segment Identifier Value"; + } + leaf sidValue { + type uint32 { + range "0..471804"; + } + description "Value of SID"; + } + } + + grouping segrt_Srgb-group { + description "Segment Routing Global Block"; + + // Config Segment Routing Global Block + container cfgsrgb-items { + list ConfigSrgb-list { + key "type"; + + uses segrt_ConfigSrgb-group; + description "Config Segment Routing Global Block list"; + } + description "Config Segment Routing Global Block"; + } + + // Operational Segment Routing Global Block + container opersrgb-items { + + uses segrt_OperSrgb-group; + description "Operational Segment Routing Global Block"; + } + } + + grouping segrt_ConfigSrgb-group { + description "Config Segment Routing Global Block"; + + // SRGB type + leaf type { + + type segrt_SrDpType; + description "SRGB type"; + } + + // Segment Routing Global Range Label Block + container lblblock-items { + list LblBlock-list { + key "localId"; + + uses segrt_LblBlock-group; + description "Segment Routing Global Range Label Block list"; + } + description "Segment Routing Global Range Label Block"; + } + } + + grouping segrt_LblBlock-group { + description "Segment Routing Global Range Label Block"; + leaf localId { + type string { + length "1..64"; + } + description "SRGB identifier"; + } + + // SRGB minimum label + leaf srLblMin { + + type ulib_LabelVal { + range "16000..471804"; + } + description "SRGB minimum label"; + } + + // SRGB maximum label + leaf srLblMax { + + type ulib_LabelVal { + range "16000..471804"; + } + description "SRGB minimum label"; + } + + // SRGB operational state + leaf operSt { + config "false"; + + type segrt_SRGBOperSt; + description "SRGB Operational State"; + } + + // Number of SRGB allocation retries + leaf numAllocRetries { + config "false"; + + type nw_Counter32; + description "Number of SRGB allocation retries"; + } + } + + grouping segrt_OperSrgb-group { + description "Operational Segment Routing Global Block"; + + // SRGB type + leaf type { + + type segrt_SrDpType; + description "SRGB type"; + } + + // Segment Routing Attributes + container operlblblock-items { + list OperLblBlock-list { + config "false"; + key "localId"; + + uses segrt_OperLblBlock-group; + description "Operational Segment Routing Global Range Lable Block list"; + } + description "Operational Segment Routing Global Range Lable Block"; + } + } + + grouping segrt_OperLblBlock-group { + description "Operational Segment Routing Global Range Lable Block"; + leaf localId { + config "false"; + type string; + description "SRGB identifier"; + } + + // SRGB minimum label + leaf srLblMin { + config "false"; + + type ulib_LabelVal; + description "SRGB minimum label"; + } + + // SRGB maximum label + leaf srLblMax { + config "false"; + + type ulib_LabelVal; + description "SRGB minimum label"; + } + + // SRGB operational state + leaf operSt { + config "false"; + + type segrt_SRGBOperSt; + description "SRGB Operational State"; + } + + // Number of SRGB allocation retries + leaf numAllocRetries { + config "false"; + + type nw_Counter32; + description "Number of SRGB allocation retries"; + } + } + + grouping srte_TE-group { + description "Traffic Engineering Entity, anchoring all SRTE specific MOs"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Exp Path definition + container affmap-items { + + uses srte_AffMap-group; + description "Configures affinity mappings. Mappings of user-defined names to a bit position in the affinity bitmap "; + } + + // SRTE Color definition + container color-items { + list Color-list { + key "color"; + + uses srte_Color-group; + description "Segment Routing TE Color Class list"; + } + description "Segment Routing TE Color Class"; + } + + // SRTE Encapsulation definition + container encap-items { + list Encapsulation-list { + key "encapType"; + + uses srte_Encapsulation-group; + description "SRTE Encapsulation Class list"; + } + description "SRTE Encapsulation Class"; + } + + // SRTE Segment list definition + container seglist-items { + list SegList-list { + key "name"; + + uses srte_SegList-group; + description "SRTE Explicit Segment List Class list"; + } + description "SRTE Explicit Segment List Class"; + } + + // This object holds srte information that is operated at a + // interface level + container if-items { + list If-list { + key "id"; + + uses srte_If-group; + description "Configures this interface for segment-routing Traffic-Engineering purposes list"; + } + description "Configures this interface for segment-routing Traffic-Engineering purposes"; + } + + // SRTE Policy definition + container pcc-items { + + uses srte_Pcc-group; + description "SRTE PCC (Path Computation Client) Class"; + } + + // SRTE Policy definition + container policy-items { + list Policy-list { + key "name"; + + uses srte_Policy-group; + description "Segment Routing TE Policy Class list"; + } + description "Segment Routing TE Policy Class"; + } + + // Traffic Engineering SRv6 related configurations + container sr-items { + + uses srte_SR-group; + description "Segment Routing configuration under Traffic Engineering"; + } + } + + grouping srte_AffMap-group { + description "Configures affinity mappings. Mappings of user-defined names to a bit position in the affinity bitmap "; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Affinity color definition + container affcol-items { + list AffColor-list { + key "name"; + + uses srte_AffColor-group; + description "User defined name and its bit position in the affinity bit map list"; + } + description "User defined name and its bit position in the affinity bit map"; + } + } + + grouping srte_AffColor-group { + description "User defined name and its bit position in the affinity bit map"; + + leaf name { + + type srte_Name; + description "User defined named of the affinity Color Affinity Name"; + } + + leaf bitpos { + + type srte_BitPos; + description "Bit position in the affinity map"; + } + } + + grouping srte_Color-group { + description "Segment Routing TE Color Class"; + + leaf color { + + type srte_ColorVal; + description "Segment Routing TE Color Value"; + } + + leaf metric { + + type srte_Metric; + description "Segment Routing TE Metric"; + } + + // SRTE Candidate Path definition + container cndpaths-items { + + uses srte_CndPaths-group; + description "Denotes the Candidate paths for the On-Demand Color and is identified by a preference value"; + } + } + + grouping srte_CndPaths-group { + description "Denotes the Candidate paths for the On-Demand Color and is identified by a preference value"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Candidate Path Preference definition + container pref-items { + list Pref-list { + key "prefVal"; + + uses srte_Pref-group; + description "Class that defines the preference value of this candidate path list"; + } + description "Class that defines the preference value of this candidate path"; + } + } + + grouping srte_Pref-group { + description "Class that defines the preference value of this candidate path"; + leaf prefVal { + type uint32; + description "Preference Value of the Candidate path. Higher preference value is preferred"; + } + + // SRTE Candidate Path Dynamic definition + container dyn-items { + + uses srte_Dynamic-group; + description "Enables the dynamic path configuration sub-section for this candidate path"; + } + + // SRTE Candidate Path Constraint definition + container constraints-items { + + uses srte_Constraint-group; + description "Specifies the required constraints for this Candidate Paths"; + } + } + + grouping srte_Dynamic-group { + description "Enables the dynamic path configuration sub-section for this candidate path"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Candidate Path Dynamic PCEP definition + container pce-items { + + uses srte_DynPce-group; + description "Defines the candidate paths need to be computed by Path Computation engine"; + } + + // SRTE Candidate Path Metric definition + container metric-items { + + uses srte_Metric-group; + description "Specifies the type of metric that the computation will optimize"; + } + } + + grouping srte_DynPce-group { + description "Defines the candidate paths need to be computed by Path Computation engine"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping srte_Metric-group { + description "Specifies the type of metric that the computation will optimize"; + + leaf metricType { + + type srte_Metric; + description "Candidate Path Metric Type"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping srte_Constraint-group { + description "Specifies the required constraints for this Candidate Paths"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Candidate Path Segment definition + container segment-items { + + uses srte_Segments-group; + description "Specifies Segments constraints for this Candidate Path. ProtectionType, Dataplane"; + } + + // SRTE Candidate Path Association definition + container assoc-items { + + uses srte_Assoc-group; + description "Specifies the association types this candidate path belongs to"; + } + + // SRTE Candidate Path Affinity definition + container affinity-items { + + uses srte_Affinity-group; + description "Specifies the affinity constraints for the path"; + } + } + + grouping srte_Segments-group { + description "Specifies Segments constraints for this Candidate Path. ProtectionType, Dataplane"; + + leaf protType { + + type srte_ProtectionType; + description "Specifies if the candidate path must use protected or unprotected SIDs"; + } + + leaf datapln { + + type srte_DataPlane; + description "Specifies if this candidate paths is encoded with MPLS SIDs or SRv6 SIDs"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping srte_Assoc-group { + description "Specifies the association types this candidate path belongs to"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Candidate Path Disjointness + container disj-items { + + uses srte_Disjointness-group; + description "Specifies that the path belongs to the disjointness association group"; + } + } + + grouping srte_Disjointness-group { + description "Specifies that the path belongs to the disjointness association group"; + leaf id { + type uint32; + description "Association group Identifier"; + } + + leaf disjType { + + type srte_DisjointType; + description "Specifies the type of disjointness this path needs to be."; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping srte_Affinity-group { + description "Specifies the affinity constraints for the path"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Candidate Path Affinity exclude-any definition + container exclany-items { + + uses srte_Excludeany-group; + description "Specifies that links that have any of the specified affinity colors must not be traversed by the path"; + } + + // SRTE Candidate Path Affinity include-all definition + container inclall-items { + + uses srte_Includeall-group; + description "Specifies that only links that have all of the specified affinity colors must be traversed by the path"; + } + + // SRTE Candidate Path Affinity include-any definition + container inclany-items { + + uses srte_Includeany-group; + description "Specifies that only links that have any of the specified affinity colors can be traversed by the path"; + } + } + + grouping srte_Excludeany-group { + description "Specifies that links that have any of the specified affinity colors must not be traversed by the path"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Affinity color for constraint + container affcol-items { + list ConstAffColor-list { + key "name"; + + uses srte_ConstAffColor-group; + description "Specify the affinity color for the Affinity constraint type list"; + } + description "Specify the affinity color for the Affinity constraint type"; + } + } + + grouping srte_ConstAffColor-group { + description "Specify the affinity color for the Affinity constraint type"; + + leaf name { + + type srte_Name; + description "Name of the affinity Color definition"; + } + } + + grouping srte_Includeall-group { + description "Specifies that only links that have all of the specified affinity colors must be traversed by the path"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Affinity color for constraint + container affcol-items { + list ConstAffColor-list { + key "name"; + + uses srte_ConstAffColor-group; + description "Specify the affinity color for the Affinity constraint type list"; + } + description "Specify the affinity color for the Affinity constraint type"; + } + } + + grouping srte_Includeany-group { + description "Specifies that only links that have any of the specified affinity colors can be traversed by the path"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Affinity color for constraint + container affcol-items { + list ConstAffColor-list { + key "name"; + + uses srte_ConstAffColor-group; + description "Specify the affinity color for the Affinity constraint type list"; + } + description "Specify the affinity color for the Affinity constraint type"; + } + } + + grouping srte_Encapsulation-group { + description "SRTE Encapsulation Class"; + leaf srcAddress { + type address_Ip; + description "SRTE Encapsulation Source IP Address"; + } + + leaf encapType { + + type srte_EncapsulationType; + description "SRTE Encapsulation Type"; + } + } + + grouping srte_SegList-group { + description "SRTE Explicit Segment List Class"; + + leaf name { + + type srte_Name; + description "SRTE Explicit Segment List Name"; + } + + // SRTE Segment list Next-Label definition + container nxtlbl-items { + list NxtLbl-list { + key "idx"; + + uses srte_NxtLbl-group; + description "SRTE Segment List Next Label Class list"; + } + description "SRTE Segment List Next Label Class"; + } + + // SRTE Segment list Next-SID definition + container nxtsid-items { + list NxtSid-list { + key "idx"; + + uses srte_NxtSid-group; + description "SRTE Segment List Next SRv6 SID Class list"; + } + description "SRTE Segment List Next SRv6 SID Class"; + } + } + + grouping srte_NxtLbl-group { + description "SRTE Segment List Next Label Class"; + + leaf lbl { + + type srte_LabelVal; + description "SRTE Segment List Next Label Value"; + } + + leaf idx { + + type srte_OptNum; + description "SRTE Segment List Next Label Index"; + } + } + + grouping srte_NxtSid-group { + description "SRTE Segment List Next SRv6 SID Class"; + leaf sid { + type address_Ip; + description "SRTE Segment List Next SID Value"; + } + + leaf idx { + + type srte_OptNum; + description "SRTE Segment List Next Label Index"; + } + } + + grouping srte_If-group { + description "Configures this interface for segment-routing Traffic-Engineering purposes"; + + leaf operSt { + config "false"; + + type srte_IfOperSt; + description "Operation State for the interface for Segment-routing Traffic Engineering"; + } + leaf deleted { + config "false"; + type boolean; + description "Is this MO pending deletion"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + // SRTE Affinity color for interface + container metric-items { + + uses srte_IntfMetric-group; + description "Segment-Routing Protocols advertise Metricval and the te metric over this interace's adjacency"; + } + + // SRTE Interface Affinity + container intfaff-items { + + uses srte_IntfAff-group; + description "Lists the affinity color names for this interfaces"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping srte_IntfMetric-group { + description "Segment-Routing Protocols advertise Metricval and the te metric over this interace's adjacency"; + + leaf val { + + type srte_MetricVal; + description "Traffic Engineering Metric value"; + } + } + + grouping srte_IntfAff-group { + description "Lists the affinity color names for this interfaces"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Affinity color for interface + container intfaffcol-items { + list IntfAffColor-list { + key "name"; + + uses srte_IntfAffColor-group; + description "Affinity Color for this interface. Sets the bit that corresponds to this name, see affinity-map list"; + } + description "Affinity Color for this interface. Sets the bit that corresponds to this name, see affinity-map "; + } + } + + grouping srte_IntfAffColor-group { + description "Affinity Color for this interface. Sets the bit that corresponds to this name, see affinity-map "; + + leaf name { + + type srte_Name; + description "Name of the Affinity Color. Sets the bit that corresponds to this name in the affinity-map"; + } + } + + grouping srte_Pcc-group { + description "SRTE PCC (Path Computation Client) Class"; + leaf srcAddress { + type address_Ip; + description "Local IP address to use as the source address for PCEP connections"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Pce definition + container pce-items { + list Pce-list { + key "pceAddress"; + + uses srte_Pce-group; + description "Defines a PCE to which a PCEP connection may be created list"; + } + description "Defines a PCE to which a PCEP connection may be created"; + } + } + + grouping srte_Pce-group { + description "Defines a PCE to which a PCEP connection may be created"; + + leaf precedence { + + type srte_PcePrecedence; + description "SRTE PCE Precedence Value (0 is most preferred, 255 is least)"; + } + leaf pceAddress { + type address_Ip; + description "SRTE PCE IP Address Value"; + } + } + + grouping srte_Policy-group { + description "Segment Routing TE Policy Class"; + + leaf name { + + type srte_Name; + description "Segment Routing TE Policy Name"; + } + leaf endpoint { + type address_Ip; + description "Segment Routing TE Endpoint IPv4/v6 address"; + } + + leaf color { + + type srte_ColorVal; + description "Segment Routing TE Policy Color"; + } + + // SRTE Candidate Path definition + container expcndpaths-items { + + uses srte_ExpCndPaths-group; + description "Segment Routing TE Exp Candidate path"; + } + } + + grouping srte_ExpCndPaths-group { + description "Segment Routing TE Exp Candidate path"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Policy Preference definition + container pref-items { + list PolPref-list { + key "pref"; + + uses srte_PolPref-group; + description "Each preference acts as a grouping of explicit paths on a policy. The preference having the lowest value and each of who's members is up is chosen as the active group. list"; + } + description "Each preference acts as a grouping of explicit paths on a policy. The preference having the lowest value and each of who's members is up is chosen as the active group."; + } + } + + grouping srte_PolPref-group { + description "Each preference acts as a grouping of explicit paths on a policy. The preference having the lowest value and each of who's members is up is chosen as the active group."; + + leaf pref { + + type srte_OptNum; + description "The preference value for the group of explicit paths"; + } + + // SRTE Policy Explicit-path holder definition + container exp-items { + list PolExp-list { + key "name"; + + uses srte_PolExp-group; + description "Represents an explicit path assigned to a preference under a policy. list"; + } + description "Represents an explicit path assigned to a preference under a policy."; + } + + // SRTE Candidate Path Dynamic definition + container dyn-items { + + uses srte_PolDynamic-group; + description "Enables the dynamic path configuration sub-section for this candidate path"; + } + + // SRTE Candidate Path Constraint definition + container constraints-items { + + uses srte_PolConstraint-group; + description "Specifies the required constraints for this Candidate Paths"; + } + } + + grouping srte_PolExp-group { + description "Represents an explicit path assigned to a preference under a policy."; + + leaf name { + + type srte_Name; + description "Explicit path name. Must be the name of an existing ExpPath MO"; + } + leaf weight { + type uint32; + description "SRTE Policy Explicit-Path Segment List Weight"; + } + } + + grouping srte_PolDynamic-group { + description "Enables the dynamic path configuration sub-section for this candidate path"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Candidate Path Dynamic PCEP definition + container pce-items { + + uses srte_PolDynPce-group; + description "Defines the candidate paths need to be computed by Path Computation engine"; + } + + // SRTE Candidate Path Metric definition + container metric-items { + + uses srte_PolMetric-group; + description "Specifies the type of metric that the computation will optimize"; + } + } + + grouping srte_PolDynPce-group { + description "Defines the candidate paths need to be computed by Path Computation engine"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping srte_PolMetric-group { + description "Specifies the type of metric that the computation will optimize"; + + leaf metricType { + + type srte_Metric; + description "SRTE Candidate Path Metric Type"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping srte_PolConstraint-group { + description "Specifies the required constraints for this Candidate Paths"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Candidate Path Segment definition + container segment-items { + + uses srte_PolSegments-group; + description "Specifies Segments constraints for this Candidate Path. ProtectionType, Dataplane"; + } + + // SRTE Candidate Path Association definition + container assoc-items { + + uses srte_PolAssoc-group; + description "Specifies the association types this candidate path belongs to"; + } + + // SRTE Candidate Path Affinity definition + container affinity-items { + + uses srte_PolAffinity-group; + description "Specifies the affinity constraints for the path"; + } + } + + grouping srte_PolSegments-group { + description "Specifies Segments constraints for this Candidate Path. ProtectionType, Dataplane"; + + leaf protType { + + type srte_ProtectionType; + description "Specifies if the candidate path must use protected or unprotected SIDs"; + } + + leaf datapln { + + type srte_DataPlane; + description "Specifies if this candidate paths is encoded with MPLS SIDs or SRv6 SIDs"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping srte_PolAssoc-group { + description "Specifies the association types this candidate path belongs to"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Candidate Path Disjointness + container disj-items { + + uses srte_PolDisjointness-group; + description "Specifies that the path belongs to the disjointness association group"; + } + } + + grouping srte_PolDisjointness-group { + description "Specifies that the path belongs to the disjointness association group"; + + leaf disjType { + + type srte_DisjointType; + description "Specifies the type of disjointness this path needs to be."; + } + leaf id { + type uint32; + description "Association group Identifier"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + } + + grouping srte_PolAffinity-group { + description "Specifies the affinity constraints for the path"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Candidate Path Affinity exclude-any definition + container exclany-items { + + uses srte_PolExcludeany-group; + description "Specifies that links that have any of the specified affinity colors must be traversed by the path"; + } + + // SRTE Candidate Path Affinity include-all definition + container inclall-items { + + uses srte_PolIncludeall-group; + description "Specifies that only links that have all of the specified affinity colors must be traversed by the path"; + } + + // SRTE Candidate Path Affinity include-any definition + container inclany-items { + + uses srte_PolIncludeany-group; + description "Specifies that only links that have any of the specified affinity colors must not be used"; + } + } + + grouping srte_PolExcludeany-group { + description "Specifies that links that have any of the specified affinity colors must be traversed by the path"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Affinity color for constraints + container affcol-items { + list PolConstAffColor-list { + key "name"; + + uses srte_PolConstAffColor-group; + description "Specify the affinity color for the Affinity constraint type list"; + } + description "Specify the affinity color for the Affinity constraint type"; + } + } + + grouping srte_PolConstAffColor-group { + description "Specify the affinity color for the Affinity constraint type"; + + leaf name { + + type srte_Name; + description "Name of the affinity Color definition"; + } + } + + grouping srte_PolIncludeall-group { + description "Specifies that only links that have all of the specified affinity colors must be traversed by the path"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Affinity color for constraints + container affcol-items { + list PolConstAffColor-list { + key "name"; + + uses srte_PolConstAffColor-group; + description "Specify the affinity color for the Affinity constraint type list"; + } + description "Specify the affinity color for the Affinity constraint type"; + } + } + + grouping srte_PolIncludeany-group { + description "Specifies that only links that have any of the specified affinity colors must not be used"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Operational errors qualifier + leaf operErr { + config "false"; + + type nw_OperErrQual; + description "Operational Errors Qualifier"; + } + + // SRTE Affinity color for constraints + container affcol-items { + list PolConstAffColor-list { + key "name"; + + uses srte_PolConstAffColor-group; + description "Specify the affinity color for the Affinity constraint type list"; + } + description "Specify the affinity color for the Affinity constraint type"; + } + } + + grouping srte_SR-group { + description "Segment Routing configuration under Traffic Engineering"; + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // SRv6 Traffic Engineering + container srv6-items { + + uses srte_SRv6-group; + description "SRv6 Traffic Engineering related configurations"; + } + } + + grouping srte_SRv6-group { + description "SRv6 Traffic Engineering related configurations"; + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Traffic Engineering SRv6 Locators + container locs-items { + + uses srte_Locators-group; + description "SRv6 Traffic Engineering locators"; + } + } + + grouping srte_Locators-group { + description "SRv6 Traffic Engineering locators"; + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Locator name for SRv6 Traffic Engineering + container loc-items { + list Locator-list { + key "name"; + + uses srte_Locator-group; + description "SRv6 TE locator name list"; + } + description "SRv6 TE locator name"; + } + } + + grouping srte_Locator-group { + description "SRv6 TE locator name"; + + leaf name { + + type srte_Name; + description "Locator name for SRv6 Traffic Engineering"; + } + } + + grouping tunnelenc_Entity-group { + description "Tunnel-encryption control plane entity"; + leaf mustSecurePolicy { + type boolean; + description "Must secure Policy of tunnel-encryption"; + } + + leaf sourceIntf { + + type nw_IfId; + description "Source-interface associated with Tunnel-encryption key exchange"; + } + leaf icvChk { + type boolean; + description "Tunnel-encryption ICV Check"; + } + + // This object holds tunnel-encryption information that is operated at a + // interface level + container if-items { + list TunencIf-list { + key "id"; + + uses tunnelenc_TunencIf-group; + description "Interface for tunnel-encryption list"; + } + description "Interface for tunnel-encryption"; + } + + // This object holds tunnel-encryption information that is operated at a + // tunenc-peer level + container peerip-items { + list PeerIp-list { + key "peerIp"; + + uses tunnelenc_PeerIp-group; + description "Tunnel-encryption Peer-ip Instance list"; + } + description "Tunnel-encryption Peer-ip Instance"; + } + + // This object holds tunnel-encryption information that is operated at a + // policy level + container policy-items { + list Policy-list { + key "policyName"; + + uses tunnelenc_Policy-group; + description "Tunnel-encryption Policy Instance list"; + } + description "Tunnel-encryption Policy Instance"; + } + } + + grouping tunnelenc_TunencIf-group { + description "Interface for tunnel-encryption"; + leaf tunnelEnable { + type boolean; + description "Tunnel-encryption enable on interface"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + } + + grouping tunnelenc_PeerIp-group { + description "Tunnel-encryption Peer-ip Instance"; + leaf peerIp { + type address_Ipv4; + description "Peer-ips aasociated to tunnel-encryption"; + } + + // Key Chain Name + leaf keychainName { + + type tunnelenc_KeyChainName; + description "Name of Keychain assciated to Peer-ip"; + } + leaf policyName { + type string { + pattern ".*[a-zA-Z0-9-$_]{0,32}.*"; + } + description "Name of Policy assciated to Peer-ip"; + } + } + + grouping tunnelenc_Policy-group { + description "Tunnel-encryption Policy Instance"; + + // Policy Name + leaf policyName { + + type tunnelenc_PolicyName; + description "Name of tunnel-encryption Policy"; + } + + // Cipher Suite + leaf cipherSuite { + + type tunnelenc_CipherSuite; + description "Cipher Suite for tunnel-encryption Policy"; + } + + // SAK expiry time + leaf sakExpiryTime { + + type tunnelenc_SakExpiryTime; + description "Security Association Key Expiry Time for tunnel-encryption Policy"; + } + + // Replay Protection Window Size + leaf replayWindow { + + type tunnelenc_ReplayWindow; + description "Replay Window for tunnel-encryption Policy"; + } + } + + grouping vrrp_Entity-group { + description "VRRP Entity"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This object holds per vrrp instance information. There is only + // one instance supported in vrrp currently + container inst-items { + + uses vrrp_Inst-group; + description "VRRP Instance"; + } + } + + grouping vrrp_Inst-group { + description "VRRP Instance"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + + type nw_InstCtrl; + description "Controls"; + } + + // This object holds the interfaces that will have VRRP interface. + // Interface must already be created and should have an IP address + container if-items { + list Interface-list { + key "id"; + + uses vrrp_Interface-group; + description "VRRP Interface list"; + } + description "VRRP Interface"; + } + } + + grouping vrrp_Interface-group { + description "VRRP Interface"; + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024; + description "Description"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative state + leaf adminSt { + + type nw_IfAdminSt; + description "Admin State"; + } + + // This object holds vrrp id information + container id-items { + list Id-list { + key "id"; + + uses vrrp_Id-group; + description "VRRPv2 Router Id list"; + } + description "VRRPv2 Router Id"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping vrrp_Id-group { + description "VRRPv2 Router Id"; + + // vrrp id + leaf id { + + type vrrp_Id; + description "VRRP Id"; + } + leaf primary { + type address_Ip; + description "primary IP address"; + } + + // advertise interval + leaf advIntvl { + + type vrrp_AdvIntvl; + description "Advertisement Interval"; + } + + // authentication text + leaf authText { + + type vrrp_AuthTextType; + description "Authentication Text"; + } + + // authentication type + leaf authType { + + type vrrp_AuthType; + description "Authentication Type"; + } + + // Preempt + leaf preempt { + + type vrrp_Preempt; + description "Preempt"; + } + + // priority configuration + leaf priCfg { + + type vrrp_PriVal; + description "Configured Priority"; + } + leaf bfdPeerAddr { + type address_Ip; + description "BFD Peer address"; + } + + // forwarding lower threshold + leaf fwdLwrThrld { + + type vrrp_PriVal; + description "Fowarding Lower Threshold"; + } + + // forwarding upper threshold + leaf fwdUprThrld { + + type vrrp_UprThrshld; + description "Forwarding Upper Threshold"; + } + + // admin state + leaf adminSt { + + type vrrp_AdminSt; + description "Admin state"; + } + + // group state + leaf groupSt { + config "false"; + + type vrrp_GroupSt; + description "vrrp group state"; + } + + // group state qualifier + leaf groupStQual { + config "false"; + + type vrrp_GroupStQual; + description "vrrp group state qualifier"; + } + leaf mac { + config "false"; + type address_Mac; + description "vrrp vmac"; + } + leaf masterAddr { + config "false"; + type address_Ip; + description "vrrp master address"; + } + + // bfd session status + leaf bfdSessionSt { + config "false"; + + type vrrp_bfdSessionSt; + description "vrrp bfd session status"; + } + container secondary-items { + list Secondary-list { + key "secondary"; + + uses vrrp_Secondary-group; + description "Secondary address for the VRRP Router list"; + } + description "Secondary address for the VRRP Router"; + } + + // Object to hold vrrp tarck information + container track-items { + + uses vrrp_Track-group; + description "VRRP Track objects"; + } + } + + grouping vrrp_Secondary-group { + description "Secondary address for the VRRP Router"; + leaf secondary { + type address_Ip; + description "Secondary IP address for the VRRP Router"; + } + } + + grouping vrrp_Track-group { + description "VRRP Track objects"; + + // Object to hold native track information + container nativeTrack-items { + + uses vrrp_NativeTrack-group; + description "VRRPv2 native tracking object"; + } + + // Contains track information of otm track object + container track-items { + list ObjectTrack-list { + key "id"; + + uses vrrp_ObjectTrack-group; + description "VRRPV2 object tracking list"; + } + description "VRRPV2 object tracking"; + } + } + + grouping vrrp_NativeTrack-group { + description "VRRPv2 native tracking object"; + + // Interface name to be tracked, format to be specified + // eth1/1, eth1/1.1, po1 + leaf id { + + type nw_IfId; + description "Interface to be tracked by this VRRP instance"; + } + leaf priority { + type uint16 { + range "1..254"; + } + description "VRRP Priority when track is down"; + } + } + + grouping vrrp_ObjectTrack-group { + description "VRRPV2 object tracking"; + + // Track id to be tracked + leaf id { + + type track_TrackId; + description "Track Id to be tracked"; + } + leaf decrementPriority { + type uint16 { + range "1..254"; + } + default "10"; + description "Value to be decremented from priority when tracked object is down"; + } + } + + grouping vrrpv3_Entity-group { + description "VRRPv3 Entity"; + + // This object holds per vrrpv3 instance information. There is only + // one instance supported in vrrpv3 currently + container inst-items { + + uses vrrpv3_Inst-group; + description "VRRPv3 Instance"; + } + } + + grouping vrrpv3_Inst-group { + description "VRRPv3 Instance"; + + // Administrative state + leaf adminSt { + + type nw_AdminSt; + description "Admin State"; + } + + // This object holds the interfaces that will have VRRPv3 interface. + container if-items { + list Interface-list { + key "id"; + + uses vrrpv3_Interface-group; + description "VRRPv3 Interface list"; + } + description "VRRPv3 Interface"; + } + } + + grouping vrrpv3_Interface-group { + description "VRRPv3 Interface"; + leaf delayIntfMin { + type uint16 { + range "0..3600"; + } + default "0"; + description "Delay in seconds, to start VRRPv3 state machine after receiving interface moving to Up state"; + } + leaf delayReload { + type uint16 { + range "0..3600"; + } + default "0"; + description "Delay in seconds, to start VRRPv3 state machine after the system-reload"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // This object holds Virtual Router ID information + container id-items { + list Vr-list { + key "id af"; + + uses vrrpv3_Vr-group; + description "VRRPv3 Object holds Virtual Router ID information list"; + } + description "VRRPv3 Object holds Virtual Router ID information"; + } + + // Object to hold vrrpv3 VRRS information + container vrrs-items { + list VrrsPathway-list { + key "tag"; + + uses vrrpv3_VrrsPathway-group; + description "Object holds VRRS Pathway information list"; + } + description "Object holds VRRS Pathway information"; + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + } + + grouping vrrpv3_Vr-group { + description "VRRPv3 Object holds Virtual Router ID information"; + + // Virtual Router ID + leaf id { + + type vrrpv3_Id; + description "VRRPv3 Virtual Router Id"; + } + leaf ip { + type address_Ip; + description "primary IP address"; + } + + // Advertisement Interval + leaf advIntvl { + + type vrrpv3_AdvIntvl; + description "Advertisement Interval"; + } + + // Priority Configuration + leaf priCfg { + + type vrrpv3_PriVal; + description "Configured Priority"; + } + + // Preempt + leaf preempt { + + type vrrpv3_Preempt; + description "Preempt"; + } + + // Virtual Router Description string + leaf name { + + type vrrpv3_Desc; + description "Virtual Router Description"; + } + + // Minimum Preemption delay before this group can preempt a high priority Masster + leaf preemptDelayMin { + + type vrrpv3_PreemptDelay; + description "Miminum delay before preempt"; + } + + // Admin State + leaf adminSt { + + type vrrpv3_AdminSt; + description "Admin state"; + } + + // Virtual Router Address family + leaf af { + + type vrrpv3_VrAf; + description "Virtual Router Address Family"; + } + + // match-address + leaf matchAddr { + + type vrrpv3_State; + default "enabled"; + description "Enables matching of secondary addresses in the vrrpv3 advertisement packet against the configured vrrpv3 secondary addresses"; + } + + // vrrpv2 compatibility mode + leaf vrrpv2CompatMode { + + type vrrpv3_State; + default "disabled"; + description "vrrpv2 compatibility mode"; + } + + // Operational priority value for vrrpv3 group + leaf priOper { + config "false"; + + type vrrpv3_PriVal; + description "Operational priority value for vrrpv3 group"; + } + leaf decrTrackPrio { + type uint8 { + range "1..254"; + } + default "10"; + description "Priority to be decremented when tracked object is down. Default value is 10"; + } + + // Object to hold vrrpv3 object track information + container track-items { + list ObjectTrack-list { + key "id"; + + uses vrrpv3_ObjectTrack-group; + description "Holds information of objects tracked by VRRPv3 list"; + } + description "Holds information of objects tracked by VRRPv3"; + } + container addr-items { + list Addr-list { + key "addr"; + + uses vrrpv3_Addr-group; + description "IP address list"; + } + description "IP address"; + } + container leader-items { + list VrrsLeader-list { + key "tag"; + + uses vrrpv3_VrrsLeader-group; + description "VRRS Tag list"; + } + description "VRRS Tag"; + } + } + + grouping vrrpv3_ObjectTrack-group { + description "Holds information of objects tracked by VRRPv3"; + + // Object id to be tracked + leaf id { + + type track_TrackId; + description "Object Id to be tracked"; + } + leaf decrPrio { + type uint16 { + range "1..254"; + } + default "10"; + description "Priority to be decremented when tracked object is down. Default value is 10"; + } + } + + grouping vrrpv3_Addr-group { + description "IP address"; + leaf addr { + type address_Ip; + description "IP address"; + } + } + + grouping vrrpv3_VrrsLeader-group { + description "VRRS Tag"; + leaf tag { + type string { + length "0..48"; + } + description "VRRS tag for which group is leader"; + } + } + + grouping vrrpv3_VrrsPathway-group { + description "Object holds VRRS Pathway information"; + leaf tag { + type string { + length "0..48"; + } + description "Name of vrrs tag which pathway will follow"; + } + + // Admin State + leaf adminSt { + + type vrrpv3_State; + default "enabled"; + description "Administrative state for vrrs pathway"; + } + + // Vrrs Pathway Description string + leaf description { + + type vrrpv3_Desc; + description "Description string for vrrs pathway"; + } + leaf mac { + type address_Mac; + default "00:00:00:00:00:00"; + description "Configured virtual MAC address for the Pathway"; + } + leaf macAdvIntvl { + type uint16 { + range "1..300"; + } + default "10"; + description "Interval in seconds, between virtual MAC unsolicited advertisements"; + } + container addr-items { + list PwAddr-list { + key "addr"; + + uses vrrpv3_PwAddr-group; + description "IP address list"; + } + description "IP address"; + } + } + + grouping vrrpv3_PwAddr-group { + description "IP address"; + leaf addr { + type address_Ip; + description "IPvX address for vrrs pathway"; + } + } + + grouping scrtchpd_Root-group { + description "Root"; + + // Holds rpm control plane entity information + container rpmcli-items { + + uses rpmcli_EntityCli-group; + description "Route Policy Map Entity CLI"; + } + + // Holds Vlan-mgr control plane entity information + container vlanmgrcli-items { + + uses vlanmgrcli_EntityCli-group; + description "Vlan Manager Entity CLI"; + } + } + + grouping rpmcli_EntityCli-group { + description "Route Policy Map Entity CLI"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // Route control rule for access lists + container accesslistcli-items { + list RuleCli-list { + config "false"; + key "name"; + + uses rtlistcli_RuleCli-group; + description "Rule CLI list"; + } + description "Rule CLI"; + } + + // Route control rule for V4 prefix lists + container pfxlistv4cli-items { + list RuleV4Cli-list { + config "false"; + key "name"; + + uses rtpfxcli_RuleV4Cli-group; + description "IPv4 Rule CLI list"; + } + description "IPv4 Rule CLI"; + } + + // Route control rule for V6 prefix lists + container pfxlistv6cli-items { + list RuleV6Cli-list { + config "false"; + key "name"; + + uses rtpfxcli_RuleV6Cli-group; + description "IPv6 Rule list"; + } + description "IPv6 Rule"; + } + + // Route control rule for regular community lists + container rtregcomcli-items { + list RuleCli-list { + config "false"; + key "name"; + + uses rtregcomcli_RuleCli-group; + description "Rule CLI list"; + } + description "Rule CLI"; + } + } + + grouping rtlistcli_RuleCli-group { + description "Rule CLI"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Prefix list entry definition + container entcli-items { + + uses rtlistcli_EntryCli-group; + description "Entry CLI"; + } + } + + grouping rtlistcli_EntryCli-group { + description "Entry CLI"; + + // CLI Action + leaf cliAction { + config "false"; + + type scrtchpd_Action; + description "Action"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Order + leaf order { + config "false"; + + type rtflt_Order { + range "1..4294967294"; + } + description "Order"; + } + + // Action + leaf action { + config "false"; + + type rtflt_Action; + description "Action"; + } + leaf regex { + config "false"; + type string { + pattern ".*[^a-zA-Z~!#%@`;]{0,63}.*"; + } + description "Regular Expression"; + } + } + + grouping rtpfxcli_RuleV4Cli-group { + description "IPv4 Rule CLI"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Prefix list entry definition + container entcli-items { + + uses rtpfxcli_EntryCli-group; + description "Entry CLI"; + } + } + + grouping rtpfxcli_EntryCli-group { + description "Entry CLI"; + + // CLI Action + leaf cliAction { + config "false"; + + type scrtchpd_Action; + description "Action"; + } + leaf pfx { + config "false"; + type address_Ip; + description "Prefix"; + } + leaf mask { + config "false"; + type address_Ip; + description "mask"; + } + + // criteria, exact match or inexact match + leaf criteria { + config "false"; + + type rtpfx_Criteria; + description "Criteria"; + } + + // If the criteria is not an exact match, use a range to + // describe the prefix list range + leaf fromPfxLen { + config "false"; + + type l3_IpPfxLen; + description "Start of Prefix Length"; + } + + leaf toPfxLen { + config "false"; + + type l3_IpPfxLen; + description "End of Prefix Length"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Order + leaf order { + config "false"; + + type rtflt_Order { + range "1..4294967294"; + } + description "Order"; + } + + // Action + leaf action { + config "false"; + + type rtflt_Action; + description "Action"; + } + } + + grouping rtpfxcli_RuleV6Cli-group { + description "IPv6 Rule"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Prefix list entry definition + container entcli-items { + + uses rtpfxcli_EntryCli-group; + description "Entry CLI"; + } + } + + grouping rtregcomcli_RuleCli-group { + description "Rule CLI"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Type of the community list [regular | extended] + leaf type { + config "false"; + + type rtcom_ComT; + description "Type"; + } + + // Mode + leaf mode { + config "false"; + + type rtcom_Mode; + description "Mode"; + } + + // Regular community list entry + container entregcli-items { + + uses rtregcomcli_EntryRegexCli-group; + description "Entry CLI"; + } + + // Regular community list entry + container entcli-items { + + uses rtregcomcli_EntryCli-group; + description "Entry CLI"; + } + } + + grouping rtregcomcli_EntryRegexCli-group { + description "Entry CLI"; + leaf numOfChildren { + config "false"; + type uint32; + description "Total Number of Children"; + } + + // CLI Action + leaf cliAction { + config "false"; + + type scrtchpd_Action; + description "Action"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Order + leaf order { + config "false"; + + type rtflt_Order { + range "1..4294967294"; + } + description "Order"; + } + + // Action + leaf action { + config "false"; + + type rtflt_Action; + description "Action"; + } + leaf regex { + config "false"; + type string { + pattern ".*[^a-zA-Z~!#%@`;]{0,63}.*"; + } + description "Regular Expression"; + } + } + + grouping rtregcomcli_EntryCli-group { + description "Entry CLI"; + leaf numOfChildren { + config "false"; + type uint32; + description "Total Number of Children"; + } + + // CLI Action + leaf cliAction { + config "false"; + + type scrtchpd_Action; + description "Action"; + } + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + + // Order + leaf order { + config "false"; + + type rtflt_Order { + range "1..4294967294"; + } + description "Order"; + } + + // Action + leaf action { + config "false"; + + type rtflt_Action; + description "Action"; + } + leaf regex { + config "false"; + type string { + pattern ".*[^a-zA-Z~!#%@`;]{0,63}.*"; + } + description "Regular Expression"; + } + + // Item in the community list + container itemcli-items { + list ItemCli-list { + config "false"; + key "community"; + + uses rtregcomcli_ItemCli-group; + description "Item CLI list"; + } + description "Item CLI"; + } + } + + grouping rtregcomcli_ItemCli-group { + description "Item CLI"; + + leaf name { + config "false"; + + type pol_ObjName { + length "0..64"; + pattern ".*[a-zA-Z0-9_\\.:-]*.*"; + } + description "Name"; + } + + leaf descr { + config "false"; + + type naming_Descr; + description "Description of the specified attribute"; + } + leaf community { + config "false"; + type mtx_array_community; + description "Community"; + } + } + + grouping vlanmgrcli_EntityCli-group { + description "Vlan Manager Entity CLI"; + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // - Admin state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_EntOperSt; + description "Operational State"; + } + + // This objects hold per vlan-mgr instance information. There is only + // one instance of vlan-mgr running in the system today + container inst-items { + + uses vlanmgrcli_InstCli-group; + description "Vlan Manager Instance Cli"; + } + } + + grouping vlanmgrcli_InstCli-group { + description "Vlan Manager Instance Cli"; + leaf vxlanNativeVlans { + config "false"; + type boolean; + description "Vxlan Native Vlans"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "Name"; + } + + // Administrative state + leaf adminSt { + config "false"; + + type nw_AdminSt; + description "Admin State"; + } + + // Instance controls + leaf ctrl { + config "false"; + + type nw_InstCtrl; + description "Controls"; + } + } + + grouping synthetic_SwTLTestObj-group { + description "Synthetic Sw TL Test Object"; + + leaf name { + + type naming_Name; + description "Name"; + } + + leaf id { + + type naming_Id; + description "Id"; + } + + leaf descr { + + type naming_Descr; + description "TBD"; + } + leaf objDn { + type string; + } + leaf priKey { + type string; + } + container secc-items { + list SwCTestObj-list { + key "name"; + + uses synthetic_SwCTestObj-group; + description "Synthetic Sw C Test Object list"; + } + description "Synthetic Sw C Test Object"; + } + + container iecc-items { + + list IfcCTestObj-list { + key "name"; + + uses synthetic_IfcCTestObj-group; + description "Synthetic Ifc C Test Object list"; + } + description "Synthetic Ifc C Test Object"; + } + + container rttoObj-items { + + uses synthetic_RtToObj_target-group; + } + } + + grouping cnw_AggrIf-group { + description "Controller Aggregated Interface"; + + // Operational port state + leaf operSt { + config "false"; + + type l1_OperSt; + description "Operational Status"; + } + + leaf name { + config "false"; + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + config "false"; + + type naming_Descr1024 { + length "0..254"; + } + description "descr"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint Property has READ-Create access."; + } + + // Administrative port state @@@ Comes from port out-of-service policy + leaf adminSt { + config "false"; + + type l1_AdminSt; + description "Administrative Port State"; + } + + // Administrative port speed @@@ This comes from the host interface + // @@@ configuration policy + leaf speed { + config "false"; + + type l1_Speed; + description "Administrative Port Speed"; + } + + // Administrative port duplex @@@ This comes from the host interface + // @@@ configuration policy + leaf duplex { + config "false"; + + type l1_Duplex; + description "Duplex"; + } + + // Administrative port auto-negotiation @@@ It comes from the host interface configuration + // @@@ policy. It is used for automatically negotiating + // @@@ the speed + leaf autoNeg { + config "false"; + + type l1_AutoNeg; + description "Administrative Port Auto-Negotiation"; + } + + // Administrative port mtu @@@ This comes from QOS Policy + leaf mtu { + config "false"; + + type l1_Mtu; + description "Administrative port MTU"; + } + + // Administrative port snmp trap state @@@ This is a port level config. but it could go in + // @@@ SNMP policy in IFC + leaf snmpTrapSt { + config "false"; + + type l1_SnmpTrapSt; + description "Administrative Port Snmp Trap State"; + } + + // Administrative port mode @@@ Internally set by PE + leaf mode { + config "false"; + + type l1_Mode; + description "Administrative port mode"; + } + + // Administrative port layer @@@ Internally set by PE + leaf layer { + config "false"; + + type l1_Layer; + description "Administrative port layer"; + } + + // Administrative mdix mode @@@ Theres no benefit in exposing this property + // @@@ in IFC. Ask Marketing. + leaf mdix { + config "false"; + + type l1_Mdix; + description "Administrative Medium-dependant interface crossover(Mdix) mode"; + } + + // Administrative port delay @@@ is this exposed in IFC? + leaf delay { + config "false"; + + type l1_Delay; + description "Administrative port delay time"; + } + + // Administrative port link debounce interval @@@ This comes from the interface configuration policy + leaf linkDebounce { + config "false"; + + type l1_LinkDebounce; + description "Administrative port link debounce interval"; + } + + // Administrative port dot1q ether-type @@@ This property is not supported in switch ?? + leaf dot1qEtherType { + config "false"; + + type l1_DDot1qEtherType; + description "Administrative port Dot1q ether-type: configures TPID value in VLAN tag field for packets received and sent by interface"; + } + + // Administrative port bandwidth @@@ Comes from QOS Policy + leaf bw { + config "false"; + + type l1_Bw; + description "Bandwidth parameter for a routed interface, port channel or subinterface"; + } + + // Administrative port medium type @@@ The fabric & Host connections are P2p. @@@ No need to expose this property in IFC + leaf medium { + config "false"; + + type l1_Medium; + description "Administrative port medium type"; + } + + // Administrative port inherit bandwidth @@@ It is used for specifying the bandwidth inherited + // @@@ by the subinterfaces from the parent interface @@@ It is not exposed in IFC. All the subinterfaces + // @@@ inherit full parent interface's bandwidth + leaf inhBw { + config "false"; + + type l1_InheritBw; + description "Administrative port inherit bandwidth"; + } + + // Administrative port span mode @@@ This comes from the span policy in IFC + leaf spanMode { + config "false"; + + type l1_SpanMode; + description "Administrative port span mode"; + } + + // Administrative link logging enable @@@ This come from interface configuration policy + leaf linkLog { + config "false"; + + type l1_LinkLog; + description "Administrative link logging enable"; + } + + // Administrative trunk logging enable @@@ This come from interface configuration policy + leaf trunkLog { + config "false"; + + type l1_TrunkLog; + description "Administrative trunk logging enable"; + } + leaf routerMac { + config "false"; + type address_Mac; + default "00:00:00:00:00:00"; + description "Administrative Router MAC address"; + } + + // Type of the port: Fabric vs Leaf @@@ This property is not exposed in IFC + leaf portT { + config "false"; + + type eqpt_PortT; + description "Type of the port: Fabric vs Leaf"; + } + + // Usage of the port: Fabric, Infra, Epg, Controller, Discovery @@@ This property is not exposed in IFC + leaf usage { + config "false"; + + type l1_PortUsage; + description "Port Usage Type"; + } + + // config trunk vlans + leaf trunkVlans { + + type l1_l1IfTrunkVlans; + description "Configed Trunk Vlans"; + } + + // config access vlan + leaf accessVlan { + + type l1_l1IfAccessVlan; + description "Configured Access Vlan"; + } + + // Controller Id + leaf controllerId { + config "false"; + + type aggregate_ControllerIdBitmap; + description "Controller ID"; + } + + // config access vlan + leaf nativeVlan { + + type l1_l1IfNativeVlan; + description "Configured Native Vlan"; + } + + // port user config flags + leaf userCfgdFlags { + config "false"; + + type l1_userCfgdFlags; + description "Port User Config Flags"; + } + + // Dom info + container dom-items { + list DomDef-list { + config "false"; + key "domPKey"; + + uses fv_DomDef-group; + description "Domain list"; + } + description "Domain"; + } + + container rtextConf-items { + + uses l2_RtExtConf_target-group; + description "Eth Interface Attachment"; + } + + container rtbrConf-items { + + uses l2_RtBrConf_target-group; + description "Eth Interface Attachment"; + } + + container rtl2EthIf-items { + + list RtL2EthIf-list { + config "false"; + key "tDn"; + + uses l2_RtL2EthIf_target-group; + description "Ethernet Interface list"; + } + description "Ethernet Interface"; + } + + container rtfvNodePortAtt-items { + + list RtFvNodePortAtt-list { + config "false"; + key "tDn"; + + uses fv_RtFvNodePortAtt_target-group; + } + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rtphysRtdConf-items { + + uses l3_RtPhysRtdConf_target-group; + description "Physical Routed Attachment"; + } + + container rtl3EncPhysRtdConf-items { + + list RtL3EncPhysRtdConf-list { + config "false"; + key "tDn"; + + uses l3_RtL3EncPhysRtdConf_target-group; + description "Parent If list"; + } + description "Parent If"; + } + + container rsmbrIfs-items { + + list RsMbrIfs-list { + config "false"; + key "tDn"; + + uses cnw_RsMbrIfs_source-group; + description "Member Iinterfaces list"; + } + description "Member Iinterfaces"; + } + + container rsactiveIf-items { + + uses cnw_RsActiveIf_source-group; + description "Active Interface"; + } + + container rsethIfToVethIf-items { + + list RsEthIfToVethIf-list { + key "tDn"; + + uses l1_RsEthIfToVethIf_source-group; + description "Association to the veths bound to this interface list"; + } + description "Association to the veths bound to this interface"; + } + } + + grouping cnw_PhysIf-group { + description "Controller Physical Interface"; + + // Operational port state + leaf operSt { + config "false"; + + type l1_OperSt; + description "Operational Status"; + } + + leaf name { + + type naming_Name256 { + length "1..64"; + } + description "This object holds name information"; + } + + leaf descr { + + type naming_Descr1024 { + length "0..254"; + } + description "descr"; + } + + // Interface ID of this endpoint + leaf id { + + type nw_IfId; + description "Interface Identifier of this endpoint"; + } + + // Administrative port state @@@ Comes from port out-of-service policy + leaf adminSt { + + type l1_AdminSt; + description "Administrative Port State"; + } + + // Administrative port speed @@@ This comes from the host interface + // @@@ configuration policy + leaf speed { + + type l1_Speed; + description "Administrative Port Speed"; + } + + // Administrative port duplex @@@ This comes from the host interface + // @@@ configuration policy + leaf duplex { + + type l1_Duplex; + description "Duplex"; + } + + // Administrative port auto-negotiation @@@ It comes from the host interface configuration + // @@@ policy. It is used for automatically negotiating + // @@@ the speed + leaf autoNeg { + + type l1_AutoNeg; + description "Administrative Port Auto-Negotiation"; + } + + // Administrative port mtu @@@ This comes from QOS Policy + leaf mtu { + + type l1_Mtu; + description "Administrative port MTU"; + } + + // Administrative port snmp trap state @@@ This is a port level config. but it could go in + // @@@ SNMP policy in IFC + leaf snmpTrapSt { + + type l1_SnmpTrapSt; + description "Administrative Port Snmp Trap State"; + } + + // Administrative port mode @@@ Internally set by PE + leaf mode { + + type l1_Mode; + description "Administrative port mode"; + } + + // Administrative port layer @@@ Internally set by PE + leaf layer { + + type l1_Layer; + description "Administrative port layer"; + } + + // Administrative mdix mode @@@ Theres no benefit in exposing this property + // @@@ in IFC. Ask Marketing. + leaf mdix { + + type l1_Mdix; + description "Administrative Medium-dependant interface crossover(Mdix) mode"; + } + + // Administrative port delay @@@ is this exposed in IFC? + leaf delay { + + type l1_Delay; + description "Administrative port delay time"; + } + + // Administrative port link debounce interval @@@ This comes from the interface configuration policy + leaf linkDebounce { + + type l1_LinkDebounce; + description "Administrative port link debounce interval"; + } + + // Administrative port dot1q ether-type @@@ This property is not supported in switch ?? + leaf dot1qEtherType { + + type l1_DDot1qEtherType; + description "Administrative port Dot1q ether-type: configures TPID value in VLAN tag field for packets received and sent by interface"; + } + + // Administrative port bandwidth @@@ Comes from QOS Policy + leaf bw { + + type l1_Bw; + description "Bandwidth parameter for a routed interface, port channel or subinterface"; + } + + // Administrative port medium type @@@ The fabric & Host connections are P2p. @@@ No need to expose this property in IFC + leaf medium { + + type l1_Medium; + description "Administrative port medium type"; + } + + // Administrative port inherit bandwidth @@@ It is used for specifying the bandwidth inherited + // @@@ by the subinterfaces from the parent interface @@@ It is not exposed in IFC. All the subinterfaces + // @@@ inherit full parent interface's bandwidth + leaf inhBw { + + type l1_InheritBw; + description "Administrative port inherit bandwidth"; + } + + // Administrative port span mode @@@ This comes from the span policy in IFC + leaf spanMode { + + type l1_SpanMode; + description "Administrative port span mode"; + } + + // Administrative link logging enable @@@ This come from interface configuration policy + leaf linkLog { + + type l1_LinkLog; + description "Administrative link logging enable"; + } + + // Administrative trunk logging enable @@@ This come from interface configuration policy + leaf trunkLog { + + type l1_TrunkLog; + description "Administrative trunk logging enable"; + } + leaf routerMac { + type address_Mac; + default "00:00:00:00:00:00"; + description "Administrative Router MAC address"; + } + + // Type of the port: Fabric vs Leaf @@@ This property is not exposed in IFC + leaf portT { + + type eqpt_PortT; + description "Type of the port: Fabric vs Leaf"; + } + + // Usage of the port: Fabric, Infra, Epg, Controller, Discovery @@@ This property is not exposed in IFC + leaf usage { + + type l1_PortUsage; + description "Port Usage Type"; + } + + // config trunk vlans + leaf trunkVlans { + + type l1_l1IfTrunkVlans; + description "Configed Trunk Vlans"; + } + + // config access vlan + leaf accessVlan { + + type l1_l1IfAccessVlan; + description "Configured Access Vlan"; + } + + // Controller Id + leaf controllerId { + + type aggregate_ControllerIdBitmap; + description "Controller ID"; + } + + // config access vlan + leaf nativeVlan { + + type l1_l1IfNativeVlan; + description "Configured Native Vlan"; + } + + // port user config flags + leaf userCfgdFlags { + + type l1_userCfgdFlags; + description "Port User Config Flags"; + } + + // Dom info + container dom-items { + list DomDef-list { + config "false"; + key "domPKey"; + + uses fv_DomDef-group; + description "Domain list"; + } + description "Domain"; + } + + container rtextConf-items { + + uses l2_RtExtConf_target-group; + description "Eth Interface Attachment"; + } + + container rtbrConf-items { + + uses l2_RtBrConf_target-group; + description "Eth Interface Attachment"; + } + + container rtl2EthIf-items { + + list RtL2EthIf-list { + config "false"; + key "tDn"; + + uses l2_RtL2EthIf_target-group; + description "Ethernet Interface list"; + } + description "Ethernet Interface"; + } + + container rtfvNodePortAtt-items { + + list RtFvNodePortAtt-list { + config "false"; + key "tDn"; + + uses fv_RtFvNodePortAtt_target-group; + } + } + + container rtvrfMbr-items { + + uses l3_RtVrfMbr_target-group; + description "VRF Membership Association"; + } + + container rtphysRtdConf-items { + + uses l3_RtPhysRtdConf_target-group; + description "Physical Routed Attachment"; + } + + container rtl3EncPhysRtdConf-items { + + list RtL3EncPhysRtdConf-list { + config "false"; + key "tDn"; + + uses l3_RtL3EncPhysRtdConf_target-group; + description "Parent If list"; + } + description "Parent If"; + } + + container rtmbrIfs-items { + + uses cnw_RtMbrIfs_target-group; + description "Member Iinterfaces"; + } + + container rtactiveIf-items { + + uses cnw_RtActiveIf_target-group; + description "Active Interface"; + } + + container rsethIfToVethIf-items { + + list RsEthIfToVethIf-list { + key "tDn"; + + uses l1_RsEthIfToVethIf_source-group; + description "Association to the veths bound to this interface list"; + } + description "Association to the veths bound to this interface"; + } + } + + grouping trackutils_TrackUtils-group { + description + "TrackUtils keeps details about running/startup state, + file to be backedup and the location from where binaries needs to be restored as properties"; + + // Track-state + leaf trackState { + + type trackutils_ConfigStateType; + description + "Identifies whether the config + to be backed up is running config or startup config"; + } + + // TrackData MO + container trackdata-items { + list TrackData-list { + key "fileName"; + + uses trackutils_TrackData-group; + description + "The Mo stores the data/file string entered for + tracking list"; + } + description + "The Mo stores the data/file string entered for + tracking"; + } + + // BinaryLocation MO + container binarylocation-items { + list BinaryLocation-list { + key "binLoc"; + + uses trackutils_BinaryLocation-group; + description + "The Mo stores the binary location string entered for + restoring binaries list"; + } + description + "The Mo stores the binary location string entered for + restoring binaries"; + } + } + + grouping trackutils_TrackData-group { + description + "The Mo stores the data/file string entered for + tracking"; + leaf fileName { + type string; + description "The filename property stores the file name entered as a string"; + } + } + + grouping trackutils_BinaryLocation-group { + description + "The Mo stores the binary location string entered for + restoring binaries"; + leaf binLoc { + type string; + description "The bin_loc property stores the binary location entered as a string"; + } + } + + grouping vshd_CliAlias-group { + description "Cli alias configuration"; + leaf aliasName { + type string { + pattern ".*[A-Za-z][0-9A-Za-z]{0,29}.*"; + } + description "Name of the alias"; + } + leaf aliasCmd { + type string { + length "0..1023"; + } + description "Alias command definition"; + } + } + + grouping vshd_CliAliasCheck-group { + description "Cli alias check configuration"; + + // Name of the alias definition + leaf mode { + + type vshd_ModeType; + description "strict check for cli alias"; + } + } + + grouping vshd_CliVar-group { + description "Configure CLI commands"; + leaf varName { + type string { + pattern "[A-Za-z][0-9A-Za-z]{0,30}.*"; + } + description "Specify a variable name"; + } + leaf varValue { + type string { + length "0..254"; + } + description "Specify a variable value"; + } + } + + grouping action_LCont-group { + description "Action Container of mo LCont"; + container lsubj-items { + list LSubj-list { + key "oDn"; + + uses action_LSubj-group; + description "Action Subject of mo LSubj list"; + } + description "Action Subject of mo LSubj"; + } + } + + grouping action_LSubj-group { + description "Action Subject of mo LSubj"; + + leaf oDn { + type string; + description "Target Object's Subject DN"; + } + leaf oCl { + config "false"; + type string; + description "Target Object's subject Class id"; + } + + // Result for fabric ping + container pingrsltfab-items { + list RsltFab-list { + config "false"; + key "name srcNodeId dstNodeId startTs"; + + uses ping_RsltFab-group; + description "Fabric Result list"; + } + description "Fabric Result"; + } + + // Result for EP to EP (Tenant) ping + container pingrslttn-items { + list RsltTn-list { + config "false"; + key "tenant name srcIp dstIp startTs"; + + uses ping_RsltTn-group; + description "Tenant Result list"; + } + description "Tenant Result"; + } + + // Result for fabric traceroute + container trrsltfab-items { + list RsltFab-list { + config "false"; + key "name srcNodeId dstNodeId startTs"; + + uses traceroute_RsltFab-group; + description "Fabric Result list"; + } + description "Fabric Result"; + } + + // Result for EP to EP (Tenant) traceroute + container trrslttn-items { + list RsltTn-list { + config "false"; + key "tenant name srcIp dstIp startTs"; + + uses traceroute_RsltTn-group; + description "Tenant Result list"; + } + description "Tenant Result"; + } + + // Exec results + container imginsttaskrslt-items { + list Rslt-list { + config "false"; + key "type startTs"; + + uses imginstall_Rslt-group; + description "Result list"; + } + description "Result"; + } + + // IP EP Tracking Results + container iprslt-items { + + list IpEpRslt-list { + config "false"; + key "addr vrf"; + + uses eptrk_IpEpRslt-group; + description "IP EP Tracking Result list"; + } + description "IP EP Tracking Result"; + } + + // Exec results + container macrslt-items { + + list MacEpRslt-list { + config "false"; + key "addr encap"; + + uses eptrk_MacEpRslt-group; + description "MAC EP Tracking Result list"; + } + description "MAC EP Tracking Result"; + } + + // Result for fabric ping + container pingnverslt-items { + + list PingNveRslt-list { + config "false"; + key "sessionId"; + + uses ngoam_PingNveRslt-group; + description "Ping Nve Result list"; + } + description "Ping Nve Result"; + } + + // Result for fabric traceroute + container trnverslt-items { + + list TraceRtNveRslt-list { + config "false"; + key "sessionId"; + + uses ngoam_TraceRtNveRslt-group; + description "Fabric Result list"; + } + description "Fabric Result"; + } + + // Result for Pathtrace + container ptrnverslt-items { + + list PathTraceNveRslt-list { + config "false"; + key "sessionId"; + + uses ngoam_PathTraceNveRslt-group; + description "PathTrace Nve Result list"; + } + description "PathTrace Nve Result"; + } + + container rslSubjToDomainRef-items { + + uses action_RsLSubjToDomainRef_source-group; + description "Relation from LSubj To AAA Domain Ref"; + } + } + + grouping ping_RsltFab-group { + description "Fabric Result"; + + // Destination Node ID + leaf dstNodeId { + config "false"; + + type fabric_NodeId; + description "Destination Node ID"; + } + + leaf descr { + config "false"; + + type action_Descr; + description "Description"; + } + + // Time that the task started + leaf startTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Task rule type + leaf type { + config "false"; + + type action_Type; + description "TBD"; + } + + leaf rSz { + config "false"; + + type action_RetentionSize; + description "TBD"; + } + + // Retention time of task results + leaf rTm { + config "false"; + + type action_RetentionTime; + description "TBD"; + } + leaf peerClassId { + config "false"; + type string; + } + + // Qualifier for the above status + leaf qual { + config "false"; + + type action_Qual; + description "TBD"; + } + leaf ack { + config "false"; + type boolean; + } + + // Time that the task ended + leaf endTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Runtime status of the task + leaf operSt { + config "false"; + + type action_OperSt; + description "Runtime status of the task"; + } + + // Prof. Name + leaf name { + config "false"; + + type oam_ProfName; + description "Name"; + } + + // Source Node ID + leaf srcNodeId { + config "false"; + + type fabric_NodeId; + description "Source Node ID"; + } + + // The vrf in which it is running + leaf vrf { + config "false"; + + type oam_Vrf; + description "VRF"; + } + + // Source IP + leaf srcIp { + config "false"; + + type oam_IpId; + description "Source IP"; + } + + // Destination IP + leaf dstIp { + config "false"; + + type oam_IpId; + description "Destination IP"; + } + + // The tenant to which this Ep belongs + leaf tenant { + config "false"; + + type oam_TenantName; + description "Tenant Name"; + } + + // Payload size + leaf payloadSz { + config "false"; + + type oam_PayloadSz; + description "Payload Size"; + } + } + + grouping ping_RsltTn-group { + description "Tenant Result"; + + leaf descr { + config "false"; + + type action_Descr; + description "Description"; + } + + // Time that the task started + leaf startTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Task rule type + leaf type { + config "false"; + + type action_Type; + description "TBD"; + } + + leaf rSz { + config "false"; + + type action_RetentionSize; + description "TBD"; + } + + // Retention time of task results + leaf rTm { + config "false"; + + type action_RetentionTime; + description "TBD"; + } + leaf peerClassId { + config "false"; + type string; + } + + // Qualifier for the above status + leaf qual { + config "false"; + + type action_Qual; + description "TBD"; + } + leaf ack { + config "false"; + type boolean; + } + + // Time that the task ended + leaf endTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Runtime status of the task + leaf operSt { + config "false"; + + type action_OperSt; + description "Runtime status of the task"; + } + + // Prof. Name + leaf name { + config "false"; + + type oam_ProfName; + description "Name"; + } + + // Source Node ID + leaf srcNodeId { + config "false"; + + type fabric_NodeId; + description "Source Node ID"; + } + + // The vrf in which it is running + leaf vrf { + config "false"; + + type oam_Vrf; + description "VRF"; + } + + // Source IP + leaf srcIp { + config "false"; + + type oam_IpId; + description "Source IP"; + } + + // Destination IP + leaf dstIp { + config "false"; + + type oam_IpId; + description "Destination IP"; + } + + // The tenant to which this Ep belongs + leaf tenant { + config "false"; + + type oam_TenantName; + description "Tenant Name"; + } + + // Payload size + leaf payloadSz { + config "false"; + + type oam_PayloadSz; + description "Payload Size"; + } + } + + grouping traceroute_RsltFab-group { + description "Fabric Result"; + + // Destination Node ID + leaf dstNodeId { + config "false"; + + type fabric_NodeId; + description "Destination Node ID"; + } + + leaf descr { + config "false"; + + type action_Descr; + description "Description"; + } + + // Time that the task started + leaf startTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Task rule type + leaf type { + config "false"; + + type action_Type; + description "TBD"; + } + + leaf rSz { + config "false"; + + type action_RetentionSize; + description "TBD"; + } + + // Retention time of task results + leaf rTm { + config "false"; + + type action_RetentionTime; + description "TBD"; + } + leaf peerClassId { + config "false"; + type string; + } + + // Qualifier for the above status + leaf qual { + config "false"; + + type action_Qual; + description "TBD"; + } + leaf ack { + config "false"; + type boolean; + } + + // Time that the task ended + leaf endTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Runtime status of the task + leaf operSt { + config "false"; + + type action_OperSt; + description "Runtime status of the task"; + } + + // Prof. Name + leaf name { + config "false"; + + type oam_ProfName; + description "Name"; + } + + // Source Node ID + leaf srcNodeId { + config "false"; + + type fabric_NodeId; + description "Source Node ID"; + } + + // The vrf in which it is running + leaf vrf { + config "false"; + + type oam_Vrf; + description "VRF"; + } + + // Source IP + leaf srcIp { + config "false"; + + type oam_IpId; + description "Source IP"; + } + + // Destination IP + leaf dstIp { + config "false"; + + type oam_IpId; + description "Destination IP"; + } + + // The tenant to which this Ep belongs + leaf tenant { + config "false"; + + type oam_TenantName; + description "Tenant Name"; + } + + // Payload size + leaf payloadSz { + config "false"; + + type oam_PayloadSz; + description "Payload Size"; + } + + // Path Group, captures all the paths that were taken by + // traceroute to the final destination + container pgrp-items { + list PathGrp-list { + config "false"; + key "id"; + + uses traceroute_PathGrp-group; + description "Path Group list"; + } + description "Path Group"; + } + } + + grouping traceroute_PathGrp-group { + description "Path Group"; + + // Identifier of the path group + leaf id { + config "false"; + + type traceroute_PathGrpId; + description "ID"; + } + + // Each path represents a sequence of nodes towards the + // destination + container path-items { + list Path-list { + config "false"; + key "id"; + + uses traceroute_Path-group; + description "Path list"; + } + description "Path"; + } + } + + grouping traceroute_Path-group { + description "Path"; + + // Identifier of the path + leaf id { + config "false"; + + type traceroute_PathId; + description "ID"; + } + + // Type of the path + leaf type { + config "false"; + + type traceroute_PathT; + description "Type"; + } + + // Flags + leaf flags { + config "false"; + + type traceroute_PathFlags; + description "Flags"; + } + + // Node represents a given node in the traceroute path. Each + // node is identified by the ip address and the order represents + // its placement in the path + container node-items { + list Node-list { + config "false"; + key "order"; + + uses traceroute_Node-group; + description "Node list"; + } + description "Node"; + } + } + + grouping traceroute_Node-group { + description "Node"; + + // Node id + leaf order { + config "false"; + + type traceroute_Order; + description "Order"; + } + leaf addr { + config "false"; + type address_Ip; + description "Address"; + } + } + + grouping traceroute_RsltTn-group { + description "Tenant Result"; + + leaf descr { + config "false"; + + type action_Descr; + description "Description"; + } + + // Time that the task started + leaf startTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Task rule type + leaf type { + config "false"; + + type action_Type; + description "TBD"; + } + + leaf rSz { + config "false"; + + type action_RetentionSize; + description "TBD"; + } + + // Retention time of task results + leaf rTm { + config "false"; + + type action_RetentionTime; + description "TBD"; + } + leaf peerClassId { + config "false"; + type string; + } + + // Qualifier for the above status + leaf qual { + config "false"; + + type action_Qual; + description "TBD"; + } + leaf ack { + config "false"; + type boolean; + } + + // Time that the task ended + leaf endTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Runtime status of the task + leaf operSt { + config "false"; + + type action_OperSt; + description "Runtime status of the task"; + } + + // Prof. Name + leaf name { + config "false"; + + type oam_ProfName; + description "Name"; + } + + // Source Node ID + leaf srcNodeId { + config "false"; + + type fabric_NodeId; + description "Source Node ID"; + } + + // The vrf in which it is running + leaf vrf { + config "false"; + + type oam_Vrf; + description "VRF"; + } + + // Source IP + leaf srcIp { + config "false"; + + type oam_IpId; + description "Source IP"; + } + + // Destination IP + leaf dstIp { + config "false"; + + type oam_IpId; + description "Destination IP"; + } + + // The tenant to which this Ep belongs + leaf tenant { + config "false"; + + type oam_TenantName; + description "Tenant Name"; + } + + // Payload size + leaf payloadSz { + config "false"; + + type oam_PayloadSz; + description "Payload Size"; + } + + // Path Group, captures all the paths that were taken by + // traceroute to the final destination + container pgrp-items { + list PathGrp-list { + config "false"; + key "id"; + + uses traceroute_PathGrp-group; + description "Path Group list"; + } + description "Path Group"; + } + } + + grouping imginstall_Rslt-group { + description "Result"; + + leaf descr { + config "false"; + + type action_Descr; + description "Description"; + } + + // Time that the task started + leaf startTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Task rule type + leaf type { + config "false"; + + type action_Type; + description "TBD"; + } + + leaf rSz { + config "false"; + + type action_RetentionSize; + description "TBD"; + } + + // Retention time of task results + leaf rTm { + config "false"; + + type action_RetentionTime; + description "TBD"; + } + leaf peerClassId { + config "false"; + type string; + } + + // Qualifier for the above status + leaf qual { + config "false"; + + type action_Qual; + description "TBD"; + } + leaf ack { + config "false"; + type boolean; + } + + // Time that the task ended + leaf endTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Runtime status of the task + leaf operSt { + config "false"; + + type action_OperSt; + description "Runtime status of the task"; + } + } + + grouping eptrk_IpEpRslt-group { + description "IP EP Tracking Result"; + leaf addr { + config "false"; + type address_Ip; + description "IP Address"; + } + + // The vrf the EP belongs to + leaf vrf { + config "false"; + + type l3_VrfName; + description "VRF"; + } + + leaf descr { + config "false"; + + type action_Descr; + description "Description"; + } + + // Time that the task started + leaf startTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Task rule type + leaf type { + config "false"; + + type action_Type; + description "TBD"; + } + + leaf rSz { + config "false"; + + type action_RetentionSize; + description "TBD"; + } + + // Retention time of task results + leaf rTm { + config "false"; + + type action_RetentionTime; + description "TBD"; + } + leaf peerClassId { + config "false"; + type string; + } + + // Qualifier for the above status + leaf qual { + config "false"; + + type action_Qual; + description "TBD"; + } + leaf ack { + config "false"; + type boolean; + } + + // Time that the task ended + leaf endTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Runtime status of the task + leaf operSt { + config "false"; + + type action_OperSt; + description "Runtime status of the task"; + } + + container rsipEpRslttoIpEpAtt-items { + + uses eptrk_RsIpEpRslttoIpEpAtt_source-group; + } + + container rsepRslttoMacEpAtt-items { + + uses eptrk_RsEpRslttoMacEpAtt_source-group; + } + } + + grouping eptrk_MacEpRslt-group { + description "MAC EP Tracking Result"; + leaf addr { + config "false"; + type address_Mac; + description "MAC Address"; + } + leaf encap { + config "false"; + type string; + description "TrkEndpoint encap"; + } + + leaf descr { + config "false"; + + type action_Descr; + description "Description"; + } + + // Time that the task started + leaf startTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Task rule type + leaf type { + config "false"; + + type action_Type; + description "TBD"; + } + + leaf rSz { + config "false"; + + type action_RetentionSize; + description "TBD"; + } + + // Retention time of task results + leaf rTm { + config "false"; + + type action_RetentionTime; + description "TBD"; + } + leaf peerClassId { + config "false"; + type string; + } + + // Qualifier for the above status + leaf qual { + config "false"; + + type action_Qual; + description "TBD"; + } + leaf ack { + config "false"; + type boolean; + } + + // Time that the task ended + leaf endTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Runtime status of the task + leaf operSt { + config "false"; + + type action_OperSt; + description "Runtime status of the task"; + } + + container rsmacEpRslttoIpEpAtt-items { + + list RsMacEpRslttoIpEpAtt-list { + config "false"; + key "tDn"; + + uses eptrk_RsMacEpRslttoIpEpAtt_source-group; + } + } + + container rsepRslttoMacEpAtt-items { + + uses eptrk_RsEpRslttoMacEpAtt_source-group; + } + } + + grouping ngoam_TraceRtNveRslt-group { + description "Fabric Result"; + leaf dstIp { + config "false"; + type address_Ipv4; + description "Destination Node ID"; + } + + // Maximum number of hops that the traceroute took to + // reach the destination + leaf maxHops { + config "false"; + + type ngoam_Hops; + description "Max Hops"; + } + + // Prof. Name + leaf sessionId { + config "false"; + + type ngoam_SessionId; + description "Name"; + } + leaf errorCode { + config "false"; + type string; + description "Error Code String"; + } + leaf failReason { + config "false"; + type string; + description "Failure Reason"; + } + + leaf descr { + config "false"; + + type action_Descr; + description "Description"; + } + + // Time that the task started + leaf startTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Task rule type + leaf type { + config "false"; + + type action_Type; + description "TBD"; + } + + leaf rSz { + config "false"; + + type action_RetentionSize; + description "TBD"; + } + + // Retention time of task results + leaf rTm { + config "false"; + + type action_RetentionTime; + description "TBD"; + } + leaf peerClassId { + config "false"; + type string; + } + + // Qualifier for the above status + leaf qual { + config "false"; + + type action_Qual; + description "TBD"; + } + leaf ack { + config "false"; + type boolean; + } + + // Time that the task ended + leaf endTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Runtime status of the task + leaf operSt { + config "false"; + + type action_OperSt; + description "Runtime status of the task"; + } + + // Each path represents a sequence of nodes towards the + // destination + container pathtr-items { + list PathTr-list { + config "false"; + key "id"; + + uses ngoam_PathTr-group; + description "PathTr list"; + } + description "PathTr"; + } + } + + grouping ngoam_PathTr-group { + description "PathTr"; + + // Identifier of the path + leaf id { + config "false"; + + type ngoam_PathId; + description "ID"; + } + + // Node represents a given node in the traceroute path. Each + // node is identified by the ip address and the order represents + // its placement in the path + container nodetr-items { + list NodeTr-list { + config "false"; + key "order"; + + uses ngoam_NodeTr-group; + description "NodeTr list"; + } + description "NodeTr"; + } + } + + grouping ngoam_NodeTr-group { + description "NodeTr"; + + // Node id + leaf order { + config "false"; + + type ngoam_Order; + description "Order"; + } + leaf addr { + config "false"; + type address_Ipv4; + description "IPv4 Address"; + } + leaf v6addr { + config "false"; + type address_Ipv6; + description "IPv6 Address"; + } + leaf elapsedTime { + config "false"; + type union { + type string; + type uint64; + } + description "Elapsed Time"; + } + } + + grouping ngoam_PathTraceNveRslt-group { + description "PathTrace Nve Result"; + leaf dstIp { + config "false"; + type address_Ipv4; + description "Destination Node ID"; + } + + // Maximum number of hops that the traceroute took to + // reach the destination + leaf maxHops { + config "false"; + + type ngoam_Hops; + description "Max Hops"; + } + + // Prof. Name + leaf sessionId { + config "false"; + + type ngoam_SessionId; + description "Name"; + } + leaf errorCode { + config "false"; + type string; + description "Error Code String"; + } + leaf failReason { + config "false"; + type string; + description "Failure Reason"; + } + leaf verbose { + config "false"; + type string; + description "Verbose info, fabric specific verbose info from the replies"; + } + + leaf descr { + config "false"; + + type action_Descr; + description "Description"; + } + + // Time that the task started + leaf startTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Task rule type + leaf type { + config "false"; + + type action_Type; + description "TBD"; + } + + leaf rSz { + config "false"; + + type action_RetentionSize; + description "TBD"; + } + + // Retention time of task results + leaf rTm { + config "false"; + + type action_RetentionTime; + description "TBD"; + } + leaf peerClassId { + config "false"; + type string; + } + + // Qualifier for the above status + leaf qual { + config "false"; + + type action_Qual; + description "TBD"; + } + leaf ack { + config "false"; + type boolean; + } + + // Time that the task ended + leaf endTs { + config "false"; + + type mo_TStamp; + description "TBD"; + } + + // Runtime status of the task + leaf operSt { + config "false"; + + type action_OperSt; + description "Runtime status of the task"; + } + + // Each path represents a sequence of nodes towards the + // destination + container pathptr-items { + list PathPtr-list { + config "false"; + key "id"; + + uses ngoam_PathPtr-group; + description "PathPtr list"; + } + description "PathPtr"; + } + } + + grouping ngoam_PathPtr-group { + description "PathPtr"; + + // Identifier of the path + leaf id { + config "false"; + + type ngoam_PathId; + description "ID"; + } + + // Node represents a given node in the traceroute path. Each + // node is identified by the ip address and the order represents + // its placement in the path + container nodeptr-items { + list NodePtr-list { + config "false"; + key "order"; + + uses ngoam_NodePtr-group; + description "NodePtr list"; + } + description "NodePtr"; + } + } + + grouping ngoam_NodePtr-group { + description "NodePtr"; + + // Node id + leaf order { + config "false"; + + type ngoam_Order; + description "Order"; + } + leaf addr { + config "false"; + type address_Ipv4; + description "IPv4 Address"; + } + leaf v6addr { + config "false"; + type address_Ipv6; + description "IPv6 Address"; + } + leaf nodeName { + config "false"; + type string; + description "Node name"; + } + leaf elapsedTime { + config "false"; + type union { + type string; + type uint64; + } + description "Elapsed Time"; + } + leaf ingressIf { + config "false"; + type string; + description "Interface ID"; + } + leaf ingressIfState { + config "false"; + type string; + description "Interface If state"; + } + leaf rxLen { + config "false"; + type uint64; + description "Rx Len"; + } + leaf rxBytes { + config "false"; + type uint64; + description "Rx Bytes"; + } + leaf rxPktRate { + config "false"; + type uint64; + description "Rx Packet Rate"; + } + leaf rxByteRate { + config "false"; + type uint64; + description "Rx Byte Rate"; + } + leaf rxLoad { + config "false"; + type uint64; + description "Rx Load"; + } + leaf rxUcast { + config "false"; + type uint64; + description "Rx Ucast"; + } + leaf rxMcast { + config "false"; + type uint64; + description "Rx Mcast"; + } + leaf rxBcast { + config "false"; + type uint64; + description "Rx Bcast"; + } + leaf rxDiscards { + config "false"; + type uint64; + description "Rx Discards"; + } + leaf rxErrors { + config "false"; + type uint64; + description "Rx Errors"; + } + leaf rxUnknown { + config "false"; + type uint64; + description "Rx Unknown"; + } + leaf rxBandwidth { + config "false"; + type uint32; + description "Rx Bandwidth"; + } + leaf egressIf { + config "false"; + type string; + description "Egress Interface Name"; + } + leaf egressIfState { + config "false"; + type string; + description "Egress Interface State"; + } + leaf txLen { + config "false"; + type uint64; + description "Tx Len"; + } + leaf txBytes { + config "false"; + type uint64; + description "Tx Bytes"; + } + leaf txPktRate { + config "false"; + type uint64; + description "Tx Packet Rate"; + } + leaf txByteRate { + config "false"; + type uint64; + description "Tx Byte Rate"; + } + leaf txLoad { + config "false"; + type uint64; + description "Tx Load"; + } + leaf txUcast { + config "false"; + type uint64; + description "Tx Ucast"; + } + leaf txMcast { + config "false"; + type uint64; + description "Tx Mcast"; + } + leaf txBcast { + config "false"; + type uint64; + description "Tx Bcast"; + } + leaf txDiscards { + config "false"; + type uint64; + description "Tx Discards"; + } + leaf txErrors { + config "false"; + type uint64; + description "Tx Errors"; + } + leaf txBandwidth { + config "false"; + type uint32; + description "Tx Bandwidth"; + } + } + + grouping file_RsARemoteHostToEpg_source-group { + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping file_RsARemoteHostToEpp_source-group { + description "Relation to Remote Host Reachability EPP"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping infra_RtFexBndlGrpToAggrIf_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping infra_RtAccBndlGrpToAggrIf_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping datetime_RsNtpProviderToNtpAuth_source-group { + description "Ntp Authentication Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping dbgexp_RtDbgexpUserCtx_target-group { + description "Relation to L3 Context Export Policy"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping dbgexp_RtDbgexpTsSrc_target-group { + description "Relation to Traceroute Source Node"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping span_RtSpanSrcToVPort_target-group { + description "Relation to SPAN Source to Port"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping span_RtSpanDestToVPort_target-group { + description "Relation to VSPAN Destination Vport"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fv_RtFvEPgDefToL3Dom_target-group { + description "EPgDef to L3 Domain Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fv_RtFvEPgDefToL2Dom_target-group { + description "EPgDef to L2 Domain Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fv_RsHyper_source-group { + description "Hypervisor"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping traceroutep_RtTraceroutepTrSrc_target-group { + description "Relation to Source Node"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping traceroutep_RtTraceroutepTrDst_target-group { + description "Relation to Traceroute Destination"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping dhcp_RsPseudoIf_source-group { + description "Pseudo Interface"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping dhcp_RtPseudoIf_target-group { + description "Pseudo Interface"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eqptdiagp_RtSupCOdDiag_target-group { + description "Relation to Supervisor Module"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eqptdiagp_RtLcOdDiag_target-group { + description "Relation to Linecard"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eqptdiagp_RtExtChCardOdDiag_target-group { + description "Relation to Extended Chassis Module"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eqptdiagp_RtLpOdDiag_target-group { + description "Relation to Leaf Port for On-Demand Diag Policy"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eqptdiagp_RtFpOdDiag_target-group { + description "Relation to Fabric Port for On-Demand Diag Policy"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eqptdiagp_RtFcOdDiag_target-group { + description "Relation to Fabric Module"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eqptdiagp_RtSysCOdDiag_target-group { + description "Relation to System Controller Module"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fabric_RtOosSlot_target-group { + description "Out of Service Slot"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fabric_RtFabricResRadiusEp_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fabric_RtFabricResLdapEp_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fabric_RtFabricResTacacsPlusEp_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fabric_RtFabricResAuthRealm_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fabric_RtFabricResUserEp_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fabric_RtFabricResPkiEp_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l2_RsExtBD_source-group { + description "External BD Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l2_RsBdVsanMap_source-group { + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + + // oper state + leaf assocOperSt { + config "false"; + + type l2_AssocOperSt; + description "Operational State"; + } + } + + grouping l2_RsPathDomAtt_source-group { + description "Port Domain Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + + // native vlan + leaf type { + config "false"; + + type l2_NativeT; + description "Send/Receive Untagged Packets"; + } + } + + grouping l2_RsInbandConf_source-group { + description "Inband Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l2_RtInbandConf_target-group { + description "Inband Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l2_RsExtConf_source-group { + description "Eth Interface Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l2_RtExtConf_target-group { + description "Eth Interface Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l2_RsBrConf_source-group { + description "Eth Interface Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l2_RtBrConf_target-group { + description "Eth Interface Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l2_RsEthIf_source-group { + description "Ethernet Interface"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l2_RtL2EthIf_target-group { + description "Ethernet Interface"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping lldp_RsLldpInstPolCons_source-group { + description "Lldp Instance Policy Consumption"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping vpc_RsVpcConf_source-group { + description "Port Channel Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping vpc_RtVpcConf_target-group { + description "Port Channel Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping vpc_RsVpcInstPolCons_source-group { + description "Vpc Instance Policy Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + leaf protGEp { + config "false"; + type string; + description "Protocol Group"; + } + } + + grouping fv_RsDomDefNs_source-group { + description "VXLAN Pool"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fv_RsDomDefNsLocal_source-group { + description "VXLAN Pool"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fv_RtFvEpDefRefToStAdjEp_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fv_RtFvEpDefRefToL2MacEp_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fv_RtFvEpDefRefToStAdjEpV6_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fv_RsVNode_source-group { + description "Relation to Virtual Node"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fv_RtFvVNode_target-group { + description "Relation to Virtual Node"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fv_RsLNode_source-group { + description "Distributed Virtual Switch"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fv_RtFvToDomDef_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fv_RtFvDomIfConn_target-group { + description "Domain Interface Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fv_RtFvNodePortAtt_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping maint_RtMaintFwinstlsrc_target-group { + description "Relation to Source Node"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping isis_RsNhAtt_source-group { + description "IS-IS Nexthop Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping mgmt_RsRtdMgmtConf_source-group { + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping mgmt_RtRtdMgmtConf_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RsL3If_source-group { + description "L3 Interface Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping snmp_RsCommSecPClientGrpAtt_source-group { + description "Community Security Policy Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping snmp_RsCommToCtxAtt_source-group { + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + + // Operational state + leaf operSt { + config "false"; + + type nw_OSSum; + description "Operational State"; + } + + // Operational state qualifier + leaf operStQual { + config "false"; + + type nw_OSSumQual; + description "Operational State Qualifier"; + } + } + + grouping ospf_RtOspfIfDefToOspfIf_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ospf_RtOspfIfDefToOspfv3If_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping comm_RtCommKeyRing_target-group { + description "Key Ring"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping aaa_RsSecProvToEpg_source-group { + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping aaa_RtAaaUserEp_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping aaa_RtAaaLoginDomain_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping aaa_RtPreLoginBanner_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping aaa_RtAaaKeyringRef_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping aggregate_RsVtepAtt_source-group { + description "Link To Tunnel Intf Entry"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping aggregate_RtAggregateVtepAtt_target-group { + description "Link To Tunnel Intf Entry"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping aggregate_RsVlanMemberAtt_source-group { + description "Vlan Membership Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping aggregate_RtAggregateVlanMemberAtt_target-group { + description "Vlan Membership Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping aggregate_RsMac_source-group { + description "Tunnel Mac Entry"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping aggregate_RtMac_target-group { + description "Tunnel Mac Entry"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping aggregate_RsVpcIntfEntryAtt_source-group { + description "Vpc Interface Entry Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping aggregate_RtVpcIntfEntryAtt_target-group { + description "Vpc Interface Entry Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping analytics_RsRecordPAtt_source-group { + description "Record Policy Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping analytics_RsCollectorAtt_source-group { + description "Reference to Collector"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping analytics_RsProfAtt_source-group { + description "Reference to profile."; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping analytics_RsPolicyAtt_source-group { + description "Reference to policy."; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping analytics_RsEventsAtt_source-group { + description "Reference to FTE Events"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping analytics_RsMonitorAtt_source-group { + description "Reference to Monitor"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping epm_RsMacEpToIpEpAtt_source-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eptrk_RsIpEpRslttoIpEpAtt_source-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eptrk_RtIpEpRslttoIpEpAtt_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eptrk_RsEpRslttoMacEpAtt_source-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eptrk_RtEpRslttoMacEpAtt_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eptrk_RsMacEpRslttoIpEpAtt_source-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eptrk_RtMacEpRslttoIpEpAtt_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fte_RsRecordAtt_source-group { + description "Attach FTE Record to FTE Monitor"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fte_RsCollectorAtt_source-group { + description "Attach FTE Collector to FTE Monitor"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fte_RsEventsAtt_source-group { + description "Attach FTE Events to FTE Monitor"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping fte_RsMonitorAtt_source-group { + description "Attach FTE Monitor to System FTE"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping bd_RsCollectorAtt_source-group { + description "Attach Buffer Drop Collector to Buffer Drop Monitor"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping bd_RsMonitorAttch_source-group { + description "Monitor Attachment to System Buffer Drop"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping bl_RsRecordAtt_source-group { + description "Attach Buffer Latency Record to Buffer Latency Monitor"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping bl_RsCollectorAtt_source-group { + description "Attach Buffer Latency Collector to Buffer Latency Monitor"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping bl_RsThresholdAtt_source-group { + description "Queue Config Attachment to Threshold Values"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping bl_RsMonitorAttch_source-group { + description "Monitor Attachment to System Buffer Latency"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ipt_RsSourcerecordAtt_source-group { + description "Attach INT Clone MD Source Record to INT Clone MD Source Monitor"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ipt_RsSinkcollectorAtt_source-group { + description "Collector Attachment to System Sink Monitor INT Clone MD"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ipt_RsSinkrecordAtt_source-group { + description "Sink Record Attachment to System Sink Monitor INT Clone MD"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ipt_RsSourcemonitorAtt_source-group { + description "Source Monitor Attachment to System"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + leaf error { + config "false"; + type uint64; + description "Runtime failure code"; + } + } + + grouping ipt_RsSinkmonitorAtt_source-group { + description "Sink Monitor Attachment to System"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping inbandTelemetry_RsRecordPAtt_source-group { + description "Record Policy Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping inbandTelemetry_RsCollectorAtt_source-group { + description "Reference to Collector"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping inbandTelemetry_RsWatchlistAtt_source-group { + description "Reference to Watchlist"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping inbandTelemetry_RsDroplistAtt_source-group { + description "Reference to Droplist"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping inbandTelemetry_RsMonitorAtt_source-group { + description "Reference to Monitor"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ipqos_RsPolicyInstToPMap_source-group { + description "Link from policy instance to policy-map"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ipqos_RtIpqosPolicyInstToPMap_target-group { + description "Link from policy instance to policy-map"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ipqos_RsClassMapToPolicyMap_source-group { + description "policy-maps using this class-map"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ipqos_RtClassMapToPolicyMap_target-group { + description "policy-maps using this class-map"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping flow_RsRecord_source-group { + description "Reference to flow record"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping flow_RsExporter1_source-group { + description "Reference to flow exporter1"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping flow_RsExporter2_source-group { + description "Reference to flow exporter2"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping flow_RsMonitor_source-group { + description "Reference to flow monitor"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping flow_RsHwProfile_source-group { + description "Reference to hardware profile"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping flow_RsPmap_source-group { + description "Reference to policy-map"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping netflow_RsRecordPAtt_source-group { + description "Reference to the record that is to be used under this monitor"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping netflow_RsCollectorAtt_source-group { + description "Reference to the collector that is to be used under this monitor"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping netflow_RsProfAtt_source-group { + description "Reference to profile attachement"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping netflow_RsMonitorAtt_source-group { + description "Reference to the monitor that is to be used under this interface"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + + leaf protocol { + + type netflow_FltType; + description "TBD"; + } + leaf error { + config "false"; + type uint64; + description "Runtime failure code"; + } + } + + grouping ssx_RsRecordPAtt_source-group { + description "Record Policy Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ssx_RsCollectorAtt_source-group { + description "Reference to Collector"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ssx_RsSysMonitorAtt_source-group { + description "Reference to Monitor"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ssx_RsMonitorAtt_source-group { + description "Reference to Monitor"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping telemetry_RsSensorGroupRel_source-group { + description "Link to sensorGroup entry"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + + leaf sampleIntvl { + + type telemetry_sampleIntvlType; + description "Sensor sample inteval"; + } + } + + grouping telemetry_RsDestGroupRel_source-group { + description "Link to destGroup entry"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ip_RsIpAddr_source-group { + description "IF Policy Attachement"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ip_RsRtDefIpAddr_source-group { + description "Route Def Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ip_RsAddrToIpDef_source-group { + description "IpDef attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ip_RsRouteToRouteDef_source-group { + description "Route Def Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ip_RsRouteToIfConn_source-group { + description "Route if Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ip_RsNexthopToNexthopDef_source-group { + description "Nexthop Def Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ip_RsNexthopToProtG_source-group { + description "Protection Group Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l1_RsEthIfToVethIf_source-group { + description "Association to the veths bound to this interface"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l1_RtEthIfToVethIf_target-group { + description "Association to the veths bound to this interface"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping ethpm_RsErrDisRecoverPolCons_source-group { + description "ErrDisableRecovery Policy Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping pc_RsMbrIfs_source-group { + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + + // channel-group force + leaf isMbrForce { + + type pc_ChnlGrpForce; + description "Channel group force"; + } + } + + grouping pc_RtMbrIfs_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping pc_RsLacpPolCons_source-group { + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping vlan_RsVlanEppAtt_source-group { + description "Epp Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l2_RsDscpRuleAtt_source-group { + description "DSCP Rule Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + + // Qos Class operational state + leaf operState { + config "false"; + + type qosp_OperSt; + description "Operational State"; + } + + // Rule operational state disabled reason + leaf operStQual { + config "false"; + + type qosp_OperStQual; + description "Operational State Qualifier"; + } + } + + grouping l2_RtL2DscpRuleAtt_target-group { + description "DSCP Rule Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l2_RsDot1pRuleAtt_source-group { + description "Dot1p Rule Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + + // Qos Class operational state + leaf operState { + config "false"; + + type qosp_OperSt; + description "Operational State"; + } + + // Rule operational state disabled reason + leaf operStQual { + config "false"; + + type qosp_OperStQual; + description "Operational State Qualifier"; + } + } + + grouping l2_RtL2Dot1pRuleAtt_target-group { + description "Dot1p Rule Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping vxlan_RsVxlanEppAtt_source-group { + description "Epp Attachement"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping nvo_RsOperSourceInterface_source-group { + description "Operational Up/Down status of the Source Interface."; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping nvo_RtOperSourceInterface_target-group { + description "Operational Up/Down status of the Source Interface."; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RsCtxToEpP_source-group { + description "Epp Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RsVrfMbr_source-group { + description "VRF Membership Association"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RtVrfMbr_target-group { + description "VRF Membership Association"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RsVrfPolicyAtt_source-group { + description "Vrf Reference to Analytics policy."; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RtL3VrfPolicyAtt_target-group { + description "Vrf Reference to Analytics policy."; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RsVrfMonitorAtt_source-group { + description "Vrf Reference to Analytics monitor."; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RtL3VrfMonitorAtt_target-group { + description "Vrf Reference to Analytics monitor."; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RsPhysRtdConf_source-group { + description "Physical Routed Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RtPhysRtdConf_target-group { + description "Physical Routed Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RsProtLbIf_source-group { + description "Protection Group"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + + // Interface Mode + leaf mode { + + type ip_IfMode; + description "TBD"; + } + } + + grouping l3_RsLbIfToLocale_source-group { + description "Router Id"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RsLbIfToOutRef_source-group { + description "Router Id"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RsEncPhysRtdConf_source-group { + description "Parent If"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l3_RtL3EncPhysRtdConf_target-group { + description "Parent If"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping uribv4_RsRouteOwnerToNexthopAtt_source-group { + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rib_RsRouteOwnerToNexthopAtt_source-group { + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RsRegCommAtt_source-group { + description "Regular Community Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RtRegCommAtt_target-group { + description "Regular Community Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RsExtCommAtt_source-group { + description "Extended Community Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RtExtCommAtt_target-group { + description "Extended Community Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RsRtDstAtt_source-group { + description "Prefix List Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RtRtmapRtDstAtt_target-group { + description "Prefix List Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RsRtDstAccAtt_source-group { + description "Access List Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RtRtmapRtDstAccAtt_target-group { + description "Access List Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RsRtDstV6Att_source-group { + description "IPv6 Prefix List Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RtRtmapRtDstV6Att_target-group { + description "IPv6 Prefix List Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RsRtDstV6AccAtt_source-group { + description "Access List Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RtRtmapRtDstV6AccAtt_target-group { + description "Access List Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RsRtNhAtt_source-group { + description "Prefix List Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RtRtmapRtNhAtt_target-group { + description "Prefix List Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RsRtNhV6Att_source-group { + description "Prefix List Attachment Ipv6"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RtRtmapRtNhV6Att_target-group { + description "Prefix List Attachment Ipv6"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RsRtSrcAtt_source-group { + description "Prefix List Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RtRtmapRtSrcAtt_target-group { + description "Prefix List Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RsRtSrcV6Att_source-group { + description "Prefix List Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RtRtmapRtSrcV6Att_target-group { + description "Prefix List Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RsRtAsPathAccAtt_source-group { + description "Access List Attachment"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RtRtmapRtAsPathAccAtt_target-group { + description "Access List Attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RsRtMacListAtt_source-group { + description "Mac List"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping rtmap_RtRtmapRtMacListAtt_target-group { + description "Mac List"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping tunnel_RsTunnelMbrIfs_source-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping tunnel_RtTunnelTunnelMbrIfs_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping tunnel_RsTunnelToLooseNode_source-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eqpt_RsMonPolModulePolCons_source-group { + description "The monitoring policy consumed by this physical card"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eqpt_RsIoPPhysConf_source-group { + description "Thw physical interface attachment information"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eqpt_RtIoPPhysConf_target-group { + description "Thw physical interface attachment information"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping eqpt_RsPsuInstPolCons_source-group { + description "The power supply group policy attachment"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping bfd_RsMbrSess_source-group { + description "Port-Channel Member Sessions"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping pim_RsRP2Grange_source-group { + description "RP to Group range mapping"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping synthetic_RsToObj_source-group { + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping synthetic_RtToObj_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping synthetic_RtPhysIf_target-group { + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping cnw_RsMbrIfs_source-group { + description "Member Iinterfaces"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping cnw_RtMbrIfs_target-group { + description "Member Iinterfaces"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping cnw_RsActiveIf_source-group { + description "Active Interface"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping cnw_RtActiveIf_target-group { + description "Active Interface"; + + // Target Object's DN + leaf tDn { + config "false"; + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping action_RsLSubjToDomainRef_source-group { + description "Relation from LSubj To AAA Domain Ref"; + + // Target Object's DN + leaf tDn { + + type reln_Dn; + description "Target object's DN and is implicit"; + } + } + + grouping l2_VlanStats-group { + description "Vlan counters"; + leaf inUcastOctets { + config "false"; + type uint64; + description "ucastOctets"; + } + leaf inUcastPkts { + config "false"; + type uint64; + description "Unicast packets"; + } + leaf inMcastOctets { + config "false"; + type uint64; + description "Multicast Octets"; + } + leaf inMcastPkts { + config "false"; + type uint64; + description "Multicast packets"; + } + leaf inBcastOctets { + config "false"; + type uint64; + description "Broadcast Octets"; + } + leaf inBcastPkts { + config "false"; + type uint64; + description "Broadcast packets"; + } + leaf inL3UcastOctets { + config "false"; + type uint64; + description "ingress L3 SVI Unicast Octets"; + } + leaf inL3UcastPkts { + config "false"; + type uint64; + description "ingress L3 SVI Unicast Packets"; + } + leaf outUcastOctets { + config "false"; + type uint64; + description "ucastOctets"; + } + leaf outUcastPkts { + config "false"; + type uint64; + description "Unicast packets"; + } + } + + grouping analytics_Statistics-group { + description "Analytics Statistics"; + leaf flowCreateCe { + config "false"; + type uint64; + description "Number of L2 flows created on the slice"; + } + leaf flowCreateIPv4 { + config "false"; + type uint64; + description "Number of IPv4 flows created on the slice"; + } + leaf flowCreateIPv6 { + config "false"; + type uint64; + description "Number of IPv6 flows created on the slice"; + } + leaf flowHitCe { + config "false"; + type uint64; + description "Number of L2 flows hitting the flow table"; + } + leaf flowHitIPv4 { + config "false"; + type uint64; + description "Number of IPv4 flows hitting the flow table"; + } + leaf flowHitIPv6 { + config "false"; + type uint64; + description "Number of IPv6 flows hitting the flow table"; + } + leaf packetsSeen { + config "false"; + type uint64; + description "Total number of packets seen on the slice"; + } + leaf export { + config "false"; + type uint64; + description "Total number of export packets sent from the slice"; + } + leaf skipCollect { + config "false"; + type uint64; + description "Total number of packets not accounted for flow creation on the slice"; + } + leaf lastCollectTs { + config "false"; + type uint64; + description "Last timestamp when packets were sent to the collector"; + } + } + + grouping rmon_IfIn-group { + description "Interface Input Counters"; + leaf octets { + config "false"; + type uint64; + description "Octets"; + } + leaf ucastPkts { + config "false"; + type uint64; + description "Unicast Packets"; + } + leaf nUcastPkts { + config "false"; + type uint64; + description "Non Unicast Packets"; + } + leaf discards { + config "false"; + type uint64; + description "Discard Packets"; + } + leaf errors { + config "false"; + type uint64; + description "Error Packets"; + } + leaf unknownProtos { + config "false"; + type uint64; + description "Unknown Protocol Packets"; + } + leaf unknownEtype { + config "false"; + type uint64; + description "Unknown Ether Type Packets"; + } + leaf broadcastPkts { + config "false"; + type uint64; + description "Broadcast Packets"; + } + leaf multicastPkts { + config "false"; + type uint64; + description "Multicast Packets"; + } + leaf noBuffer { + config "false"; + type uint64; + description "No Buffer"; + } + leaf rateInterval { + config "false"; + type uint32; + description "Rate Interval"; + } + leaf octetRate { + config "false"; + type uint64; + description "Octet Rate"; + } + leaf packetRate { + config "false"; + type uint64; + description "Packet Rate"; + } + } + + grouping rmon_IfOut-group { + description "Interface Output Counters"; + leaf octets { + config "false"; + type uint64; + description "Octets"; + } + leaf ucastPkts { + config "false"; + type uint64; + description "Unicast Packets"; + } + leaf nUcastPkts { + config "false"; + type uint64; + description "Non Unicast Packets"; + } + leaf discards { + config "false"; + type uint64; + description "Discard Packets"; + } + leaf errors { + config "false"; + type uint64; + description "Error Packets"; + } + leaf qLen { + config "false"; + type uint64; + description "Queue Length Packets"; + } + leaf broadcastPkts { + config "false"; + type uint64; + description "Broadcast Packets"; + } + leaf multicastPkts { + config "false"; + type uint64; + description "Multicast Packets"; + } + leaf rateInterval { + config "false"; + type uint32; + description "Rate Interval"; + } + leaf octetRate { + config "false"; + type uint64; + description "Octet Rate"; + } + leaf packetRate { + config "false"; + type uint64; + description "Packet Rate"; + } + } + + grouping rmon_IpIn-group { + description "IPV4 Input Counters"; + leaf receives { + config "false"; + type uint64; + description "Receives"; + } + leaf hdrErrors { + config "false"; + type uint64; + description "Header Error Packets"; + } + leaf forwDatagrams { + config "false"; + type uint64; + description "Forward Datagram Packets"; + } + leaf discards { + config "false"; + type uint64; + description "Discard Packets"; + } + } + + grouping rmon_Dot1d-group { + description "Dot1d Counters"; + leaf basePortDelayExceededDiscards { + config "false"; + type uint64; + description "Base Port Delay Exceeded Discard Packets"; + } + leaf basePortMtuExceededDiscards { + config "false"; + type uint64; + description "Base Port MTU Exceeded Discard Packets"; + } + leaf tpPortInFrames { + config "false"; + type uint64; + description "TP Port Input Frames"; + } + leaf tpPortOutFrames { + config "false"; + type uint64; + description "TP Port Output Frames"; + } + leaf portInDiscards { + config "false"; + type uint64; + description "Port Input Discraded Packets"; + } + } + + grouping rmon_EtherStats-group { + description "Ethernet Statistic Counters"; + leaf dropEvents { + config "false"; + type uint64; + description "Drop Event Packets"; + } + leaf multicastPkts { + config "false"; + type uint64; + description "Multicast Packets"; + } + leaf broadcastPkts { + config "false"; + type uint64; + description "Broadcast Packets"; + } + leaf undersizePkts { + config "false"; + type uint64; + description "Undersize Packets"; + } + leaf giantPkts { + config "false"; + type uint64; + description "Giant Packets"; + } + leaf stormSupressedPkts { + config "false"; + type uint64; + description "Storm Supressed Packets"; + } + leaf fragments { + config "false"; + type uint64; + description "Fragmented Packets"; + } + leaf pkts64Octets { + config "false"; + type uint64; + description "Packets with 64 Octets"; + } + leaf pkts65to127Octets { + config "false"; + type uint64; + description "Packets with 65 to 127 Octets"; + } + leaf pkts128to255Octets { + config "false"; + type uint64; + description "Packets with 128 to 255 Octets"; + } + leaf pkts256to511Octets { + config "false"; + type uint64; + description "Packets with 256 to 511 Octets"; + } + leaf pkts512to1023Octets { + config "false"; + type uint64; + description "Packets with 512 to 1023 Octets"; + } + leaf pkts1024to1518Octets { + config "false"; + type uint64; + description "Packets with 1024 to 1518 Octets"; + } + leaf pkts1519to1548Octets { + config "false"; + type uint64; + description "Packets with 1519 to 1548 Octets"; + } + leaf rxPkts64Octets { + config "false"; + type uint64; + description "RX Packets with 64 Octets"; + } + leaf txPkts64Octets { + config "false"; + type uint64; + description "TX Packets with 64 Octets"; + } + leaf rxPkts65to127Octets { + config "false"; + type uint64; + description "RX Packets with 65 to 127 Octets"; + } + leaf txPkts65to127Octets { + config "false"; + type uint64; + description "TX Packets with 65 to 127 Octets"; + } + leaf rxPkts128to255Octets { + config "false"; + type uint64; + description "RX Packets with 128 to 255 Octets"; + } + leaf txPkts128to255Octets { + config "false"; + type uint64; + description "TX Packets with 128 to 255 Octets"; + } + leaf rxPkts256to511Octets { + config "false"; + type uint64; + description "RX Packets with 256 to 511 Octets"; + } + leaf txPkts256to511Octets { + config "false"; + type uint64; + description "TX Packets with 256 to 511 Octets"; + } + leaf rxPkts512to1023Octets { + config "false"; + type uint64; + description "RX Packets with 512 to 1023 Octets"; + } + leaf txPkts512to1023Octets { + config "false"; + type uint64; + description "TX Packets with 512 to 1023 Octets"; + } + leaf rxPkts1024to1518Octets { + config "false"; + type uint64; + description "RX Packets with 1024 to 1518 Octets"; + } + leaf txPkts1024to1518Octets { + config "false"; + type uint64; + description "TX Packets with 1024 to 1518 Octets"; + } + leaf rxPkts1519to1548Octets { + config "false"; + type uint64; + description "RX Packets with 1519 to 1548 Octets"; + } + leaf txPkts1519to1548Octets { + config "false"; + type uint64; + description "TX Packets with 1519 to 1548 Octets"; + } + leaf oversizePkts { + config "false"; + type uint64; + description "Over Size Packets"; + } + leaf jabbers { + config "false"; + type uint64; + description "Jabber Frames"; + } + leaf octets { + config "false"; + type uint64; + description "Octets"; + } + leaf pkts { + config "false"; + type uint64; + description "Packets"; + } + leaf collisions { + config "false"; + type uint64; + description "Collisions"; + } + leaf cRCAlignErrors { + config "false"; + type uint64; + description "CRC Align Errors"; + } + leaf tXNoErrors { + config "false"; + type uint64; + description "TX no Errors"; + } + leaf rXNoErrors { + config "false"; + type uint64; + description "RX no Errors"; + } + leaf rxOversizePkts { + config "false"; + type uint64; + description "RX Over Size Packets"; + } + leaf txOversizePkts { + config "false"; + type uint64; + description "TX Over Size Packets"; + } + leaf overrun { + config "false"; + type uint64; + description "Overrun Packets"; + } + leaf underrun { + config "false"; + type uint64; + description "Underrun Packets"; + } + leaf ignored { + config "false"; + type uint64; + description "Ignored Packets"; + } + leaf watchdog { + config "false"; + type uint64; + description "Watchdog"; + } + leaf ifdowndrop { + config "false"; + type uint64; + description "If Down Drop"; + } + } + + grouping rmon_Dot3Stats-group { + description "Dot3 Statistics Counters"; + leaf alignmentErrors { + config "false"; + type uint64; + description "Alignment Errors"; + } + leaf fCSErrors { + config "false"; + type uint64; + description "FCS Errors"; + } + leaf singleCollisionFrames { + config "false"; + type uint64; + description "Single Collision Frames"; + } + leaf multipleCollisionFrames { + config "false"; + type uint64; + description "Multiple Collision Frames"; + } + leaf sQETTestErrors { + config "false"; + type uint64; + description "SQET Test Errors"; + } + leaf deferredTransmissions { + config "false"; + type uint64; + description "Deferred Transmissions"; + } + leaf lateCollisions { + config "false"; + type uint64; + description "Late Collisions"; + } + leaf excessiveCollisions { + config "false"; + type uint64; + description "Excessive Collisions"; + } + leaf internalMacTransmitErrors { + config "false"; + type uint64; + description "Internal Mac Transmit Errors"; + } + leaf carrierSenseErrors { + config "false"; + type uint64; + description "Carrier Sense Errors"; + } + leaf frameTooLongs { + config "false"; + type uint64; + description "Frame too Longs"; + } + leaf internalMacReceiveErrors { + config "false"; + type uint64; + description "Internal Mac Receive Errors"; + } + leaf symbolErrors { + config "false"; + type uint64; + description "Symbol Errors"; + } + leaf controlInUnknownOpcodes { + config "false"; + type uint64; + description "Control Input Unknown Opcodes"; + } + leaf inPauseFrames { + config "false"; + type uint64; + description "Input Pause Frames"; + } + leaf outPauseFrames { + config "false"; + type uint64; + description "Output Pause Frames"; + } + leaf lostCarrierErrors { + config "false"; + type uint64; + description "Lost Carrier Errors"; + } + leaf noCarrierErrors { + config "false"; + type uint64; + description "No Carrier Errors"; + } + leaf inputdribble { + config "false"; + type uint64; + description "Input Dribble"; + } + leaf babble { + config "false"; + type uint64; + description "babble count"; + } + leaf runts { + config "false"; + type uint64; + description "runts count"; + } + } + + grouping rmon_IfHCIn-group { + description "Interface HC Input Counters"; + leaf octets { + config "false"; + type uint64; + description "Octets"; + } + leaf ucastPkts { + config "false"; + type uint64; + description "Unicast Packets"; + } + leaf multicastPkts { + config "false"; + type uint64; + description "Multicast Packets"; + } + leaf broadcastPkts { + config "false"; + type uint64; + description "Broadcast Packets"; + } + } + + grouping rmon_IfHCOut-group { + description "Interface HC Output Counters"; + leaf octets { + config "false"; + type uint64; + description "Octets"; + } + leaf ucastPkts { + config "false"; + type uint64; + description "Unicast Packets"; + } + leaf multicastPkts { + config "false"; + type uint64; + description "Multicast Packets"; + } + leaf broadcastPckts { + config "false"; + type uint64; + description "Broadcast Packets"; + } + leaf broadcastPkts { + config "false"; + type uint64; + description "Broadcast Packets"; + } + } + + grouping rmon_Ipv6IfStats-group { + description "Ipv6 Interface Statistics Counters"; + leaf inReceives { + config "false"; + type uint64; + description "Input Receives"; + } + leaf inHdrErrors { + config "false"; + type uint64; + description "Input Header Errors"; + } + leaf inAddrErrors { + config "false"; + type uint64; + description "Input Address Errors"; + } + leaf inDiscards { + config "false"; + type uint64; + description "Input Discards"; + } + leaf outForwDatagrams { + config "false"; + type uint64; + description "Output Forward Datagrams"; + } + leaf outDiscards { + config "false"; + type uint64; + description "Output Discards"; + } + leaf inMcastPkts { + config "false"; + type uint64; + description "Input Multicast Packets"; + } + leaf outMcastPkts { + config "false"; + type uint64; + description "Output Multicast Packets"; + } + } + + grouping rmon_IfStorm-group { + description "Interface Storm Drop Counters"; + leaf dropBytes { + config "false"; + type uint64; + description "Storm Ctrl Drop Bytes"; + } + } + + grouping tunnel_IngrTep-group { + description "Ingress TEP Counters"; + leaf fwdPkts { + config "false"; + type uint64; + description "Forwarded Packets"; + } + leaf fwdBytes { + config "false"; + type uint64; + description "Forwarded Bytes"; + } + leaf dropPkts { + config "false"; + type uint64; + description "Drop Packets"; + } + leaf dropBytes { + config "false"; + type uint64; + description "Drop Bytes"; + } + } + + grouping tunnel_EgrTep-group { + description "Egress TEP Counters"; + leaf fwdPkts { + config "false"; + type uint64; + description "Forwarded Packets"; + } + leaf fwdBytes { + config "false"; + type uint64; + description "Forwarded Bytes"; + } + leaf dropPkts { + config "false"; + type uint64; + description "Drop Packets"; + } + leaf dropBytes { + config "false"; + type uint64; + description "Drop Bytes"; + } + } + + container System { + description "General information about this system"; + + uses System-group; + } +// +// Copyright 2015-2021 Cisco Systems Inc. +// All rights reserved. +// + //----------------------------------------- + // RPC Defintions for Cisco-NX-OS + //----------------------------------------- + identity inactive + { + description "Inactive"; + } + + typedef uri_t + { + type string; + description "A Uniform Resource Identifier type"; + } + + typedef pkgname_t + { + type string; + description "A package name type"; + } + + typedef addtgt_t + { + type union + { + type pkgname_t; + type uri_t; + } + description "The add target { | }"; + } + + typedef remtgt_t + { + type union + { + type pkgname_t; + type identityref { base "inactive"; } + } + description "The remove target { | inactive }"; + } + + typedef filesystem_t + { + type string; + description "A filesystem"; + } + + typedef intf_t + { + type string; + description "An interface"; + } + typedef vrfname_t + { + type string; + description "A VRF name"; + } + + typedef climode_t + { + type enumeration + { + enum EXEC + { + description "EXEC CLI Commands"; + } + enum CONFIG + { + description "CONFIG CLI Commands"; + } + } + description "A CLI mode"; + } + + typedef commandline_t + { + type string; + description "A CLI Command Line"; + } + + typedef outmessage_t + { + type string; + description "Text-formatted CLI response information"; + } + + typedef datastore_t + { + type enumeration + { + enum running + { + description "Running datastore"; + } + enum candidate + { + description "Candidate datastore"; + } + } + description "Type of datastore"; + } + + typedef difftype_t + { + type enumeration + { + enum xml-text + { + description "Straight textual diff on XML outputs"; + } + enum xml + { + description "XML with augmented status attributes"; + } + } + description "Type of diff report generated"; + } + + //----------------------------------------- + rpc cli + { + description "Execute a CLI command"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html"; + + input + { + leaf mode + { + type climode_t; + description "Specifies the mode: EXEC, CONFIG "; + } + leaf cmdline + { + type commandline_t; + description "Specifies the CLI command line to execute"; + } + } // end input + + output + { + leaf message + { + type outmessage_t; + description "Contains textual CLI response information"; + } + anyxml data + { + description "Contains the CLI response in XML format"; + } + } // end output + } + + + //----------------------------------------- + rpc install_all_nxos + { + description "Upgrade the system software"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf nxos + { + type uri_t; + description "NXOS boot-variable name, image URI"; + } + + choice A + { + description "Choice A"; + leaf no-reload + { + type empty; + description "Exit right before reload during install"; + } + leaf noswitchover + { + type empty; + description "Exit right before reload during install"; + } + } // end choice A + + choice B + { + description "Choice B"; + leaf bios + { + type empty; + description "BIOS Only"; + } + leaf no-save + { + type empty; + description "Exit right before reload during install"; + } + } // end choice B + + leaf bios-force + { + type empty; + description "Forcefully upgrade bios"; + } + + leaf non-interruptive + { + type empty; + description "Non-Interruptive install."; + } + } // end input + } + + + //----------------------------------------- + rpc install_force_all_nxos + { + description "Force upgrade of the system software"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf nxos + { + type uri_t; + description "NXOS boot-variable name, image URI"; + } + + choice B + { + description "Choice B"; + leaf no-reload + { + type empty; + description "Exit right before reload during install"; + } + leaf noswitchover + { + type empty; + description "Exit right before reload during install"; + } + } // end choice B + + choice C + { + description "Choice C"; + leaf bios + { + type empty; + description "BIOS Only"; + } + leaf no-save + { + type empty; + description "Exit right before reload during install"; + } + } // end choice C + + leaf bios-force + { + type empty; + description "Forcefully upgrade bios"; + } + + leaf non-interruptive + { + type empty; + description "Non-Interruptive install."; + } + } // end input + } + + + //----------------------------------------- + rpc install_add + { + description "Add package"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf add + { + type addtgt_t; + description "Add package via name or URI"; + } + leaf vrf + { + type vrfname_t; + description "Display per-VRF information of known VRF name"; + } + + choice A + { + description "Choice A"; + leaf upgrade + { + type empty; + description "Upgrade package"; + } + leaf downgrade + { + type empty; + description "Downgrade package"; + } + leaf initial + { + type empty; + description "Initial install"; + } + default initial; + } // end choice A + + leaf forced + { + type empty; + description "non-interactive"; + } + } // end input + } + + //----------------------------------------- + rpc install_activate + { + description "Activate package"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf activate + { + type pkgname_t; + description "Package name"; + } + + leaf forced + { + type empty; + description "non-interactive"; + } + } // end input + } + + + //----------------------------------------- + rpc install_deactivate + { + description "Deactivate package"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf deactivate + { + type pkgname_t; + description "Package name"; + } + + leaf forced + { + type empty; + description "non-interactive"; + } + } // end input + } + + + //----------------------------------------- + rpc install_commit + { + description "Commit software patch"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf commit + { + type pkgname_t; + description "Package name"; + } + } // end input + } + + + //----------------------------------------- + rpc install_remove + { + description "Remove package"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + choice remtgt + { + description "Remove target"; + leaf remove + { + type remtgt_t; + description "Package name or inactive (All inactive except non-committed packages)"; + } + leaf inactive + { + type empty; + description "All inactive except non-committed packages"; + } + } + leaf forced + { + type empty; + description "Remove package"; + } + } // end input + } + + + //----------------------------------------- + rpc copy + { + description "Copy startup configuration to destination"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf source + { + type filesystem_t; + description "Select source filesystem"; + } + leaf destination + { + type filesystem_t; + description "Select destination filesystem"; + } + leaf recursive + { + type empty; + description "Recursively copy files and folders"; + } + leaf vrf + { + type vrfname_t; + description "Display per-VRF information of known VRF name"; + } + } // end input + } + + //----------------------------------------- + rpc copy_src_local + { + description "Copy from one file to another"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf src_local + { + type filesystem_t; + description "Select source filesystem"; + } + choice dest + { + description "Destination"; + case dest_remote + { + leaf dest_remote + { + type filesystem_t; + description "Select destination filesystem"; + } + choice A + { + description "Choice A"; + leaf source-interface + { + type intf_t; + description "Select source interface"; + } + leaf vrf + { + type vrfname_t; + description "Display per-VRF information of known VRF name"; + } + } // end choice A + } // end case dest_remote + + case dest_local + { + choice B + { + description "Choice B"; + case dest_local + { + leaf dest_local + { + type filesystem_t; + description "Select destination filesystem"; + } + } + case running-config + { + leaf running-config + { + type empty; + description "Copy from source to running configuration"; + } + leaf echo-commands + { + type empty; + description "Echo the commands before applying them (to correlate errors)"; + } + leaf stop-at-first-failure + { + type empty; + description "Stop at first error"; + } + } + case startup-config + { + leaf startup-config + { + type empty; + description "Select source interface"; + } + } + case scheduled-config + { + leaf scheduled-config + { + type empty; + description "Select source interface"; + } + } + } // end choice B + } // end case dest_local + } // end choice dest + } // end input + } + + + //----------------------------------------- + rpc copy_src_remote + { + description "Copy from one file to another"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf src_remote + { + type filesystem_t; + description "Select source filesystem"; + } + leaf source-interface + { + type intf_t; + description "Select source interface"; + } + leaf vrf + { + type vrfname_t; + description "Display per-VRF information of known VRF name"; + } + choice dest + { + description "Destination"; + case dest-local-a + { + leaf dest_local + { + type filesystem_t; + description "Select destination filesystem"; + } + } // end case dest-local-a + + case dest-local-b + { + leaf running-config + { + type empty; + description "Copy from source to running configuration"; + } + leaf echo-commands + { + type empty; + description "Echo the commands before applying them (to correlate errors)"; + } + leaf stop-at-first-failure + { + type empty; + description "Stop at first error"; + } + } // end case dest-local-b + + case dest-local-c + { + leaf startup-config + { + type empty; + description "Copy startup configuration to destination"; + } + } // end case dest-local-c + } // end dest choice + } // end input + } + + + //----------------------------------------- + rpc copy_src_core + { + description "Copy from one file to another"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf src_core + { + type filesystem_t; + description "Select source filesystem"; + } + choice dest + { + description "Destination"; + case dest_remote + { + leaf dest_remote + { + type filesystem_t; + description "Select destination filesystem"; + } + + choice dest-a + { + description "Destination remote"; + leaf source-interface + { + type intf_t; + description "Select source interface"; + } + + leaf vrf + { + type vrfname_t; + description "Display per-VRF information of known VRF name"; + } + } // end chioce dest-a + + } // end case dest_remote + + case dest_local_core + { + leaf dest_local_core + { + type filesystem_t; + description "Select destination filesystem"; + } + } // end case dest_local_core + } // end choice dest + } // end input + } + + + //----------------------------------------- + rpc copy_running_config_src + { + description "Copy running configuration to destination"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf vdc-all + { + type empty; + description "Perform copy for all vdcs"; + } + choice dest + { + description "Destination"; + case dest_remote + { + leaf dest_remote + { + type filesystem_t; + description "Select destination filesystem"; + } + choice dest-r + { + description "Destination remote"; + leaf source-interface + { + type intf_t; + description "Select source interface"; + } + + leaf vrf + { + type vrfname_t; + description "Display per-VRF information of known VRF name"; + } + } // end choice dest_remote + } // end case dest-r + + case startup-config + { + leaf startup-config + { + type empty; + description "Copy startup configuration to destination"; + } + + leaf fabric + { + type empty; + description "Copy from source to fabric startup configuration"; + } + } // end case startup-config + + case dest_local_config + { + leaf dest_local_config + { + type empty; + description "Select destination filesystem"; + } + } + } // end dest choice + } // end input + } + + + //----------------------------------------- + rpc copy_startup_config_src + { + description "Copy startup configuration to destination"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + choice dest + { + description "Destination"; + case dest_remote + { + leaf dest_remote + { + type filesystem_t; + description "Select destination filesystem"; + } + choice dest-r + { + description "Destination remote"; + leaf source-interface + { + type intf_t; + description "Select source interface"; + } + + leaf vrf + { + type vrfname_t; + description "Display per-VRF information of known VRF name"; + } + } // end choice dest-r + } // end case dest_remote + + case running-config + { + leaf running-config + { + type empty; + description "Copy from source to running configuration"; + } + leaf echo-commands + { + type empty; + description "Echo the commands before applying them (to correlate errors)"; + } + leaf stop-at-first-failure + { + type empty; + description "Stop at first error"; + } + } // end case running-config + + case dest_local_config + { + leaf dest_local_config + { + type empty; + description "Select destination filesystem"; + } + } // end case dest_local_config + } // end dest choice + } // end input + } + + + //----------------------------------------- + rpc copy_licenses + { + description "Copy license files"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf licenses + { + type uri_t; + description "Specify URL (with .tar extension) for backing up license files"; + } + } + } + + + //----------------------------------------- + rpc delete + { + description "Deletes a specified target file or directory"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf target + { + type uri_t; + description "file or directory to delete"; + } + } // end input + } + + + //----------------------------------------- + rpc delete_ca_certificate + { + description "Deletes the ca certificates"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + } + + + //----------------------------------------- + rpc delete_crl + { + description "Deletes the certificates"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + } + + //----------------------------------------- + rpc boot_nxos + { + description "Boots the device"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf image + { + type uri_t; + description "NXOS Image to boot"; + } + } // end input + } + + //----------------------------------------- + rpc reload + { + description "Reloads the device"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + } + + //----------------------------------------- + rpc dir + { + description "Returns directory or file information in the system, expansion flash or log flash"; + + reference "https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/7-x/command_references/configuration_commands/b_Using_N9K_Config_Commands/b_N9K_Bookmap_chapter_010101.html#wp8018159290"; + + input + { + leaf filemask + { + type uri_t; + description "Directory, filename or filemask"; + } + } // end input + + output + { + anyxml data + { + description "XML-formatted directory or file information"; + } + } + } + + //----------------------------------------- + rpc get_diff + { + description "Get difference between datastores"; + + reference "No correspopnding CLI"; + + input + { + leaf source + { + type datastore_t; + description "Select source datastore"; + } + leaf target + { + type datastore_t; + description "Select target datastore"; + } + leaf type + { + type difftype_t; + description "Diff report type"; + } + anyxml filter { + description "Subtree or XPath filter to use."; + } + } + + output + { + anyxml data + { + description "XML-formatted diff between datastores"; + } + } + } + +} diff --git a/vendor/cisco/nx/9.3-14/README.md b/vendor/cisco/nx/9.3-14/README.md new file mode 100644 index 000000000..adeb3aea9 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/README.md @@ -0,0 +1,36 @@ +## YANG Models and Platform Capabilities for Cisco NX-OS 9.3(14) + +The YANG files in this directory detail the native and OpenConfig YANG models with deviations supported by NX-OS 9.3(14) release. + +As a convenience, a copy of the "hello" message is also provided (netconf-capabilities.xml). + +### YANG Syntax Issues With ```Cisco-NX-OS-device.yang``` + +The core native device model for NX-OS is [```Cisco-NX-OS-device.yang```](Cisco-NX-OS-device.yang). This model currently has a number of problems relating to non-compliant regular expresssion constraints (per RFC 6020) and incorrect default values. These issues will be fixed in a subsequent release. Developers can examine the script [```check.sh```](../check.sh) for details of how the model is currently compiled to pass CI builds. + +### Generating models for a specific agent/controller + +For netconf (default): `./prepare.sh` + Creates ./netconf_models + +For restconf: `./prepare.sh -a restconf` + Creates ./restconf_models + +For gnmi: `./prepare.sh -a gnmi` + Creates ./gnmi_models + +All your models will be in the created models directory. + +### Compliance With "pyang --lint" + +The native YANG models are not fully compliant with all IETF guidelines as exemplified by running the pyang tool with the ```--lint``` flag. The errors and warnings exhibited by running pyang with the ```--lint``` flag are currently deemed to be non-critical as they do not impact the semantic of the models or prevent the models being used as part of toolchains. A script has been provided, "check-models.sh", that runs pyang with ```--lint``` validation enabled, but ignoring certain errors. This allows the developer to determine what issues may be present. + + +### Revision Statements + +From NX-OS 7.0.3 and onwards, the revision statements embedded in the YANG files **should** accurately reflect whether or not a new revision has been introduced. However, there are some bugs. These will be noted by running the ```check-models.sh``` script with the ```-b``` option. + + +### RPM Download + +The RPMs supporting YANG models are available for download at the Cisco Artifactory http://devhub.cisco.com/artifactory/open-nxos-agents/9.3-14/ diff --git a/vendor/cisco/nx/9.3-14/check-models.sh b/vendor/cisco/nx/9.3-14/check-models.sh new file mode 100755 index 000000000..124af8e89 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/check-models.sh @@ -0,0 +1,106 @@ +#!/bin/sh +# +# Simple run of pyang with the "--lint" flag over all yang files in +# this directory, ignoring some warnings. Prior to pushing to git, the +# validation was run with pyang 1.5. This script should be run with +# the working doirectory set to a directory containing the yang files +# to run "pyang --lint" over. +# +# The modules as uploaded exhibit a number of RFC 6087 amd RFC 6020 +# errors and warnings that are judged to be cosmetic at this time and +# which do not impact the ability of a client to interact with a +# device supporting the module. The exact content ignored may be +# identified by reviewing the "grep -v" commands below. +# +EGREP=`command -v egrep` +GREP=`command -v grep` +PYANG=`command -v pyang` +CHECK_BC="" +PYANG_FLAGS="-p ../../../../standard/ietf/RFC" + +trap ctrl_c INT + +function ctrl_c() { + echo 'User interruption, exiting ..' + exit -1 +} +# +# simple function to check for existence of a binary on the current +# path +# +checkExists() { + bin=`command -v $1` + if [ -z "$bin" ] + then + echo this script requires $1 to be on your path + exit 1 + fi +} + +# +# check we have the utilties we need +# +checkExists pyang +checkExists egrep +checkExists grep + +# +# brief help for the options we support +# +show_help () { + echo Options for check-models.sh: + printf "\n" + printf " -h Show this help\n" + printf "\n" +} + +OPTIND=1 +while getopts "h" opt; do + case "$opt" in + h|\?) + show_help + exit 0 + ;; + esac +done + +# +# Run pyang over all the yang modules, ignoring certain errors and +# warnings. +# +echo Checking all models with "--lint" flag +compile_yang() { + m=$1 + pyang_flags=${FLAGS} + if test "${m#*"openconfig-"}" != "$m"; then + pyang_flags="" + fi + + echo "pyang $pyang_flags $m" + pyang $pyang_flags $m 2>&1 | \ + grep -v "warning: RFC 6087" | \ + grep -v "error: RFC 6087: 4.2" | \ + grep -v "error: RFC 6087: 4.7" | \ + grep -v "error: RFC 6087: 4.11,4.12" | \ + grep -v "error: RFC 6087: 4.12" | \ + grep -v "not in canonical order" | \ + grep -v "warning: locally scoped grouping" | \ + egrep -v "warning: imported module\s[a-zA-Z0-9\-]+\snot used" +} + +FLAGS="$PYANG_FLAGS " +for m in *.yang +do + if test "${m#*"openconfig-"}" != "$m"; then + continue + fi + compile_yang $m +done + +if [ -d "extensions" ]; then + temp_dir="temp" + for m in extensions/*.yang + do + compile_yang $m + done +fi diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-acl-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-acl-deviations.yang new file mode 100644 index 000000000..62cbd3685 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-acl-deviations.yang @@ -0,0 +1,200 @@ + +module cisco-nx-openconfig-acl-deviations { + + namespace "http://openconfig.net/yang/acl-deviations"; + + prefix "oc-acl-devs"; + + import openconfig-acl { prefix oc-acl; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-acl module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2020 by Cisco Systems, Inc. + All rights reserved."; + + revision "2018-02-28" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-acl:acl/oc-acl:state/oc-acl:counter-capability { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:config/oc-acl:type { + deviate add { + must "../oc-acl:type != 'oc-acl:ACL_MIXED'" { + error-message "ACL_MIXED not supported"; + } + + } + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:config/oc-acl:description { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:state/oc-acl:name { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:state/oc-acl:type { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:state/oc-acl:description { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:config/oc-acl:description { + deviate "not-supported"; + } + 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:sequence-id { + deviate "not-supported"; + } + 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:description { + deviate "not-supported"; + } + 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 { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:l2/oc-acl:state/oc-acl:source-mac { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:l2/oc-acl:state/oc-acl:source-mac-mask { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:l2/oc-acl:state/oc-acl:destination-mac { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:l2/oc-acl:state/oc-acl:destination-mac-mask { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:l2/oc-acl:state/oc-acl:ethertype { + deviate "not-supported"; + } + 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:state/oc-acl:source-address { + deviate "not-supported"; + } + 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:state/oc-acl:destination-address { + deviate "not-supported"; + } + 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:state/oc-acl:dscp { + deviate "not-supported"; + } + 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:state/oc-acl:protocol { + deviate "not-supported"; + } + 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:state/oc-acl:hop-limit { + deviate "not-supported"; + } + 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-flow-label { + deviate "not-supported"; + } + 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-flow-label { + deviate "not-supported"; + } + 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:hop-limit { + deviate "not-supported"; + } + 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:state/oc-acl:source-address { + deviate "not-supported"; + } + 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:state/oc-acl:source-flow-label { + deviate "not-supported"; + } + 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:state/oc-acl:destination-address { + deviate "not-supported"; + } + 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:state/oc-acl:destination-flow-label { + deviate "not-supported"; + } + 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:state/oc-acl:dscp { + deviate "not-supported"; + } + 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:state/oc-acl:protocol { + deviate "not-supported"; + } + 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:state/oc-acl:hop-limit { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:transport/oc-acl:config/oc-acl:tcp-flags { + deviate add { + must "../oc-acl:tcp-flags != 'oc-pkt-match-types:TCP_CWR'" { + error-message "TCP_CWR not supported"; + } + + } + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:transport/oc-acl:state/oc-acl:source-port { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:transport/oc-acl:state/oc-acl:destination-port { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:transport/oc-acl:state/oc-acl:tcp-flags { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:input-interface/oc-acl:interface-ref/oc-acl:config/oc-acl:interface { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:input-interface/oc-acl:interface-ref/oc-acl:config/oc-acl:subinterface { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:input-interface/oc-acl:interface-ref/oc-acl:state/oc-acl:interface { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:input-interface/oc-acl:interface-ref/oc-acl:state/oc-acl:subinterface { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:actions/oc-acl:config/oc-acl:log-action { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:actions/oc-acl:config/oc-acl:forwarding-action { + deviate add { + must "../oc-acl:forwarding-action != 'oc-acl:REJECT'" { + error-message "REJECT not supported"; + } + + } + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:actions/oc-acl:state/oc-acl:forwarding-action { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:actions/oc-acl:state/oc-acl:log-action { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:interfaces/oc-acl:interface/oc-acl:state/oc-acl:id { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:interfaces/oc-acl:interface/oc-acl:interface-ref/oc-acl:state/oc-acl:interface { + deviate "not-supported"; + } + deviation /oc-acl:acl/oc-acl:interfaces/oc-acl:interface/oc-acl:interface-ref/oc-acl:state/oc-acl:subinterface { + 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:state/oc-acl:set-name { + 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:state/oc-acl:type { + 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 { + 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:state/oc-acl:set-name { + 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:state/oc-acl:type { + 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 { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-bfd-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-bfd-deviations.yang new file mode 100644 index 000000000..eac6d0781 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-bfd-deviations.yang @@ -0,0 +1,124 @@ + +module cisco-nx-openconfig-bfd-deviations { + + namespace "http://openconfig.net/yang/bfd-deviations"; + + prefix "oc-bfd-devs"; + + import openconfig-bfd { prefix oc-bfd; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-if-types { prefix oc-ift; } + import openconfig-inet-types { prefix oc-inet; } + import openconfig-network-instance { prefix oc-ni; } + import openconfig-policy-types { prefix oc-pol-types; } + import openconfig-types { prefix oc-types; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-bfd module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2020 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-12-02" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-ni:network-instances/oc-ni:network-instance/oc-ni:protocols/oc-ni:protocol/oc-ni:bgp/oc-ni:peer-groups/oc-ni:peer-group/oc-bfd:enable-bfd/oc-bfd:state/oc-bfd:associated-session { + deviate "not-supported"; + } + deviation /oc-ni:network-instances/oc-ni:network-instance/oc-ni:protocols/oc-ni:protocol/oc-ni:static-routes/oc-ni:static/oc-ni:next-hops/oc-ni:next-hop/oc-bfd:enable-bfd/oc-bfd:state/oc-bfd:enabled { + deviate "not-supported"; + } + deviation /oc-bfd:bfd/oc-bfd:interfaces/oc-bfd:interface/oc-bfd:interface-ref/oc-bfd:config/oc-bfd:interface { + deviate "not-supported"; + } + deviation /oc-bfd:bfd/oc-bfd:interfaces/oc-bfd:interface/oc-bfd:interface-ref/oc-bfd:config/oc-bfd:subinterface { + deviate "not-supported"; + } + deviation /oc-bfd:bfd/oc-bfd:interfaces/oc-bfd:interface/oc-bfd:interface-ref/oc-bfd:state/oc-bfd:interface { + deviate "not-supported"; + } + deviation /oc-bfd:bfd/oc-bfd:interfaces/oc-bfd:interface/oc-bfd:interface-ref/oc-bfd:state/oc-bfd:subinterface { + deviate "not-supported"; + } + deviation /oc-bfd:bfd/oc-bfd:interfaces/oc-bfd:interface/oc-bfd:micro-bfd-sessions/oc-bfd:micro-bfd-session/oc-bfd:config/oc-bfd:local-address { + deviate "not-supported"; + } + deviation /oc-bfd:bfd/oc-bfd:interfaces/oc-bfd:interface/oc-bfd:micro-bfd-sessions/oc-bfd:micro-bfd-session/oc-bfd:config/oc-bfd:member-interface { + deviate "not-supported"; + } + deviation /oc-bfd:bfd/oc-bfd:interfaces/oc-bfd:interface/oc-bfd:micro-bfd-sessions/oc-bfd:micro-bfd-session/oc-bfd:state/oc-bfd:remote-control-plane-independent { + deviate "not-supported"; + } + deviation /oc-bfd:bfd/oc-bfd:interfaces/oc-bfd:interface/oc-bfd:peers/oc-bfd:peer/oc-bfd:state/oc-bfd:remote-control-plane-independent { + deviate "not-supported"; + } + + +/* Mapped to device model + * Device Model Target: /top:System/top:bfd-items/top:inst-items/top:if-items/top:If-list/top:adminSt + * Transformation Function: conv_oc_nx_enabled + */ + deviation /oc-bfd:bfd/oc-bfd:interfaces/oc-bfd:interface/oc-bfd:config/oc-bfd:enabled { + deviate add { + default "true"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bfd-items/top:inst-items/top:if-items/top:If-list/top:ifka-items/top:minTxIntvl + * Transformation Function: conv_oc_nx_desired_min_tx + */ + deviation /oc-bfd:bfd/oc-bfd:interfaces/oc-bfd:interface/oc-bfd:config/oc-bfd:desired-minimum-tx-interval { + deviate add { + default "50000"; + } + deviate replace { + type uint32 { + range "50000..999000"; + } + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bfd-items/top:inst-items/top:if-items/top:If-list/top:ifka-items/top:minRxIntvl + * Transformation Function: conv_oc_nx_required_min_receive + */ + deviation /oc-bfd:bfd/oc-bfd:interfaces/oc-bfd:interface/oc-bfd:config/oc-bfd:required-minimum-receive { + deviate add { + default "50000"; + } + deviate replace { + type uint32 { + range "50000..999000"; + } + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bfd-items/top:inst-items/top:if-items/top:If-list/top:ifka-items/top:detectMult + * Transformation Function: conv_oc_nx_detection_multiplier + */ + deviation /oc-bfd:bfd/oc-bfd:interfaces/oc-bfd:interface/oc-bfd:config/oc-bfd:detection-multiplier { + deviate add { + default "3"; + } + deviate replace { + type uint8 { + range "1..50"; + } + } + } +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-bgp-policy-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-bgp-policy-deviations.yang new file mode 100644 index 000000000..6c1e05f1e --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-bgp-policy-deviations.yang @@ -0,0 +1,176 @@ + +module cisco-nx-openconfig-bgp-policy-deviations { + + namespace "http://openconfig.net/yang/bgp-policy-deviations"; + + prefix "oc-bgp-pol-devs"; + + import openconfig-bgp-policy { prefix oc-bgp-pol; } + import openconfig-routing-policy { prefix oc-rpol; } + import openconfig-bgp-types { prefix oc-bgp-types; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-bgp-policy module + set for Cisco NXOS. + Copyright (c) 2015-2017 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-07-19" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-rpol:routing-policy/oc-rpol:defined-sets/oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:community-sets/oc-bgp-pol:community-set/oc-bgp-pol:config/oc-bgp-pol:match-set-options { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:defined-sets/oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:community-sets/oc-bgp-pol:community-set/oc-bgp-pol:config/oc-bgp-pol:community-member { + deviate replace { + type union { + type oc-bgp-types:bgp-std-community-type; + type oc-bgp-types:bgp-community-regexp-type; + } + } + } + deviation /oc-rpol:routing-policy/oc-rpol:defined-sets/oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:community-sets/oc-bgp-pol:community-set/oc-bgp-pol:state/oc-bgp-pol:match-set-options { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:defined-sets/oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:ext-community-sets/oc-bgp-pol:ext-community-set { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:config/oc-bgp-pol:origin-eq { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:config/oc-bgp-pol:afi-safi-in { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:config/oc-bgp-pol:local-pref-eq { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:config/oc-bgp-pol:ext-community-set { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:config/oc-bgp-pol:community-set { + deviate replace { + type string; + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:state/oc-bgp-pol:origin-eq { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:state/oc-bgp-pol:afi-safi-in { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:state/oc-bgp-pol:local-pref-eq { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:state/oc-bgp-pol:ext-community-set { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:community-count/oc-bgp-pol:config/oc-bgp-pol:operator { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:community-count/oc-bgp-pol:config/oc-bgp-pol:value { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:community-count/oc-bgp-pol:state/oc-bgp-pol:operator { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:community-count/oc-bgp-pol:state/oc-bgp-pol:value { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:as-path-length/oc-bgp-pol:config/oc-bgp-pol:operator { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:as-path-length/oc-bgp-pol:config/oc-bgp-pol:value { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:as-path-length/oc-bgp-pol:state/oc-bgp-pol:operator { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:as-path-length/oc-bgp-pol:state/oc-bgp-pol:value { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:match-as-path-set/oc-bgp-pol:config/oc-bgp-pol:as-path-set { + deviate replace { + type string; + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-bgp-pol:bgp-conditions/oc-bgp-pol:match-as-path-set/oc-bgp-pol:state/oc-bgp-pol:as-path-set { + deviate replace { + type string; + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-as-path-prepend/oc-bgp-pol:config/oc-bgp-pol:repeat-n { + deviate replace { + type uint8 { + range "1..10"; + } + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-as-path-prepend/oc-bgp-pol:state/oc-bgp-pol:repeat-n { + deviate replace { + type uint8 { + range "1..10"; + } + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-as-path-prepend/oc-bgp-pol:config/oc-bgp-pol:asn { + deviate replace { + type uint32 { + range "1..4294967295"; + } + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-as-path-prepend/oc-bgp-pol:state/oc-bgp-pol:asn { + deviate replace { + type uint32 { + range "1..4294967295"; + } + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-community/oc-bgp-pol:reference/oc-bgp-pol:config/oc-bgp-pol:community-set-ref { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-community/oc-bgp-pol:reference/oc-bgp-pol:state/oc-bgp-pol:community-set-ref { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-ext-community/oc-bgp-pol:config/oc-bgp-pol:method { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-ext-community/oc-bgp-pol:config/oc-bgp-pol:options { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-ext-community/oc-bgp-pol:inline/oc-bgp-pol:config/oc-bgp-pol:communities { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-ext-community/oc-bgp-pol:state/oc-bgp-pol:method { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-ext-community/oc-bgp-pol:state/oc-bgp-pol:options { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-ext-community/oc-bgp-pol:inline/oc-bgp-pol:state/oc-bgp-pol:communities { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-ext-community/oc-bgp-pol:reference/oc-bgp-pol:config/oc-bgp-pol:ext-community-set-ref { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-ext-community/oc-bgp-pol:reference/oc-bgp-pol:state/oc-bgp-pol:ext-community-set-ref { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-bgp-pol:bgp-actions/oc-bgp-pol:set-community/oc-bgp-pol:config/oc-bgp-pol:options { + deviate add { + default "REPLACE"; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-if-aggregate-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-if-aggregate-deviations.yang new file mode 100644 index 000000000..c3f97b4fb --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-if-aggregate-deviations.yang @@ -0,0 +1,40 @@ + +module cisco-nx-openconfig-if-aggregate-deviations { + + namespace "http://openconfig.net/yang/interfaces/aggregate-deviations"; + + prefix "oc-lag-devs"; + + import openconfig-if-aggregate { prefix oc-lag; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-if-ethernet { prefix oc-eth; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-if-aggregate module + set for Cisco NXOS. + Copyright (c) 2015-2017 by Cisco Systems, Inc. + All rights reserved."; + + revision "2018-05-14" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-if:interfaces/oc-if:interface/oc-lag:aggregation/oc-lag:state/oc-lag:member { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-eth:state/oc-lag:aggregate-id { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-if-ethernet-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-if-ethernet-deviations.yang new file mode 100644 index 000000000..a33d5791b --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-if-ethernet-deviations.yang @@ -0,0 +1,39 @@ + +module cisco-nx-openconfig-if-ethernet-deviations { + + namespace "http://openconfig.net/yang/interfaces/ethernet-deviations"; + + prefix "oc-eth-devs"; + + import openconfig-if-ethernet { prefix oc-eth; } + import openconfig-interfaces { prefix oc-if; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-if-ethernet module + set for Cisco NXOS. + Copyright (c) 2015-2017 by Cisco Systems, Inc. + All rights reserved."; + + revision "2018-05-14" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-eth:state/oc-eth:counters/oc-eth:in-8021q-frames { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-eth:ethernet/oc-eth:state/oc-eth:counters/oc-eth:out-8021q-frames { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-if-ip-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-if-ip-deviations.yang new file mode 100644 index 000000000..2dc67d07e --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-if-ip-deviations.yang @@ -0,0 +1,564 @@ + +module cisco-nx-openconfig-if-ip-deviations { + + namespace "http://openconfig.net/yang/interfaces/ip-deviations"; + + prefix "oc-ip-devs"; + + import openconfig-if-ip { prefix oc-ip; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-vlan {prefix oc-vlan; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-if-ip module + set for Cisco NXOS. + Copyright (c) 2015-2017 by Cisco Systems, Inc. + All rights reserved."; + + revision "2018-02-26" { + description + "Initial revision applicable to NXOS"; + } + + + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:ip { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:prefix-length { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:origin { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:unnumbered/oc-ip:state/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:state/oc-ip:interface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:state/oc-ip:subinterface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:config/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:config/oc-ip:mtu { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:config/oc-ip:dhcp-client { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:mtu { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:dhcp-client { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:in-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:in-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:in-error-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:in-forwarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:in-forwarded-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:in-discarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:out-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:out-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:out-error-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:out-forwarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:out-forwarded-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:out-discarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:ip { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:prefix-length { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:origin { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:status { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:router-advertisement/oc-ip:state/oc-ip:interval { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:router-advertisement/oc-ip:state/oc-ip:lifetime { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:router-advertisement/oc-ip:state/oc-ip:suppress { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:ip { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:link-layer-address { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:origin { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:is-router { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:neighbor-state { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:unnumbered/oc-ip:config/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:unnumbered/oc-ip:state/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:config/oc-ip:interface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:config/oc-ip:subinterface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:state/oc-ip:interface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:state/oc-ip:subinterface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:config/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:config/oc-ip:mtu { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:config/oc-ip:dhcp-client { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:mtu { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:dup-addr-detect-transmits { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:dhcp-client { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:in-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:in-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:in-error-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:in-forwarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:in-forwarded-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:in-discarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:out-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:out-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:out-error-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:out-forwarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:out-forwarded-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:out-discarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:config/oc-ip:accept-mode { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:state/oc-ip:accept-mode { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:config/oc-ip:track-interface { + deviate replace { + type string; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:config/oc-ip:priority-decrement { + deviate replace { + type uint8 { + range "1..254"; + } + default "10"; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:state/oc-ip:track-interface { + deviate replace { + type string; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:state/oc-ip:priority-decrement { + deviate replace { + type uint8 { + range "1..254"; + } + default "10"; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:config/oc-ip:accept-mode { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:state/oc-ip:accept-mode { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:config/oc-ip:track-interface { + deviate replace { + type string; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:config/oc-ip:priority-decrement { + deviate replace { + type uint8 { + range "1..254"; + } + default "10"; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:state/oc-ip:track-interface { + deviate replace { + type string; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:state/oc-ip:priority-decrement { + deviate replace { + type uint8 { + range "1..254"; + } + default "10"; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:ip { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:prefix-length { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:origin { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:unnumbered/oc-ip:config/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:unnumbered/oc-ip:state/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:config/oc-ip:interface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:config/oc-ip:subinterface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:state/oc-ip:interface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:state/oc-ip:subinterface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:config/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:config/oc-ip:mtu { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:config/oc-ip:dhcp-client { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:mtu { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:dhcp-client { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:in-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:in-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:in-error-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:in-forwarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:in-forwarded-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:in-discarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:out-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:out-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:out-error-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:out-forwarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:out-forwarded-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:state/oc-ip:counters/oc-ip:out-discarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:ip { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:prefix-length { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:origin { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:state/oc-ip:status { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:router-advertisement/oc-ip:state/oc-ip:interval { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:router-advertisement/oc-ip:state/oc-ip:lifetime { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:router-advertisement/oc-ip:state/oc-ip:suppress { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:ip { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:link-layer-address { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:origin { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:is-router { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:neighbor-state { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:unnumbered/oc-ip:config/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:unnumbered/oc-ip:state/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:config/oc-ip:interface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:config/oc-ip:subinterface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:state/oc-ip:interface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:unnumbered/oc-ip:interface-ref/oc-ip:state/oc-ip:subinterface { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:config/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:config/oc-ip:mtu { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:config/oc-ip:dhcp-client { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:enabled { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:mtu { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:dup-addr-detect-transmits { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:dhcp-client { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:in-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:in-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:in-error-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:in-forwarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:in-forwarded-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:in-discarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:out-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:out-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:out-error-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:out-forwarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:out-forwarded-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:state/oc-ip:counters/oc-ip:out-discarded-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:config/oc-ip:accept-mode { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:state/oc-ip:accept-mode { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:config/oc-ip:track-interface { + deviate replace { + type string; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:config/oc-ip:priority-decrement { + deviate replace { + type uint8 { + range "1..254"; + } + default "10"; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:state/oc-ip:track-interface { + deviate replace { + type string; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:state/oc-ip:priority-decrement { + deviate replace { + type uint8 { + range "1..254"; + } + default "10"; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:config/oc-ip:accept-mode { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:state/oc-ip:accept-mode { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:config/oc-ip:track-interface { + deviate replace { + type string; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:config/oc-ip:priority-decrement { + deviate replace { + type uint8 { + range "1..254"; + } + default "10"; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:state/oc-ip:track-interface { + deviate replace { + type string; + } + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/oc-ip:vrrp/oc-ip:vrrp-group/oc-ip:interface-tracking/oc-ip:state/oc-ip:priority-decrement { + deviate replace { + type uint8 { + range "1..254"; + } + default "10"; + } + } + + + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:ip { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:link-layer-address { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:origin { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:ip { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:link-layer-address { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:neighbors/oc-ip:neighbor/oc-ip:state/oc-ip:origin { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv4/oc-ip:proxy-arp/oc-ip:state/oc-ip:mode { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/oc-ip:ipv4/oc-ip:proxy-arp/oc-ip:state/oc-ip:mode { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-if-ip-ext-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-if-ip-ext-deviations.yang new file mode 100644 index 000000000..51ca91478 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-if-ip-ext-deviations.yang @@ -0,0 +1,61 @@ + +module cisco-nx-openconfig-if-ip-ext-deviations { + + namespace "http://openconfig.net/yang/interfaces/ip-ext-deviations"; + + prefix "oc-ip-ext-devs"; + + import openconfig-if-ip-ext { prefix oc-ip-ext; } + import openconfig-interfaces {prefix oc-if;} + import openconfig-if-ip {prefix oc-ip; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-if-ip-ext module + set for Cisco NXOS. + Copyright (c) 2015-2016 by Cisco Systems, Inc. + All rights reserved."; + + revision "2018-02-23" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip-ext:autoconf/oc-ip-ext:config/oc-ip-ext:create-temporary-addresses { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip-ext:autoconf/oc-ip-ext:config/oc-ip-ext:temporary-valid-lifetime { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip-ext:autoconf/oc-ip-ext:config/oc-ip-ext:temporary-preferred-lifetime { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip-ext:autoconf/oc-ip-ext:state/oc-ip-ext:create-global-addresses { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip-ext:autoconf/oc-ip-ext:state/oc-ip-ext:create-temporary-addresses { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip-ext:autoconf/oc-ip-ext:state/oc-ip-ext:temporary-valid-lifetime { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip-ext:autoconf/oc-ip-ext:state/oc-ip-ext:temporary-preferred-lifetime { + deviate "not-supported"; + } + + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-ip:ipv6/oc-ip-ext:autoconf/oc-ip-ext:config/oc-ip-ext:create-global-addresses { + deviate replace { + default "false"; + } + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-interfaces-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-interfaces-deviations.yang new file mode 100644 index 000000000..159f028e8 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-interfaces-deviations.yang @@ -0,0 +1,98 @@ + +module cisco-nx-openconfig-interfaces-deviations { + + namespace "http://openconfig.net/yang/interfaces-deviations"; + + prefix "oc-if-devs"; + + import openconfig-interfaces { prefix oc-if; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-interfaces module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2020 by Cisco Systems, Inc. + All rights reserved."; + + revision "2018-05-14" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-if:interfaces/oc-if:interface/oc-if:state/oc-if:counters/oc-if:carrier-transitions { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:state/oc-if:counters/oc-if:last-clear { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:hold-time/oc-if:config/oc-if:up { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:hold-time/oc-if:state/oc-if:up { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:name { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:in-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:in-unicast-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:in-broadcast-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:in-multicast-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:in-discards { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:in-errors { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:in-unknown-protos { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:in-fcs-errors { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:out-octets { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:out-unicast-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:out-broadcast-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:out-multicast-pkts { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:out-discards { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:out-errors { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:carrier-transitions { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:counters/oc-if:last-clear { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface/oc-if:state/oc-if:last-change { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-lacp-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-lacp-deviations.yang new file mode 100644 index 000000000..3c341ccd0 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-lacp-deviations.yang @@ -0,0 +1,73 @@ + +module cisco-nx-openconfig-lacp-deviations { + + namespace "http://openconfig.net/yang/lacp-deviations"; + + prefix "oc-lacp-devs"; + + import openconfig-lacp { prefix oc-lacp; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-lacp module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2020 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-02-25" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-lacp:lacp/oc-lacp:config/oc-lacp:system-priority { + deviate add { + default "32768"; + } + deviate replace { + type uint16 { + range "1 .. 65535"; + } + } + } + + deviation /oc-lacp:lacp/oc-lacp:state/oc-lacp:system-priority { + deviate add { + default "32768"; + } + deviate replace { + type uint16 { + range "1 .. 65535"; + } + } + } + + deviation /oc-lacp:lacp/oc-lacp:interfaces/oc-lacp:interface/oc-lacp:config/oc-lacp:system-id-mac { + deviate "not-supported"; + } + + deviation /oc-lacp:lacp/oc-lacp:interfaces/oc-lacp:interface/oc-lacp:config/oc-lacp:system-priority { + deviate "not-supported"; + } + + deviation /oc-lacp:lacp/oc-lacp:interfaces/oc-lacp:interface/oc-lacp:state/oc-lacp:system-id-mac { + deviate "not-supported"; + } + + deviation /oc-lacp:lacp/oc-lacp:interfaces/oc-lacp:interface/oc-lacp:state/oc-lacp:system-priority { + deviate "not-supported"; + } + + deviation /oc-lacp:lacp/oc-lacp:interfaces/oc-lacp:interface/oc-lacp:members/oc-lacp:member/oc-lacp:state/oc-lacp:system-id { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-lldp-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-lldp-deviations.yang new file mode 100644 index 000000000..001519861 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-lldp-deviations.yang @@ -0,0 +1,199 @@ + +module cisco-nx-openconfig-lldp-deviations { + + namespace "http://openconfig.net/yang/lldp-deviations"; + + prefix "oc-lldp-devs"; + + import openconfig-lldp { prefix oc-lldp; } + import openconfig-lldp-types { prefix oc-lldp-types; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-lldp module + set for Cisco NXOS. + Copyright (c) 2015-2017 by Cisco Systems, Inc. + All rights reserved."; + + revision "2020-05-05" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-lldp:lldp/oc-lldp:config/oc-lldp:system-name { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:config/oc-lldp:system-description { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:config/oc-lldp:chassis-id { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:config/oc-lldp:chassis-id-type { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:state/oc-lldp:system-name { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:state/oc-lldp:system-description { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:state/oc-lldp:chassis-id { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:state/oc-lldp:chassis-id-type { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:state/oc-lldp:counters/oc-lldp:tlv-discard { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:state/oc-lldp:counters/oc-lldp:last-clear { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:state/oc-lldp:counters/oc-lldp:tlv-accepted { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:state/oc-lldp:counters/oc-lldp:tlv-discard { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:state/oc-lldp:counters/oc-lldp:last-clear { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:state/oc-lldp:counters/oc-lldp:frame-error-out { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:neighbors/oc-lldp:neighbor/oc-lldp:state/oc-lldp:age { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:neighbors/oc-lldp:neighbor/oc-lldp:state/oc-lldp:last-update { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:neighbors/oc-lldp:neighbor/oc-lldp:state/oc-lldp:ttl { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:neighbors/oc-lldp:neighbor/oc-lldp:state/oc-lldp:management-address-type { + deviate "not-supported"; + } + deviation /oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:neighbors/oc-lldp:neighbor/oc-lldp:custom-tlvs/oc-lldp:tlv { + deviate "not-supported"; + } + +/* Mapped to device model + * Device Model Target: /top:System/top:fm-items/top:lldp-items/top:adminSt + * Transformation Function: openconfig_lldp_config_enabled + */ + deviation /oc-lldp:lldp/oc-lldp:config/oc-lldp:enabled { + deviate replace { + default "false"; + } + } + + +/* Mapped to device model + * Device Model Target: /top:System/top:lldp-items/top:inst-items/top:txFreq + * Transformation Function: openconfig_lldp_hello_timer + */ + deviation /oc-lldp:lldp/oc-lldp:config/oc-lldp:hello-timer { + deviate add { + default "30"; + } + deviate replace { + type uint64 { + range "1 .. 254"; + } + } + + } + +/* Mapped to device model + * Device Model Target: /top:System/top:lldp-items/top:inst-items/top:optTlvSel + * Transformation Function: openconfig_lldp_suppress_advertisement + */ + deviation /oc-lldp:lldp/oc-lldp:config/oc-lldp:suppress-tlv-advertisement { + deviate add { + must "../oc-lldp:suppress-tlv-advertisement='oc-lldp-types:SYSTEM_NAME' or ../oc-lldp:suppress-tlv-advertisement='oc-lldp-types:SYSTEM_DESCRIPTION' or ../oc-lldp:suppress-tlv-advertisement='oc-lldp-types:SYSTEM_CAPABILITIES' or ../oc-lldp:suppress-tlv-advertisement='oc-lldp-types:PORT_DESCRIPTION' or ../oc-lldp:suppress-tlv-advertisement='oc-lldp-types:MANAGEMENT_ADDRESS'" { + error-message "Only supports SYSTEM_NAME, SYSTEM_DESCRIPTION, SYSTEM_CAPABILITIES, PORT_DESCRIPTION, MANAGEMENT_ADDRESS on device model"; + } + + } + } + + +/* Mapped to device model + * Device Model Target: /top:System/top:fm-items/top:lldp-items/top:adminSt + * Transformation Function: openconfig_lldp_state_enabled + */ + deviation /oc-lldp:lldp/oc-lldp:state/oc-lldp:enabled { + deviate replace { + default "false"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:lldp-items/top:inst-items/top:txFreq + * Transformation Function: openconfig_lldp_state_hello_timer + */ + deviation /oc-lldp:lldp/oc-lldp:state/oc-lldp:hello-timer { + deviate add { + default "30"; + } + deviate replace { + type uint64 { + range "1 .. 254"; + } + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:lldp-items/top:inst-items/top:optTlvSel + * Transformation Function: openconfig_lldp_state_suppress_advertisement + */ + deviation /oc-lldp:lldp/oc-lldp:state/oc-lldp:suppress-tlv-advertisement { + deviate add { + must "../oc-lldp:suppress-tlv-advertisement='oc-lldp-types:SYSTEM_NAME' or ../oc-lldp:suppress-tlv-advertisement='oc-lldp-types:SYSTEM_DESCRIPTION' or ../oc-lldp:suppress-tlv-advertisement='oc-lldp-types:SYSTEM_CAPABILITIES' or ../oc-lldp:suppress-tlv-advertisement='oc-lldp-types:PORT_DESCRIPTION' or ../oc-lldp:suppress-tlv-advertisement='oc-lldp-types:MANAGEMENT_ADDRESS'" { + error-message "Only supports SYSTEM_NAME, SYSTEM_DESCRIPTION, SYSTEM_CAPABILITIES, PORT_DESCRIPTION, MANAGEMENT_ADDRESS on device model"; + } + + } + + } + + +/* Mapped to device model + * Device Model Target: /top:System/top:lldp-items/top:inst-items/top:if-items/top:If-list/top:adj-items/top:AdjEp-list/top:capability + * Transformation Function: openconfig_lldp_interface_neighbor_capability_name + */ + deviation /oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:neighbors/oc-lldp:neighbor/oc-lldp:capabilities/oc-lldp:capability/oc-lldp:name { + deviate add { + must "../oc-lldp:name='oc-lldp-types:OTHER' or ../oc-lldp:name='oc-lldp-types:REPEATER' or ../oc-lldp:name='oc-lldp-types:MAC_BRIDGE' or ../oc-lldp:name='oc-lldp-types:WLAN_ACCESS_POINT' or ../oc-lldp:name='oc-lldp-types:ROUTER' or ../oc-lldp:name='oc-lldp-types:TELEPHONE' or ../oc-lldp:name='oc-lldp-types:DOCSIS_CABLE_DEVICE' or ../oc-lldp:name='oc-lldp-types:STATION_ONLY'" { + error-message "Only supports OTHER,REPEATER,MAC_BRIDGE,WLAN_ACCESS_POINT,ROUTER,TELEPHONE,DOCSIS_CABLE_DEVICE,STATION_ONLY on device model"; + } + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:lldp-items/top:inst-items/top:if-items/top:If-list/top:adj-items/top:AdjEp-list/top:capability + * Transformation Function: openconfig_lldp_interface_neighbor_capability_state_name + */ + deviation /oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:neighbors/oc-lldp:neighbor/oc-lldp:capabilities/oc-lldp:capability/oc-lldp:state/oc-lldp:name { + deviate add { + must "../oc-lldp:name='oc-lldp-types:OTHER' or ../oc-lldp:name='oc-lldp-types:REPEATER' or ../oc-lldp:name='oc-lldp-types:MAC_BRIDGE' or ../oc-lldp:name='oc-lldp-types:WLAN_ACCESS_POINT' or ../oc-lldp:name='oc-lldp-types:ROUTER' or ../oc-lldp:name='oc-lldp-types:TELEPHONE' or ../oc-lldp:name='oc-lldp-types:DOCSIS_CABLE_DEVICE' or ../oc-lldp:name='oc-lldp-types:STATION_ONLY'" { + error-message "Only supports OTHER,REPEATER,MAC_BRIDGE,WLAN_ACCESS_POINT,ROUTER,TELEPHONE,DOCSIS_CABLE_DEVICE,STATION_ONLY on device model"; + } + } + } + + deviation /oc-lldp:lldp/oc-lldp:interfaces/oc-lldp:interface/oc-lldp:neighbors/oc-lldp:neighbor/oc-lldp:config { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-network-instance-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-network-instance-deviations.yang new file mode 100644 index 000000000..108ebc9ef --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-network-instance-deviations.yang @@ -0,0 +1,1674 @@ + +module cisco-nx-openconfig-network-instance-deviations { + + namespace "http://openconfig.net/yang/network-instance-deviations"; + + prefix "oc-netinst-devs"; + + import openconfig-network-instance { prefix oc-netinst; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-network-instance module + set for Cisco NXOS. + Copyright (c) 2015-2017 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-10-18" { + description + "Initial revision applicable to NXOS"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:config/oc-netinst:router-id { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:state/oc-netinst:router-id { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:encapsulation/oc-netinst:config/oc-netinst:encapsulation-type { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:encapsulation/oc-netinst:config/oc-netinst:label-allocation-mode { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:encapsulation/oc-netinst:config/oc-netinst:control-word { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:encapsulation/oc-netinst:state/oc-netinst:encapsulation-type { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:encapsulation/oc-netinst:state/oc-netinst:label-allocation-mode { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:encapsulation/oc-netinst:state/oc-netinst:control-word { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:inter-instance-policies/oc-netinst:apply-policy/oc-netinst:config/oc-netinst:import-policy { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:inter-instance-policies/oc-netinst:apply-policy/oc-netinst:config/oc-netinst:default-import-policy { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:inter-instance-policies/oc-netinst:apply-policy/oc-netinst:config/oc-netinst:export-policy { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:inter-instance-policies/oc-netinst:apply-policy/oc-netinst:config/oc-netinst:default-export-policy { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:inter-instance-policies/oc-netinst:apply-policy/oc-netinst:state/oc-netinst:import-policy { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:inter-instance-policies/oc-netinst:apply-policy/oc-netinst:state/oc-netinst:default-import-policy { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:inter-instance-policies/oc-netinst:apply-policy/oc-netinst:state/oc-netinst:export-policy { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:inter-instance-policies/oc-netinst:apply-policy/oc-netinst:state/oc-netinst:default-export-policy { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:table-connections/oc-netinst:table-connection/oc-netinst:config/oc-netinst:default-import-policy { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:table-connections/oc-netinst:table-connection/oc-netinst:state/oc-netinst:default-import-policy { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:config/oc-netinst:associated-address-families { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:state/oc-netinst:associated-address-families { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:tables/oc-netinst:table { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:connection-points/oc-netinst:connection-point { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:global/oc-netinst:config/oc-netinst:null-label { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:global/oc-netinst:state/oc-netinst:null-label { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:global/oc-netinst:interface-attributes/oc-netinst:interface { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:global/oc-netinst:reserved-label-blocks/oc-netinst:reserved-label-block { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:te-global-attributes/oc-netinst:srlgs/oc-netinst:srlg { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:te-global-attributes/oc-netinst:mpls-admin-groups/oc-netinst:admin-group { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:te-global-attributes/oc-netinst:te-lsp-timers/oc-netinst:config/oc-netinst:install-delay { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:te-global-attributes/oc-netinst:te-lsp-timers/oc-netinst:config/oc-netinst:cleanup-delay { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:te-global-attributes/oc-netinst:te-lsp-timers/oc-netinst:config/oc-netinst:reoptimize-timer { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:te-global-attributes/oc-netinst:te-lsp-timers/oc-netinst:state/oc-netinst:install-delay { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:te-global-attributes/oc-netinst:te-lsp-timers/oc-netinst:state/oc-netinst:cleanup-delay { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:te-global-attributes/oc-netinst:te-lsp-timers/oc-netinst:state/oc-netinst:reoptimize-timer { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:te-interface-attributes/oc-netinst:interface { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:sessions/oc-netinst:session { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:neighbors/oc-netinst:neighbor { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:config/oc-netinst:enable { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:config/oc-netinst:restart-time { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:config/oc-netinst:recovery-time { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:state/oc-netinst:enable { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:state/oc-netinst:restart-time { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:state/oc-netinst:recovery-time { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:soft-preemption/oc-netinst:config/oc-netinst:enable { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:soft-preemption/oc-netinst:config/oc-netinst:soft-preemption-timeout { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:soft-preemption/oc-netinst:state/oc-netinst:enable { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:soft-preemption/oc-netinst:state/oc-netinst:soft-preemption-timeout { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:hellos/oc-netinst:config/oc-netinst:hello-interval { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:hellos/oc-netinst:config/oc-netinst:refresh-reduction { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:hellos/oc-netinst:state/oc-netinst:hello-interval { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:hellos/oc-netinst:state/oc-netinst:refresh-reduction { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:path-timeouts { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:reservation-timeouts { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:rate-limited-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:in-path-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:in-path-error-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:in-path-tear-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:in-reservation-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:in-reservation-error-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:in-reservation-tear-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:in-hello-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:in-srefresh-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:in-ack-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:out-path-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:out-path-error-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:out-path-tear-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:out-reservation-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:out-reservation-error-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:out-reservation-tear-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:out-hello-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:out-srefresh-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:out-ack-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:rsvp-te/oc-netinst:interface-attributes/oc-netinst:interface { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:segment-routing/oc-netinst:aggregate-sid-counters/oc-netinst:aggregate-sid-counter { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:signaling-protocols/oc-netinst:segment-routing/oc-netinst:interfaces/oc-netinst:interface { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:lsps/oc-netinst:constrained-path/oc-netinst:named-explicit-paths/oc-netinst:named-explicit-path { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:lsps/oc-netinst:constrained-path/oc-netinst:tunnels/oc-netinst:tunnel { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:mpls/oc-netinst:lsps/oc-netinst:static-lsps/oc-netinst:static-lsp { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:segment-routing/oc-netinst:srgbs/oc-netinst:srgb { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:segment-routing/oc-netinst:srlbs/oc-netinst:srlb { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:policy-forwarding/oc-netinst:policies/oc-netinst:policy { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:policy-forwarding/oc-netinst:interfaces/oc-netinst:interface { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:policy-forwarding/oc-netinst:path-selection-groups/oc-netinst:path-selection-group { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:afts/oc-netinst:ipv4-unicast/oc-netinst:ipv4-entry { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:afts/oc-netinst:ipv6-unicast/oc-netinst:ipv6-entry { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:afts/oc-netinst:policy-forwarding/oc-netinst:policy-forwarding-entry { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:afts/oc-netinst:mpls/oc-netinst:label-entry { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:afts/oc-netinst:ethernet/oc-netinst:mac-entry { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:config/oc-netinst:default-metric { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:state/oc-netinst:identifier { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:state/oc-netinst:name { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:state/oc-netinst:enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:state/oc-netinst:default-metric { + 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:config/oc-netinst:authentication-check { + 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:config/oc-netinst:instance { + 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:config/oc-netinst:net { + 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:config/oc-netinst:maximum-area-addresses { + 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:config/oc-netinst:level-capability { + 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:config/oc-netinst:max-ecmp-paths { + 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:config/oc-netinst:poi-tlv { + 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:config/oc-netinst:iid-tlv { + 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:config/oc-netinst:fast-flooding { + 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:state/oc-netinst:authentication-check { + 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:state/oc-netinst:instance { + 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:state/oc-netinst:net { + 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:state/oc-netinst:maximum-area-addresses { + 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:state/oc-netinst:level-capability { + 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:state/oc-netinst:max-ecmp-paths { + 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:state/oc-netinst:poi-tlv { + 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:state/oc-netinst:iid-tlv { + 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:state/oc-netinst:fast-flooding { + 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:config/oc-netinst:set-bit { + 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:config/oc-netinst:set-bit-on-boot { + 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:config/oc-netinst:advertise-high-metric { + 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:state/oc-netinst:set-bit { + 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:state/oc-netinst:set-bit-on-boot { + 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:state/oc-netinst:advertise-high-metric { + 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 { + 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:attached-bit/oc-netinst:config/oc-netinst:ignore-bit { + 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:attached-bit/oc-netinst:config/oc-netinst:suppress-bit { + 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:attached-bit/oc-netinst:state/oc-netinst:ignore-bit { + 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:attached-bit/oc-netinst:state/oc-netinst:suppress-bit { + 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:reference-bandwidth/oc-netinst:config/oc-netinst:reference-bandwidth { + 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:reference-bandwidth/oc-netinst:state/oc-netinst:reference-bandwidth { + 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:nsr/oc-netinst:config/oc-netinst:enabled { + 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:nsr/oc-netinst:state/oc-netinst:enabled { + 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:enabled { + 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 { + 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:state/oc-netinst:enabled { + 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:state/oc-netinst:helper-only { + 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:config/oc-netinst:lsp-lifetime-interval { + 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:config/oc-netinst:lsp-refresh-interval { + 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:state/oc-netinst:lsp-lifetime-interval { + 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:state/oc-netinst:lsp-refresh-interval { + 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 { + 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-first-interval { + 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-second-interval { + 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:state/oc-netinst:spf-hold-interval { + 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:state/oc-netinst:spf-first-interval { + 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:state/oc-netinst:spf-second-interval { + 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:state/oc-netinst:adaptive-timer { + 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:lsp-generation/oc-netinst:config/oc-netinst:lsp-max-wait-interval { + 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:lsp-generation/oc-netinst:config/oc-netinst:lsp-first-wait-interval { + 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:lsp-generation/oc-netinst:config/oc-netinst:lsp-second-wait-interval { + 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:lsp-generation/oc-netinst:state/oc-netinst:lsp-max-wait-interval { + 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:lsp-generation/oc-netinst:state/oc-netinst:lsp-first-wait-interval { + 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:lsp-generation/oc-netinst:state/oc-netinst:lsp-second-wait-interval { + 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:lsp-generation/oc-netinst:state/oc-netinst:adaptive-timer { + 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:transport/oc-netinst:config/oc-netinst:lsp-mtu-size { + 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:transport/oc-netinst:state/oc-netinst:lsp-mtu-size { + 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 { + 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:post-session-up-delay { + 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:state/oc-netinst:enabled { + 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:state/oc-netinst:post-session-up-delay { + 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:igp-shortcuts/oc-netinst:afi { + 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 { + 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:segment-routing/oc-netinst:config/oc-netinst:enabled { + 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:segment-routing/oc-netinst:config/oc-netinst:srgb { + 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:segment-routing/oc-netinst:config/oc-netinst:srlb { + 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:segment-routing/oc-netinst:state/oc-netinst:enabled { + 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:segment-routing/oc-netinst:state/oc-netinst:srgb { + 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:segment-routing/oc-netinst:state/oc-netinst:srlb { + 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:inter-level-propagation-policies/oc-netinst:level1-to-level2/oc-netinst:config/oc-netinst:import-policy { + 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:inter-level-propagation-policies/oc-netinst:level1-to-level2/oc-netinst:config/oc-netinst:default-import-policy { + 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:inter-level-propagation-policies/oc-netinst:level1-to-level2/oc-netinst:state/oc-netinst:import-policy { + 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:inter-level-propagation-policies/oc-netinst:level1-to-level2/oc-netinst:state/oc-netinst:default-import-policy { + 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:inter-level-propagation-policies/oc-netinst:level2-to-level1/oc-netinst:config/oc-netinst:import-policy { + 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:inter-level-propagation-policies/oc-netinst:level2-to-level1/oc-netinst:config/oc-netinst:default-import-policy { + 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:inter-level-propagation-policies/oc-netinst:level2-to-level1/oc-netinst:state/oc-netinst:import-policy { + 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:inter-level-propagation-policies/oc-netinst:level2-to-level1/oc-netinst:state/oc-netinst:default-import-policy { + 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 { + 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 { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:pim/oc-netinst:global/oc-netinst:ssm/oc-netinst:config/oc-netinst:ssm-ranges { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:pim/oc-netinst:global/oc-netinst:ssm/oc-netinst:state/oc-netinst:ssm-ranges { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:pim/oc-netinst:global/oc-netinst:rendezvous-points/oc-netinst:rendezvous-point { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:pim/oc-netinst:global/oc-netinst:state/oc-netinst:neighbor-count { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:pim/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:hello-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:pim/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:join-prune-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:pim/oc-netinst:global/oc-netinst:state/oc-netinst:counters/oc-netinst:bootstrap-messages { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:pim/oc-netinst:global/oc-netinst:sources-joined/oc-netinst:source { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:pim/oc-netinst:interfaces/oc-netinst:interface { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:igmp/oc-netinst:global/oc-netinst:ssm/oc-netinst:mappings/oc-netinst:mapping { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:igmp/oc-netinst:interfaces/oc-netinst:interface { + deviate "not-supported"; + } +/********************************************************************* + * + * File: + * Author: + * + * Description: + * + * + * Copyright (c) 1985-2005, 2015-2016, 2020 by cisco Systems, Inc. + * All rights reserved. + * + * + * $Id: $ + * $Source: $ + * $Author: $ + * + ********************************************************************* + */ + + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:use-multiple-paths/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:use-multiple-paths/oc-netinst:state/oc-netinst:enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:use-multiple-paths/oc-netinst:ebgp/oc-netinst:config/oc-netinst:allow-multiple-as { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:use-multiple-paths/oc-netinst:ebgp/oc-netinst:state/oc-netinst:allow-multiple-as { + deviate "not-supported"; + } + 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 { + deviate "not-supported"; + } + 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:enable-aigp { + deviate "not-supported"; + } + 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:ignore-next-hop-igp-metric { + deviate "not-supported"; + } + 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 { + deviate "not-supported"; + } + 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:enable-aigp { + deviate "not-supported"; + } + 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:ignore-next-hop-igp-metric { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:graceful-restart/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:route-selection-options/oc-netinst:config/oc-netinst:always-compare-med { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:route-selection-options/oc-netinst:state/oc-netinst:always-compare-med { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:route-selection-options/oc-netinst:config/oc-netinst:ignore-as-path-length { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:route-selection-options/oc-netinst:state/oc-netinst:ignore-as-path-length { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:route-selection-options/oc-netinst:config/oc-netinst:external-compare-router-id { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:route-selection-options/oc-netinst:state/oc-netinst:external-compare-router-id { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:route-selection-options/oc-netinst:config/oc-netinst:enable-aigp { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:route-selection-options/oc-netinst:config/oc-netinst:ignore-next-hop-igp-metric { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:route-selection-options/oc-netinst:state/oc-netinst:enable-aigp { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:route-selection-options/oc-netinst:state/oc-netinst:ignore-next-hop-igp-metric { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:state/oc-netinst:enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:ebgp/oc-netinst:config/oc-netinst:allow-multiple-as { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:ebgp/oc-netinst:state/oc-netinst:allow-multiple-as { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:add-paths/oc-netinst:config/oc-netinst:send-max { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:add-paths/oc-netinst:state/oc-netinst:send-max { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv4-unicast/oc-netinst:config/oc-netinst:send-default-route { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv4-unicast/oc-netinst:state/oc-netinst:send-default-route { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv6-unicast/oc-netinst:config/oc-netinst:send-default-route { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv6-unicast/oc-netinst:state/oc-netinst:send-default-route { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:dynamic-neighbor-prefixes/oc-netinst:dynamic-neighbor-prefix { + deviate "not-supported"; + } + 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:config/oc-netinst:enabled { + deviate "not-supported"; + } + 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:config/oc-netinst:peer-type { + deviate "not-supported"; + } + 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:config/oc-netinst:route-flap-damping { + deviate "not-supported"; + } + 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:state/oc-netinst:enabled { + deviate "not-supported"; + } + 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:state/oc-netinst:peer-type { + deviate "not-supported"; + } + 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:state/oc-netinst:route-flap-damping { + deviate "not-supported"; + } + 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:state/oc-netinst:dynamically-configured { + deviate "not-supported"; + } + 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 { + deviate "not-supported"; + } + 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:state/oc-netinst:connect-retry { + deviate "not-supported"; + } + 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:tcp-mss { + deviate "not-supported"; + } + 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 { + deviate "not-supported"; + } + 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:local-address { + deviate "not-supported"; + } + 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:state/oc-netinst:tcp-mss { + deviate "not-supported"; + } + 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:state/oc-netinst:mtu-discovery { + deviate "not-supported"; + } + 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:error-handling/oc-netinst:config/oc-netinst:treat-as-withdraw { + deviate "not-supported"; + } + 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:error-handling/oc-netinst:state/oc-netinst:treat-as-withdraw { + deviate "not-supported"; + } + 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:error-handling/oc-netinst:state/oc-netinst:erroneous-update-messages { + deviate "not-supported"; + } + 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:graceful-restart/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + 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:graceful-restart/oc-netinst:config/oc-netinst:restart-time { + deviate "not-supported"; + } + 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:graceful-restart/oc-netinst:config/oc-netinst:stale-routes-time { + deviate "not-supported"; + } + 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:graceful-restart/oc-netinst:config/oc-netinst:helper-only { + deviate "not-supported"; + } + 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:ebgp-multihop/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + 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:as-path-options/oc-netinst:config/oc-netinst:replace-peer-as { + deviate "not-supported"; + } + 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:as-path-options/oc-netinst:state/oc-netinst:replace-peer-as { + deviate "not-supported"; + } + 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:use-multiple-paths/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + 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:use-multiple-paths/oc-netinst:state/oc-netinst:enabled { + deviate "not-supported"; + } + 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:use-multiple-paths/oc-netinst:ebgp/oc-netinst:config/oc-netinst:allow-multiple-as { + deviate "not-supported"; + } + 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:use-multiple-paths/oc-netinst:ebgp/oc-netinst:state/oc-netinst:allow-multiple-as { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:config/oc-netinst:import-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:config/oc-netinst:default-import-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:config/oc-netinst:export-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:config/oc-netinst:default-export-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:state/oc-netinst:import-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:state/oc-netinst:default-import-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:state/oc-netinst:export-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:state/oc-netinst:default-export-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:graceful-restart/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:add-paths/oc-netinst:config/oc-netinst:send-max { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:add-paths/oc-netinst:config/oc-netinst:eligible-prefix-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:add-paths/oc-netinst:state/oc-netinst:send-max { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:add-paths/oc-netinst:state/oc-netinst:eligible-prefix-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:apply-policy/oc-netinst:config/oc-netinst:default-import-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:apply-policy/oc-netinst:config/oc-netinst:default-export-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:apply-policy/oc-netinst:state/oc-netinst:default-import-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:apply-policy/oc-netinst:state/oc-netinst:default-export-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:state/oc-netinst:enabled { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:ebgp/oc-netinst:config/oc-netinst:allow-multiple-as { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:ebgp/oc-netinst:state/oc-netinst:allow-multiple-as { + deviate "not-supported"; + } + 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:config/oc-netinst:peer-type { + deviate "not-supported"; + } + 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:config/oc-netinst:route-flap-damping { + deviate "not-supported"; + } + 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:state/oc-netinst:peer-type { + deviate "not-supported"; + } + 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:state/oc-netinst:route-flap-damping { + deviate "not-supported"; + } + 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:timers/oc-netinst:config/oc-netinst:connect-retry { + deviate "not-supported"; + } + 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:timers/oc-netinst:state/oc-netinst:connect-retry { + deviate "not-supported"; + } + 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:tcp-mss { + deviate "not-supported"; + } + 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 "not-supported"; + } + 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:local-address { + deviate "not-supported"; + } + 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:state/oc-netinst:tcp-mss { + deviate "not-supported"; + } + 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:state/oc-netinst:mtu-discovery { + deviate "not-supported"; + } + 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:state/oc-netinst:local-address { + deviate "not-supported"; + } + 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:error-handling/oc-netinst:config/oc-netinst:treat-as-withdraw { + deviate "not-supported"; + } + 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:error-handling/oc-netinst:state/oc-netinst:treat-as-withdraw { + deviate "not-supported"; + } + 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:graceful-restart/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + 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:graceful-restart/oc-netinst:config/oc-netinst:restart-time { + deviate "not-supported"; + } + 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:graceful-restart/oc-netinst:config/oc-netinst:stale-routes-time { + deviate "not-supported"; + } + 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:graceful-restart/oc-netinst:config/oc-netinst:helper-only { + deviate "not-supported"; + } + 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:ebgp-multihop/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + 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:as-path-options/oc-netinst:config/oc-netinst:replace-peer-as { + deviate "not-supported"; + } + 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:as-path-options/oc-netinst:state/oc-netinst:replace-peer-as { + deviate "not-supported"; + } + 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:use-multiple-paths/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + 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:use-multiple-paths/oc-netinst:state/oc-netinst:enabled { + deviate "not-supported"; + } + 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:use-multiple-paths/oc-netinst:ebgp/oc-netinst:config/oc-netinst:allow-multiple-as { + deviate "not-supported"; + } + 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:use-multiple-paths/oc-netinst:ebgp/oc-netinst:config/oc-netinst:maximum-paths { + deviate "not-supported"; + } + 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:use-multiple-paths/oc-netinst:ebgp/oc-netinst:state/oc-netinst:allow-multiple-as { + deviate "not-supported"; + } + 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:use-multiple-paths/oc-netinst:ebgp/oc-netinst:state/oc-netinst:maximum-paths { + deviate "not-supported"; + } + 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:use-multiple-paths/oc-netinst:ibgp/oc-netinst:config/oc-netinst:maximum-paths { + deviate "not-supported"; + } + 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:use-multiple-paths/oc-netinst:ibgp/oc-netinst:state/oc-netinst:maximum-paths { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:config/oc-netinst:import-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:config/oc-netinst:default-import-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:config/oc-netinst:export-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:config/oc-netinst:default-export-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:state/oc-netinst:import-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:state/oc-netinst:default-import-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:state/oc-netinst:export-policy { + deviate "not-supported"; + } + 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:apply-policy/oc-netinst:state/oc-netinst:default-export-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:graceful-restart/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:add-paths/oc-netinst:config/oc-netinst:send-max { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:add-paths/oc-netinst:config/oc-netinst:eligible-prefix-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:add-paths/oc-netinst:state/oc-netinst:send-max { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:add-paths/oc-netinst:state/oc-netinst:eligible-prefix-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:state/oc-netinst:enabled { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:ebgp/oc-netinst:config/oc-netinst:allow-multiple-as { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:ebgp/oc-netinst:config/oc-netinst:maximum-paths { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:ebgp/oc-netinst:state/oc-netinst:allow-multiple-as { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:ebgp/oc-netinst:state/oc-netinst:maximum-paths { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:ibgp/oc-netinst:config/oc-netinst:maximum-paths { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:use-multiple-paths/oc-netinst:ibgp/oc-netinst:state/oc-netinst:maximum-paths { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:apply-policy/oc-netinst:config/oc-netinst:default-import-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:apply-policy/oc-netinst:config/oc-netinst:default-export-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:apply-policy/oc-netinst:state/oc-netinst:default-import-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:apply-policy/oc-netinst:state/oc-netinst:default-export-policy { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv4-unicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv4-unicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv6-unicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv6-unicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv4-labeled-unicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv4-labeled-unicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv6-labeled-unicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv6-labeled-unicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv4-unicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv4-unicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv6-unicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv6-unicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv4-multicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv4-multicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv6-multicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv6-multicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l2vpn-vpls/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l2vpn-vpls/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l2vpn-evpn/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l2vpn-evpn/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv4-unicast/oc-netinst:prefix-limit { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv6-unicast/oc-netinst:prefix-limit { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv4-labeled-unicast/oc-netinst:prefix-limit { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv6-labeled-unicast/oc-netinst:prefix-limit { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv4-unicast/oc-netinst:prefix-limit { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv6-unicast/oc-netinst:prefix-limit { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv4-multicast/oc-netinst:prefix-limit { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv6-multicast/oc-netinst:prefix-limit { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:l2vpn-vpls/oc-netinst:prefix-limit { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:l2vpn-evpn/oc-netinst:prefix-limit { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv4-unicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv4-unicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv6-unicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv6-unicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv4-labeled-unicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv4-labeled-unicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv6-labeled-unicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:ipv6-labeled-unicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv4-unicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv4-unicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv6-unicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv6-unicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv4-multicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv4-multicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv6-multicast/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l3vpn-ipv6-multicast/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l2vpn-vpls/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l2vpn-vpls/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l2vpn-evpn/oc-netinst:prefix-limit/oc-netinst:state/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:l2vpn-evpn/oc-netinst:prefix-limit/oc-netinst:config/oc-netinst:prevent-teardown { + deviate "not-supported"; + } + 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:afi-safis/oc-netinst:afi-safi/oc-netinst:state/oc-netinst:prefixes/oc-netinst:installed { + deviate "not-supported"; + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:af-items/top:DomAf-list/top:adminDist-items/top:eDist + * Transformation Function: conv_oc_nx_glob_route_distance + */ + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:default-route-distance/oc-netinst:config/oc-netinst:external-route-distance { + deviate add { + default "20"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:af-items/top:DomAf-list/top:adminDist-items/top:iDist + * Transformation Function: conv_oc_nx_glob_route_distance + */ + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:default-route-distance/oc-netinst:config/oc-netinst:internal-route-distance { + deviate add { + default "200"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:gr-items/top:ctrl + * Transformation Function: conv_oc_nx_glob_gr_enabled + */ + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:config/oc-netinst:enabled { + deviate add { + default "true"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:gr-items/top:restartIntvl + * Transformation Function: conv_oc_nx_glob_gr_restart_time + */ + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:config/oc-netinst:restart-time { + deviate add { + default "120"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:gr-items/top:staleIntvl + * Transformation Function: conv_oc_nx_glob_gr_stale_route_time + */ + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:config/oc-netinst:stale-routes-time { + deviate add { + default "300"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:gr-items/top:ctrl + * Transformation Function: conv_oc_nx_glob_gr_helper_only + */ + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:config/oc-netinst:helper-only { + deviate add { + default "false"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:af-items/top:DomAf-list/top:maxExtEcmp + * Transformation Function: conv_oc_nx_glob_max_paths + */ + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:use-multiple-paths/oc-netinst:ebgp/oc-netinst:config/oc-netinst:maximum-paths { + deviate replace { + default "1"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:af-items/top:DomAf-list/top:maxEcmp + * Transformation Function: conv_oc_nx_glob_max_paths + */ + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:use-multiple-paths/oc-netinst:ibgp/oc-netinst:config/oc-netinst:maximum-paths { + deviate replace { + default "1"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:peer-items/top:Peer-list/top:holdIntvl + * Transformation Function: conv_oc_nx_peer_hold_time + */ + 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:hold-time { + deviate replace { + default "180"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:peer-items/top:Peer-list/top:kaIntvl + * Transformation Function: conv_oc_nx_peer_keepalive_interval + */ + 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:keepalive-interval { + deviate replace { + default "60"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:peer-items/top:Peer-list/top:af-items/top:PeerAf-list/top:advIntvl + * Transformation Function: conv_oc_nx_peer_min_advertisement_interval + */ + 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:minimum-advertisement-interval { + deviate replace { + default "0"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:peer-items/top:Peer-list/top:logNbrChgs + * Transformation Function: conv_oc_nx_peer_log_state_changes + */ + 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:logging-options/oc-netinst:config/oc-netinst:log-neighbor-state-changes { + deviate replace { + default "false"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:peer-items/top:Peer-list/top:ttl + * Transformation Function: conv_oc_nx_peer_ebgp_multihop_ttl + */ + 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:ebgp-multihop/oc-netinst:config/oc-netinst:multihop-ttl { + deviate add { + default "1"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:peercont-items/top:PeerCont-list/top:holdIntvl + * Transformation Function: conv_oc_nx_peer_group_hold_time + */ + 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:timers/oc-netinst:config/oc-netinst:hold-time { + deviate replace { + default "180"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:peercont-items/top:PeerCont-list/top:kaIntvl + * Transformation Function: conv_oc_nx_peer_group_keepalive_interval + */ + 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:timers/oc-netinst:config/oc-netinst:keepalive-interval { + deviate replace { + default "60"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:peercont-items/top:PeerCont-list/top:af-items/top:PeerAf-list/top:advIntvl + * Transformation Function: conv_oc_nx_peer_group_min_advertisement_interval + */ + 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:timers/oc-netinst:config/oc-netinst:minimum-advertisement-interval { + deviate replace { + default "0"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:peercont-items/top:PeerCont-list/top:logNbrChgs + * Transformation Function: conv_oc_nx_peer_group_log_state_changes + */ + 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:logging-options/oc-netinst:config/oc-netinst:log-neighbor-state-changes { + deviate replace { + default "false"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:peercont-items/top:PeerCont-list/top:ttl + * Transformation Function: conv_oc_nx_peer_group_ebgp_multihop_ttl + */ + 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:ebgp-multihop/oc-netinst:config/oc-netinst:multihop-ttl { + deviate add { + default "1"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:af-items/top:DomAf-list/top:interleak-items/top:InterLeakP-list/top:rtMap + * Transformation Function: conv_oc_nx_glob_af_interleak_rt_map + */ + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:table-connections/oc-netinst:table-connection/oc-netinst:config/oc-netinst:import-policy { + deviate add { + max-elements "1"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:af-items/top:DomAf-list/top:interleak-items/top:InterLeakP-list/top:rtMap + * Transformation Function: conv_oc_nx_glob_af_interleak_rt_map + */ + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:table-connections/oc-netinst:table-connection/oc-netinst:state/oc-netinst:import-policy { + deviate add { + max-elements "1"; + } + } + +/* Mapped to device model + * Device Model Target: /top:System/top:bgp-items/top:inst-items/top:dom-items/top:Dom-list/top:af-items/top:DomAf-list/top:supprInactive + * Transformation Function: conv_oc_nx_glob_af_advertise_inactive_routes + */ + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:bgp/oc-netinst:global/oc-netinst:afi-safis/oc-netinst:afi-safi/oc-netinst:route-selection-options/oc-netinst:config/oc-netinst:advertise-inactive-routes { + deviate replace { + default "true"; + } + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:config/oc-netinst:summary-route-cost-mode { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:config/oc-netinst:igp-shortcuts { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:config/oc-netinst:hide-transit-only-networks { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:state/oc-netinst:router-id { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:state/oc-netinst:summary-route-cost-mode { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:state/oc-netinst:igp-shortcuts { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:state/oc-netinst:log-adjacency-changes { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:state/oc-netinst:hide-transit-only-networks { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:spf/oc-netinst:state/oc-netinst:initial-delay { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:spf/oc-netinst:state/oc-netinst:maximum-delay { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:spf/oc-netinst:state/oc-netinst:timer-type { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:max-metric/oc-netinst:state/oc-netinst:set { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:max-metric/oc-netinst:state/oc-netinst:timeout { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:max-metric/oc-netinst:state/oc-netinst:include { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:max-metric/oc-netinst:state/oc-netinst:trigger { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:lsa-generation/oc-netinst:state/oc-netinst:initial-delay { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:lsa-generation/oc-netinst:state/oc-netinst:maximum-delay { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:lsa-generation/oc-netinst:state/oc-netinst:timer-type { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:config/oc-netinst:helper-only { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:state/oc-netinst:enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:graceful-restart/oc-netinst:state/oc-netinst:helper-only { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:mpls/oc-netinst:config/oc-netinst:traffic-engineering-extensions { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:mpls/oc-netinst:state/oc-netinst:traffic-engineering-extensions { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:mpls/oc-netinst:igp-ldp-sync/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:mpls/oc-netinst:igp-ldp-sync/oc-netinst:config/oc-netinst:post-session-up-delay { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:mpls/oc-netinst:igp-ldp-sync/oc-netinst:state/oc-netinst:enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:mpls/oc-netinst:igp-ldp-sync/oc-netinst:state/oc-netinst:post-session-up-delay { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:inter-area-propagation-policies/oc-netinst:inter-area-propagation-policy { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:state/oc-netinst:identifier { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:mpls/oc-netinst:config/oc-netinst:traffic-engineering-enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:mpls/oc-netinst:state/oc-netinst:traffic-engineering-enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:lsdb/oc-netinst:state/oc-netinst:identifier { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:lsdb/oc-netinst:lsa-types/oc-netinst:lsa-type { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:config/oc-netinst:hide-network { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:state/oc-netinst:id { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:state/oc-netinst:network-type { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:state/oc-netinst:priority { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:state/oc-netinst:multi-area-adjacency-primary { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:state/oc-netinst:authentication-type { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:state/oc-netinst:metric { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:state/oc-netinst:passive { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:state/oc-netinst:hide-network { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:interface-ref/oc-netinst:state/oc-netinst:interface { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:interface-ref/oc-netinst:state/oc-netinst:subinterface { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:timers/oc-netinst:state/oc-netinst:dead-interval { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:timers/oc-netinst:state/oc-netinst:hello-interval { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:timers/oc-netinst:state/oc-netinst:retransmission-interval { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:mpls/oc-netinst:config/oc-netinst:traffic-engineering-metric { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:mpls/oc-netinst:state/oc-netinst:traffic-engineering-metric { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:mpls/oc-netinst:igp-ldp-sync/oc-netinst:config/oc-netinst:enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:mpls/oc-netinst:igp-ldp-sync/oc-netinst:config/oc-netinst:post-session-up-delay { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:mpls/oc-netinst:igp-ldp-sync/oc-netinst:state/oc-netinst:enabled { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:mpls/oc-netinst:igp-ldp-sync/oc-netinst:state/oc-netinst:post-session-up-delay { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:mpls/oc-netinst:igp-ldp-sync/oc-netinst:state/oc-netinst:synchronized { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:lsa-filter/oc-netinst:config/oc-netinst:all { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:lsa-filter/oc-netinst:state/oc-netinst:all { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:neighbors/oc-netinst:neighbor { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:virtual-links/oc-netinst:virtual-link/oc-netinst:state/oc-netinst:remote-router-id { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:virtual-links/oc-netinst:virtual-link/oc-netinst:state/oc-netinst:priority { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:virtual-links/oc-netinst:virtual-link/oc-netinst:state/oc-netinst:dead-time { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:virtual-links/oc-netinst:virtual-link/oc-netinst:state/oc-netinst:designated-router { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:virtual-links/oc-netinst:virtual-link/oc-netinst:state/oc-netinst:backup-designated-router { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:virtual-links/oc-netinst:virtual-link/oc-netinst:state/oc-netinst:optional-capabilities { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:virtual-links/oc-netinst:virtual-link/oc-netinst:state/oc-netinst:last-established-time { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:virtual-links/oc-netinst:virtual-link/oc-netinst:state/oc-netinst:adjacency-state { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:virtual-links/oc-netinst:virtual-link/oc-netinst:state/oc-netinst:state-changes { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:virtual-links/oc-netinst:virtual-link/oc-netinst:state/oc-netinst:retranmission-queue-length { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:timers/oc-netinst:config/oc-netinst:dead-interval { + deviate add { + default "0"; + } + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:timers/oc-netinst:config/oc-netinst:hello-interval { + deviate add { + default "10"; + } + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:timers/oc-netinst:config/oc-netinst:retransmission-interval { + deviate add { + default "5"; + } + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:lsa-generation/oc-netinst:config/oc-netinst:initial-delay { + deviate add { + default "0"; + } + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:lsa-generation/oc-netinst:config/oc-netinst:maximum-delay { + deviate add { + default "5000"; + } + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:spf/oc-netinst:config/oc-netinst:initial-delay { + deviate add { + default "200"; + } + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:global/oc-netinst:timers/oc-netinst:spf/oc-netinst:config/oc-netinst:maximum-delay { + deviate add { + default "5000"; + } + } + + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:ospfv2/oc-netinst:areas/oc-netinst:area/oc-netinst:interfaces/oc-netinst:interface/oc-netinst:config/oc-netinst:priority { + deviate add { + default "1"; + } + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:static-routes/oc-netinst:static/oc-netinst:config/oc-netinst:set-tag { + 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:state/oc-netinst:prefix { + 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:state/oc-netinst:set-tag { + 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:recurse { + 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:index { + 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:next-hop { + 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:metric { + 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 { + 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:interface { + 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 { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:protocols/oc-netinst:protocol/oc-netinst:local-aggregates/oc-netinst:aggregate { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:fdb/oc-netinst:mac-table/oc-netinst:entries/oc-netinst:entry/oc-netinst:interface/oc-netinst:interface-ref/oc-netinst:config/oc-netinst:subinterface { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:fdb/oc-netinst:mac-table/oc-netinst:entries/oc-netinst:entry/oc-netinst:interface/oc-netinst:interface-ref/oc-netinst:state/oc-netinst:subinterface { + deviate "not-supported"; + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:fdb/oc-netinst:mac-table/oc-netinst:entries/oc-netinst:entry/oc-netinst:config/oc-netinst:mac-address { + deviate replace { + type string { + pattern '^[0-9A-F]{2}(:[0-9A-F]{2}){5}$'; + } + } + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:fdb/oc-netinst:mac-table/oc-netinst:entries/oc-netinst:entry/oc-netinst:state/oc-netinst:mac-address { + deviate replace { + type string { + pattern '^[0-9A-F]{2}(:[0-9A-F]{2}){5}$'; + } + } + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-network-instance-policy-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-network-instance-policy-deviations.yang new file mode 100644 index 000000000..8c4ddbe88 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-network-instance-policy-deviations.yang @@ -0,0 +1,45 @@ + +module cisco-nx-openconfig-network-instance-policy-deviations { + + namespace "http://openconfig.net/yang/network-instance/policy-deviations"; + + prefix "oc-ni-pol-devs"; + + import openconfig-network-instance-policy { prefix oc-ni-pol; } + import openconfig-policy-types { prefix oc-pol-types; } + import openconfig-routing-policy { prefix oc-rpol; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-network-instance-policy module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2020 by Cisco Systems, Inc. + All rights reserved."; + + revision "2020-02-21" { + description + "Initial revision applicable to NXOS"; + } + +/* Mapped to device model + * Device Model Target: /top:System/top:rpm-items/top:rtmap-items/top:Rule-list/top:ent-items/top:Entry-list/top:msrcprot-items/top:MatchSrcProto-list/top:proto + * Transformation Function: oc_proto_identifier_to_src_proto + */ + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-ni-pol:match-protocol-instance/oc-ni-pol:config/oc-ni-pol:protocol-identifier { + deviate add { + must "../oc-ni-pol:protocol-identifier='oc-pol-types:BGP' or ../oc-ni-pol:protocol-identifier='oc-pol-types:ISIS' or ../oc-ni-pol:protocol-identifier='oc-pol-types:OSPF' or ../oc-ni-pol:protocol-identifier='oc-pol-types:OSPF3' or ../oc-ni-pol:protocol-identifier='oc-pol-types:STATIC' or ../oc-ni-pol:protocol-identifier='oc-pol-types:DIRECTLY_CONNECTED' or ../oc-ni-pol:protocol-identifier='oc-pol-types:LOCAL_AGGREGATE'" { + error-message "Only supports BGP, ISIS, OSPF, OSPF3, STATIC, DIRECTLY_CONNECTED and LOCAL_AGGREGATE on device model"; + } + } + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-ospf-policy-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-ospf-policy-deviations.yang new file mode 100644 index 000000000..89a254ed2 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-ospf-policy-deviations.yang @@ -0,0 +1,47 @@ + +module cisco-nx-openconfig-ospf-policy-deviations { + + namespace "http://openconfig.net/yang/ospf-policy-deviations"; + + prefix "oc-ospf-pol-devs"; + + import openconfig-ospf-policy { prefix oc-ospf-pol; } + import openconfig-routing-policy { prefix oc-rpol; } + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-ospf-policy module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2020 by Cisco Systems, Inc. + All rights reserved."; + + revision "2018-05-18" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-ospf-pol:ospf-conditions/oc-ospf-pol:config/oc-ospf-pol:area-eq { + deviate replace { + type uint32; + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-ospf-pol:ospf-conditions/oc-ospf-pol:state/oc-ospf-pol:area-eq { + deviate replace { + type uint32; + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-ospf-pol:ospf-actions/oc-ospf-pol:config/oc-ospf-pol:set-area { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-ospf-pol:ospf-actions/oc-ospf-pol:state/oc-ospf-pol:set-area { + deviate "not-supported"; + } +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-cpu-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-cpu-deviations.yang new file mode 100644 index 000000000..38f83449c --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-cpu-deviations.yang @@ -0,0 +1,38 @@ + +module cisco-nx-openconfig-platform-cpu-deviations { + + namespace "http://openconfig.net/yang/platform/cpu-deviations"; + + prefix "oc-cpu-devs"; + + import openconfig-platform-cpu { prefix oc-cpu; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-platform { prefix oc-platform; } + import openconfig-types { prefix oc-types; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-platform-cpu module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2019 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-09-23" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-platform:components/oc-platform:component/oc-platform:cpu/oc-cpu:utilization/oc-cpu:state/oc-cpu:interval { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-deviations.yang new file mode 100644 index 000000000..dc9ee1bd6 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-deviations.yang @@ -0,0 +1,70 @@ + +module cisco-nx-openconfig-platform-deviations { + + namespace "http://openconfig.net/yang/platform-deviations"; + + prefix "oc-platform-devs"; + + import openconfig-platform { prefix oc-platform; } + import openconfig-alarm-types { prefix oc-alarm-types; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-platform-types { prefix oc-platform-types; } + import openconfig-yang-types { prefix oc-yang; } + import openconfig-types { prefix oc-types; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-platform module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2019 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-09-23" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-platform:components/oc-platform:component/oc-platform:config/oc-platform:name { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-platform:state/oc-platform:firmware-version { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-platform:state/oc-platform:parent { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-platform:state/oc-platform:temperature/oc-platform:avg { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-platform:state/oc-platform:temperature/oc-platform:min { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-platform:state/oc-platform:temperature/oc-platform:max { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-platform:state/oc-platform:temperature/oc-platform:interval { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-platform:state/oc-platform:temperature/oc-platform:min-time { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-platform:state/oc-platform:temperature/oc-platform:max-time { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-platform:properties/oc-platform:property { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-platform:subcomponents/oc-platform:subcomponent { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-ext-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-ext-deviations.yang new file mode 100644 index 000000000..55a39b0fa --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-ext-deviations.yang @@ -0,0 +1,37 @@ + +module cisco-nx-openconfig-platform-ext-deviations { + + namespace "http://openconfig.net/yang/platform/extension-deviations"; + + prefix "oc-platform-ext-devs"; + + import openconfig-platform-ext { prefix oc-platform-ext; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-platform { prefix oc-platform; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-platform-ext module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2019 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-09-23" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-platform:components/oc-platform:component/oc-platform:state/oc-platform-ext:entity-id { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-fan-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-fan-deviations.yang new file mode 100644 index 000000000..7a8efb1ac --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-fan-deviations.yang @@ -0,0 +1,33 @@ + +module cisco-nx-openconfig-platform-fan-deviations { + + namespace "http://openconfig.net/yang/platform/fan-deviations"; + + prefix "oc-fan-devs"; + + import openconfig-platform-fan { prefix oc-fan; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-platform { prefix oc-platform; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-platform-fan module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2019 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-09-23" { + description + "Initial revision applicable to NXOS"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-linecard-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-linecard-deviations.yang new file mode 100644 index 000000000..455aa51f7 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-linecard-deviations.yang @@ -0,0 +1,34 @@ + +module cisco-nx-openconfig-platform-linecard-deviations { + + namespace "http://openconfig.net/yang/platform/linecard-deviations"; + + prefix "oc-linecard-devs"; + + import openconfig-platform-linecard { prefix oc-linecard; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-platform { prefix oc-platform; } + import openconfig-platform-types { prefix oc-platform-types; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-platform-linecard module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2019 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-09-23" { + description + "Initial revision applicable to NXOS"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-port-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-port-deviations.yang new file mode 100644 index 000000000..e7468f503 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-port-deviations.yang @@ -0,0 +1,39 @@ + +module cisco-nx-openconfig-platform-port-deviations { + + namespace "http://openconfig.net/yang/platform/port-deviations"; + + prefix "oc-port-devs"; + + import openconfig-platform-port { prefix oc-port; } + import openconfig-if-ethernet { prefix oc-eth; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-platform { prefix oc-platform; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-platform-port module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2019 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-09-23" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-if:interfaces/oc-if:interface/oc-if:state/oc-port:hardware-port { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-psu-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-psu-deviations.yang new file mode 100644 index 000000000..133b90546 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-psu-deviations.yang @@ -0,0 +1,38 @@ + +module cisco-nx-openconfig-platform-psu-deviations { + + namespace "http://openconfig.net/yang/platform/psu-deviations"; + + prefix "oc-platform-psu-devs"; + + import openconfig-platform-psu { prefix oc-platform-psu; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-platform { prefix oc-platform; } + import openconfig-types { prefix oc-types; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-platform-psu module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2019 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-09-23" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-platform:components/oc-platform:component/oc-platform:power-supply/oc-platform:config/oc-platform-psu:enabled { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-transceiver-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-transceiver-deviations.yang new file mode 100644 index 000000000..28418d06e --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-platform-transceiver-deviations.yang @@ -0,0 +1,209 @@ + +module cisco-nx-openconfig-platform-transceiver-deviations { + + namespace "http://openconfig.net/yang/platform/transceiver-deviations"; + + prefix "oc-transceiver-devs"; + + import openconfig-platform-transceiver { prefix oc-transceiver; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-transport-types { prefix oc-opt-types; } + import openconfig-platform { prefix oc-platform; } + import openconfig-platform-types { prefix oc-platform-types; } + import openconfig-platform-port { prefix oc-port; } + import openconfig-types { prefix oc-types; } + import openconfig-yang-types { prefix oc-yang; } + import ietf-yang-types { prefix yang; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-platform-transceiver module + set for Cisco NXOS. + Copyright (c) 2015-2017 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-11-02" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:config/oc-transceiver:enabled { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:config/oc-transceiver:form-factor-preconf { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:config/oc-transceiver:ethernet-pmd-preconf { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:config/oc-transceiver:fec-mode { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:enabled { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:form-factor-preconf { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:ethernet-pmd-preconf { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:fec-mode { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:ethernet-pmd { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:connector-type { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:sonet-sdh-compliance-code { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:otn-compliance-code { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:fault-condition { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:fec-status { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:fec-uncorrectable-blocks { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:fec-uncorrectable-words { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:fec-corrected-bytes { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:fec-corrected-bits { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:pre-fec-ber/oc-transceiver:instant { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:pre-fec-ber/oc-transceiver:avg { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:pre-fec-ber/oc-transceiver:min { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:pre-fec-ber/oc-transceiver:max { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:pre-fec-ber/oc-transceiver:interval { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:pre-fec-ber/oc-transceiver:min-time { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:pre-fec-ber/oc-transceiver:max-time { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:post-fec-ber/oc-transceiver:instant { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:post-fec-ber/oc-transceiver:avg { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:post-fec-ber/oc-transceiver:min { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:post-fec-ber/oc-transceiver:max { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:post-fec-ber/oc-transceiver:interval { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:post-fec-ber/oc-transceiver:min-time { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:post-fec-ber/oc-transceiver:max-time { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:output-power/oc-transceiver:instant { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:output-power/oc-transceiver:avg { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:output-power/oc-transceiver:min { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:output-power/oc-transceiver:max { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:output-power/oc-transceiver:interval { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:output-power/oc-transceiver:min-time { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:output-power/oc-transceiver:max-time { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:input-power/oc-transceiver:instant { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:input-power/oc-transceiver:avg { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:input-power/oc-transceiver:min { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:input-power/oc-transceiver:max { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:input-power/oc-transceiver:interval { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:input-power/oc-transceiver:min-time { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:input-power/oc-transceiver:max-time { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:laser-bias-current/oc-transceiver:instant { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:laser-bias-current/oc-transceiver:avg { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:laser-bias-current/oc-transceiver:min { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:laser-bias-current/oc-transceiver:max { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:laser-bias-current/oc-transceiver:interval { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:laser-bias-current/oc-transceiver:min-time { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:state/oc-transceiver:laser-bias-current/oc-transceiver:max-time { + deviate "not-supported"; + } + deviation /oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:state/oc-transceiver:transceiver { + deviate "not-supported"; + } + deviation /oc-if:interfaces/oc-if:interface/oc-if:state/oc-transceiver:physical-channel { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-qos-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-qos-deviations.yang new file mode 100644 index 000000000..5df8ee1ec --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-qos-deviations.yang @@ -0,0 +1,242 @@ + +module cisco-nx-openconfig-qos-deviations { + + namespace "http://openconfig.net/yang/qos-deviations"; + + prefix "oc-qos-devs"; + + import openconfig-qos { prefix oc-qos; } + import openconfig-extensions { prefix oc-ext; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-qos module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2020 by Cisco Systems, Inc. + All rights reserved."; + + revision "2020-03-05" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:queues/oc-qos:queue/oc-qos:state/oc-qos:max-queue-len { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:queues/oc-qos:queue/oc-qos:state/oc-qos:max-queue-len { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:queues/oc-qos:queue/oc-qos:state/oc-qos:avg-queue-len { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:queues/oc-qos:queue/oc-qos:state/oc-qos:avg-queue-len { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:queues/oc-qos:queue/oc-qos:state/oc-qos:transmit-pkts { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:queues/oc-qos:queue/oc-qos:state/oc-qos:transmit-octets { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:scheduler-policy/oc-qos:schedulers/oc-qos:scheduler/oc-qos:state/oc-qos:conforming-pkts { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:scheduler-policy/oc-qos:schedulers/oc-qos:scheduler/oc-qos:state/oc-qos:conforming-pkts { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:scheduler-policy/oc-qos:schedulers/oc-qos:scheduler/oc-qos:state/oc-qos:exceeding-pkts { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:scheduler-policy/oc-qos:schedulers/oc-qos:scheduler/oc-qos:state/oc-qos:exceeding-pkts { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:scheduler-policy/oc-qos:schedulers/oc-qos:scheduler/oc-qos:state/oc-qos:exceeding-octets { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:scheduler-policy/oc-qos:schedulers/oc-qos:scheduler/oc-qos:state/oc-qos:violating-pkts { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:scheduler-policy/oc-qos:schedulers/oc-qos:scheduler/oc-qos:state/oc-qos:violating-pkts { + deviate "not-supported"; + } +/* Mapped to device model + * Device Model Target: openconfig-qos/qos/interfaces/interface[interface-id]/input/scheduler-policy/schedulers/scheduler[sequence] + * Transformation Function: oc_qos_in_intf_police_stats_cmapname + */ + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:scheduler-policy/oc-qos:schedulers/oc-qos:scheduler/oc-qos:sequence { + deviate replace { + type string { + length "1..40"; + } + } + } +/* Mapped to device model + * Device Model Target: openconfig-qos/qos/interfaces/interface[interface-id]/input/scheduler-policy/schedulers/scheduler[sequence] + * Transformation Function: oc_qos_in_intf_police_stats_cmapname + */ + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:scheduler-policy/oc-qos:schedulers/oc-qos:scheduler/oc-qos:state/oc-qos:sequence { + deviate replace { + type string { + length "1..40"; + } + } + } + +/* Mapped to device model + * Device Model Target: openconfig-qos/qos/interfaces/interface[interface-id]/output/scheduler-policy/schedulers/scheduler[sequence] + * Transformation Function: oc_qos_out_intf_police_stats_cmapname + */ + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:scheduler-policy/oc-qos:schedulers/oc-qos:scheduler/oc-qos:sequence { + deviate replace { + type string { + length "1..40"; + } + } + } +/* Mapped to device model + * Device Model Target: openconfig-qos/qos/interfaces/interface[interface-id]/output/scheduler-policy/schedulers/scheduler[sequence] + * Transformation Function: oc_qos_out_intf_police_stats_cmapname + */ + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:scheduler-policy/oc-qos:schedulers/oc-qos:scheduler/oc-qos:state/oc-qos:sequence { + deviate replace { + type string { + length "1..40"; + } + } + } +/* Mapped to device model + * Device Model Target: openconfig-qos/qos/interfaces/interface[interface-id]/input/classifiers/classifier/type[type] + */ + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:classifiers/oc-qos:classifier/oc-qos:type { + deviate replace { + type string; + } + deviate add { + must "../oc-qos:type='qos'" { + error-message "Only supports qos on device model"; + } + } + } +/* Mapped to device model + * Device Model Target: openconfig-qos/qos/interfaces/interface[interface-id]/output/classifiers/classifier/type[type] + */ + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:classifiers/oc-qos:classifier/oc-qos:type { + deviate replace { + type string; + } + deviate add { + must "../oc-qos:type='qos'" { + error-message "Only supports qos on device model"; + } + } + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:classifiers/oc-qos:classifier/oc-qos:config/oc-qos:type { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:classifiers/oc-qos:classifier/oc-qos:config/oc-qos:type { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:classifiers/oc-qos:classifier/oc-qos:state/oc-qos:type { + deviate replace { + type string; + } + deviate add { + must "../oc-qos:type='qos'" { + error-message "Only supports qos on device model"; + } + } + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:classifiers/oc-qos:classifier/oc-qos:state/oc-qos:type { + deviate replace { + type string; + } + deviate add { + must "../oc-qos:type='qos'" { + error-message "Only supports qos on device model"; + } + } + } + + deviation /oc-qos:qos/oc-qos:config { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:classifiers { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:scheduler-policies { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:queues { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:forwarding-groups { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:config { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:state { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:interface-ref/oc-qos:config { + deviate "not-supported"; + } + + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:config { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:state { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:config { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:state { + deviate "not-supported"; + } + + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:virtual-output-queues { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:interface-ref { + deviate "not-supported"; + } + + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:classifiers/oc-qos:classifier/oc-qos:config { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:classifiers/oc-qos:classifier/oc-qos:config { + deviate "not-supported"; + } + + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:classifiers/oc-qos:classifier/oc-qos:terms/oc-qos:term/oc-qos:config { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:classifiers/oc-qos:classifier/oc-qos:terms/oc-qos:term/oc-qos:config { + deviate "not-supported"; + } + + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:queues/oc-qos:queue/oc-qos:config { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:queues/oc-qos:queue/oc-qos:config { + deviate "not-supported"; + } + + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:input/oc-qos:scheduler-policy/oc-qos:config { + deviate "not-supported"; + } + deviation /oc-qos:qos/oc-qos:interfaces/oc-qos:interface/oc-qos:output/oc-qos:scheduler-policy/oc-qos:config { + deviate "not-supported"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-relay-agent-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-relay-agent-deviations.yang new file mode 100644 index 000000000..2dbb43dac --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-relay-agent-deviations.yang @@ -0,0 +1,222 @@ + +module cisco-nx-openconfig-relay-agent-deviations { + + namespace "http://openconfig.net/yang/relay-agent-deviations"; + + prefix "oc-relay-devs"; + + import openconfig-relay-agent { prefix oc-relay; } + import openconfig-interfaces { prefix oc-if; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-relay-agent module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2020 by Cisco Systems, Inc. + All rights reserved."; + + revision "2018-05-18" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:config/oc-relay:enable { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:enable { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:total-dropped { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:invalid-opcode { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:invalid-options { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:bootrequest-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcp-decline-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcp-discover-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcp-inform-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcp-release-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcp-request-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:bootrequest-sent { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:bootreply-sent { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcp-offer-sent { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcp-ack-sent { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcp-nack-sent { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:interface-ref/oc-relay:config/oc-relay:subinterface { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:interface-ref/oc-relay:state/oc-relay:subinterface { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:agent-information-option/oc-relay:config/oc-relay:enable { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:agent-information-option/oc-relay:config/oc-relay:circuit-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:agent-information-option/oc-relay:config/oc-relay:remote-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:agent-information-option/oc-relay:state/oc-relay:enable { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:agent-information-option/oc-relay:state/oc-relay:circuit-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:agent-information-option/oc-relay:state/oc-relay:remote-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:agent-information-option/oc-relay:state/oc-relay:sent-circuit-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:interfaces/oc-relay:interface/oc-relay:agent-information-option/oc-relay:state/oc-relay:sent-remote-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:options/oc-relay:config/oc-relay:enable-interface-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:options/oc-relay:config/oc-relay:enable-remote-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:options/oc-relay:state/oc-relay:enable-interface-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:options/oc-relay:state/oc-relay:enable-remote-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:config/oc-relay:enable { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:enable { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:total-dropped { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:invalid-opcode { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:invalid-options { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcpv6-solicit-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcpv6-decline-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcpv6-request-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcpv6-release-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcpv6-confirm-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcpv6-rebind-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcpv6-info-request-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcpv6-relay-reply-received { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcpv6-adverstise-sent { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcpv6-reply-sent { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcpv6-reconfigure-sent { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:state/oc-relay:counters/oc-relay:dhcpv6-relay-forw-sent { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:interface-ref/oc-relay:config/oc-relay:subinterface { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:interface-ref/oc-relay:state/oc-relay:subinterface { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:options/oc-relay:config/oc-relay:enable-interface-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:options/oc-relay:config/oc-relay:enable-remote-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:options/oc-relay:config/oc-relay:interface-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:options/oc-relay:config/oc-relay:remote-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:options/oc-relay:state/oc-relay:enable-interface-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:options/oc-relay:state/oc-relay:enable-remote-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:options/oc-relay:state/oc-relay:interface-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:options/oc-relay:state/oc-relay:remote-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:options/oc-relay:state/oc-relay:sent-interface-id { + deviate "not-supported"; + } + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:interfaces/oc-relay:interface/oc-relay:options/oc-relay:state/oc-relay:sent-remote-id { + deviate "not-supported"; + } + + deviation /oc-relay:relay-agent/oc-relay:dhcp/oc-relay:config/oc-relay:enable-relay-agent { + deviate replace { + default "true"; + } + } + + deviation /oc-relay:relay-agent/oc-relay:dhcpv6/oc-relay:config/oc-relay:enable-relay-agent { + deviate replace { + default "true"; + } + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-routing-policy-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-routing-policy-deviations.yang new file mode 100644 index 000000000..b37984703 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-routing-policy-deviations.yang @@ -0,0 +1,112 @@ + +module cisco-nx-openconfig-routing-policy-deviations { + + namespace "http://openconfig.net/yang/routing-policy-deviations"; + + prefix "oc-rpol-devs"; + + import openconfig-routing-policy { prefix oc-rpol; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-routing-policy module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2020 by Cisco Systems, Inc. + All rights reserved."; + + revision "2018-05-18" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-rpol:routing-policy/oc-rpol:defined-sets/oc-rpol:neighbor-sets/oc-rpol:neighbor-set { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:defined-sets/oc-rpol:tag-sets/oc-rpol:tag-set { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:state/oc-rpol:name { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:config/oc-rpol:call-policy { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:config/oc-rpol:install-protocol-eq { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:state/oc-rpol:call-policy { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:state/oc-rpol:install-protocol-eq { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:match-interface/oc-rpol:config/oc-rpol:interface { + deviate replace { + type string; + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:match-interface/oc-rpol:config/oc-rpol:subinterface { + deviate replace { + type string; + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:match-interface/oc-rpol:state/oc-rpol:interface { + deviate replace { + type string; + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:match-interface/oc-rpol:state/oc-rpol:subinterface { + deviate replace { + type string; + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:match-neighbor-set/oc-rpol:config/oc-rpol:neighbor-set { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:match-neighbor-set/oc-rpol:config/oc-rpol:match-set-options { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:match-neighbor-set/oc-rpol:state/oc-rpol:neighbor-set { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:match-neighbor-set/oc-rpol:state/oc-rpol:match-set-options { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:match-tag-set/oc-rpol:config/oc-rpol:match-set-options { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:match-tag-set/oc-rpol:config/oc-rpol:tag-set { + deviate replace { + type string; + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:match-tag-set/oc-rpol:state/oc-rpol:tag-set { + deviate replace { + type string; + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:conditions/oc-rpol:match-tag-set/oc-rpol:state/oc-rpol:match-set-options { + deviate "not-supported"; + } + deviation /oc-rpol:routing-policy/oc-rpol:defined-sets/oc-rpol:prefix-sets/oc-rpol:prefix-set/oc-rpol:config/oc-rpol:mode { + deviate add { + must "../oc-rpol:mode='IPV4' or ../oc-rpol:mode='IPV6'" { + error-message "Only supports IPV4 and IPV6 on device model"; + } + } + } + deviation /oc-rpol:routing-policy/oc-rpol:policy-definitions/oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/oc-rpol:actions/oc-rpol:config/oc-rpol:policy-result { + deviate add { + default "ACCEPT_ROUTE"; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-spanning-tree-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-spanning-tree-deviations.yang new file mode 100644 index 000000000..f64907610 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-spanning-tree-deviations.yang @@ -0,0 +1,217 @@ + +module cisco-nx-openconfig-spanning-tree-deviations { + + namespace "http://openconfig.net/yang/spanning-tree-deviations"; + + prefix "oc-stp-devs"; + + import openconfig-spanning-tree { prefix oc-stp; } + + import openconfig-spanning-tree-types { prefix oc-stp-types; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-spanning-tree module + set for Cisco NXOS. + Copyright (c) 2015-2017 by Cisco Systems, Inc. + All rights reserved."; + + revision "2018-02-07" { + description + "Initial revision applicable to NXOS"; + } + deviation /oc-stp:stp/oc-stp:global/oc-stp:config/oc-stp:enabled-protocol { + deviate add { + max-elements 1; + must "../oc-stp:enabled-protocol='oc-stp-types:MSTP' + or ../oc-stp:enabled-protocol='oc-stp-types:RAPID_PVST'" { + error-message "Only supports MSTP or RAPID_PVST"; + } + } + } + deviation /oc-stp:stp/oc-stp:global/oc-stp:config/oc-stp:etherchannel-misconfig-guard { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:global/oc-stp:config/oc-stp:bpduguard-timeout-recovery { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:global/oc-stp:state/oc-stp:etherchannel-misconfig-guard { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:global/oc-stp:state/oc-stp:bpduguard-timeout-recovery { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:config/oc-stp:hello-time { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:config/oc-stp:max-age { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:config/oc-stp:forwarding-delay { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:config/oc-stp:hold-count { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:config/oc-stp:bridge-priority { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:state/oc-stp:hello-time { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:state/oc-stp:max-age { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:state/oc-stp:forwarding-delay { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:state/oc-stp:hold-count { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:state/oc-stp:bridge-priority { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:state/oc-stp:bridge-address { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:state/oc-stp:designated-root-priority { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:state/oc-stp:designated-root-address { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:state/oc-stp:root-port { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:state/oc-stp:root-cost { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:state/oc-stp:hold-time { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:state/oc-stp:topology-changes { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:state/oc-stp:last-topology-change { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rstp/oc-stp:interfaces/oc-stp:interface { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:mstp/oc-stp:config/oc-stp:hold-count { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:mstp/oc-stp:state/oc-stp:hold-count { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rapid-pvst/oc-stp:vlan/oc-stp:config/oc-stp:hold-count { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:rapid-pvst/oc-stp:vlan/oc-stp:state/oc-stp:hold-count { + deviate "not-supported"; + } + deviation /oc-stp:stp/oc-stp:mstp/oc-stp:mst-instances/oc-stp:mst-instance/oc-stp:config/oc-stp:bridge-priority { + deviate replace { + type uint32 { + range "1..61440"; + } + } + deviate add { + must "../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:4096' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:8192' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:12288' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:16384' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:20480' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:24576' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:28672' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:32768' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:36864' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:40960' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:45056' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:49152' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:53248' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:57344' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:61440'" { + error-message "Only supports 4096 8192 12288 16384 20480 24576 28672 32768 36864 40960 45056 49152 53248 57344 61440 on device model"; + } + } + } + deviation /oc-stp:stp/oc-stp:rapid-pvst/oc-stp:vlan/oc-stp:config/oc-stp:bridge-priority { + deviate replace { + type uint32 { + range "1..61440"; + } + } + deviate add { + must "../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:4096' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:8192' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:12288' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:16384' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:20480' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:24576' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:28672' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:32768' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:36864' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:40960' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:45056' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:49152' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:53248' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:57344' + or ../oc-stp:bridge-priority='oc-stp-types:stp-bridge-priority-type:61440'" { + error-message "Only supports 4096 8192 12288 16384 20480 24576 28672 32768 36864 40960 45056 49152 53248 57344 61440 on device model"; + } + } + } + deviation /oc-stp:stp/oc-stp:mstp/oc-stp:config/oc-stp:revision { + deviate replace { + type uint32 { + range "0..65535"; + } + } + } + deviation /oc-stp:stp/oc-stp:mstp/oc-stp:mst-instances/oc-stp:mst-instance/oc-stp:interfaces/oc-stp:interface/oc-stp:config/oc-stp:port-priority{ + deviate replace { + type uint32 { + range "1..224"; + } + } + deviate add { + must "../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:32' + or ../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:64' + or ../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:96' + or ../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:128' + or ../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:160' + or ../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:192' + or ../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:224'" { + error-message "Only supports 32 64 96 128 160 192 224 on device model"; + } + } + } + deviation /oc-stp:stp/oc-stp:rapid-pvst/oc-stp:vlan/oc-stp:interfaces/oc-stp:interface/oc-stp:config/oc-stp:port-priority{ + deviate replace { + type uint32 { + range "1..224"; + } + } + deviate add { + must "../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:32' + or ../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:64' + or ../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:96' + or ../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:128' + or ../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:160' + or ../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:192' + or ../oc-stp:port-priority='oc-stp-types:stp-port-priority-type:224'" { + error-message "Only supports 32 64 96 128 160 192 224 on device model"; + } + } + } +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-system-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-system-deviations.yang new file mode 100644 index 000000000..495824102 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-system-deviations.yang @@ -0,0 +1,360 @@ + +module cisco-nx-openconfig-system-deviations { + + namespace "http://openconfig.net/yang/system-deviations"; + + prefix "oc-sys-devs"; + + import openconfig-system { prefix oc-sys; } + import openconfig-aaa { prefix oc-aaa; } + import openconfig-alarms { prefix oc-alarms; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-inet-types { prefix oc-inet; } + import openconfig-system-logging { prefix oc-log; } + import openconfig-messages { prefix oc-messages; } + import openconfig-procmon { prefix oc-proc; } + import openconfig-system-management { prefix oc-sys-mgmt; } + import openconfig-system-terminal { prefix oc-sys-term; } + import openconfig-types { prefix oc-types; } + import openconfig-yang-types { prefix oc-yang; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-system module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2020 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-09-30" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-sys:system/oc-sys:config/oc-sys:hostname { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:config/oc-sys:domain-name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:config/oc-sys:login-banner { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:config/oc-sys:motd-banner { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:state/oc-sys:hostname { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:state/oc-sys:domain-name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:state/oc-sys:login-banner { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:state/oc-sys:motd-banner { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:state/oc-sys:current-datetime { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:state/oc-sys:boot-time { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:clock/oc-sys:config/oc-sys:timezone-name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:clock/oc-sys:state/oc-sys:timezone-name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:dns/oc-sys:config/oc-sys:search { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:dns/oc-sys:state/oc-sys:search { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:dns/oc-sys:servers/oc-sys:server { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:dns/oc-sys:host-entries/oc-sys:host-entry { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:config/oc-sys:enabled { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:config/oc-sys:ntp-source-address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:config/oc-sys:enable-ntp-auth { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:state/oc-sys:enabled { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:state/oc-sys:ntp-source-address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:state/oc-sys:enable-ntp-auth { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:state/oc-sys:auth-mismatch { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:ntp-keys/oc-sys:ntp-key { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:servers/oc-sys:server { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:config/oc-sys:protocol-version { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:config/oc-sys:rate-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:state/oc-sys:enable { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:state/oc-sys:protocol-version { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:state/oc-sys:timeout { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:state/oc-sys:rate-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:state/oc-sys:session-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:config/oc-sys:timeout { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:config/oc-sys:rate-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:config/oc-sys:session-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:state/oc-sys:enable { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:state/oc-sys:timeout { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:state/oc-sys:rate-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:state/oc-sys:session-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:logging/oc-sys:console/oc-sys:selectors/oc-sys:selector { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:logging/oc-sys:remote-servers/oc-sys:remote-server { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:state/oc-sys:authentication-method { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:admin-user/oc-sys:state/oc-sys:admin-password { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:admin-user/oc-sys:state/oc-sys:admin-password-hashed { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:admin-user/oc-sys:state/oc-sys:admin-username { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:users/oc-sys:user/oc-sys:state/oc-sys:username { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:users/oc-sys:user/oc-sys:state/oc-sys:password { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:users/oc-sys:user/oc-sys:state/oc-sys:password-hashed { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:users/oc-sys:user/oc-sys:state/oc-sys:ssh-key { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:users/oc-sys:user/oc-sys:state/oc-sys:role { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authorization/oc-sys:state/oc-sys:authorization-method { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authorization/oc-sys:events/oc-sys:event { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:accounting/oc-sys:state/oc-sys:accounting-method { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:accounting/oc-sys:events/oc-sys:event { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:state/oc-sys:name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:state/oc-sys:type { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:config/oc-sys:name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:timeout { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:connection-opens { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:connection-closes { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:connection-aborts { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:connection-failures { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:connection-timeouts { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:messages-sent { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:messages-received { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:errors-received { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:tacacs/oc-sys:config/oc-sys:source-address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:tacacs/oc-sys:state/oc-sys:port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:tacacs/oc-sys:state/oc-sys:secret-key { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:tacacs/oc-sys:state/oc-sys:source-address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:config/oc-sys:auth-port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:config/oc-sys:acct-port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:config/oc-sys:secret-key { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:config/oc-sys:source-address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:config/oc-sys:retransmit-attempts { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:auth-port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:acct-port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:secret-key { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:source-address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:retransmit-attempts { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:counters/oc-sys:retried-access-requests { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:counters/oc-sys:access-accepts { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:counters/oc-sys:access-rejects { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:counters/oc-sys:timeout-access-requests { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:processes/oc-sys:process { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:alarms/oc-sys:alarm { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:config/oc-sys:enable { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:config/oc-sys:port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:config/oc-sys:transport-security { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:config/oc-sys:certificate-id { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:config/oc-sys:listen-addresses { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:state/oc-sys:enable { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:state/oc-sys:port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:state/oc-sys:transport-security { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:state/oc-sys:certificate-id { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:state/oc-sys:listen-addresses { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:config/oc-sys:severity { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:state/oc-sys:severity { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:state/oc-sys:message/oc-sys:msg { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:state/oc-sys:message/oc-sys:priority { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:state/oc-sys:message/oc-sys:app-name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:state/oc-sys:message/oc-sys:procid { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:state/oc-sys:message/oc-sys:msgid { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:debug-entries/oc-sys:debug-service { + deviate "not-supported"; + } +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-telemetry-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-telemetry-deviations.yang new file mode 100644 index 000000000..bff81654c --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-telemetry-deviations.yang @@ -0,0 +1,127 @@ + +module cisco-nx-openconfig-telemetry-deviations { + + namespace "http://openconfig.net/yang/telemetry-deviations"; + + prefix "oc-telemetry-devs"; + + import openconfig-telemetry { prefix oc-telemetry; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-telemetry module + set for Cisco NXOS. + Copyright (c) 2015-2019 by Cisco Systems, Inc. + All rights reserved."; + + revision "2018-12-14" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:sensor-groups/oc-telemetry:sensor-group/oc-telemetry:config/oc-telemetry:sensor-group-id { + deviate replace { + type string { + length "1..32"; + } + } + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:sensor-groups/oc-telemetry:sensor-group/oc-telemetry:sensor-paths/oc-telemetry:sensor-path/oc-telemetry:config/oc-telemetry:exclude-filter { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:sensor-groups/oc-telemetry:sensor-group/oc-telemetry:sensor-paths/oc-telemetry:sensor-path/oc-telemetry:state/oc-telemetry:exclude-filter { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:destination-groups/oc-telemetry:destination-group/oc-telemetry:config/oc-telemetry:group-id { + deviate replace { + type string { + length "1..32"; + } + } + } + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:config/oc-telemetry:name { + deviate replace { + type string { + pattern "[0-9]*"; + } + } + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:config/oc-telemetry:local-source-address { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:state/oc-telemetry:local-source-address { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:config/oc-telemetry:originated-qos-marking { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:state/oc-telemetry:originated-qos-marking { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:config/oc-telemetry:protocol { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:state/oc-telemetry:protocol { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:config/oc-telemetry:encoding { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:state/oc-telemetry:encoding { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:sensor-profiles/oc-telemetry:sensor-profile/oc-telemetry:config/oc-telemetry:sample-interval { + deviate replace { + type uint64 { + range "0 | 1000..604800000"; + } + } + deviate add { + mandatory true; + } + description + "Operation remove or delete sample-interval sets sample-interval to 0."; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:sensor-profiles/oc-telemetry:sensor-profile/oc-telemetry:config/oc-telemetry:heartbeat-interval { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:sensor-profiles/oc-telemetry:sensor-profile/oc-telemetry:state/oc-telemetry:heartbeat-interval { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:sensor-profiles/oc-telemetry:sensor-profile/oc-telemetry:config/oc-telemetry:suppress-redundant { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:persistent-subscriptions/oc-telemetry:persistent-subscription/oc-telemetry:sensor-profiles/oc-telemetry:sensor-profile/oc-telemetry:state/oc-telemetry:suppress-redundant { + deviate not-supported; + } + + deviation /oc-telemetry:telemetry-system/oc-telemetry:subscriptions/oc-telemetry:dynamic-subscriptions { + deviate not-supported; + } + +} diff --git a/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-vlan-deviations.yang b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-vlan-deviations.yang new file mode 100644 index 000000000..b596ce747 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/cisco-nx-openconfig-vlan-deviations.yang @@ -0,0 +1,48 @@ + +module cisco-nx-openconfig-vlan-deviations { + + namespace "http://openconfig.net/yang/vlan-deviations"; + + prefix "oc-vlan-devs"; + + import openconfig-vlan { prefix oc-vlan; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-vlan-types { prefix oc-vlan-types; } + import openconfig-network-instance { prefix oc-netinst; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-vlan module + set for Cisco NXOS. + Copyright (c) 2015-2019 by Cisco Systems, Inc. + All rights reserved."; + + revision "2018-05-14" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-if:interfaces/oc-if:interface/oc-if:config/oc-vlan:tpid { + deviate add { + must "../oc-vlan:tpid='oc-vlan-types:TPID_0X8100' or ../oc-vlan:tpid='oc-vlan-types:TPID_0X9100'" { + error-message "Only supports TPID_0X8100, TPID_0X9100 on device model"; + } + } + } + deviation /oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:vlans/oc-netinst:vlan/oc-netinst:config/oc-netinst:name { + deviate replace { + type string { + pattern "[^\s]*"; + } + } + } +} diff --git a/vendor/cisco/nx/9.3-14/extensions/Cisco-NX-OS-syslog-oper.yang b/vendor/cisco/nx/9.3-14/extensions/Cisco-NX-OS-syslog-oper.yang new file mode 100644 index 000000000..8b1acf2ea --- /dev/null +++ b/vendor/cisco/nx/9.3-14/extensions/Cisco-NX-OS-syslog-oper.yang @@ -0,0 +1,139 @@ +module Cisco-NX-OS-syslog-oper { + + namespace "http://cisco.com/ns/yang/cisco-nx-os-syslog-oper"; + + prefix "syslog-oper"; + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + + Postal: 170 W Tasman Drive, + San Jose, CA 95134 + + Tel: +1 800 553-NETS + + E-mail: cs-yang@cisco.com"; + + description + "This module contains a collection of YANG definitions for Cisco NXOS + syslog package operational data. + + NOTE: + - Supported only by gNMI and telemetry agents. + - Supports only subscription on-change. + - Returns an error if used otherwise."; + + revision "2019-08-15" { + description + "Schema added for syslog messages operational data"; + } + + typedef System-message-severity { + type enumeration { + enum message-severity-unknown { + value -1; + description "Unknown"; + } + enum message-severity-emergency { + value 0; + description "Emergency"; + } + enum message-severity-alert { + value 1; + description "Alert"; + } + enum message-severity-critical { + value 2; + description "Critical"; + } + enum message-severity-error { + value 3; + description "Error"; + } + enum message-severity-warning { + value 4; + description "Warning"; + } + enum message-severity-notice { + value 5; + description "Notice"; + } + enum message-severity-informational { + value 6; + description "Informational"; + } + enum message-severity-debug { + value 7; + description "Debug"; + } + } + description "System message severity"; + } + + grouping SYSTEM-MESSAGE { + description "System message"; + leaf node-name { + type string; + description "Message source location"; + } + leaf time-stamp { + type uint64; + units "millisecond"; + description + "Time in milliseconds since 00:00:00 UTC, January + 11970 of when message was generated"; + } + leaf time-of-day { + type string; + description + "Time of day of event in DDD MMM DD YYYY HH:MM + :SS format, e.g Wed Apr 01 2009 15:50:26"; + } + leaf time-zone { + type string; + description + "Time Zone Abbreviations, e.g., PST, EST, UTC, etc."; + } + leaf category { + type string; + description "Message category"; + } + leaf group { + type string; + description "Message group"; + } + leaf message-name { + type string; + description "Message name"; + } + leaf severity { + type System-message-severity; + description "Message severity"; + } + leaf text { + type string; + description "Additional message text"; + } + } + + container syslog { + config false; + description "syslog"; + container messages { + description "Message table information"; + + list message { + key "message-id"; + description "A system message"; + leaf message-id { + type int32; + description "Message ID of the system message"; + } + uses SYSTEM-MESSAGE; + } + } + } +} diff --git a/vendor/cisco/nx/9.3-14/extensions/README.md b/vendor/cisco/nx/9.3-14/extensions/README.md new file mode 100644 index 000000000..a360b80f8 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/extensions/README.md @@ -0,0 +1,6 @@ +## Extended YANG Models and Platform Capabilities for Cisco NX-OS + +The YANG files in this directory detail the extended native and OpenConfig YANG models with deviations for Cisco NX-OS, supported by only gNMI and telemetry. They are not supported by NETCONF, RESTCONF and Cisco gRPC service. + +For gNMI and telemetry, users should replace the respective YANG files and its deviations in the parent directory with the corresponding extension YANG files and their deviations. +~ diff --git a/vendor/cisco/nx/9.3-14/extensions/cisco-nx-openconfig-system-deviations.yang b/vendor/cisco/nx/9.3-14/extensions/cisco-nx-openconfig-system-deviations.yang new file mode 100644 index 000000000..394dbc94c --- /dev/null +++ b/vendor/cisco/nx/9.3-14/extensions/cisco-nx-openconfig-system-deviations.yang @@ -0,0 +1,357 @@ + +module cisco-nx-openconfig-system-deviations { + + namespace "http://openconfig.net/yang/system-deviations"; + + prefix "oc-sys-devs"; + + import openconfig-system { prefix oc-sys; } + import openconfig-aaa { prefix oc-aaa; } + import openconfig-alarms { prefix oc-alarms; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-inet-types { prefix oc-inet; } + import openconfig-system-logging { prefix oc-log; } + import openconfig-messages { prefix oc-messages; } + import openconfig-procmon { prefix oc-proc; } + import openconfig-system-management { prefix oc-sys-mgmt; } + import openconfig-system-terminal { prefix oc-sys-term; } + import openconfig-types { prefix oc-types; } + import openconfig-yang-types { prefix oc-yang; } + + organization "Cisco Systems, Inc."; + + contact + "Cisco Systems, Inc. + Customer Service + Postal: 170 West Tasman Drive + San Jose, CA 95134 + Tel: +1 800 553-NETS + E-mail: cs-yang@cisco.com"; + + description + "This module contains a set of deviations of the openconfig-system module + set for Cisco NXOS. + Copyright (c) 2015-2017, 2020 by Cisco Systems, Inc. + All rights reserved."; + + revision "2019-09-30" { + description + "Initial revision applicable to NXOS"; + } + + deviation /oc-sys:system/oc-sys:config/oc-sys:hostname { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:config/oc-sys:domain-name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:config/oc-sys:login-banner { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:config/oc-sys:motd-banner { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:state/oc-sys:hostname { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:state/oc-sys:domain-name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:state/oc-sys:login-banner { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:state/oc-sys:motd-banner { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:state/oc-sys:current-datetime { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:state/oc-sys:boot-time { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:clock/oc-sys:config/oc-sys:timezone-name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:clock/oc-sys:state/oc-sys:timezone-name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:dns/oc-sys:config/oc-sys:search { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:dns/oc-sys:state/oc-sys:search { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:dns/oc-sys:servers/oc-sys:server { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:dns/oc-sys:host-entries/oc-sys:host-entry { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:config/oc-sys:enabled { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:config/oc-sys:ntp-source-address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:config/oc-sys:enable-ntp-auth { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:state/oc-sys:enabled { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:state/oc-sys:ntp-source-address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:state/oc-sys:enable-ntp-auth { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:state/oc-sys:auth-mismatch { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:ntp-keys/oc-sys:ntp-key { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ntp/oc-sys:servers/oc-sys:server { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:config/oc-sys:protocol-version { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:config/oc-sys:rate-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:state/oc-sys:enable { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:state/oc-sys:protocol-version { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:state/oc-sys:timeout { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:state/oc-sys:rate-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:ssh-server/oc-sys:state/oc-sys:session-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:config/oc-sys:timeout { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:config/oc-sys:rate-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:config/oc-sys:session-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:state/oc-sys:enable { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:state/oc-sys:timeout { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:state/oc-sys:rate-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:telnet-server/oc-sys:state/oc-sys:session-limit { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:logging/oc-sys:console/oc-sys:selectors/oc-sys:selector { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:logging/oc-sys:remote-servers/oc-sys:remote-server { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:state/oc-sys:authentication-method { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:admin-user/oc-sys:state/oc-sys:admin-password { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:admin-user/oc-sys:state/oc-sys:admin-password-hashed { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:admin-user/oc-sys:state/oc-sys:admin-username { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:users/oc-sys:user/oc-sys:state/oc-sys:username { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:users/oc-sys:user/oc-sys:state/oc-sys:password { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:users/oc-sys:user/oc-sys:state/oc-sys:password-hashed { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:users/oc-sys:user/oc-sys:state/oc-sys:ssh-key { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:users/oc-sys:user/oc-sys:state/oc-sys:role { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authorization/oc-sys:state/oc-sys:authorization-method { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:authorization/oc-sys:events/oc-sys:event { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:accounting/oc-sys:state/oc-sys:accounting-method { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:accounting/oc-sys:events/oc-sys:event { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:state/oc-sys:name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:state/oc-sys:type { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:config/oc-sys:name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:timeout { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:connection-opens { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:connection-closes { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:connection-aborts { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:connection-failures { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:connection-timeouts { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:messages-sent { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:messages-received { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:state/oc-sys:errors-received { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:tacacs/oc-sys:config/oc-sys:source-address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:tacacs/oc-sys:state/oc-sys:port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:tacacs/oc-sys:state/oc-sys:secret-key { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:tacacs/oc-sys:state/oc-sys:source-address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:config/oc-sys:auth-port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:config/oc-sys:acct-port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:config/oc-sys:secret-key { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:config/oc-sys:source-address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:config/oc-sys:retransmit-attempts { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:auth-port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:acct-port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:secret-key { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:source-address { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:retransmit-attempts { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:counters/oc-sys:retried-access-requests { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:counters/oc-sys:access-accepts { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:counters/oc-sys:access-rejects { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:aaa/oc-sys:server-groups/oc-sys:server-group/oc-sys:servers/oc-sys:server/oc-sys:radius/oc-sys:state/oc-sys:counters/oc-sys:timeout-access-requests { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:alarms/oc-sys:alarm { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:config/oc-sys:enable { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:config/oc-sys:port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:config/oc-sys:transport-security { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:config/oc-sys:certificate-id { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:config/oc-sys:listen-addresses { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:state/oc-sys:enable { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:state/oc-sys:port { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:state/oc-sys:transport-security { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:state/oc-sys:certificate-id { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:grpc-server/oc-sys:state/oc-sys:listen-addresses { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:config/oc-sys:severity { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:state/oc-sys:severity { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:state/oc-sys:message/oc-sys:msg { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:state/oc-sys:message/oc-sys:priority { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:state/oc-sys:message/oc-sys:app-name { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:state/oc-sys:message/oc-sys:procid { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:state/oc-sys:message/oc-sys:msgid { + deviate "not-supported"; + } + deviation /oc-sys:system/oc-sys:messages/oc-sys:debug-entries/oc-sys:debug-service { + deviate "not-supported"; + } +} diff --git a/vendor/cisco/nx/9.3-14/extensions/openconfig/openconfig-procmon.yang b/vendor/cisco/nx/9.3-14/extensions/openconfig/openconfig-procmon.yang new file mode 100644 index 000000000..3c1013f47 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/extensions/openconfig/openconfig-procmon.yang @@ -0,0 +1,175 @@ +module openconfig-procmon { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/system/procmon"; + + prefix "oc-proc"; + + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + import openconfig-types { prefix oc-types; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module provides data definitions for process health + monitoring of one or more processes running on the system."; + + oc-ext:openconfig-version "0.3.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.1"; + } + + revision "2017-09-18" { + description + "Updated to use OpenConfig types modules"; + reference "0.3.0"; + } + + revision "2017-07-06" { + description + "Move to oc-inet types, add IETF attribution, add RADIUS + counters, changed password leaf names to indicate hashed"; + reference "0.2.0"; + } + + revision "2017-01-29" { + description + "Initial public release"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // grouping statements + + grouping procmon-processes-top { + description + "Top level grouping for attributes for processes."; + + container processes { + description + "Parameters related to all monitored processes"; + + list process { + key "pid"; + config false; + description + "List of monitored processes"; + + leaf pid { + type leafref { + path "../state/pid"; + } + description + "Reference to the process pid key"; + } + + container state { + config false; + description + "State parameters related to monitored processes"; + + uses procmon-process-attributes-state; + } + } + } + } + + grouping procmon-process-attributes-state { + description + "Attributes state definitions for a process"; + + leaf pid { + type uint64; + description + "The process pid"; + } + + leaf name { + type string; + description + "The process name"; + } + + leaf-list args { + type string; + description + "Current process command line arguments. Arguments with + a parameter (e.g., --option 10 or -option=10) should be + represented as a single element of the list with the + argument name and parameter together. Flag arguments, i.e., + those without a parameter should also be in their own list + element."; + } + + leaf start-time { + type uint64; + units "ns"; + description + "The time at which this process started, + reported as nanoseconds since the UNIX epoch. The + system must be synchronized such that the start-time + can be reported accurately, otherwise it should not be + reported."; + } + + leaf uptime { + type oc-types:timeticks64; + description + "Amount of time elapsed since this process started."; + } + + leaf cpu-usage-user { + type oc-types:timeticks64; + description + "CPU time consumed by this process in user mode."; + } + + leaf cpu-usage-system { + type oc-types:timeticks64; + description + "CPU time consumed by this process in kernel mode."; + } + + leaf cpu-utilization { + type oc-types:percentage; + description + "The percentage of CPU that is being used by the process."; + } + + leaf memory-usage { + type uint64; + units "bytes"; + description + "Bytes allocated and still in use by the process"; + } + + leaf memory-utilization { + type oc-types:percentage; + description + "The percentage of RAM that is being used by the process."; + } + } + + // augment statements + + // rpc statements + + // notification statements +} diff --git a/vendor/cisco/nx/9.3-14/iana-if-type.yang b/vendor/cisco/nx/9.3-14/iana-if-type.yang new file mode 100644 index 000000000..74e46b4b2 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/iana-if-type.yang @@ -0,0 +1,1554 @@ +module iana-if-type { + namespace "urn:ietf:params:xml:ns:yang:iana-if-type"; + prefix ianaift; + + import ietf-interfaces { + prefix if; + } + + organization "IANA"; + contact + " Internet Assigned Numbers Authority + + Postal: ICANN + 12025 Waterfront Drive, Suite 300 + Los Angeles, CA 90094-2536 + United States + + Tel: +1 310 301 5800 + "; + description + "This YANG module defines YANG identities for IANA-registered + interface types. + + This YANG module is maintained by IANA and reflects the + 'ifType definitions' registry. + + The latest revision of this YANG module can be obtained from + the IANA web site. + + Requests for new values should be made to IANA via + email (iana&iana.org). + + Copyright (c) 2014 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + The initial version of this YANG module is part of RFC 7224; + see the RFC itself for full legal notices."; + reference + "IANA 'ifType definitions' registry. + "; + + revision 2015-06-12 { + description + "Corrected formatting issue."; + } + revision 2014-09-24 { + description + "Registered ifType 280."; + } + revision 2014-09-19 { + description + "Registered ifType 279."; + } + revision 2014-07-03 { + description + "Registered ifTypes 277-278."; + } + revision 2014-05-19 { + description + "Updated the contact address."; + } + revision 2014-05-08 { + description + "Initial revision."; + reference + "RFC 7224: IANA Interface Type YANG Module"; + } + + identity iana-interface-type { + base if:interface-type; + description + "This identity is used as a base for all interface types + defined in the 'ifType definitions' registry."; + } + + identity other { + base iana-interface-type; + } + identity regular1822 { + base iana-interface-type; + } + identity hdh1822 { + base iana-interface-type; + } + identity ddnX25 { + base iana-interface-type; + } + identity rfc877x25 { + base iana-interface-type; + reference + "RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer"; + } + identity ethernetCsmacd { + base iana-interface-type; + description + "For all Ethernet-like interfaces, regardless of speed, + as per RFC 3635."; + reference + "RFC 3635 - Definitions of Managed Objects for the + Ethernet-like Interface Types"; + } + identity iso88023Csmacd { + base iana-interface-type; + status deprecated; + description + "Deprecated via RFC 3635. + Use ethernetCsmacd(6) instead."; + reference + "RFC 3635 - Definitions of Managed Objects for the + Ethernet-like Interface Types"; + } + identity iso88024TokenBus { + base iana-interface-type; + } + identity iso88025TokenRing { + base iana-interface-type; + } + identity iso88026Man { + base iana-interface-type; + } + identity starLan { + base iana-interface-type; + status deprecated; + description + "Deprecated via RFC 3635. + Use ethernetCsmacd(6) instead."; + reference + "RFC 3635 - Definitions of Managed Objects for the + Ethernet-like Interface Types"; + } + identity proteon10Mbit { + base iana-interface-type; + } + identity proteon80Mbit { + base iana-interface-type; + } + identity hyperchannel { + base iana-interface-type; + } + identity fddi { + base iana-interface-type; + reference + "RFC 1512 - FDDI Management Information Base"; + } + identity lapb { + base iana-interface-type; + reference + "RFC 1381 - SNMP MIB Extension for X.25 LAPB"; + } + identity sdlc { + base iana-interface-type; + } + identity ds1 { + base iana-interface-type; + description + "DS1-MIB."; + reference + "RFC 4805 - Definitions of Managed Objects for the + DS1, J1, E1, DS2, and E2 Interface Types"; + } + identity e1 { + base iana-interface-type; + status obsolete; + description + "Obsolete; see DS1-MIB."; + reference + "RFC 4805 - Definitions of Managed Objects for the + DS1, J1, E1, DS2, and E2 Interface Types"; + } + identity basicISDN { + base iana-interface-type; + description + "No longer used. See also RFC 2127."; + } + identity primaryISDN { + base iana-interface-type; + description + "No longer used. See also RFC 2127."; + } + identity propPointToPointSerial { + base iana-interface-type; + description + "Proprietary serial."; + } + identity ppp { + base iana-interface-type; + } + identity softwareLoopback { + base iana-interface-type; + } + identity eon { + base iana-interface-type; + description + "CLNP over IP."; + } + identity ethernet3Mbit { + base iana-interface-type; + } + identity nsip { + base iana-interface-type; + description + "XNS over IP."; + } + identity slip { + base iana-interface-type; + description + "Generic SLIP."; + } + identity ultra { + base iana-interface-type; + description + "Ultra Technologies."; + } + identity ds3 { + base iana-interface-type; + description + "DS3-MIB."; + reference + "RFC 3896 - Definitions of Managed Objects for the + DS3/E3 Interface Type"; + } + identity sip { + base iana-interface-type; + description + "SMDS, coffee."; + reference + "RFC 1694 - Definitions of Managed Objects for SMDS + Interfaces using SMIv2"; + } + identity frameRelay { + base iana-interface-type; + description + "DTE only."; + reference + "RFC 2115 - Management Information Base for Frame Relay + DTEs Using SMIv2"; + } + identity rs232 { + base iana-interface-type; + reference + "RFC 1659 - Definitions of Managed Objects for RS-232-like + Hardware Devices using SMIv2"; + } + identity para { + base iana-interface-type; + description + "Parallel-port."; + reference + "RFC 1660 - Definitions of Managed Objects for + Parallel-printer-like Hardware Devices using + SMIv2"; + } + identity arcnet { + base iana-interface-type; + description + "ARCnet."; + } + identity arcnetPlus { + base iana-interface-type; + description + "ARCnet Plus."; + } + identity atm { + base iana-interface-type; + description + "ATM cells."; + } + identity miox25 { + base iana-interface-type; + reference + "RFC 1461 - SNMP MIB extension for Multiprotocol + Interconnect over X.25"; + } + identity sonet { + base iana-interface-type; + description + "SONET or SDH."; + } + identity x25ple { + base iana-interface-type; + reference + "RFC 2127 - ISDN Management Information Base using SMIv2"; + } + identity iso88022llc { + base iana-interface-type; + } + identity localTalk { + base iana-interface-type; + } + identity smdsDxi { + base iana-interface-type; + } + identity frameRelayService { + base iana-interface-type; + description + "FRNETSERV-MIB."; + reference + "RFC 2954 - Definitions of Managed Objects for Frame + Relay Service"; + } + identity v35 { + base iana-interface-type; + } + identity hssi { + base iana-interface-type; + } + identity hippi { + base iana-interface-type; + } + identity modem { + base iana-interface-type; + description + "Generic modem."; + } + identity aal5 { + base iana-interface-type; + description + "AAL5 over ATM."; + } + identity sonetPath { + base iana-interface-type; + } + identity sonetVT { + base iana-interface-type; + } + identity smdsIcip { + base iana-interface-type; + description + "SMDS InterCarrier Interface."; + } + identity propVirtual { + base iana-interface-type; + description + "Proprietary virtual/internal."; + reference + "RFC 2863 - The Interfaces Group MIB"; + } + identity propMultiplexor { + base iana-interface-type; + description + "Proprietary multiplexing."; + reference + "RFC 2863 - The Interfaces Group MIB"; + } + identity ieee80212 { + base iana-interface-type; + description + "100BaseVG."; + } + identity fibreChannel { + base iana-interface-type; + description + "Fibre Channel."; + } + identity hippiInterface { + base iana-interface-type; + description + "HIPPI interfaces."; + } + identity frameRelayInterconnect { + base iana-interface-type; + status obsolete; + description + "Obsolete; use either + frameRelay(32) or frameRelayService(44)."; + } + identity aflane8023 { + base iana-interface-type; + description + "ATM Emulated LAN for 802.3."; + } + identity aflane8025 { + base iana-interface-type; + description + "ATM Emulated LAN for 802.5."; + } + identity cctEmul { + base iana-interface-type; + description + "ATM Emulated circuit."; + } + identity fastEther { + base iana-interface-type; + status deprecated; + description + "Obsoleted via RFC 3635. + ethernetCsmacd(6) should be used instead."; + reference + "RFC 3635 - Definitions of Managed Objects for the + Ethernet-like Interface Types"; + } + identity isdn { + base iana-interface-type; + description + "ISDN and X.25."; + reference + "RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN + in the Packet Mode"; + } + identity v11 { + base iana-interface-type; + description + "CCITT V.11/X.21."; + } + identity v36 { + base iana-interface-type; + description + "CCITT V.36."; + } + identity g703at64k { + base iana-interface-type; + description + "CCITT G703 at 64Kbps."; + } + identity g703at2mb { + base iana-interface-type; + status obsolete; + description + "Obsolete; see DS1-MIB."; + } + identity qllc { + base iana-interface-type; + description + "SNA QLLC."; + } + identity fastEtherFX { + base iana-interface-type; + status deprecated; + description + "Obsoleted via RFC 3635. + ethernetCsmacd(6) should be used instead."; + reference + "RFC 3635 - Definitions of Managed Objects for the + Ethernet-like Interface Types"; + } + identity channel { + base iana-interface-type; + description + "Channel."; + } + identity ieee80211 { + base iana-interface-type; + description + "Radio spread spectrum."; + } + identity ibm370parChan { + base iana-interface-type; + description + "IBM System 360/370 OEMI Channel."; + } + identity escon { + base iana-interface-type; + description + "IBM Enterprise Systems Connection."; + } + identity dlsw { + base iana-interface-type; + description + "Data Link Switching."; + } + identity isdns { + base iana-interface-type; + description + "ISDN S/T interface."; + } + identity isdnu { + base iana-interface-type; + description + "ISDN U interface."; + } + identity lapd { + base iana-interface-type; + description + "Link Access Protocol D."; + } + identity ipSwitch { + base iana-interface-type; + description + "IP Switching Objects."; + } + identity rsrb { + base iana-interface-type; + description + "Remote Source Route Bridging."; + } + identity atmLogical { + base iana-interface-type; + description + "ATM Logical Port."; + reference + "RFC 3606 - Definitions of Supplemental Managed Objects + for ATM Interface"; + } + identity ds0 { + base iana-interface-type; + description + "Digital Signal Level 0."; + reference + "RFC 2494 - Definitions of Managed Objects for the DS0 + and DS0 Bundle Interface Type"; + } + identity ds0Bundle { + base iana-interface-type; + description + "Group of ds0s on the same ds1."; + reference + "RFC 2494 - Definitions of Managed Objects for the DS0 + and DS0 Bundle Interface Type"; + } + identity bsc { + base iana-interface-type; + description + "Bisynchronous Protocol."; + } + identity async { + base iana-interface-type; + description + "Asynchronous Protocol."; + } + identity cnr { + base iana-interface-type; + description + "Combat Net Radio."; + } + identity iso88025Dtr { + base iana-interface-type; + description + "ISO 802.5r DTR."; + } + identity eplrs { + base iana-interface-type; + description + "Ext Pos Loc Report Sys."; + } + identity arap { + base iana-interface-type; + description + "Appletalk Remote Access Protocol."; + } + identity propCnls { + base iana-interface-type; + description + "Proprietary Connectionless Protocol."; + } + identity hostPad { + base iana-interface-type; + description + "CCITT-ITU X.29 PAD Protocol."; + } + identity termPad { + base iana-interface-type; + description + "CCITT-ITU X.3 PAD Facility."; + } + identity frameRelayMPI { + base iana-interface-type; + description + "Multiproto Interconnect over FR."; + } + identity x213 { + base iana-interface-type; + description + "CCITT-ITU X213."; + } + identity adsl { + base iana-interface-type; + description + "Asymmetric Digital Subscriber Loop."; + } + identity radsl { + base iana-interface-type; + description + "Rate-Adapt. Digital Subscriber Loop."; + } + identity sdsl { + base iana-interface-type; + description + "Symmetric Digital Subscriber Loop."; + } + identity vdsl { + base iana-interface-type; + description + "Very H-Speed Digital Subscrib. Loop."; + } + identity iso88025CRFPInt { + base iana-interface-type; + description + "ISO 802.5 CRFP."; + } + identity myrinet { + base iana-interface-type; + description + "Myricom Myrinet."; + } + identity voiceEM { + base iana-interface-type; + description + "Voice recEive and transMit."; + } + identity voiceFXO { + base iana-interface-type; + description + "Voice Foreign Exchange Office."; + } + identity voiceFXS { + base iana-interface-type; + description + "Voice Foreign Exchange Station."; + } + identity voiceEncap { + base iana-interface-type; + description + "Voice encapsulation."; + } + identity voiceOverIp { + base iana-interface-type; + description + "Voice over IP encapsulation."; + } + identity atmDxi { + base iana-interface-type; + description + "ATM DXI."; + } + identity atmFuni { + base iana-interface-type; + description + "ATM FUNI."; + } + identity atmIma { + base iana-interface-type; + description + "ATM IMA."; + } + identity pppMultilinkBundle { + base iana-interface-type; + description + "PPP Multilink Bundle."; + } + identity ipOverCdlc { + base iana-interface-type; + description + "IBM ipOverCdlc."; + } + identity ipOverClaw { + base iana-interface-type; + description + "IBM Common Link Access to Workstn."; + } + identity stackToStack { + base iana-interface-type; + description + "IBM stackToStack."; + } + identity virtualIpAddress { + base iana-interface-type; + description + "IBM VIPA."; + } + identity mpc { + base iana-interface-type; + description + "IBM multi-protocol channel support."; + } + identity ipOverAtm { + base iana-interface-type; + description + "IBM ipOverAtm."; + reference + "RFC 2320 - Definitions of Managed Objects for Classical IP + and ARP Over ATM Using SMIv2 (IPOA-MIB)"; + } + identity iso88025Fiber { + base iana-interface-type; + description + "ISO 802.5j Fiber Token Ring."; + } + identity tdlc { + base iana-interface-type; + description + "IBM twinaxial data link control."; + } + identity gigabitEthernet { + base iana-interface-type; + status deprecated; + description + "Obsoleted via RFC 3635. + ethernetCsmacd(6) should be used instead."; + reference + "RFC 3635 - Definitions of Managed Objects for the + Ethernet-like Interface Types"; + } + identity hdlc { + base iana-interface-type; + description + "HDLC."; + } + identity lapf { + base iana-interface-type; + description + "LAP F."; + } + identity v37 { + base iana-interface-type; + description + "V.37."; + } + identity x25mlp { + base iana-interface-type; + description + "Multi-Link Protocol."; + } + identity x25huntGroup { + base iana-interface-type; + description + "X25 Hunt Group."; + } + identity transpHdlc { + base iana-interface-type; + description + "Transp HDLC."; + } + identity interleave { + base iana-interface-type; + description + "Interleave channel."; + } + identity fast { + base iana-interface-type; + description + "Fast channel."; + } + identity ip { + base iana-interface-type; + description + "IP (for APPN HPR in IP networks)."; + } + identity docsCableMaclayer { + base iana-interface-type; + description + "CATV Mac Layer."; + } + identity docsCableDownstream { + base iana-interface-type; + description + "CATV Downstream interface."; + } + identity docsCableUpstream { + base iana-interface-type; + description + "CATV Upstream interface."; + } + identity a12MppSwitch { + base iana-interface-type; + description + "Avalon Parallel Processor."; + } + identity tunnel { + base iana-interface-type; + description + "Encapsulation interface."; + } + identity coffee { + base iana-interface-type; + description + "Coffee pot."; + reference + "RFC 2325 - Coffee MIB"; + } + identity ces { + base iana-interface-type; + description + "Circuit Emulation Service."; + } + identity atmSubInterface { + base iana-interface-type; + description + "ATM Sub Interface."; + } + identity l2vlan { + base iana-interface-type; + description + "Layer 2 Virtual LAN using 802.1Q."; + } + identity l3ipvlan { + base iana-interface-type; + description + "Layer 3 Virtual LAN using IP."; + } + identity l3ipxvlan { + base iana-interface-type; + description + "Layer 3 Virtual LAN using IPX."; + } + identity digitalPowerline { + base iana-interface-type; + description + "IP over Power Lines."; + } + identity mediaMailOverIp { + base iana-interface-type; + description + "Multimedia Mail over IP."; + } + identity dtm { + base iana-interface-type; + description + "Dynamic synchronous Transfer Mode."; + } + identity dcn { + base iana-interface-type; + description + "Data Communications Network."; + } + identity ipForward { + base iana-interface-type; + description + "IP Forwarding Interface."; + } + identity msdsl { + base iana-interface-type; + description + "Multi-rate Symmetric DSL."; + } + identity ieee1394 { + base iana-interface-type; + + description + "IEEE1394 High Performance Serial Bus."; + } + identity if-gsn { + base iana-interface-type; + description + "HIPPI-6400."; + } + identity dvbRccMacLayer { + base iana-interface-type; + description + "DVB-RCC MAC Layer."; + } + identity dvbRccDownstream { + base iana-interface-type; + description + "DVB-RCC Downstream Channel."; + } + identity dvbRccUpstream { + base iana-interface-type; + description + "DVB-RCC Upstream Channel."; + } + identity atmVirtual { + base iana-interface-type; + description + "ATM Virtual Interface."; + } + identity mplsTunnel { + base iana-interface-type; + description + "MPLS Tunnel Virtual Interface."; + } + identity srp { + base iana-interface-type; + description + "Spatial Reuse Protocol."; + } + identity voiceOverAtm { + base iana-interface-type; + description + "Voice over ATM."; + } + identity voiceOverFrameRelay { + base iana-interface-type; + description + "Voice Over Frame Relay."; + } + identity idsl { + base iana-interface-type; + description + "Digital Subscriber Loop over ISDN."; + } + identity compositeLink { + base iana-interface-type; + description + "Avici Composite Link Interface."; + } + identity ss7SigLink { + base iana-interface-type; + description + "SS7 Signaling Link."; + } + identity propWirelessP2P { + base iana-interface-type; + description + "Prop. P2P wireless interface."; + } + identity frForward { + base iana-interface-type; + description + "Frame Forward Interface."; + } + identity rfc1483 { + base iana-interface-type; + description + "Multiprotocol over ATM AAL5."; + reference + "RFC 1483 - Multiprotocol Encapsulation over ATM + Adaptation Layer 5"; + } + identity usb { + base iana-interface-type; + description + "USB Interface."; + } + identity ieee8023adLag { + base iana-interface-type; + description + "IEEE 802.3ad Link Aggregate."; + } + identity bgppolicyaccounting { + base iana-interface-type; + description + "BGP Policy Accounting."; + } + identity frf16MfrBundle { + base iana-interface-type; + description + "FRF.16 Multilink Frame Relay."; + } + identity h323Gatekeeper { + base iana-interface-type; + description + "H323 Gatekeeper."; + } + identity h323Proxy { + base iana-interface-type; + description + "H323 Voice and Video Proxy."; + } + identity mpls { + base iana-interface-type; + description + "MPLS."; + } + identity mfSigLink { + base iana-interface-type; + description + "Multi-frequency signaling link."; + } + identity hdsl2 { + base iana-interface-type; + description + "High Bit-Rate DSL - 2nd generation."; + } + identity shdsl { + base iana-interface-type; + description + "Multirate HDSL2."; + } + identity ds1FDL { + base iana-interface-type; + description + "Facility Data Link (4Kbps) on a DS1."; + } + identity pos { + base iana-interface-type; + description + "Packet over SONET/SDH Interface."; + } + identity dvbAsiIn { + base iana-interface-type; + description + "DVB-ASI Input."; + } + identity dvbAsiOut { + base iana-interface-type; + description + "DVB-ASI Output."; + } + identity plc { + base iana-interface-type; + description + "Power Line Communications."; + } + identity nfas { + base iana-interface-type; + description + "Non-Facility Associated Signaling."; + } + identity tr008 { + base iana-interface-type; + description + "TR008."; + } + identity gr303RDT { + base iana-interface-type; + description + "Remote Digital Terminal."; + } + identity gr303IDT { + base iana-interface-type; + description + "Integrated Digital Terminal."; + } + identity isup { + base iana-interface-type; + description + "ISUP."; + } + identity propDocsWirelessMaclayer { + base iana-interface-type; + description + "Cisco proprietary Maclayer."; + } + identity propDocsWirelessDownstream { + base iana-interface-type; + description + "Cisco proprietary Downstream."; + } + identity propDocsWirelessUpstream { + base iana-interface-type; + description + "Cisco proprietary Upstream."; + } + identity hiperlan2 { + base iana-interface-type; + description + "HIPERLAN Type 2 Radio Interface."; + } + identity propBWAp2Mp { + base iana-interface-type; + description + "PropBroadbandWirelessAccesspt2Multipt (use of this value + for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f + is deprecated, and ieee80216WMAN(237) should be used + instead)."; + } + identity sonetOverheadChannel { + base iana-interface-type; + description + "SONET Overhead Channel."; + } + identity digitalWrapperOverheadChannel { + base iana-interface-type; + description + "Digital Wrapper."; + } + identity aal2 { + base iana-interface-type; + description + "ATM adaptation layer 2."; + } + identity radioMAC { + base iana-interface-type; + description + "MAC layer over radio links."; + } + identity atmRadio { + base iana-interface-type; + description + "ATM over radio links."; + } + identity imt { + base iana-interface-type; + description + "Inter-Machine Trunks."; + } + identity mvl { + base iana-interface-type; + description + "Multiple Virtual Lines DSL."; + } + identity reachDSL { + base iana-interface-type; + description + "Long Reach DSL."; + } + identity frDlciEndPt { + base iana-interface-type; + description + "Frame Relay DLCI End Point."; + } + identity atmVciEndPt { + base iana-interface-type; + description + "ATM VCI End Point."; + } + identity opticalChannel { + base iana-interface-type; + description + "Optical Channel."; + } + identity opticalTransport { + base iana-interface-type; + description + "Optical Transport."; + } + identity propAtm { + base iana-interface-type; + description + "Proprietary ATM."; + } + identity voiceOverCable { + base iana-interface-type; + description + "Voice Over Cable Interface."; + } + identity infiniband { + base iana-interface-type; + description + "Infiniband."; + } + identity teLink { + base iana-interface-type; + description + "TE Link."; + } + identity q2931 { + base iana-interface-type; + description + "Q.2931."; + } + identity virtualTg { + base iana-interface-type; + description + "Virtual Trunk Group."; + } + identity sipTg { + base iana-interface-type; + description + "SIP Trunk Group."; + } + identity sipSig { + base iana-interface-type; + description + "SIP Signaling."; + } + identity docsCableUpstreamChannel { + base iana-interface-type; + description + "CATV Upstream Channel."; + } + identity econet { + base iana-interface-type; + description + "Acorn Econet."; + } + identity pon155 { + base iana-interface-type; + description + "FSAN 155Mb Symetrical PON interface."; + } + identity pon622 { + base iana-interface-type; + description + "FSAN 622Mb Symetrical PON interface."; + } + identity bridge { + base iana-interface-type; + description + "Transparent bridge interface."; + } + identity linegroup { + base iana-interface-type; + description + "Interface common to multiple lines."; + } + identity voiceEMFGD { + base iana-interface-type; + description + "Voice E&M Feature Group D."; + } + identity voiceFGDEANA { + base iana-interface-type; + description + "Voice FGD Exchange Access North American."; + } + identity voiceDID { + base iana-interface-type; + description + "Voice Direct Inward Dialing."; + } + identity mpegTransport { + base iana-interface-type; + description + "MPEG transport interface."; + } + identity sixToFour { + base iana-interface-type; + status deprecated; + description + "6to4 interface (DEPRECATED)."; + reference + "RFC 4087 - IP Tunnel MIB"; + } + identity gtp { + base iana-interface-type; + description + "GTP (GPRS Tunneling Protocol)."; + } + identity pdnEtherLoop1 { + base iana-interface-type; + description + "Paradyne EtherLoop 1."; + } + identity pdnEtherLoop2 { + base iana-interface-type; + description + "Paradyne EtherLoop 2."; + } + identity opticalChannelGroup { + base iana-interface-type; + description + "Optical Channel Group."; + } + identity homepna { + base iana-interface-type; + description + "HomePNA ITU-T G.989."; + } + identity gfp { + base iana-interface-type; + description + "Generic Framing Procedure (GFP)."; + } + identity ciscoISLvlan { + base iana-interface-type; + description + "Layer 2 Virtual LAN using Cisco ISL."; + } + identity actelisMetaLOOP { + base iana-interface-type; + description + "Acteleis proprietary MetaLOOP High Speed Link."; + } + identity fcipLink { + base iana-interface-type; + description + "FCIP Link."; + } + identity rpr { + base iana-interface-type; + description + "Resilient Packet Ring Interface Type."; + } + identity qam { + base iana-interface-type; + description + "RF Qam Interface."; + } + identity lmp { + base iana-interface-type; + description + "Link Management Protocol."; + reference + "RFC 4327 - Link Management Protocol (LMP) Management + Information Base (MIB)"; + } + identity cblVectaStar { + base iana-interface-type; + description + "Cambridge Broadband Networks Limited VectaStar."; + } + identity docsCableMCmtsDownstream { + base iana-interface-type; + description + "CATV Modular CMTS Downstream Interface."; + } + identity adsl2 { + base iana-interface-type; + status deprecated; + description + "Asymmetric Digital Subscriber Loop Version 2 + (DEPRECATED/OBSOLETED - please use adsl2plus(238) + instead)."; + reference + "RFC 4706 - Definitions of Managed Objects for Asymmetric + Digital Subscriber Line 2 (ADSL2)"; + } + identity macSecControlledIF { + base iana-interface-type; + description + "MACSecControlled."; + } + identity macSecUncontrolledIF { + base iana-interface-type; + description + "MACSecUncontrolled."; + } + identity aviciOpticalEther { + base iana-interface-type; + description + "Avici Optical Ethernet Aggregate."; + } + identity atmbond { + base iana-interface-type; + description + "atmbond."; + } + identity voiceFGDOS { + base iana-interface-type; + description + "Voice FGD Operator Services."; + } + identity mocaVersion1 { + base iana-interface-type; + description + "MultiMedia over Coax Alliance (MoCA) Interface + as documented in information provided privately to IANA."; + } + identity ieee80216WMAN { + base iana-interface-type; + description + "IEEE 802.16 WMAN interface."; + } + identity adsl2plus { + base iana-interface-type; + description + "Asymmetric Digital Subscriber Loop Version 2 - + Version 2 Plus and all variants."; + } + identity dvbRcsMacLayer { + base iana-interface-type; + description + "DVB-RCS MAC Layer."; + reference + "RFC 5728 - The SatLabs Group DVB-RCS MIB"; + } + identity dvbTdm { + base iana-interface-type; + description + "DVB Satellite TDM."; + reference + "RFC 5728 - The SatLabs Group DVB-RCS MIB"; + } + identity dvbRcsTdma { + base iana-interface-type; + description + "DVB-RCS TDMA."; + reference + "RFC 5728 - The SatLabs Group DVB-RCS MIB"; + } + identity x86Laps { + base iana-interface-type; + description + "LAPS based on ITU-T X.86/Y.1323."; + } + identity wwanPP { + base iana-interface-type; + description + "3GPP WWAN."; + } + identity wwanPP2 { + base iana-interface-type; + description + "3GPP2 WWAN."; + } + identity voiceEBS { + base iana-interface-type; + description + "Voice P-phone EBS physical interface."; + } + identity ifPwType { + base iana-interface-type; + description + "Pseudowire interface type."; + reference + "RFC 5601 - Pseudowire (PW) Management Information Base (MIB)"; + } + identity ilan { + base iana-interface-type; + description + "Internal LAN on a bridge per IEEE 802.1ap."; + } + identity pip { + base iana-interface-type; + description + "Provider Instance Port on a bridge per IEEE 802.1ah PBB."; + } + identity aluELP { + base iana-interface-type; + description + "Alcatel-Lucent Ethernet Link Protection."; + } + identity gpon { + base iana-interface-type; + description + "Gigabit-capable passive optical networks (G-PON) as per + ITU-T G.948."; + } + identity vdsl2 { + base iana-interface-type; + description + "Very high speed digital subscriber line Version 2 + (as per ITU-T Recommendation G.993.2)."; + reference + "RFC 5650 - Definitions of Managed Objects for Very High + Speed Digital Subscriber Line 2 (VDSL2)"; + } + identity capwapDot11Profile { + base iana-interface-type; + description + "WLAN Profile Interface."; + reference + "RFC 5834 - Control and Provisioning of Wireless Access + Points (CAPWAP) Protocol Binding MIB for + IEEE 802.11"; + } + identity capwapDot11Bss { + base iana-interface-type; + description + "WLAN BSS Interface."; + reference + "RFC 5834 - Control and Provisioning of Wireless Access + Points (CAPWAP) Protocol Binding MIB for + IEEE 802.11"; + } + identity capwapWtpVirtualRadio { + base iana-interface-type; + description + "WTP Virtual Radio Interface."; + reference + "RFC 5833 - Control and Provisioning of Wireless Access + Points (CAPWAP) Protocol Base MIB"; + } + identity bits { + base iana-interface-type; + description + "bitsport."; + } + identity docsCableUpstreamRfPort { + base iana-interface-type; + description + "DOCSIS CATV Upstream RF Port."; + } + identity cableDownstreamRfPort { + base iana-interface-type; + description + "CATV downstream RF Port."; + } + identity vmwareVirtualNic { + base iana-interface-type; + description + "VMware Virtual Network Interface."; + } + identity ieee802154 { + base iana-interface-type; + description + "IEEE 802.15.4 WPAN interface."; + reference + "IEEE 802.15.4-2006"; + } + identity otnOdu { + base iana-interface-type; + description + "OTN Optical Data Unit."; + } + identity otnOtu { + base iana-interface-type; + description + "OTN Optical channel Transport Unit."; + } + identity ifVfiType { + base iana-interface-type; + description + "VPLS Forwarding Instance Interface Type."; + } + identity g9981 { + base iana-interface-type; + description + "G.998.1 bonded interface."; + } + identity g9982 { + base iana-interface-type; + description + "G.998.2 bonded interface."; + } + identity g9983 { + base iana-interface-type; + description + "G.998.3 bonded interface."; + } + + identity aluEpon { + base iana-interface-type; + description + "Ethernet Passive Optical Networks (E-PON)."; + } + identity aluEponOnu { + base iana-interface-type; + description + "EPON Optical Network Unit."; + } + identity aluEponPhysicalUni { + base iana-interface-type; + description + "EPON physical User to Network interface."; + } + identity aluEponLogicalLink { + base iana-interface-type; + description + "The emulation of a point-to-point link over the EPON + layer."; + } + identity aluGponOnu { + base iana-interface-type; + description + "GPON Optical Network Unit."; + reference + "ITU-T G.984.2"; + } + identity aluGponPhysicalUni { + base iana-interface-type; + description + "GPON physical User to Network interface."; + reference + "ITU-T G.984.2"; + } + identity vmwareNicTeam { + base iana-interface-type; + description + "VMware NIC Team."; + } + identity docsOfdmDownstream { + base iana-interface-type; + description + "CATV Downstream OFDM interface."; + } + identity docsOfdmaUpstream { + base iana-interface-type; + description + "CATV Upstream OFDMA interface."; + } + identity gfast { + base iana-interface-type; + description + "G.fast port."; + reference + "ITU-T G.9701"; + } + identity sdci { + base iana-interface-type; + description + "SDCI (IO-Link)."; + reference + "IEC 61131-9 Edition 1.0 2013-09"; + } +} diff --git a/vendor/cisco/nx/9.3-14/ietf-inet-types.yang b/vendor/cisco/nx/9.3-14/ietf-inet-types.yang new file mode 100644 index 000000000..5388b0393 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/ietf-inet-types.yang @@ -0,0 +1,461 @@ +module ietf-inet-types { + + namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types"; + prefix "inet"; + + organization + "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; + + contact + "WG Web: + WG List: + + WG Chair: David Kessens + + + WG Chair: Juergen Schoenwaelder + + + Editor: Juergen Schoenwaelder + "; + + description + "This module contains a collection of generally useful derived + YANG data types for Internet addresses and related things. + + Copyright (c) 2013 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 6991; see + the RFC itself for full legal notices."; + + revision 2013-07-15 { + description + "This revision adds the following new data types: + - ip-address-no-zone + - ipv4-address-no-zone + - ipv6-address-no-zone"; + reference + "RFC 6991: Common YANG Data Types"; + } + + revision 2010-09-24 { + description + "Initial revision."; + reference + "RFC 6021: Common YANG Data Types"; + } + + /*** collection of types related to protocol fields ***/ + + typedef ip-version { + type enumeration { + enum unknown { + value "0"; + description + "An unknown or unspecified version of the Internet + protocol."; + } + enum ipv4 { + value "1"; + description + "The IPv4 protocol as defined in RFC 791."; + } + enum ipv6 { + value "2"; + description + "The IPv6 protocol as defined in RFC 2460."; + } + } + description + "This value represents the version of the IP protocol. + + In the value set and its semantics, this type is equivalent + to the InetVersion textual convention of the SMIv2."; + reference + "RFC 791: Internet Protocol + RFC 2460: Internet Protocol, Version 6 (IPv6) Specification + RFC 4001: Textual Conventions for Internet Network Addresses"; + } + + typedef dscp { + type uint8 { + range "0..63"; + } + description + "The dscp type represents a Differentiated Services Code Point + that may be used for marking packets in a traffic stream. + In the value set and its semantics, this type is equivalent + to the Dscp textual convention of the SMIv2."; + reference + "RFC 3289: Management Information Base for the Differentiated + Services Architecture + RFC 2474: Definition of the Differentiated Services Field + (DS Field) in the IPv4 and IPv6 Headers + RFC 2780: IANA Allocation Guidelines For Values In + the Internet Protocol and Related Headers"; + } + + typedef ipv6-flow-label { + type uint32 { + range "0..1048575"; + } + description + "The ipv6-flow-label type represents the flow identifier or Flow + Label in an IPv6 packet header that may be used to + discriminate traffic flows. + + In the value set and its semantics, this type is equivalent + to the IPv6FlowLabel textual convention of the SMIv2."; + reference + "RFC 3595: Textual Conventions for IPv6 Flow Label + RFC 2460: Internet Protocol, Version 6 (IPv6) Specification"; + } + + typedef port-number { + type uint16 { + range "0..65535"; + } + description + "The port-number type represents a 16-bit port number of an + Internet transport-layer protocol such as UDP, TCP, DCCP, or + SCTP. Port numbers are assigned by IANA. A current list of + all assignments is available from . + + Note that the port number value zero is reserved by IANA. In + situations where the value zero does not make sense, it can + be excluded by subtyping the port-number type. + In the value set and its semantics, this type is equivalent + to the InetPortNumber textual convention of the SMIv2."; + reference + "RFC 768: User Datagram Protocol + RFC 793: Transmission Control Protocol + RFC 4960: Stream Control Transmission Protocol + RFC 4340: Datagram Congestion Control Protocol (DCCP) + RFC 4001: Textual Conventions for Internet Network Addresses"; + } + + /*** collection of types related to autonomous systems ***/ + + typedef as-number { + type uint32; + description + "The as-number type represents autonomous system numbers + which identify an Autonomous System (AS). An AS is a set + of routers under a single technical administration, using + an interior gateway protocol and common metrics to route + packets within the AS, and using an exterior gateway + protocol to route packets to other ASes. IANA maintains + the AS number space and has delegated large parts to the + regional registries. + + Autonomous system numbers were originally limited to 16 + bits. BGP extensions have enlarged the autonomous system + number space to 32 bits. This type therefore uses an uint32 + base type without a range restriction in order to support + a larger autonomous system number space. + + In the value set and its semantics, this type is equivalent + to the InetAutonomousSystemNumber textual convention of + the SMIv2."; + reference + "RFC 1930: Guidelines for creation, selection, and registration + of an Autonomous System (AS) + RFC 4271: A Border Gateway Protocol 4 (BGP-4) + RFC 4001: Textual Conventions for Internet Network Addresses + RFC 6793: BGP Support for Four-Octet Autonomous System (AS) + Number Space"; + } + + /*** collection of types related to IP addresses and hostnames ***/ + + typedef ip-address { + type union { + type inet:ipv4-address; + type inet:ipv6-address; + } + description + "The ip-address type represents an IP address and is IP + version neutral. The format of the textual representation + implies the IP version. This type supports scoped addresses + by allowing zone identifiers in the address format."; + reference + "RFC 4007: IPv6 Scoped Address Architecture"; + } + + typedef ipv4-address { + 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])' + + '(%[\p{N}\p{L}]+)?'; + } + description + "The ipv4-address type represents an IPv4 address in + dotted-quad notation. The IPv4 address may include a zone + index, separated by a % sign. + + The zone index is used to disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index number or the name of an + interface. If the zone index is not present, the default + zone of the device will be used. + + The canonical format for the zone index is the numerical + format"; + } + + typedef ipv6-address { + type string { + pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' + + '(%[\p{N}\p{L}]+)?'; + pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' + + '(%.+)?'; + } + description + "The ipv6-address type represents an IPv6 address in full, + mixed, shortened, and shortened-mixed notation. The IPv6 + address may include a zone index, separated by a % sign. + + The zone index is used to disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index number or the name of an + interface. If the zone index is not present, the default + zone of the device will be used. + + + + The canonical format of IPv6 addresses uses the textual + representation defined in Section 4 of RFC 5952. The + canonical format for the zone index is the numerical + format as described in Section 11.2 of RFC 4007."; + reference + "RFC 4291: IP Version 6 Addressing Architecture + RFC 4007: IPv6 Scoped Address Architecture + RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + + typedef ip-address-no-zone { + type union { + type inet:ipv4-address-no-zone; + type inet:ipv6-address-no-zone; + } + description + "The ip-address-no-zone type represents an IP address and is + IP version neutral. The format of the textual representation + implies the IP version. This type does not support scoped + addresses since it does not allow zone identifiers in the + address format."; + reference + "RFC 4007: IPv6 Scoped Address Architecture"; + } + + typedef ipv4-address-no-zone { + type inet:ipv4-address { + pattern '[0-9\.]*'; + } + description + "An IPv4 address without a zone index. This type, derived from + ipv4-address, may be used in situations where the zone is + known from the context and hence no zone index is needed."; + } + + typedef ipv6-address-no-zone { + type inet:ipv6-address { + pattern '[0-9a-fA-F:\.]*'; + } + description + "An IPv6 address without a zone index. This type, derived from + ipv6-address, may be used in situations where the zone is + known from the context and hence no zone index is needed."; + reference + "RFC 4291: IP Version 6 Addressing Architecture + RFC 4007: IPv6 Scoped Address Architecture + RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + + typedef ip-prefix { + type union { + type inet:ipv4-prefix; + type inet:ipv6-prefix; + } + description + "The ip-prefix type represents an IP prefix and is IP + version neutral. The format of the textual representations + implies the IP version."; + } + + typedef ipv4-prefix { + 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-2][0-9])|(3[0-2]))'; + } + description + "The ipv4-prefix type represents an IPv4 address prefix. + The prefix length is given by the number following the + slash character and must be less than or equal to 32. + + A prefix length value of n corresponds to an IP address + mask that has n contiguous 1-bits from the most + significant bit (MSB) and all other bits set to 0. + + The canonical format of an IPv4 prefix has all bits of + the IPv4 address set to zero that are not part of the + IPv4 prefix."; + } + + typedef ipv6-prefix { + type string { + pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' + + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'; + pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' + + '(/.+)'; + } + + + description + "The ipv6-prefix type represents an IPv6 address prefix. + The prefix length is given by the number following the + slash character and must be less than or equal to 128. + + A prefix length value of n corresponds to an IP address + mask that has n contiguous 1-bits from the most + significant bit (MSB) and all other bits set to 0. + + The IPv6 address should have all bits that do not belong + to the prefix set to zero. + + The canonical format of an IPv6 prefix has all bits of + the IPv6 address set to zero that are not part of the + IPv6 prefix. Furthermore, the IPv6 address is represented + as defined in Section 4 of RFC 5952."; + reference + "RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + + /*** collection of domain name and URI types ***/ + + typedef domain-name { + type string { + pattern + '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' + + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' + + '|\.'; + length "1..253"; + } + description + "The domain-name type represents a DNS domain name. The + name SHOULD be fully qualified whenever possible. + + Internet domain names are only loosely specified. Section + 3.5 of RFC 1034 recommends a syntax (modified in Section + 2.1 of RFC 1123). The pattern above is intended to allow + for current practice in domain name use, and some possible + future expansion. It is designed to hold various types of + domain names, including names used for A or AAAA records + (host names) and other records, such as SRV records. Note + that Internet host names have a stricter syntax (described + in RFC 952) than the DNS recommendations in RFCs 1034 and + 1123, and that systems that want to store host names in + schema nodes using the domain-name type are recommended to + adhere to this stricter standard to ensure interoperability. + + The encoding of DNS names in the DNS protocol is limited + to 255 characters. Since the encoding consists of labels + prefixed by a length bytes and there is a trailing NULL + byte, only 253 characters can appear in the textual dotted + notation. + + The description clause of schema nodes using the domain-name + type MUST describe when and how these names are resolved to + IP addresses. Note that the resolution of a domain-name value + may require to query multiple DNS records (e.g., A for IPv4 + and AAAA for IPv6). The order of the resolution process and + which DNS record takes precedence can either be defined + explicitly or may depend on the configuration of the + resolver. + + Domain-name values use the US-ASCII encoding. Their canonical + format uses lowercase US-ASCII characters. Internationalized + domain names MUST be A-labels as per RFC 5890."; + reference + "RFC 952: DoD Internet Host Table Specification + RFC 1034: Domain Names - Concepts and Facilities + RFC 1123: Requirements for Internet Hosts -- Application + and Support + RFC 2782: A DNS RR for specifying the location of services + (DNS SRV) + RFC 5890: Internationalized Domain Names in Applications + (IDNA): Definitions and Document Framework"; + } + + typedef host { + type union { + type inet:ip-address; + type inet:domain-name; + } + description + "The host type represents either an IP address or a DNS + domain name."; + } + + typedef uri { + type string; + description + "The uri type represents a Uniform Resource Identifier + (URI) as defined by STD 66. + + Objects using the uri type MUST be in US-ASCII encoding, + and MUST be normalized as described by RFC 3986 Sections + 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary + percent-encoding is removed, and all case-insensitive + characters are set to lowercase except for hexadecimal + digits, which are normalized to uppercase as described in + Section 6.2.2.1. + + The purpose of this normalization is to help provide + unique URIs. Note that this normalization is not + sufficient to provide uniqueness. Two URIs that are + textually distinct after this normalization may still be + equivalent. + + Objects using the uri type may restrict the schemes that + they permit. For example, 'data:' and 'urn:' schemes + might not be appropriate. + + A zero-length URI is not a valid URI. This can be used to + express 'URI absent' where required. + + In the value set and its semantics, this type is equivalent + to the Uri SMIv2 textual convention defined in RFC 5017."; + reference + "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax + RFC 3305: Report from the Joint W3C/IETF URI Planning Interest + Group: Uniform Resource Identifiers (URIs), URLs, + and Uniform Resource Names (URNs): Clarifications + and Recommendations + RFC 5017: MIB Textual Conventions for Uniform Resource + Identifiers (URIs)"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/ietf-interfaces.yang b/vendor/cisco/nx/9.3-14/ietf-interfaces.yang new file mode 100644 index 000000000..ca12e9be9 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/ietf-interfaces.yang @@ -0,0 +1,701 @@ + module ietf-interfaces { + + namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces"; + prefix if; + + import ietf-yang-types { + prefix yang; + } +// import xmas { +// prefix xmas; +// } + organization + "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; + + contact + "WG Web: + WG List: + + WG Chair: David Kessens + + + WG Chair: Juergen Schoenwaelder + + + + Editor: Martin Bjorklund + "; + + description + "This module contains a collection of YANG definitions for + managing network interfaces. + + Copyright (c) 2013 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC XXXX; see + the RFC itself for full legal notices."; + + // RFC Ed.: replace XXXX with actual RFC number and remove this + // note. + + // RFC Ed.: update the date below with the date of RFC publication + // and remove this note. + revision 2013-12-23 { + description + "Proposed. Added xmas annotations to the original draft."; + reference + "RFC XXXX: A YANG Data Model for Interface Management"; + } + + /* + * Typedefs + */ +// xmas:module-id 0x06120001; + + typedef interface-ref { + type leafref { + path "/if:interfaces/if:interface/if:name"; + } + description + "This type is used by data models that need to reference + configured interfaces."; + } + + typedef interface-state-ref { + type leafref { + path "/if:interfaces-state/if:interface/if:name"; + } + description + "This type is used by data models that need to reference + the operationally present interfaces."; + } + + /* + * Identities + */ + + identity interface-type { + description + "Base identity from which specific interface types are + derived."; + } + + /* + * Features + */ + + feature arbitrary-names { + description + "This feature indicates that the device allows user-controlled + interfaces to be named arbitrarily."; + } + + feature pre-provisioning { + description + "This feature indicates that the device supports + pre-provisioning of interface configuration, i.e., it is + possible to configure an interface whose physical interface + hardware is not present on the device."; + } + + feature if-mib { + description + "This feature indicates that the device implements IF-MIB."; + reference + "RFC 2863: The Interfaces Group MIB"; + } + + /* + * Configuration data nodes + */ + + container interfaces { + description + "Interface configuration parameters."; + + list interface { + key "name"; + + description + "The list of configured interfaces on the device. + + The operational state of an interface is available in the + /interfaces-state/interface list. If the configuration of a + system-controlled interface cannot be used by the system + (e.g., the interface hardware present does not match the + interface type), then the configuration is not applied to + the system-controlled interface shown in the + /interfaces-state/interface list. If the configuration + of a user-controlled interface cannot be used by the system, + the configured interface is not instantiated in the + /interfaces-state/interface list."; + + leaf name { + type string; + description + "The name of the interface. + + A device MAY restrict the allowed values for this leaf, + possibly depending on the type of the interface. + + For system-controlled interfaces, this leaf is the + device-specific name of the interface. The 'config false' + list /interfaces-state/interface contains the currently + existing interfaces on the device. + + If a client tries to create configuration for a + system-controlled interface that is not present in the + /interfaces-state/interface list, the server MAY reject + the request, if the implementation does not support + pre-provisioning of interfaces, or if the name refers to + an interface that can never exist in the system. A + NETCONF server MUST reply with an rpc-error with the + error-tag 'invalid-value' in this case. + + If the device supports pre-provisioning of interface + configuration, the feature 'pre-provisioning' is + advertised. + + If the device allows arbitrarily named user-controlled + interfaces, the feature 'arbitrary-names' is advertised. + + When a configured user-controlled interface is created by + the system, it is instantiated with the same name in the + /interface-state/interface list."; + } + + leaf description { + type string; + description + "A textual description of the interface. + + A server implementation MAY map this leaf to the ifAlias + MIB object. Such an implementation needs to use some + mechanism to handle the differences in size and characters + allowed between this leaf and ifAlias. The definition of + such a mechanism is outside the scope of this document. + + Since ifAlias is defined to be stored in non-volatile + storage, the MIB implementation MUST map ifAlias to the + value of 'description' in the persistently stored + datastore. + + Specifically, if the device supports ':startup', when + ifAlias is read the device MUST return the value of + 'description' in the 'startup' datastore, and when it is + written, it MUST be written to the 'running' and 'startup' + datastores. Note that it is up to the implementation if + it modifies this single leaf in 'startup', or if it + performs an implicit copy-config from 'running' to + 'startup'. + + If the device does not support ':startup', ifAlias MUST + be mapped to the 'description' leaf in the 'running' + datastore."; + reference + "RFC 2863: The Interfaces Group MIB - ifAlias"; + } + + leaf type { + type identityref { + base interface-type; + } + mandatory true; + description + "The type of the interface. + + When an interface entry is created, a server MAY + initialize the type leaf with a valid value, e.g., if it + is possible to derive the type from the name of the + interface. + + If a client tries to set the type of an interface to a + value that can never be used by the system, e.g., if the + type is not supported or if the type does not match the + name of the interface, the server MUST reject the request. + A NETCONF server MUST reply with an rpc-error with the + error-tag 'invalid-value' in this case."; + reference + "RFC 2863: The Interfaces Group MIB - ifType"; + } + + leaf enabled { + type boolean; + default "true"; + description + "This leaf contains the configured, desired state of the + interface. + + Systems that implement the IF-MIB use the value of this + leaf in the 'running' datastore to set + IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry + has been initialized, as described in RFC 2863. + + Changes in this leaf in the 'running' datastore are + reflected in ifAdminStatus, but if ifAdminStatus is + changed over SNMP, this leaf is not affected."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + + leaf link-up-down-trap-enable { + if-feature if-mib; + type enumeration { + enum enabled { + value 1; + } + enum disabled { + value 2; + } + } + description + "Controls whether linkUp/linkDown SNMP notifications + should be generated for this interface. + + If this node is not configured, the value 'enabled' is + operationally used by the server for interfaces which do + not operate on top of any other interface (i.e., there are + no 'lower-layer-if' entries), and 'disabled' otherwise."; + reference + "RFC 2863: The Interfaces Group MIB - + ifLinkUpDownTrapEnable"; + } + } + } + + /* + * Operational state data nodes + */ + + container interfaces-state { + config false; + description + "Data nodes for the operational state of interfaces."; + + list interface { + key "name"; + + description + "The list of interfaces on the device. + + System-controlled interfaces created by the system are + always present in this list, whether they are configured or + not."; + + leaf name { + type string; + description + "The name of the interface. + + A server implementation MAY map this leaf to the ifName + MIB object. Such an implementation needs to use some + mechanism to handle the differences in size and characters + allowed between this leaf and ifName. The definition of + such a mechanism is outside the scope of this document."; + reference + "RFC 2863: The Interfaces Group MIB - ifName"; + } + + leaf type { + type identityref { + base interface-type; + } + mandatory true; + description + "The type of the interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifType"; + } + + leaf admin-status { + if-feature if-mib; + type enumeration { + enum up { + value 1; + description + "Ready to pass packets."; + } + enum down { + value 2; + description + "Not ready to pass packets and not in some test mode."; + } + enum testing { + value 3; + description + + "In some test mode."; + } + } + mandatory true; + description + "The desired state of the interface. + + This leaf has the same read semantics as ifAdminStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + + leaf oper-status { + type enumeration { + enum up { + value 1; + description + "Ready to pass packets."; + } + enum down { + value 2; + description + "The interface does not pass any packets."; + } + enum testing { + value 3; + description + "In some test mode. No operational packets can + be passed."; + } + enum unknown { + value 4; + description + "Status cannot be determined for some reason."; + } + enum dormant { + value 5; + description + "Waiting for some external event."; + } + enum not-present { + value 6; + description + "Some component (typically hardware) is missing."; + } + enum lower-layer-down { + value 7; + description + + "Down due to state of lower-layer interface(s)."; + } + } + mandatory true; + description + "The current operational state of the interface. + + This leaf has the same semantics as ifOperStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifOperStatus"; + } + + leaf last-change { + type yang:date-and-time; + description + "The time the interface entered its current operational + state. If the current state was entered prior to the + last re-initialization of the local network management + subsystem, then this node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - ifLastChange"; + } + + leaf if-index { + if-feature if-mib; + type int32 { + range "1..2147483647"; + } + mandatory true; + description + "The ifIndex value for the ifEntry represented by this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifIndex"; + } + + leaf phys-address { + type yang:phys-address; + description + "The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a MAC address. The interface's media-specific + modules must define the bit and byte ordering and the + format of the value of this object. For interfaces that do + not have such an address (e.g., a serial line), this node + is not present."; + reference + "RFC 2863: The Interfaces Group MIB - ifPhysAddress"; + + } + + leaf-list higher-layer-if { + type interface-state-ref; + description + "A list of references to interfaces layered on top of this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifStackTable"; + } + + leaf-list lower-layer-if { + type interface-state-ref; + description + "A list of references to interfaces layered underneath this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifStackTable"; + } + + leaf speed { + type yang:gauge64; + units "bits / second"; + description + "An estimate of the interface's current bandwidth in bits + per second. For interfaces that do not vary in + bandwidth or for those where no accurate estimation can + be made, this node should contain the nominal bandwidth. + For interfaces that have no concept of bandwidth, this + node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - + ifSpeed, ifHighSpeed"; + } + + container statistics { +// xmas:item; + description + "A collection of interface-related statistics objects."; + + leaf discontinuity-time { + type yang:date-and-time; + mandatory true; + description + "The time on the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + + management subsystem re-initialized itself."; + } + + leaf in-octets { + type yang:counter64; + description + "The total number of octets received on the interface, + including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; + } + leaf in-unicast-pkts { + type yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were not addressed to a + multicast or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; + } + leaf in-broadcast-pkts { + type yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInBroadcastPkts"; + } + leaf in-multicast-pkts { + type yang:counter64; + description + + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, which were addressed to a multicast + address at this sub-layer. For a MAC layer protocol, + this includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInMulticastPkts"; + } + leaf in-discards { + type yang:counter32; + description + "The number of inbound packets which were chosen to be + discarded even though no errors had been detected to + prevent their being deliverable to a higher-layer + protocol. One possible reason for discarding such a + packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInDiscards"; + } + leaf in-errors { + type yang:counter32; + description + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of + inbound transmission units that contained errors + preventing them from being deliverable to a higher-layer + protocol. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInErrors"; + } + leaf in-unknown-protos { + type yang:counter32; + description + "For packet-oriented interfaces, the number of packets + received via the interface which were discarded because + of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces that + support protocol multiplexing the number of transmission + units received via the interface which were discarded + because of an unknown or unsupported protocol. For any + interface that does not support protocol multiplexing, + this counter is not present. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; + } + + leaf out-octets { + type yang:counter64; + description + "The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; + } + leaf out-unicast-pkts { + type yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were not addressed + to a multicast or broadcast address at this sub-layer, + including those that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; + } + + leaf out-broadcast-pkts { + type yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + broadcast address at this sub-layer, including those + that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutBroadcastPkts"; + } + leaf out-multicast-pkts { + type yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and which were addressed to a + multicast address at this sub-layer, including those + that were discarded or not sent. For a MAC layer + protocol, this includes both Group and Functional + addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutMulticastPkts"; + } + leaf out-discards { + type yang:counter32; + description + "The number of outbound packets which were chosen to be + discarded even though no errors had been detected to + prevent their being transmitted. One possible reason + for discarding such a packet could be to free up buffer + space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + + "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; + } + leaf out-errors { + type yang:counter32; + description + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutErrors"; + } + } + } + } + } + + diff --git a/vendor/cisco/nx/9.3-14/ietf-yang-types.yang b/vendor/cisco/nx/9.3-14/ietf-yang-types.yang new file mode 100644 index 000000000..371a091d1 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/ietf-yang-types.yang @@ -0,0 +1,480 @@ +module ietf-yang-types { + + namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types"; + prefix "yang"; + + organization + "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; + + contact + "WG Web: + WG List: + + WG Chair: David Kessens + + + WG Chair: Juergen Schoenwaelder + + + Editor: Juergen Schoenwaelder + "; + + description + "This module contains a collection of generally useful derived + YANG data types. + + Copyright (c) 2013 IETF Trust and the persons identified as + authors of the code. All rights reserved. + + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + + This version of this YANG module is part of RFC 6991; see + the RFC itself for full legal notices."; + + revision 2013-07-15 { + description + "This revision adds the following new data types: + - yang-identifier + - hex-string + - uuid + - dotted-quad"; + reference + "RFC 6991: Common YANG Data Types"; + } + + revision 2010-09-24 { + description + "Initial revision."; + reference + "RFC 6021: Common YANG Data Types"; + } + + /*** collection of counter and gauge types ***/ + + typedef counter32 { + type uint32; + description + "The counter32 type represents a non-negative integer + that monotonically increases until it reaches a + maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Counters have no defined 'initial' value, and thus, a + single value of a counter has (in general) no information + content. Discontinuities in the monotonically increasing + value normally occur at re-initialization of the + management system, and at other times as specified in the + description of a schema node using this type. If such + other times can occur, for example, the creation of + a schema node of type counter32 at times other than + re-initialization, then a corresponding schema node + should be defined, with an appropriate type, to indicate + the last discontinuity. + + The counter32 type should not be used for configuration + schema nodes. A default statement SHOULD NOT be used in + combination with the type counter32. + + In the value set and its semantics, this type is equivalent + to the Counter32 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef zero-based-counter32 { + type yang:counter32; + default "0"; + description + "The zero-based-counter32 type represents a counter32 + that has the defined 'initial' value zero. + + A schema node of this type will be set to zero (0) on creation + and will thereafter increase monotonically until it reaches + a maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + + Provided that an application discovers a new schema node + of this type within the minimum time to wrap, it can use the + 'initial' value as a delta. It is important for a management + station to be aware of this minimum time and the actual time + between polls, and to discard data if the actual time is too + long or there is no defined minimum time. + + In the value set and its semantics, this type is equivalent + to the ZeroBasedCounter32 textual convention of the SMIv2."; + reference + "RFC 4502: Remote Network Monitoring Management Information + Base Version 2"; + } + + typedef counter64 { + type uint64; + description + "The counter64 type represents a non-negative integer + that monotonically increases until it reaches a + maximum value of 2^64-1 (18446744073709551615 decimal), + when it wraps around and starts increasing again from zero. + + Counters have no defined 'initial' value, and thus, a + single value of a counter has (in general) no information + content. Discontinuities in the monotonically increasing + value normally occur at re-initialization of the + management system, and at other times as specified in the + description of a schema node using this type. If such + other times can occur, for example, the creation of + a schema node of type counter64 at times other than + re-initialization, then a corresponding schema node + should be defined, with an appropriate type, to indicate + the last discontinuity. + + The counter64 type should not be used for configuration + schema nodes. A default statement SHOULD NOT be used in + combination with the type counter64. + + In the value set and its semantics, this type is equivalent + to the Counter64 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef zero-based-counter64 { + type yang:counter64; + default "0"; + description + "The zero-based-counter64 type represents a counter64 that + has the defined 'initial' value zero. + + + + + A schema node of this type will be set to zero (0) on creation + and will thereafter increase monotonically until it reaches + a maximum value of 2^64-1 (18446744073709551615 decimal), + when it wraps around and starts increasing again from zero. + + Provided that an application discovers a new schema node + of this type within the minimum time to wrap, it can use the + 'initial' value as a delta. It is important for a management + station to be aware of this minimum time and the actual time + between polls, and to discard data if the actual time is too + long or there is no defined minimum time. + + In the value set and its semantics, this type is equivalent + to the ZeroBasedCounter64 textual convention of the SMIv2."; + reference + "RFC 2856: Textual Conventions for Additional High Capacity + Data Types"; + } + + typedef gauge32 { + type uint32; + description + "The gauge32 type represents a non-negative integer, which + may increase or decrease, but shall never exceed a maximum + value, nor fall below a minimum value. The maximum value + cannot be greater than 2^32-1 (4294967295 decimal), and + the minimum value cannot be smaller than 0. The value of + a gauge32 has its maximum value whenever the information + being modeled is greater than or equal to its maximum + value, and has its minimum value whenever the information + being modeled is smaller than or equal to its minimum value. + If the information being modeled subsequently decreases + below (increases above) the maximum (minimum) value, the + gauge32 also decreases (increases). + + In the value set and its semantics, this type is equivalent + to the Gauge32 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef gauge64 { + type uint64; + description + "The gauge64 type represents a non-negative integer, which + may increase or decrease, but shall never exceed a maximum + value, nor fall below a minimum value. The maximum value + cannot be greater than 2^64-1 (18446744073709551615), and + the minimum value cannot be smaller than 0. The value of + a gauge64 has its maximum value whenever the information + being modeled is greater than or equal to its maximum + value, and has its minimum value whenever the information + being modeled is smaller than or equal to its minimum value. + If the information being modeled subsequently decreases + below (increases above) the maximum (minimum) value, the + gauge64 also decreases (increases). + + In the value set and its semantics, this type is equivalent + to the CounterBasedGauge64 SMIv2 textual convention defined + in RFC 2856"; + reference + "RFC 2856: Textual Conventions for Additional High Capacity + Data Types"; + } + + /*** collection of identifier-related types ***/ + + typedef object-identifier { + type string { + pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))' + + '(\.(0|([1-9]\d*)))*'; + } + description + "The object-identifier type represents administratively + assigned names in a registration-hierarchical-name tree. + + Values of this type are denoted as a sequence of numerical + non-negative sub-identifier values. Each sub-identifier + value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers + are separated by single dots and without any intermediate + whitespace. + + The ASN.1 standard restricts the value space of the first + sub-identifier to 0, 1, or 2. Furthermore, the value space + of the second sub-identifier is restricted to the range + 0 to 39 if the first sub-identifier is 0 or 1. Finally, + the ASN.1 standard requires that an object identifier + has always at least two sub-identifiers. The pattern + captures these restrictions. + + Although the number of sub-identifiers is not limited, + module designers should realize that there may be + implementations that stick with the SMIv2 limit of 128 + sub-identifiers. + + This type is a superset of the SMIv2 OBJECT IDENTIFIER type + since it is not restricted to 128 sub-identifiers. Hence, + this type SHOULD NOT be used to represent the SMIv2 OBJECT + IDENTIFIER type; the object-identifier-128 type SHOULD be + used instead."; + reference + "ISO9834-1: Information technology -- Open Systems + Interconnection -- Procedures for the operation of OSI + Registration Authorities: General procedures and top + arcs of the ASN.1 Object Identifier tree"; + } + + typedef object-identifier-128 { + type object-identifier { + pattern '\d*(\.\d*){1,127}'; + } + description + "This type represents object-identifiers restricted to 128 + sub-identifiers. + + In the value set and its semantics, this type is equivalent + to the OBJECT IDENTIFIER type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef yang-identifier { + type string { + length "1..max"; + pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; + pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; + } + description + "A YANG identifier string as defined by the 'identifier' + rule in Section 12 of RFC 6020. An identifier must + start with an alphabetic character or an underscore + followed by an arbitrary sequence of alphabetic or + numeric characters, underscores, hyphens, or dots. + + A YANG identifier MUST NOT start with any possible + combination of the lowercase or uppercase character + sequence 'xml'."; + reference + "RFC 6020: YANG - A Data Modeling Language for the Network + Configuration Protocol (NETCONF)"; + } + + /*** collection of types related to date and time***/ + + typedef date-and-time { + type string { + pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?' + + '(Z|[\+\-]\d{2}:\d{2})'; + } + description + "The date-and-time type is a profile of the ISO 8601 + standard for representation of dates and times using the + Gregorian calendar. The profile is defined by the + date-time production in Section 5.6 of RFC 3339. + + The date-and-time type is compatible with the dateTime XML + schema type with the following notable exceptions: + + (a) The date-and-time type does not allow negative years. + + (b) The date-and-time time-offset -00:00 indicates an unknown + time zone (see RFC 3339) while -00:00 and +00:00 and Z + all represent the same time zone in dateTime. + + (c) The canonical format (see below) of data-and-time values + differs from the canonical format used by the dateTime XML + schema type, which requires all times to be in UTC using + the time-offset 'Z'. + + This type is not equivalent to the DateAndTime textual + convention of the SMIv2 since RFC 3339 uses a different + separator between full-date and full-time and provides + higher resolution of time-secfrac. + + The canonical format for date-and-time values with a known time + zone uses a numeric time zone offset that is calculated using + the device's configured known offset to UTC time. A change of + the device's offset to UTC time will cause date-and-time values + to change accordingly. Such changes might happen periodically + in case a server follows automatically daylight saving time + (DST) time zone offset changes. The canonical format for + date-and-time values with an unknown time zone (usually + referring to the notion of local time) uses the time-offset + -00:00."; + reference + "RFC 3339: Date and Time on the Internet: Timestamps + RFC 2579: Textual Conventions for SMIv2 + XSD-TYPES: XML Schema Part 2: Datatypes Second Edition"; + } + + typedef timeticks { + type uint32; + description + "The timeticks type represents a non-negative integer that + represents the time, modulo 2^32 (4294967296 decimal), in + hundredths of a second between two epochs. When a schema + node is defined that uses this type, the description of + the schema node identifies both of the reference epochs. + + In the value set and its semantics, this type is equivalent + to the TimeTicks type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + + typedef timestamp { + type yang:timeticks; + description + "The timestamp type represents the value of an associated + timeticks schema node at which a specific occurrence + happened. The specific occurrence must be defined in the + description of any schema node defined using this type. When + the specific occurrence occurred prior to the last time the + associated timeticks attribute was zero, then the timestamp + value is zero. Note that this requires all timestamp values + to be reset to zero when the value of the associated timeticks + attribute reaches 497+ days and wraps around to zero. + + The associated timeticks schema node must be specified + in the description of any schema node using this type. + + In the value set and its semantics, this type is equivalent + to the TimeStamp textual convention of the SMIv2."; + reference + "RFC 2579: Textual Conventions for SMIv2"; + } + + /*** collection of generic address types ***/ + + typedef phys-address { + type string { + pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; + } + + + + + description + "Represents media- or physical-level addresses represented + as a sequence octets, each octet represented by two hexadecimal + numbers. Octets are separated by colons. The canonical + representation uses lowercase characters. + + In the value set and its semantics, this type is equivalent + to the PhysAddress textual convention of the SMIv2."; + reference + "RFC 2579: Textual Conventions for SMIv2"; + } + + typedef mac-address { + type string { + pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'; + } + description + "The mac-address type represents an IEEE 802 MAC address. + The canonical representation uses lowercase characters. + + In the value set and its semantics, this type is equivalent + to the MacAddress textual convention of the SMIv2."; + reference + "IEEE 802: IEEE Standard for Local and Metropolitan Area + Networks: Overview and Architecture + RFC 2579: Textual Conventions for SMIv2"; + } + + /*** collection of XML-specific types ***/ + + typedef xpath1.0 { + type string; + description + "This type represents an XPATH 1.0 expression. + + When a schema node is defined that uses this type, the + description of the schema node MUST specify the XPath + context in which the XPath expression is evaluated."; + reference + "XPATH: XML Path Language (XPath) Version 1.0"; + } + + /*** collection of string types ***/ + + typedef hex-string { + type string { + pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; + } + description + "A hexadecimal string with octets represented as hex digits + separated by colons. The canonical representation uses + lowercase characters."; + } + + typedef uuid { + type string { + pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'; + } + description + "A Universally Unique IDentifier in the string representation + defined in RFC 4122. The canonical representation uses + lowercase characters. + + The following is an example of a UUID in string representation: + f81d4fae-7dec-11d0-a765-00a0c91e6bf6 + "; + reference + "RFC 4122: A Universally Unique IDentifier (UUID) URN + Namespace"; + } + + typedef dotted-quad { + 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])'; + } + description + "An unsigned 32-bit number expressed in the dotted-quad + notation, i.e., four octets written as decimal numbers + and separated with the '.' (full stop) character."; + } +} diff --git a/vendor/cisco/nx/9.3-14/netconf-capabilities.xml b/vendor/cisco/nx/9.3-14/netconf-capabilities.xml new file mode 100644 index 000000000..8b70d720e --- /dev/null +++ b/vendor/cisco/nx/9.3-14/netconf-capabilities.xml @@ -0,0 +1,44 @@ + + + + urn:ietf:params:netconf:base:1.0 + urn:ietf:params:netconf:base:1.1 + urn:ietf:params:netconf:capability:writable-running:1.0 + urn:ietf:params:netconf:capability:rollback-on-error:1.0 + urn:ietf:params:netconf:capability:candidate:1.0 + urn:ietf:params:netconf:capability:validate:1.1 + urn:ietf:params:netconf:capability:confirmed-commit:1.1 + urn:ietf:params:netconf:capability:notification:1.0 + urn:ietf:params:netconf:capability:interleave:1.0 + urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=report-all + http://cisco.com/ns/yang/cisco-nx-os-device?revision=2024-09-11&module=Cisco-NX-OS-device + http://openconfig.net/yang/acl?revision=2019-11-27&module=openconfig-acl&deviations=cisco-nx-openconfig-acl-deviations + http://openconfig.net/yang/bfd?revision=2019-10-25&module=openconfig-bfd&deviations=cisco-nx-openconfig-bfd-deviations + http://openconfig.net/yang/bgp-policy?revision=2019-11-28&module=openconfig-bgp-policy&deviations=cisco-nx-openconfig-bgp-policy-deviations + http://openconfig.net/yang/interfaces?revision=2017-07-14&module=openconfig-interfaces&deviations=cisco-nx-openconfig-interfaces-deviations + http://openconfig.net/yang/interfaces/aggregate?revision=2017-07-14&module=openconfig-if-aggregate&deviations=cisco-nx-openconfig-if-aggregate-deviations + http://openconfig.net/yang/interfaces/ethernet?revision=2017-07-14&module=openconfig-if-ethernet&deviations=cisco-nx-openconfig-if-ethernet-deviations + http://openconfig.net/yang/interfaces/ip?revision=2018-01-05&module=openconfig-if-ip&deviations=cisco-nx-openconfig-if-ip-deviations + http://openconfig.net/yang/interfaces/ip-ext?revision=2018-01-05&module=openconfig-if-ip-ext&deviations=cisco-nx-openconfig-if-ip-ext-deviations + http://openconfig.net/yang/lacp?revision=2018-11-21&module=openconfig-lacp&deviations=cisco-nx-openconfig-lacp-deviations + http://openconfig.net/yang/lldp?revision=2018-11-21&module=openconfig-lldp&deviations=cisco-nx-openconfig-lldp-deviations + http://openconfig.net/yang/network-instance?revision=2018-11-21&module=openconfig-network-instance&deviations=cisco-nx-openconfig-network-instance-deviations + http://openconfig.net/yang/network-instance/policy?revision=2018-11-21&module=openconfig-network-instance-policy&deviations=cisco-nx-openconfig-network-instance-policy-deviations + http://openconfig.net/yang/ospf-policy?revision=2017-08-24&module=openconfig-ospf-policy&deviations=cisco-nx-openconfig-ospf-policy-deviations + http://openconfig.net/yang/platform?revision=2019-04-16&module=openconfig-platform&deviations=cisco-nx-openconfig-platform-deviations + http://openconfig.net/yang/platform/cpu?revision=2018-11-21&module=openconfig-platform-cpu&deviations=cisco-nx-openconfig-platform-cpu-deviations + http://openconfig.net/yang/platform/fan?revision=2018-11-21&module=openconfig-platform-fan&deviations=cisco-nx-openconfig-platform-fan-deviations + http://openconfig.net/yang/platform/linecard?revision=2018-11-21&module=openconfig-platform-linecard&deviations=cisco-nx-openconfig-platform-linecard-deviations + http://openconfig.net/yang/platform/port?revision=2018-11-21&module=openconfig-platform-port&deviations=cisco-nx-openconfig-platform-port-deviations + http://openconfig.net/yang/platform/psu?revision=2018-11-21&module=openconfig-platform-psu&deviations=cisco-nx-openconfig-platform-psu-deviations + http://openconfig.net/yang/platform/transceiver?revision=2018-11-25&module=openconfig-platform-transceiver&deviations=cisco-nx-openconfig-platform-transceiver-deviations + http://openconfig.net/yang/qos?revision=2019-11-28&module=openconfig-qos&deviations=cisco-nx-openconfig-qos-deviations + http://openconfig.net/yang/relay-agent?revision=2018-11-21&module=openconfig-relay-agent&deviations=cisco-nx-openconfig-relay-agent-deviations + http://openconfig.net/yang/routing-policy?revision=2018-11-21&module=openconfig-routing-policy&deviations=cisco-nx-openconfig-routing-policy-deviations + http://openconfig.net/yang/spanning-tree?revision=2019-11-28&module=openconfig-spanning-tree&deviations=cisco-nx-openconfig-spanning-tree-deviations + http://openconfig.net/yang/system?revision=2019-03-15&module=openconfig-system&deviations=cisco-nx-openconfig-system-deviations + http://openconfig.net/yang/telemetry?revision=2018-11-21&module=openconfig-telemetry&deviations=cisco-nx-openconfig-telemetry-deviations + http://openconfig.net/yang/vlan?revision=2018-11-21&module=openconfig-vlan&deviations=cisco-nx-openconfig-vlan-deviations + + 896309418 + diff --git a/vendor/cisco/nx/9.3-14/openconfig-aaa-radius.yang b/vendor/cisco/nx/9.3-14/openconfig-aaa-radius.yang new file mode 100644 index 000000000..a18b9d68d --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-aaa-radius.yang @@ -0,0 +1,186 @@ +submodule openconfig-aaa-radius { + + yang-version "1"; + + belongs-to "openconfig-aaa" { + prefix "oc-aaa"; + } + + // import some basic types + import openconfig-inet-types { prefix oc-inet; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-aaa-types { prefix oc-aaa-types; } + import openconfig-types { prefix oc-types; } + import openconfig-yang-types { prefix oc-yang; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state data + related to the RADIUS protocol for authentication, + authorization, and accounting."; + + oc-ext:openconfig-version "0.4.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.4.1"; + } + + revision "2017-09-18" { + description + "Updated to use OpenConfig types modules"; + reference "0.3.0"; + } + + revision "2017-07-06" { + description + "Move to oc-inet types, add IETF attribution, add RADIUS + counters, changed password leaf names to indicate hashed"; + reference "0.2.0"; + } + + revision "2017-01-29" { + description + "Initial public release"; + reference "0.1.0"; + } + + // extension statements + + // feature statements + + // identity statements + + identity RADIUS { + base oc-aaa-types:AAA_SERVER_TYPE; + description + "Remote Authentication Dial In User Service (RADIUS) AAA + server"; + reference + "RFC 2865 - Remote Authentication Dial In User Service + (RADIUS)"; + } + + // typedef statements + + // grouping statements + + grouping aaa-radius-server-config { + description + "Configuration data for a RADIUS server"; + + leaf auth-port { + type oc-inet:port-number; + default 1812; + description + "Port number for authentication requests"; + } + + leaf acct-port { + type oc-inet:port-number; + default 1813; + description + "Port number for accounting requests"; + } + + leaf secret-key { + type oc-types:routing-password; + description + "The unencrypted shared key used between the authentication + server and the device."; + } + + leaf source-address { + type oc-inet:ip-address; + description + "Source IP address to use in messages to the RADIUS server"; + } + + leaf retransmit-attempts { + type uint8; + description + "Number of times the system may resend a request to the + RADIUS server when it is unresponsive"; + } + } + + grouping aaa-radius-server-state { + description + "Operational state data for a RADIUS server"; + + container counters { + description + "A collection of RADIUS related state objects."; + + leaf retried-access-requests { + type oc-yang:counter64; + description + "Retransmitted Access-Request messages."; + } + + leaf access-accepts { + type oc-yang:counter64; + description + "Received Access-Accept messages."; + } + + leaf access-rejects { + type oc-yang:counter64; + description + "Received Access-Reject messages."; + } + + leaf timeout-access-requests { + type oc-yang:counter64; + description + "Access-Request messages that have timed-out, + requiring retransmission."; + } + } + } + + grouping aaa-radius-server-top { + description + "Top-level grouping for RADIUS server data"; + + container radius { + description + "Top-level container for RADIUS server data"; + + container config { + description + "Configuration data for RADIUS servers"; + + uses aaa-radius-server-config; + } + + container state { + + config false; + + description + "Operational state data for RADIUS servers"; + + uses aaa-radius-server-config; + uses aaa-radius-server-state; + } + } + } + + // data definition statements + + // augment statements + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-aaa-tacacs.yang b/vendor/cisco/nx/9.3-14/openconfig-aaa-tacacs.yang new file mode 100644 index 000000000..1320bd0cf --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-aaa-tacacs.yang @@ -0,0 +1,142 @@ +submodule openconfig-aaa-tacacs { + + yang-version "1"; + + belongs-to "openconfig-aaa" { + prefix "oc-aaa"; + } + + // import some basic types + import openconfig-inet-types { prefix oc-inet; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-aaa-types { prefix oc-aaa-types; } + import openconfig-types { prefix oc-types; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state data + related to the TACACS+ protocol for authentication, + authorization, and accounting."; + + oc-ext:openconfig-version "0.4.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.4.1"; + } + + revision "2017-09-18" { + description + "Updated to use OpenConfig types modules"; + reference "0.3.0"; + } + + revision "2017-07-06" { + description + "Move to oc-inet types, add IETF attribution, add RADIUS + counters, changed password leaf names to indicate hashed"; + reference "0.2.0"; + } + + revision "2017-01-29" { + description + "Initial public release"; + reference "0.1.0"; + } + + // extension statements + + // feature statements + + // identity statements + + identity TACACS { + base oc-aaa-types:AAA_SERVER_TYPE; + description + "Terminal Access Controller Access Control System (TACACS+) + AAA server"; + reference + "The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05) + RFC 1492 - An Access Control Protocol, Sometimes Called + TACACS"; + } + + // typedef statements + + // grouping statements + + grouping aaa-tacacs-server-config { + description + "Configuration data for a TACACS+ server"; + + leaf port { + type oc-inet:port-number; + default 49; + description + "The port number on which to contact the TACACS server"; + } + + leaf secret-key { + type oc-types:routing-password; + description + "The unencrypted shared key used between the authentication + server and the device."; + } + + leaf source-address { + type oc-inet:ip-address; + description + "Source IP address to use in messages to the TACACS server"; + } + } + + grouping aaa-tacacs-server-state { + description + "Operational state data for a TACACS+ server"; + } + + grouping aaa-tacacs-server-top { + description + "Top-level grouping for TACACS+ sever data"; + + container tacacs { + description + "Top-level container for TACACS+ server data"; + + container config { + description + "Configuration data for TACACS+ server"; + + uses aaa-tacacs-server-config; + } + + container state { + + config false; + + description + "Operational state data for TACACS+ server"; + + uses aaa-tacacs-server-config; + uses aaa-tacacs-server-state; + } + } + } + + // data definition statements + + // augment statements + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-aaa-types.yang b/vendor/cisco/nx/9.3-14/openconfig-aaa-types.yang new file mode 100644 index 000000000..8385eca79 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-aaa-types.yang @@ -0,0 +1,172 @@ +module openconfig-aaa-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/aaa/types"; + + prefix "oc-aaa-types"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines shared types for data related to AAA + (authentication, authorization, accounting)."; + + oc-ext:openconfig-version "0.4.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.4.1"; + } + + revision "2018-04-12" { + description + "Add when conditions, correct identities"; + reference "0.4.0"; + } + + revision "2017-09-18" { + description + "Updated to use OpenConfig types modules"; + reference "0.3.0"; + } + + revision "2017-07-06" { + description + "Move to oc-inet types, add IETF attribution, add RADIUS + counters, changed password leaf names to indicate hashed"; + reference "0.2.0"; + } + + revision "2017-01-29" { + description + "Initial public release"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + identity AAA_SERVER_TYPE { + description + "Base identity for types of AAA servers"; + } + + + identity SYSTEM_DEFINED_ROLES { + description + "Base identity for system_defined roles that can be assigned + to users."; + } + + identity SYSTEM_ROLE_ADMIN { + base SYSTEM_DEFINED_ROLES; + description + "Built-in role that allows the equivalent of superuser + permission for all configuration and operational commands + on the device."; + } + + identity AAA_ACCOUNTING_EVENT_TYPE { + description + "Base identity for specifying events types that should be + sent to AAA server for accounting"; + } + + identity AAA_ACCOUNTING_EVENT_COMMAND { + base AAA_ACCOUNTING_EVENT_TYPE; + description + "Specifies interactive command events for AAA accounting"; + } + + identity AAA_ACCOUNTING_EVENT_LOGIN { + base AAA_ACCOUNTING_EVENT_TYPE; + description + "Specifies login events for AAA accounting"; + } + + identity AAA_AUTHORIZATION_EVENT_TYPE { + description + "Base identity for specifying activities that should be + sent to AAA server for authorization"; + } + + identity AAA_AUTHORIZATION_EVENT_COMMAND { + base AAA_AUTHORIZATION_EVENT_TYPE; + description + "Specifies interactive command events for AAA authorization"; + } + + identity AAA_AUTHORIZATION_EVENT_CONFIG { + base AAA_AUTHORIZATION_EVENT_TYPE; + description + "Specifies configuration (e.g., EXEC) events for AAA + authorization"; + } + + identity AAA_METHOD_TYPE { + description + "Base identity to define well-known methods for AAA + operations"; + } + + identity TACACS_ALL { + base AAA_METHOD_TYPE; + description + "The group of all TACACS+ servers."; + } + + identity RADIUS_ALL { + base AAA_METHOD_TYPE; + description + "The group of all RADIUS servers."; + } + + identity LOCAL { + base AAA_METHOD_TYPE; + description + "Locally configured method for AAA operations."; + } + + + // typedef statements + + typedef crypt-password-type { + type string; + description + "A password that is hashed based on the hash algorithm + indicated by the prefix in the string. The string + takes the following form, based on the Unix crypt function: + + $[$=(,=)*][$[$]] + + Common hash functions include: + + id | hash function + ---+--------------- + 1 | MD5 + 2a| Blowfish + 2y| Blowfish (correct handling of 8-bit chars) + 5 | SHA-256 + 6 | SHA-512 + + These may not all be supported by a target device."; + } + + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-aaa.yang b/vendor/cisco/nx/9.3-14/openconfig-aaa.yang new file mode 100644 index 000000000..d653ab225 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-aaa.yang @@ -0,0 +1,834 @@ +module openconfig-aaa { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/aaa"; + + prefix "oc-aaa"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + import openconfig-inet-types { prefix oc-inet; } + import openconfig-yang-types { prefix oc-yang; } + import openconfig-aaa-types { prefix oc-aaa-types; } + + include openconfig-aaa-tacacs; + include openconfig-aaa-radius; + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state data + related to authorization, authentication, and accounting (AAA) + management. + + Portions of this model reuse data definitions or structure from + RFC 7317 - A YANG Data Model for System Management"; + + oc-ext:openconfig-version "0.4.3"; + + revision "2019-10-28" { + description + "Fix bug in when statement path"; + reference "0.4.3"; + } + + revision "2019-08-20" { + description + "Fix identity prefixes and when statement paths"; + reference "0.4.2"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.4.1"; + } + + revision "2018-04-12" { + description + "Add when conditions, correct identities"; + reference "0.4.0"; + } + + revision "2017-09-18" { + description + "Updated to use OpenConfig types modules"; + reference "0.3.0"; + } + + revision "2017-07-06" { + description + "Move to oc-inet types, add IETF attribution, add RADIUS + counters, changed password leaf names to indicate hashed"; + reference "0.2.0"; + } + + revision "2017-01-29" { + description + "Initial public release"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + // grouping statements + grouping aaa-servergroup-common-config { + description + "Configuration data for AAA server groups"; + + leaf name { + type string; + description + "Name for the server group"; + } + + leaf type { + type identityref { + base oc-aaa-types:AAA_SERVER_TYPE; + } + description + "AAA server type -- all servers in the group must be of this + type"; + } + } + + grouping aaa-servergroup-common-state { + description + "Operational state data for AAA server groups"; + + //TODO: add list of group members as opstate + } + + grouping aaa-servergroup-common-top { + description + "Top-level grouping for AAA server groups"; + + container server-groups { + description + "Enclosing container for AAA server groups"; + + list server-group { + key "name"; + description + "List of AAA server groups. All servers in a group + must have the same type as indicated by the server + type."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to configured name of the server group"; + } + + container config { + description + "Configuration data for each server group"; + + uses aaa-servergroup-common-config; + } + + container state { + config false; + + description + "Operational state data for each server group"; + + uses aaa-servergroup-common-config; + uses aaa-servergroup-common-state; + } + + uses aaa-server-top; + } + } + } + + grouping aaa-server-config { + description + "Common configuration data for AAA servers"; + + leaf name { + type string; + description + "Name assigned to the server"; + } + + + leaf address { + type oc-inet:ip-address; + description "Address of the authentication server"; + } + + leaf timeout { + type uint16; + units seconds; + description + "Set the timeout in seconds on responses from the AAA + server"; + } + } + + grouping aaa-server-state { + description + "Common operational state data for AAA servers"; + + leaf connection-opens { + type oc-yang:counter64; + description + "Number of new connection requests sent to the server, e.g. + socket open"; + } + + leaf connection-closes { + type oc-yang:counter64; + description + "Number of connection close requests sent to the server, e.g. + socket close"; + } + + leaf connection-aborts { + type oc-yang:counter64; + description + "Number of aborted connections to the server. These do + not include connections that are close gracefully."; + } + + leaf connection-failures { + type oc-yang:counter64; + description + "Number of connection failures to the server"; + } + + leaf connection-timeouts { + type oc-yang:counter64; + description + "Number of connection timeouts to the server"; + } + + leaf messages-sent { + type oc-yang:counter64; + description + "Number of messages sent to the server"; + } + + leaf messages-received { + type oc-yang:counter64; + description + "Number of messages received by the server"; + } + + leaf errors-received { + type oc-yang:counter64; + description + "Number of error messages received from the server"; + } + + } + + grouping aaa-server-top { + description + "Top-level grouping for list of AAA servers"; + + container servers { + description + "Enclosing container the list of servers"; + + list server { + key "address"; + description + "List of AAA servers"; + + leaf address { + type leafref { + path "../config/address"; + } + description + "Reference to the configured address of the AAA server"; + } + + container config { + description + "Configuration data "; + + uses aaa-server-config; + } + + container state { + config false; + + description + "Operational state data "; + + uses aaa-server-config; + uses aaa-server-state; + } + + uses aaa-tacacs-server-top { + when "../../config/type = 'oc-aaa:TACACS'"; + } + + uses aaa-radius-server-top { + when "../../config/type = 'oc-aaa:RADIUS'"; + } + } + } + } + + grouping aaa-admin-config { + description + "Configuration data for the system built-in + administrator / root user account"; + + leaf admin-password { + type string; + oc-ext:openconfig-hashed-value; + description + "The admin/root password, supplied as a cleartext string. + The system should hash and only store the password as a + hashed value."; + } + + leaf admin-password-hashed { + type oc-aaa-types:crypt-password-type; + description + "The admin/root password, supplied as a hashed value + using the notation described in the definition of the + crypt-password-type."; + } + } + + grouping aaa-admin-state { + description + "Operational state data for the root user"; + + leaf admin-username { + type string; + description + "Name of the administrator user account, e.g., admin, root, + etc."; + } + } + + grouping aaa-authentication-admin-top { + description + "Top-level grouping for root user configuration and state + data"; + + container admin-user { + description + "Top-level container for the system root or admin user + configuration and operational state"; + + container config { + description + "Configuration data for the root user account"; + + uses aaa-admin-config; + } + + container state { + config false; + + description + "Operational state data for the root user account"; + + uses aaa-admin-config; + uses aaa-admin-state; + } + } + } + grouping aaa-authentication-user-config { + description + "Configuration data for local users"; + + leaf username { + type string; + description + "Assigned username for this user"; + } + + leaf password { + type string; + oc-ext:openconfig-hashed-value; + description + "The user password, supplied as cleartext. The system + must hash the value and only store the hashed value."; + } + + leaf password-hashed { + type oc-aaa-types:crypt-password-type; + description + "The user password, supplied as a hashed value + using the notation described in the definition of the + crypt-password-type."; + } + + leaf ssh-key { + type string; + description + "SSH public key for the user (RSA or DSA)"; + } + + leaf role { + type union { + type string; + type identityref { + base oc-aaa-types:SYSTEM_DEFINED_ROLES; + } + } + description + "Role assigned to the user. The role may be supplied + as a string or a role defined by the SYSTEM_DEFINED_ROLES + identity."; + } + } + + grouping aaa-authentication-user-state { + description + "Operational state data for local users"; + } + + grouping aaa-authentication-user-top { + description + "Top-level grouping for local users"; + + container users { + description + "Enclosing container list of local users"; + + list user { + key "username"; + description + "List of local users on the system"; + + leaf username { + type leafref { + path "../config/username"; + } + description + "References the configured username for the user"; + } + + container config { + description + "Configuration data for local users"; + + uses aaa-authentication-user-config; + } + + container state { + config false; + + description + "Operational state data for local users"; + + uses aaa-authentication-user-config; + uses aaa-authentication-user-state; + } + } + + } + } + + grouping aaa-accounting-methods-common { + description + "Common definitions for accounting methods"; + + leaf-list accounting-method { + type union { + type identityref { + base oc-aaa-types:AAA_METHOD_TYPE; + } + type string; + //TODO: in YANG 1.1 this should be converted to a leafref to + //point to the server group name. + } + ordered-by user; + description + "An ordered list of methods used for AAA accounting for this + event type. The method is defined by the destination for + accounting data, which may be specified as the group of + all TACACS+/RADIUS servers, a defined server group, or + the local system."; + } + } + + + grouping aaa-accounting-events-config { + description + "Configuration data for AAA accounting events"; + + leaf event-type { + type identityref { + base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE; + } + description + "The type of activity to record at the AAA accounting + server"; + } + + leaf record { + type enumeration { + enum START_STOP { + description + "Send START record to the accounting server at the + beginning of the activity, and STOP record at the + end of the activity."; + } + enum STOP { + description + "Send STOP record to the accounting server when the + user activity completes"; + } + } + description + "Type of record to send to the accounting server for this + activity type"; + } + } + + grouping aaa-accounting-events-state { + description + "Operational state data for accounting events"; + } + + grouping aaa-accounting-events-top { + description + "Top-level grouping for accounting events"; + + container events { + description + "Enclosing container for defining handling of events + for accounting"; + + list event { + key "event-type"; + description + "List of events subject to accounting"; + + leaf event-type { + type leafref { + path "../config/event-type"; + } + description + "Reference to the event-type being logged at the + accounting server"; + } + + container config { + description + "Configuration data for accounting events"; + + uses aaa-accounting-events-config; + } + + container state { + config false; + + description + "Operational state data for accounting events"; + + uses aaa-accounting-events-config; + uses aaa-accounting-events-state; + } + } + } + } + + grouping aaa-accounting-config { + description + "Configuration data for event accounting"; + + uses aaa-accounting-methods-common; + + } + + grouping aaa-accounting-state { + description + "Operational state data for event accounting services"; + } + + grouping aaa-accounting-top { + description + "Top-level grouping for user activity accounting"; + + container accounting { + description + "Top-level container for AAA accounting"; + + container config { + description + "Configuration data for user activity accounting."; + + uses aaa-accounting-config; + } + + container state { + config false; + + description + "Operational state data for user accounting."; + + uses aaa-accounting-config; + uses aaa-accounting-state; + } + + uses aaa-accounting-events-top; + + } + } + + grouping aaa-authorization-methods-config { + description + "Common definitions for authorization methods for global + and per-event type"; + + leaf-list authorization-method { + type union { + type identityref { + base oc-aaa-types:AAA_METHOD_TYPE; + } + type string; + } + ordered-by user; + description + "Ordered list of methods for authorizing commands. The first + method that provides a response (positive or negative) should + be used. The list may contain a well-defined method such + as the set of all TACACS or RADIUS servers, or the name of + a defined AAA server group. The system must validate + that the named server group exists."; + } + } + + grouping aaa-authorization-events-config { + description + "Configuration data for AAA authorization events"; + + leaf event-type { + type identityref { + base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE; + } + description + "The type of event to record at the AAA authorization + server"; + } + } + + grouping aaa-authorization-events-state { + description + "Operational state data for AAA authorization events"; + } + + grouping aaa-authorization-events-top { + description + "Top-level grouping for authorization events"; + + container events { + description + "Enclosing container for the set of events subject + to authorization"; + + list event { + key "event-type"; + description + "List of events subject to AAA authorization"; + + leaf event-type { + type leafref { + path "../config/event-type"; + } + description + "Reference to the event-type list key"; + } + + container config { + description + "Configuration data for each authorized event"; + + uses aaa-authorization-events-config; + } + + container state { + config false; + + description + "Operational state data for each authorized activity"; + + uses aaa-authorization-events-config; + uses aaa-authorization-events-state; + } + } + } + } + + grouping aaa-authorization-config { + description + "Configuration data for AAA authorization"; + + uses aaa-authorization-methods-config; + } + + grouping aaa-authorization-state { + description + "Operational state data for AAA authorization"; + } + + grouping aaa-authorization-top { + description + "Top-level grouping for AAA authorization"; + + container authorization { + description + "Top-level container for AAA authorization configuration + and operational state data"; + + container config { + description + "Configuration data for authorization based on AAA + methods"; + + uses aaa-authorization-config; + } + + container state { + config false; + + description + "Operational state data for authorization based on AAA"; + + uses aaa-authorization-config; + uses aaa-authorization-state; + } + + uses aaa-authorization-events-top; + + } + } + + grouping aaa-authentication-config { + description + "Configuration data for global authentication"; + + leaf-list authentication-method { + type union { + type identityref { + base oc-aaa-types:AAA_METHOD_TYPE; + } + type string; + //TODO: string should be a leafref to a defined + //server group. this will be possible in YANG 1.1 + //type leafref { + //path "/aaa/server-groups/server-group/config/name"; + //} + } + ordered-by user; + description + "Ordered list of authentication methods for users. This + can be either a reference to a server group, or a well- + defined designation in the AAA_METHOD_TYPE identity. If + authentication fails with one method, the next defined + method is tried -- failure of all methods results in the + user being denied access."; + } + } + + grouping aaa-authentication-state { + description + "Operational state data for global authentication"; + } + + grouping aaa-authentication-top { + description + "Top-level grouping for top-level authentication"; + + container authentication { + description + "Top-level container for global authentication data"; + + container config { + description + "Configuration data for global authentication services"; + + uses aaa-authentication-config; + } + + container state { + config false; + + description + "Operational state data for global authentication + services"; + + uses aaa-authentication-config; + uses aaa-authentication-state; + } + + uses aaa-authentication-admin-top; + uses aaa-authentication-user-top; + } + } + + grouping aaa-config { + description + "Configuration data for top level AAA"; + } + + grouping aaa-state { + description + "Operational state data for top level AAA"; + } + + grouping aaa-top { + description + "Top-level grouping for AAA services"; + + container aaa { + description + "Top-level container for AAA services"; + + container config { + description + "Configuration data for top level AAA services"; + + uses aaa-config; + } + + container state { + config false; + + description + "Operational state data for top level AAA services "; + + uses aaa-config; + uses aaa-state; + } + + uses aaa-authentication-top; + uses aaa-authorization-top; + uses aaa-accounting-top; + uses aaa-servergroup-common-top; + + } + } + + + + // data definition statements + + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-acl.yang b/vendor/cisco/nx/9.3-14/openconfig-acl.yang new file mode 100644 index 000000000..48650a553 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-acl.yang @@ -0,0 +1,859 @@ +module openconfig-acl { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/acl"; + + prefix "oc-acl"; + + import openconfig-packet-match { prefix oc-match; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-yang-types { prefix oc-yang; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state + data for network access control lists (i.e., filters, rules, + etc.). ACLs are organized into ACL sets, with each set + containing one or more ACL entries. ACL sets are identified + by a unique name, while each entry within a set is assigned + a sequence-id that determines the order in which the ACL + rules are applied to a packet. Note that ACLs are evaluated + in ascending order based on the sequence-id (low to high). + + Individual ACL rules specify match criteria based on fields in + the packet, along with an action that defines how matching + packets should be handled. Entries have a type that indicates + the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; + + oc-ext:openconfig-version "1.1.1"; + + revision "2019-11-27" { + description + "Fix xpaths in when statements."; + reference "1.1.1"; + } + + revision "2019-10-25" { + description + "Update when statements."; + reference "1.1.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "1.0.2"; + } + + revision "2018-04-24" { + description + "Clarified order of ACL evaluation"; + reference "1.0.1"; + } + + revision "2017-05-26" { + description + "Separated ACL entries by type"; + reference "1.0.0"; + } + + revision "2016-08-08" { + description + "OpenConfig public release"; + reference "0.2.0"; + } + + revision "2016-01-22" { + description + "Initial revision"; + reference "TBD"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + identity ACL_TYPE { + description + "Base identity for types of ACL sets"; + } + + identity ACL_IPV4 { + base ACL_TYPE; + description + "IP-layer ACLs with IPv4 addresses"; + } + + identity ACL_IPV6 { + base ACL_TYPE; + description + "IP-layer ACLs with IPv6 addresses"; + } + + identity ACL_L2 { + base ACL_TYPE; + description + "MAC-layer ACLs"; + } + + identity ACL_MIXED { + base ACL_TYPE; + description + "Mixed-mode ACL that specifies L2 and L3 protocol + fields. This ACL type is not implemented by many + routing/switching devices."; + } + + // ACL action type + + identity FORWARDING_ACTION { + description + "Base identity for actions in the forwarding category"; + } + + identity ACCEPT { + base FORWARDING_ACTION; + description + "Accept the packet"; + } + + identity DROP { + base FORWARDING_ACTION; + description + "Drop packet without sending any ICMP error message"; + } + + identity REJECT { + base FORWARDING_ACTION; + description + "Drop the packet and send an ICMP error message to the source"; + } + + identity LOG_ACTION { + description + "Base identity for defining the destination for logging + actions"; + } + + identity LOG_SYSLOG { + base LOG_ACTION; + description + "Log the packet in Syslog"; + } + + identity LOG_NONE { + base LOG_ACTION; + description + "No logging"; + } + + identity ACL_COUNTER_CAPABILITY { + description + "Base identity for system to indicate how it is able to report + counters"; + } + + identity INTERFACE_ONLY { + base ACL_COUNTER_CAPABILITY; + description + "ACL counters are available and reported only per interface"; + } + + identity AGGREGATE_ONLY { + base ACL_COUNTER_CAPABILITY; + description + "ACL counters are aggregated over all interfaces, and reported + only per ACL entry"; + } + + identity INTERFACE_AGGREGATE { + base ACL_COUNTER_CAPABILITY; + description + "ACL counters are reported per interface, and also aggregated + and reported per ACL entry."; + } + + // grouping statements + + // input interface + grouping input-interface-config { + description + "Config of interface"; + + } + + grouping input-interface-state { + description + "State information of interface"; + } + + grouping input-interface-top { + description + "Input interface top level container"; + + container input-interface { + description + "Input interface container"; + + container config { + description + "Config data"; + uses input-interface-config; + } + + container state { + config false; + description + "State information"; + uses input-interface-config; + uses input-interface-state; + } + + uses oc-if:interface-ref; + + } + } + + // Action Type + grouping action-config { + description + "Config of action type"; + + + leaf forwarding-action { + type identityref { + base FORWARDING_ACTION; + } + mandatory true; + description + "Specifies the forwarding action. One forwarding action + must be specified for each ACL entry"; + } + + leaf log-action { + type identityref { + base LOG_ACTION; + } + default LOG_NONE; + description + "Specifies the log action and destination for + matched packets. The default is not to log the + packet."; + } + + + } + + grouping action-state { + description + "State information of action type"; + + } + + grouping action-top { + description + "ACL action type top level container"; + + container actions { + description + "Enclosing container for list of ACL actions associated + with an entry"; + + container config { + description + "Config data for ACL actions"; + uses action-config; + } + + container state { + config false; + description + "State information for ACL actions"; + uses action-config; + uses action-state; + } + } + } + + grouping acl-counters-state { + description + "Common grouping for ACL counters"; + + leaf matched-packets { + type oc-yang:counter64; + description + "Count of the number of packets matching the current ACL + entry. + + An implementation should provide this counter on a + per-interface per-ACL-entry if possible. + + If an implementation only supports ACL counters per entry + (i.e., not broken out per interface), then the value + should be equal to the aggregate count across all interfaces. + + An implementation that provides counters per entry per + interface is not required to also provide an aggregate count, + e.g., per entry -- the user is expected to be able implement + the required aggregation if such a count is needed."; + } + + leaf matched-octets { + type oc-yang:counter64; + description + "Count of the number of octets (bytes) matching the current + ACL entry. + + An implementation should provide this counter on a + per-interface per-ACL-entry if possible. + + If an implementation only supports ACL counters per entry + (i.e., not broken out per interface), then the value + should be equal to the aggregate count across all interfaces. + + An implementation that provides counters per entry per + interface is not required to also provide an aggregate count, + e.g., per entry -- the user is expected to be able implement + the required aggregation if such a count is needed."; + } + + } + + // Access List Entries + grouping access-list-entries-config { + description + "Access List Entries (ACE) config."; + + leaf sequence-id { + type uint32; + description + "The sequence id determines the order in which ACL entries + are applied. The sequence id must be unique for each entry + in an ACL set. Target devices should apply the ACL entry + rules in ascending order determined by sequence id (low to + high), rather than the relying only on order in the list."; + } + + leaf description { + type string; + description + "A user-defined description, or comment, for this Access List + Entry."; + } + + } + + grouping access-list-entries-state { + description + "Access List Entries state."; + + uses acl-counters-state; + + } + + grouping access-list-entries-top { + description + "Access list entries to level container"; + + container acl-entries { + description + "Access list entries container"; + + list acl-entry { + key "sequence-id"; + description + "List of ACL entries comprising an ACL set"; + + leaf sequence-id { + type leafref { + path "../config/sequence-id"; + } + description + "references the list key"; + } + + container config { + description + "Access list entries config"; + uses access-list-entries-config; + } + + container state { + config false; + description + "State information for ACL entries"; + uses access-list-entries-config; + uses access-list-entries-state; + } + + uses oc-match:ethernet-header-top { + when "../../config/type='ACL_L2'" { + description + "MAC-layer fields are valid when the ACL type is L2"; + } + } + uses oc-match:ipv4-protocol-fields-top { + when "../../config/type='ACL_IPV4'" { + description + "IPv4-layer fields are valid when the ACL type is + IPv4"; + } + } + uses oc-match:ipv6-protocol-fields-top { + when "../../config/type='ACL_IPV6'" { + description + "IPv6-layer fields are valid when the ACL type is + IPv6"; + } + } + uses oc-match:transport-fields-top { + when "../../config/type='ACL_IPV6' or " + + "../../config/type='ACL_IPV4'" { + description + "Transport-layer fields are valid when specifying + L3 ACL types"; + } + } + uses input-interface-top; + + uses action-top; + } + } + } + + grouping acl-set-config { + description + "Access Control List config"; + + leaf name { + type string; + description + "The name of the access-list set"; + } + + leaf type { + type identityref { + base ACL_TYPE; + } + description + "The type determines the fields allowed in the ACL entries + belonging to the ACL set (e.g., IPv4, IPv6, etc.)"; + } + + leaf description { + type string; + description + "Description, or comment, for the ACL set"; + } + + } + + grouping acl-set-state { + description + "Access Control List state"; + } + + grouping acl-set-top { + description + "Access list entries variables top level container"; + + container acl-sets { + description + "Access list entries variables enclosing container"; + + list acl-set { + key "name type"; + description + "List of ACL sets, each comprising of a list of ACL + entries"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the name list key"; + } + + leaf type { + type leafref { + path "../config/type"; + } + description + "Reference to the type list key"; + } + + container config { + description + "Access list config"; + uses acl-set-config; + } + + container state { + config false; + description + "Access list state information"; + uses acl-set-config; + uses acl-set-state; + } + uses access-list-entries-top; + } + } + } + + grouping interface-acl-entries-config { + description + "Configuration data for per-interface ACLs"; + + } + + grouping interface-acl-entries-state { + description + "Operational state data for per-interface ACL entries"; + + leaf sequence-id { + type leafref { + path "/acl/acl-sets/" + + "acl-set[name=current()/../../../../set-name]" + + "[type=current()/../../../../type]/" + + "acl-entries/acl-entry/sequence-id"; + } + description + "Reference to an entry in the ACL set applied to an + interface"; + } + + uses acl-counters-state; + + } + + grouping interface-acl-entries-top { + description + "Top-level grouping for per-interface ACL entries"; + + container acl-entries { + config false; + description + "Enclosing container for list of references to ACLs"; + + list acl-entry { + key "sequence-id"; + description + "List of ACL entries assigned to an interface"; + + leaf sequence-id { + type leafref { + path "../state/sequence-id"; + } + description + "Reference to per-interface acl entry key"; + } + + // no config container since the enclosing container is + // read-only + + container state { + + config false; + + description + "Operational state data for per-interface ACL entries"; + + uses interface-acl-entries-config; + uses interface-acl-entries-state; + } + } + } + } + + grouping interface-ingress-acl-config { + description + "Configuration data for per-interface ingress ACLs"; + + leaf set-name { + type leafref { + path "../../../../../../acl-sets/acl-set/config/name"; + } + description + "Reference to the ACL set name applied on ingress"; + } + + leaf type { + type leafref { + path "../../../../../../acl-sets/acl-set[name=current()/../set-name]" + + "/config/type"; + } + description + "Reference to the ACL set type applied on ingress"; + } + } + + grouping interface-ingress-acl-state { + description + "Operational state data for the per-interface ingress ACL"; + } + + grouping interface-ingress-acl-top { + description + "Top-level grouping for per-interface ingress ACL data"; + + container ingress-acl-sets { + description + "Enclosing container the list of ingress ACLs on the + interface"; + + list ingress-acl-set { + key "set-name type"; + description + "List of ingress ACLs on the interface"; + + leaf set-name { + type leafref { + path "../config/set-name"; + } + description + "Reference to set name list key"; + } + + leaf type { + type leafref { + path "../config/type"; + } + description + "Reference to type list key"; + } + + container config { + description + "Configuration data "; + + uses interface-ingress-acl-config; + } + + container state { + + config false; + + description + "Operational state data for interface ingress ACLs"; + + uses interface-ingress-acl-config; + uses interface-ingress-acl-state; + } + + uses interface-acl-entries-top; + } + } + } + + grouping interface-egress-acl-config { + description + "Configuration data for per-interface egress ACLs"; + + leaf set-name { + type leafref { + path "../../../../../../acl-sets/acl-set/config/name"; + } + description + "Reference to the ACL set name applied on egress"; + } + + leaf type { + type leafref { + path "../../../../../../acl-sets/acl-set[name=current()/../set-name]" + + "/config/type"; + } + description + "Reference to the ACL set type applied on egress."; + } + } + + grouping interface-egress-acl-state { + description + "Operational state data for the per-interface egress ACL"; + } + + grouping interface-egress-acl-top { + description + "Top-level grouping for per-interface egress ACL data"; + + container egress-acl-sets { + description + "Enclosing container the list of egress ACLs on the + interface"; + + list egress-acl-set { + key "set-name type"; + description + "List of egress ACLs on the interface"; + + leaf set-name { + type leafref { + path "../config/set-name"; + } + description + "Reference to set name list key"; + } + + leaf type { + type leafref { + path "../config/type"; + } + description + "Reference to type list key"; + } + + container config { + description + "Configuration data "; + + uses interface-egress-acl-config; + } + + container state { + + config false; + + description + "Operational state data for interface egress ACLs"; + + uses interface-egress-acl-config; + uses interface-egress-acl-state; + } + + uses interface-acl-entries-top; + } + } + } + + grouping acl-interfaces-config { + description + "Configuration data for interface references"; + + leaf id { + type oc-if:interface-id; + description + "User-defined identifier for the interface -- a common + convention could be '.'"; + } + } + + grouping acl-interfaces-state { + description + "Operational state data for interface references"; + } + + grouping acl-interfaces-top { + description + "Top-level grouping for interface-specific ACL data"; + + container interfaces { + description + "Enclosing container for the list of interfaces on which + ACLs are set"; + + list interface { + key "id"; + description + "List of interfaces on which ACLs are set"; + + leaf id { + type leafref { + path "../config/id"; + } + description + "Reference to the interface id list key"; + } + + container config { + description + "Configuration for ACL per-interface data"; + + uses acl-interfaces-config; + } + + container state { + + config false; + + description + "Operational state for ACL per-interface data"; + + uses acl-interfaces-config; + uses acl-interfaces-state; + } + + uses oc-if:interface-ref; + uses interface-ingress-acl-top; + uses interface-egress-acl-top; + } + } + } + + grouping acl-config { + description + "Global configuration data for ACLs"; + } + + grouping acl-state { + description + "Global operational state data for ACLs"; + + leaf counter-capability { + type identityref { + base ACL_COUNTER_CAPABILITY; + } + description + "System reported indication of how ACL counters are reported + by the target"; + } + } + grouping acl-top { + description + "Top level grouping for ACL data and structure"; + + container acl { + description + "Top level enclosing container for ACL model config + and operational state data"; + + container config { + description + "Global config data for ACLs"; + + uses acl-config; + } + + container state { + + config false; + + description + "Global operational state data for ACLs"; + + uses acl-config; + uses acl-state; + } + + uses acl-set-top; + uses acl-interfaces-top; + } + } + + // data definition statements + uses acl-top; + + // augment statements + + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-aft-common.yang b/vendor/cisco/nx/9.3-14/openconfig-aft-common.yang new file mode 100644 index 000000000..dd7f362cd --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-aft-common.yang @@ -0,0 +1,569 @@ +submodule openconfig-aft-common { + belongs-to "openconfig-aft" { + prefix "oc-aft"; + } + + import openconfig-interfaces { prefix "oc-if"; } + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-yang-types { prefix "oc-yang"; } + import openconfig-inet-types { prefix "oc-inet"; } + import openconfig-mpls-types { prefix "oc-mplst"; } + import openconfig-policy-types { prefix "oc-pol-types"; } + import openconfig-aft-types { prefix "oc-aftt"; } + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "Submodule containing definitions of groupings that are re-used + across multiple contexts within the AFT model."; + + oc-ext:openconfig-version "0.4.0"; + + revision "2019-08-02" { + description + "Add installing protocol for IPv[46] unicast entries. + Add the ability to describe conditional next-hop groups + outside of the policy forwarding module to allow for efficient + handling of CBTS, where many prefixes may share the same next-hop + criteria."; + reference "0.4.0"; + } + + revision "2019-08-01" { + description + "Add lsp-name leaf to AFT next-hop."; + reference "0.3.3"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.2"; + } + + revision 2017-08-24 { + description + "Formatting fixes"; + reference "0.3.1"; + } + + revision 2017-05-10 { + description + "Refactor to provide concretised per-AF schemas per AFT."; + reference "0.3.0"; + } + + grouping aft-nhop-structural { + description + "Structural grouping describing a next-hop entry."; + + container next-hops { + description + "The list of next-hops that are to be used for entry within + the AFT table. The structure of each next-hop is address + family independent, such that it is possible to resolve fully + how the next-hop is treated. For example: + + - Where ingress IPv4 unicast packets are to be forwarded via + an MPLS LSP, the next-hop list should indicate the MPLS + label stack that is used to the next-hop. + - Where ingress MPLS labelled packets are to be forwarded to + an IPv6 nexthop (for example, a CE within a VPN, then the + popped label stack, and IPv6 next-hop address should be + indicated)."; + + list next-hop { + key "index"; + + description + "A next-hop associated with the forwarding instance."; + + leaf index { + type leafref { + path "../config/index"; + } + description + "A unique index identifying the next-hop entry for the + AFT entry"; + + } + + container config { + description + "Configuration parameters relating to the AFT next-hop + entry"; + + uses aft-common-entry-nexthop-config; + } + + container state { + config false; + description + "Operational state parameters relating to the AFT + next-hop entry"; + + uses aft-common-entry-nexthop-config; + uses aft-common-entry-nexthop-state; + } + + uses oc-if:interface-ref; + } + } + } + + grouping aft-common-entry-state { + description + "Operational state parameters relating to a forwarding entry"; + + leaf packets-forwarded { + type oc-yang:counter64; + description + "The number of packets which have matched, and been forwarded, + based on the AFT entry."; + } + + leaf octets-forwarded { + type oc-yang:counter64; + description + "The number of octets which have matched, and been forwarded, + based on the AFT entry"; + } + + // We are at $afi/$entry/state/next-hop-group + leaf next-hop-group { + type leafref { + path "../../../../next-hop-groups/next-hop-group/config/id"; + } + description + "A reference to the next-hop-group that is in use for the entry + within the AFT. Traffic is distributed across the set of next-hops + within the next-hop group according to the weight."; + } + } + + grouping aft-common-entry-nexthop-config { + description + "Configuration parameters relating to a next-hop entry for a AFT + entry"; + + leaf index { + type uint64; + description + "A unique entry for the next-hop."; + } + } + + grouping aft-common-entry-nexthop-state { + description + "Parameters relating to a next-hop."; + + leaf ip-address { + type oc-inet:ip-address; + description + "The IP address of the next-hop system."; + } + + leaf mac-address { + type oc-yang:mac-address; + description + "The MAC address of the next-hop if resolved by the local + network instance."; + } + + leaf-list pushed-mpls-label-stack { + type oc-mplst:mpls-label; + ordered-by user; + description + "The MPLS label stack imposed when forwarding packets to the + next-hop + - the stack is encoded as a leaf list whereby the order of the + entries is such that the first entry in the list is the + label at the bottom of the stack to be pushed. + + To this end, a packet which is to forwarded to a device using + a service label of 42, and a transport label of 8072 will be + represented with a label stack list of [42, 8072]. + + The MPLS label stack list is ordered by the user, such that no + system re-ordering of leaves is permitted by the system. + + A swap operation is reflected by entries in the + popped-mpls-label-stack and pushed-mpls-label-stack nodes."; + + } + + leaf encapsulate-header { + type oc-aftt:encapsulation-header-type; + description + "When forwarding a packet to the specified next-hop the local + system performs an encapsulation of the packet - adding the + specified header type."; + } + + uses aft-common-install-protocol; + } + + grouping aft-common-install-protocol { + description + "Grouping for a common reference to the protocol which + installed an entry."; + + leaf origin-protocol { + type identityref { + base "oc-pol-types:INSTALL_PROTOCOL_TYPE"; + } + description + "The protocol from which the AFT entry was learned."; + } + + leaf lsp-name { + type string; + description + "Where applicable, the protocol name for the next-hop labelled + forwarding entry. This leaf is applicable only to next-hops + who include MPLS label information, and its value typically + corresponds to the RSVP-TE LSP name."; + } + } + + grouping aft-common-ip-state { + description + "Common parameters across IP address families"; + + uses aft-common-install-protocol; + + leaf decapsulate-header { + type oc-aftt:encapsulation-header-type; + description + "When forwarding a packet to the specified next-hop, the local + system performs a decapsulation of the packet - removing the + specified header type. In the case that no next-hop is + specified, the packet header is removed, and a subsequent + forwarding lookup is performed on the packet encapsulated + within the header, matched within the relevant AFT within the + specified network-instance."; + } + } + + grouping aft-next-hop-groups-structural { + description + "Logical grouping for groups of next-hops."; + + container next-hop-groups { + description + "Surrounding container for groups of next-hops."; + + list next-hop-group { + key "id"; + + description + "An individual set of next-hops grouped into a common group. + Each entry within an abstract forwarding table points to a + next-hop-group. Entries in the next-hop-group are forwarded to + according to the weights specified for each next-hop group. + + If an entry within the next-hop group becomes unusable, for + example due to an interface failure, the remaining entries + are used until all entries become unusable - at which point + the backup next-hop-group (if specified) is used."; + + leaf id { + type leafref { + path "../config/id"; + } + description + "A reference to a unique identifier for the next-hop-group."; + } + + container config { + description + "Configuration parameters related to the next-hop-group."; + uses aft-nhg-config; + } + + container state { + config false; + description + "Operational state parameters relating to next-hop-groups."; + uses aft-nhg-config; + uses aft-nhg-state; + } + + container next-hops { + description + "Surrounding container for the list of next-hops within + the next-hop-group."; + + list next-hop { + key "index"; + + description + "An individual next-hop within the next-hop-group. Each + next-hop is a reference to an entry within the next-hop + list."; + + leaf index { + type leafref { + path "../config/index"; + } + description + "A reference to the index for the next-hop within the + the next-hop-group."; + } + + container config { + description + "Configuration parameters related to a next-hop within + the next-hop-group."; + uses aft-nhg-nh-config; + } + + container state { + config false; + description + "Operational state parameters related to a next-hop + within the next-hop-group."; + uses aft-nhg-nh-config; + uses aft-nhg-nh-state; + } + } + } + + container conditional { + description + "When a system selects a next-hop-group based on conditions + in addition to those specified in the referencing table entries + (for example, DSCP is used in addition to the IPv4 destination + prefix), these conditions are specified in the conditions list. + Where such conditions exist, the next-hop-group MUST only + specify next-hop-groups under the conditional list, and therefore + MUST NOT specify any corresponding next-hops. The + next-hop-groups that are referenced by any conditions MUST + reference only next-hops and therefore MUST NOT be conditional + themselves."; + + list condition { + key "id"; + + description + "A conditional next-hop-group that is used by the AFT + entry. The conditions that are specified within the + group are logically ANDed together. If a condition + is a leaf-list field its contents are logically ORed."; + + leaf id { + type leafref { + path "../config/id"; + } + description + "A reference to the identifier for the condition."; + } + + container config { + description + "Configuration parameters related to the conditional + next-hop selection."; + + uses aft-nhg-conditional-config; + } + + container state { + config false; + description + "Operational state parameters related to the conditional + next-hop selection."; + uses aft-nhg-conditional-config; + uses aft-nhg-conditional-state; + } + + container input-interfaces { + description + "The set of input interfaces that are required to be matched for + the next-hop-group condition to be met. Each non-interface condition + is logically ANDed with each member of the list -- i.e., interfaces in + the list are logically ORed. + + If the input-interface list is empty, the condition applies to ALL input + interfaces."; + + list input-interface { + key "id"; + + description + "The input interface that must be matched for the condition to be met."; + + leaf id { + type leafref { + path "../config/id"; + } + description + "Reference to the unique ID assigned to the input interface within + the conditions list."; + } + + container config { + description + "Configuration parameters that relate to the input interface."; + uses aft-nhg-conditional-interface-config; + } + + container state { + config false; + description + "Operational state parameters that relate to the input interface."; + uses aft-nhg-conditional-interface-config; + uses aft-nhg-conditional-interface-state; + } + } + } + } + } + } + } + } + + grouping aft-nhg-config { + description + "Configuration parameters related to a next-hop-group."; + + leaf id { + type uint64; + description + "A unique identifier for the next-hop-group. This index + is not expected to be consistent across reboots, or + reprogramming of the next-hop-group. When updating + a next-hop-group, if the group is removed by the system + or assigned an alternate identifier, the system should + send telemetry notifications deleting the previous + identifier. If the identifier of the next-hop-group + is changed, all AFT entries that reference it must + also be updated."; + } + } + + grouping aft-nhg-state { + description + "Operational state parameters related to a next-hop-group."; + + leaf color { + type uint64; + description + "An arbitrary colour that is used as an identifier for the next-hop + group. Some next-hop resolutions may utilise the colour to select + the particular next-hop-group that a routing entry should be resolved + to. In this case, next-hop-group selection may be based on colour + matches rather than the protocol specified next-hop. + + Regardless of whether the next-hop-group's specified colour is + used to select an AFT's active forwarding entry, the next-hop-group + referenced by an entry should be the currently active value. + + Next-hop-groups that are installed on the system through a protocol + that allows injection of such entries (e.g., BGP using the SR-TE + Policy SAFI, or gRPC-based RIB programming) should have the colour + specified in the injecting protocol within this leaf."; + } + + leaf backup-next-hop-group { + // We are at afts/next-hop-groups/next-hop-group/config/backup-next-hop-group + type leafref { + path "../../../next-hop-group/config/id"; + } + description + "The backup next-hop-group for the current group. When all + entries within the next-hop group become unusable, the backup + next-hop group is used if specified."; + } + } + + grouping aft-nhg-nh-config { + description + "Configuration parameters relating to an individual next-hop within + a next-hop-group."; + + leaf index { + type leafref { + // We are at afts/next-hop-groups/next-hop-group/next-hops/next-hop/config/id + path "../../../../../../next-hops/next-hop/config/index"; + } + description + "A reference to the identifier for the next-hop to which + the entry in the next-hop group corresponds."; + } + } + + grouping aft-nhg-nh-state { + description + "Operational state parameters relating to an individual next-hop + within the next-hop-group."; + + leaf weight { + type uint64; + description + "The weight applied to the next-hop within the group. Traffic + is balanced across the next-hops within the group in the + proportion of weight/(sum of weights of the next-hops within + the next-hop group)."; + } + } + + grouping aft-nhg-conditional-config { + description + "Configuration parameters relating to the conditional selection of + a next-hop group for an AFT entry."; + + leaf id { + type uint64; + description + "A unique identifier for the conditional criteria."; + } + } + + grouping aft-nhg-conditional-state { + description + "Operational state parameters relating to the conditional selection + of a next-hop group for an AFT entry."; + + leaf-list dscp { + type oc-inet:dscp; + description + "A set of DSCP values that must be matched by an input packet for + the next-hop-group specified to be selected. A logical OR is applied + across the DSCP values."; + } + + leaf next-hop-group { + type leafref { + // we are at afts/next-hop-groups/next-hop-group/conditions/condition/state/next-hop-group + path "../../../../../next-hop-group/config/id"; + } + description + "The next-hop-group that is used by the system for packets that match + the criteria specified."; + } + } + + grouping aft-nhg-conditional-interface-config { + description + "Configuration parameters relating to the input-interface condition for + a next-hop-group."; + + leaf id { + type string; + description + "A unique reference for the input interface."; + } + } + + grouping aft-nhg-conditional-interface-state { + description + "Operational state parameters relating to the input-interface condition + for a next-hop-group."; + uses oc-if:interface-ref-common; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-aft-ethernet.yang b/vendor/cisco/nx/9.3-14/openconfig-aft-ethernet.yang new file mode 100644 index 000000000..a131f705a --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-aft-ethernet.yang @@ -0,0 +1,115 @@ +submodule openconfig-aft-ethernet { + belongs-to "openconfig-aft" { + prefix "oc-aft"; + } + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-yang-types { prefix "oc-yang"; } + + // Include common cross-AFT groupings from the common submodule. + include openconfig-aft-common; + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "Submodule containing definitions of groupings for the abstract + forwarding tables for Ethernet."; + + oc-ext:openconfig-version "0.4.0"; + + revision "2019-08-02" { + description + "Add installing protocol for IPv[46] unicast entries. + Add the ability to describe conditional next-hop groups + outside of the policy forwarding module to allow for efficient + handling of CBTS, where many prefixes may share the same next-hop + criteria."; + reference "0.4.0"; + } + + revision "2019-08-01" { + description + "Add lsp-name leaf to AFT next-hop."; + reference "0.3.3"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.2"; + } + + revision 2017-08-24 { + description + "Formatting fixes"; + reference "0.3.1"; + } + + revision 2017-05-10 { + description + "Refactor to provide concretised per-AF schemas per AFT."; + reference "0.3.0"; + } + + grouping aft-ethernet-structural { + description + "Structural grouping defining the schema for the Ethernet + abstract forwarding table."; + + list mac-entry { + key "mac-address"; + + description + "List of the Ethernet entries within the abstract + forwarding table. This list is keyed by the outer MAC address + of the Ethernet frame."; + + leaf mac-address { + type leafref { + path "../config/mac-address"; + } + description + "Reference to the outer MAC address matched by the + entry."; + } + + container config { + description + "Configuration parameters for the Ethernet AFT entry."; + uses aft-ethernet-entry-config; + } + + container state { + config false; + description + "Operational state parameters for the Ethernet AFT + entry."; + uses aft-ethernet-entry-config; + uses aft-ethernet-entry-state; + } + } + } + + grouping aft-ethernet-entry-config { + description + "Configuration parameters for the Ethernet AFT entry."; + + leaf mac-address { + type oc-yang:mac-address; + description + "The outer MAC address of the Ethernet frame that must + be matched for the AFT entry to be utilised."; + } + } + + grouping aft-ethernet-entry-state { + description + "Operational state parameters for the Ethernet AFT entry."; + uses aft-common-entry-state; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-aft-ipv4.yang b/vendor/cisco/nx/9.3-14/openconfig-aft-ipv4.yang new file mode 100644 index 000000000..674d2a29e --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-aft-ipv4.yang @@ -0,0 +1,116 @@ +submodule openconfig-aft-ipv4 { + belongs-to "openconfig-aft" { + prefix "oc-aft"; + } + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-inet-types { prefix "oc-inet"; } + + // Include common cross-AFT groupings from the common submodule. + include openconfig-aft-common; + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "Submodule containing definitions of groupings for the abstract + forwarding tables for IPv4."; + + oc-ext:openconfig-version "0.4.0"; + + revision "2019-08-02" { + description + "Add installing protocol for IPv[46] unicast entries. + Add the ability to describe conditional next-hop groups + outside of the policy forwarding module to allow for efficient + handling of CBTS, where many prefixes may share the same next-hop + criteria."; + reference "0.4.0"; + } + + revision "2019-08-01" { + description + "Add lsp-name leaf to AFT next-hop."; + reference "0.3.3"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.2"; + } + + revision 2017-08-24 { + description + "Formatting fixes"; + reference "0.3.1"; + } + + revision 2017-05-10 { + description + "Refactor to provide concretised per-AF schemas per AFT."; + reference "0.3.0"; + } + + grouping aft-ipv4-unicast-structural { + description + "Structural grouping defining the schema for the IPv4 unicast + abstract forwarding table."; + + list ipv4-entry { + key "prefix"; + + description + "List of the IPv4 unicast entries within the abstract + forwarding table. This list is keyed by the destination IPv4 + prefix."; + + leaf prefix { + type leafref { + path "../config/prefix"; + } + description + "Reference to the IPv4 unicast destination prefix which + must be matched to utilise the AFT entry."; + } + + container config { + description + "Configuration parameters for the IPv4 unicast AFT entry."; + uses aft-ipv4-unicast-entry-config; + } + + container state { + config false; + description + "Operational state parameters for the IPv4 unicast AFT + entry."; + uses aft-ipv4-unicast-entry-config; + uses aft-ipv4-unicast-entry-state; + } + } + } + + grouping aft-ipv4-unicast-entry-config { + description + "Configuration parameters for the IPv4 unicast entry."; + + leaf prefix { + type oc-inet:ipv4-prefix; + description + "The IPv4 destination prefix that should be matched to + utilise the AFT entry."; + } + } + + grouping aft-ipv4-unicast-entry-state { + description + "Operational state parameters for the IPv4 unicast entry."; + uses aft-common-entry-state; + uses aft-common-ip-state; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-aft-ipv6.yang b/vendor/cisco/nx/9.3-14/openconfig-aft-ipv6.yang new file mode 100644 index 000000000..da543e352 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-aft-ipv6.yang @@ -0,0 +1,116 @@ +submodule openconfig-aft-ipv6 { + belongs-to "openconfig-aft" { + prefix "oc-aft"; + } + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-inet-types { prefix "oc-inet"; } + + // Include common cross-AFT groupings from the common submodule. + include openconfig-aft-common; + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "Submodule containing definitions of groupings for the abstract + forwarding tables for IPv6."; + + oc-ext:openconfig-version "0.4.0"; + + revision "2019-08-02" { + description + "Add installing protocol for IPv[46] unicast entries. + Add the ability to describe conditional next-hop groups + outside of the policy forwarding module to allow for efficient + handling of CBTS, where many prefixes may share the same next-hop + criteria."; + reference "0.4.0"; + } + + revision "2019-08-01" { + description + "Add lsp-name leaf to AFT next-hop."; + reference "0.3.3"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.2"; + } + + revision 2017-08-24 { + description + "Formatting fixes"; + reference "0.3.1"; + } + + revision 2017-05-10 { + description + "Refactor to provide concretised per-AF schemas per AFT."; + reference "0.3.0"; + } + + grouping aft-ipv6-unicast-structural { + description + "Structural grouping defining the schema for the IPv6 unicast + abstract forwarding table."; + + list ipv6-entry { + key "prefix"; + + description + "List of the IPv6 unicast entries within the abstract + forwarding table. This list is keyed by the destination IPv6 + prefix."; + + leaf prefix { + type leafref { + path "../config/prefix"; + } + description + "Reference to the IPv6 unicast destination prefix which + must be matched to utilise the AFT entry."; + } + + container config { + description + "Configuration parameters for the IPv6 unicast AFT entry."; + uses aft-ipv6-unicast-entry-config; + } + + container state { + config false; + description + "Operational state parameters for the IPv6 unicast AFT + entry."; + uses aft-ipv6-unicast-entry-config; + uses aft-ipv6-unicast-entry-state; + } + } + } + + grouping aft-ipv6-unicast-entry-config { + description + "Configuration parameters for the IPv6 unicast entry."; + + leaf prefix { + type oc-inet:ipv6-prefix; + description + "The IPv6 destination prefix that should be matched to + utilise the AFT entry."; + } + } + + grouping aft-ipv6-unicast-entry-state { + description + "Operational state parameters for the IPv6 unicast entry."; + uses aft-common-entry-state; + uses aft-common-ip-state; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-aft-mpls.yang b/vendor/cisco/nx/9.3-14/openconfig-aft-mpls.yang new file mode 100644 index 000000000..54a28340c --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-aft-mpls.yang @@ -0,0 +1,133 @@ +submodule openconfig-aft-mpls { + belongs-to "openconfig-aft" { + prefix "oc-aft"; + } + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-mpls-types { prefix "oc-mplst"; } + + // Include common cross-AFT groupings from the common submodule. + include openconfig-aft-common; + + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "Submodule containing definitions of groupings for the abstract + forwarding table for MPLS label forwarding."; + + oc-ext:openconfig-version "0.4.0"; + + revision "2019-08-02" { + description + "Add installing protocol for IPv[46] unicast entries. + Add the ability to describe conditional next-hop groups + outside of the policy forwarding module to allow for efficient + handling of CBTS, where many prefixes may share the same next-hop + criteria."; + reference "0.4.0"; + } + + revision "2019-08-01" { + description + "Add lsp-name leaf to AFT next-hop."; + reference "0.3.3"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.2"; + } + + revision 2017-08-24 { + description + "Formatting fixes"; + reference "0.3.1"; + } + + revision 2017-05-10 { + description + "Refactor to provide concretised per-AF schemas per AFT."; + reference "0.3.0"; + } + + grouping aft-mpls-structural { + description + "Structural grouping defining the schema for the MPLS + abstract forwarding table."; + + list label-entry { + key "label"; + + description + "List of the MPLS entries within the abstract + forwarding table. This list is keyed by the top-most MPLS + label."; + + leaf label { + type leafref { + path "../config/label"; + } + description + "Reference to the top-most MPLS label matched by the + entry."; + } + + container config { + description + "Configuration parameters for the MPLS AFT entry."; + uses aft-mpls-entry-config; + } + + container state { + config false; + description + "Operational state parameters for the MPLS AFT + entry."; + uses aft-mpls-entry-config; + uses aft-mpls-entry-state; + } + } + } + + grouping aft-mpls-entry-config { + description + "Configuration parameters for the MPLS entry."; + + leaf label { + type oc-mplst:mpls-label; + description + "The top-most MPLS label that should be matched to + utilise the AFT entry."; + } + } + + grouping aft-mpls-entry-state { + description + "Operational state parameters for the MPLS entry."; + uses aft-common-entry-state; + + leaf-list popped-mpls-label-stack { + type oc-mplst:mpls-label; + description + "The MPLS label stack to be popped from the packet when + switched by the system. The stack is encoded as a leaf-list + such that the first entry is the label that is outer-most (i.e., + furthest from the bottom of the stack). + + If the local system pops the outer-most label 400, then the + value of this list is [400,]. If the local system removes two + labels, the outer-most being 500, and the second of which is + 400, then the value of the list is [500, 400]. + + A swap operation is reflected by entries in the + popped-mpls-label-stack and pushed-mpls-label-stack nodes."; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-aft-network-instance.yang b/vendor/cisco/nx/9.3-14/openconfig-aft-network-instance.yang new file mode 100644 index 000000000..2d577ec18 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-aft-network-instance.yang @@ -0,0 +1,109 @@ +module openconfig-aft-network-instance { + yang-version "1"; + + namespace "http://openconfig.net/yang/aft/ni"; + prefix "oc-aftni"; + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-network-instance { prefix "oc-ni"; } + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module provides augmentations that are utilized + when building the OpenConfig network instance model to + add per-NI AFTs."; + + oc-ext:openconfig-version "0.2.3"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.2.3"; + } + + revision 2017-08-24 { + description + "Formatting fixes"; + reference "0.2.2"; + } + + revision 2017-01-13 { + description + "Updated revision for external review"; + reference "0.2.1"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + augment "/oc-ni:network-instances/oc-ni:network-instance/" + + "oc-ni:afts/oc-ni:next-hops/oc-ni:next-hop/oc-ni:state" { + + description + "Add leaves that require referencing of a network instance to the + operational state parameters of a next-hop within the AFT for IPv4 + unicast."; + + uses aft-nexthop-ni-state; + } + + grouping aft-nexthop-ni-state { + description + "Operational state parameters relating to a next-hop which reference a + network instance."; + + leaf network-instance { + type oc-ni:network-instance-ref; + description + "The network-instance within which the next-hop should be resolved. + When this leaf is unspecified, the next-hop is resolved within + the local instance."; + } + } + + augment "/oc-ni:network-instances/oc-ni:network-instance/" + + "oc-ni:afts/oc-ni:ipv4-unicast/oc-ni:ipv4-entry/oc-ni:state" { + description + "Add leaves that require referencing of a network instance to the + operational state parameters of an entry within the IPv4 unicast AFT."; + + uses aft-entry-ni-state; + } + + augment "/oc-ni:network-instances/oc-ni:network-instance/" + + "oc-ni:afts/oc-ni:ipv6-unicast/oc-ni:ipv6-entry/oc-ni:state" { + description + "Add leaves that require referencing of a network instance to the + operational state parameters of an entry within the IPv6 unicast AFT."; + + uses aft-entry-ni-state; + } + + grouping aft-entry-ni-state { + description + "Operational state parameters relating to an AFT entry which reference + a network instance."; + + leaf origin-network-instance { + type oc-ni:network-instance-ref; + description + "If the AFT entry was imported from another network instance (e.g., it + corresponds to a L3 forwarding entry which was learned within another + network-instance), the value of this leaf reflects the network-instance + from which it was learned. + + For example, if the local network-instance corresponds to a L3VRF, and + routes are imported from the VPNv4 address-family of the BGP instance + in the DEFAULT_INSTANCE, then this value would reflect the + DEFAULT_INSTANCE as the origin-network-instance."; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-aft-pf.yang b/vendor/cisco/nx/9.3-14/openconfig-aft-pf.yang new file mode 100644 index 000000000..ba5eb7903 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-aft-pf.yang @@ -0,0 +1,194 @@ +submodule openconfig-aft-pf { + belongs-to "openconfig-aft" { + prefix "oc-aft"; + } + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-inet-types { prefix "oc-inet"; } + import openconfig-yang-types { prefix "oc-yang"; } + import openconfig-mpls-types { prefix "oc-mplst"; } + import openconfig-packet-match-types { + prefix "oc-pkt-match-types"; + } + + // Include common cross-AFT groupings from the common submodule. + include openconfig-aft-common; + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "Submodule containing definitions of groupings for the abstract + forwarding table(s) for policy forwarding entries. These are + defined to be forwarding tables that allow matches on + fields other than the destination address that is used in + other forwarding tables."; + + oc-ext:openconfig-version "0.4.0"; + + revision "2019-08-02" { + description + "Add installing protocol for IPv[46] unicast entries. + Add the ability to describe conditional next-hop groups + outside of the policy forwarding module to allow for efficient + handling of CBTS, where many prefixes may share the same next-hop + criteria."; + reference "0.4.0"; + } + + revision "2019-08-01" { + description + "Add lsp-name leaf to AFT next-hop."; + reference "0.3.3"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.2"; + } + + revision 2017-08-24 { + description + "Formatting fixes"; + reference "0.3.1"; + } + + revision 2017-05-10 { + description + "Refactor to provide concretised per-AF schemas per AFT."; + reference "0.3.0"; + } + + grouping aft-pf-structural { + description + "Structural grouping defining the schema for the policy + forwarding abstract forwarding table."; + + list policy-forwarding-entry { + key "index"; + + description + "List of the policy forwarding entries within the abstract + forwarding table. Each entry is uniquely identified by an + index on the system, due to the arbitrary match conditions + that may be implemented within the policy forwarding AFT. + The index may change upon changes of the entry if, and only + if, the device exporting the AFT replaces the entire entry + by removing the previous entry and replacing it with a + subsequent updated version."; + + leaf index { + type leafref { + path "../config/index"; + } + description + "Reference to the arbitary index for the policy forwarding + AFT entry."; + } + + container config { + description + "Configuration parameters for the Policy forwarding + AFT entry."; + uses aft-pf-entry-config; + } + + container state { + config false; + description + "Operational state parameters for the Policy Forwarding + AFT entry."; + uses aft-pf-entry-config; + uses aft-pf-entry-state; + } + } + } + + grouping aft-pf-entry-config { + description + "Configuration parameters for the Policy Forwarding + AFT entry."; + + leaf index { + type uint64; + description + "An arbitrary 64-bit index identifying the policy forwarding + AFT entry."; + } + + leaf ip-prefix { + type oc-inet:ip-prefix; + description + "The IP prefix that the forwarding entry matches."; + } + + leaf mac-address { + type oc-yang:mac-address; + description + "The MAC address that the forwarding entry matches. Used for + Layer 2 forwarding entries, e.g., within a VSI instance."; + } + + leaf mpls-label { + type oc-mplst:mpls-label; + description + "The MPLS label that the forwarding entry matches. Used for + MPLS forwarding entries, whereby the local device acts as an + LSR."; + } + + leaf mpls-tc { + type oc-mplst:mpls-tc; + description + "The value of the MPLS Traffic Class bits (formerly known as + the MPLS experimental bits) that are to be matched by the AFT + entry."; + reference + "RFC5462: Multiprotocol Label Switching (MPLS) Label Stack + Entry: 'EXP' Field Renamed to 'Traffic Class' Field"; } + + leaf ip-dscp { + type oc-inet:dscp; + description + "The value of the differentiated services code point (DSCP) to + be matched for the forwarding entry. The value is specified in + cases where specific class-based forwarding based on IP is + implemented by the device."; + } + + leaf ip-protocol { + type oc-pkt-match-types:ip-protocol-type; + description + "The value of the IP protocol field of an IPv4 packet, or the + next-header field of an IPv6 packet which is to be matched by + the AFT entry. This field is utilised where forwarding is + performed based on L4 information."; + } + + leaf l4-src-port { + type oc-inet:port-number; + description + "The value of the source port field of the transport header + that is to be matched by the AFT entry."; + } + + leaf l4-dst-port { + type oc-inet:port-number; + description + "The value of the destination port field of the transport + header that is to be matched by the AFT entry."; + } + } + + grouping aft-pf-entry-state { + description + "Operational state parameters for the Policy Forwarding + AFT entry."; + uses aft-common-entry-state; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-aft-types.yang b/vendor/cisco/nx/9.3-14/openconfig-aft-types.yang new file mode 100644 index 000000000..aa70c63d8 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-aft-types.yang @@ -0,0 +1,75 @@ +module openconfig-aft-types { + + namespace "http://openconfig.net/yang/fib-types"; + prefix "oc-aftt"; + + import openconfig-extensions { prefix "oc-ext"; } + + organization + "OpenConfig Working Group"; + + contact + "OpenConfig Working Group + www.openconfig.net"; + + description + "Types related to the OpenConfig Abstract Forwarding + Table (AFT) model"; + + oc-ext:openconfig-version "0.3.3"; + + revision "2019-08-01" { + description + "Add lsp-name leaf to AFT next-hop."; + reference "0.3.3"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.2"; + } + + revision 2017-08-24 { + description + "Formatting fixes"; + reference "0.3.1"; + } + + revision 2017-05-10 { + description + "Refactor to provide concretised per-AF schemas per AFT."; + reference "0.3.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + typedef encapsulation-header-type { + type enumeration { + enum GRE { + description + "The encapsulation header is a Generic Routing Encapsulation + header."; + } + enum IPV4 { + description + "The encapsulation header is an IPv4 packet header"; + } + enum IPV6 { + description + "The encapsulation header is an IPv6 packet header"; + } + enum MPLS { + description + "The encapsulation header is one or more MPLS labels indicated + by the pushed and popped label stack lists."; + } + } + description + "Types of tunnel encapsulation that are supported by systems as either + head- or tail-end."; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-aft.yang b/vendor/cisco/nx/9.3-14/openconfig-aft.yang new file mode 100644 index 000000000..8725e788b --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-aft.yang @@ -0,0 +1,171 @@ +module openconfig-aft { + + yang-version "1"; + + namespace "http://openconfig.net/yang/aft"; + + prefix "oc-aft"; + + import openconfig-extensions { prefix "oc-ext"; } + + // Include IPv4 AFT submodule. + include openconfig-aft-ipv4; + // Include IPv6 AFT submodule. + include openconfig-aft-ipv6; + // Include MPLS AFT submodule. + include openconfig-aft-mpls; + // Include policy forwarding AFT submodule. + include openconfig-aft-pf; + // Include the ethernet AFT submodule. + include openconfig-aft-ethernet; + // Include the common cross-AFT entities. + include openconfig-aft-common; + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "A model describing the forwarding entries installed on a network + element. It should be noted that this model is not expected to + align 1:1 with the underlying structure used directly by a + forwarding element (e.g., linecard), but rather provide an + abstraction that can be consumed by an NMS to observe, and in some + cases manipulate, the internal forwarding database in a simplified + manner. Since the underlying model of the forwarding table is not + expected to align with this model, the structure described herein + is referred to as an Abstract Forwarding Table (AFT), rather than + the FIB."; + + oc-ext:openconfig-version "0.4.0"; + + revision "2019-08-02" { + description + "Add installing protocol for IPv[46] unicast entries. + Add the ability to describe conditional next-hop groups + outside of the policy forwarding module to allow for efficient + handling of CBTS, where many prefixes may share the same next-hop + criteria."; + reference "0.4.0"; + } + + revision "2019-08-01" { + description + "Add lsp-name leaf to AFT next-hop."; + reference "0.3.3"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.2"; + } + + revision 2017-08-24 { + description + "Formatting fixes"; + reference "0.3.1"; + } + + revision 2017-05-10 { + description + "Refactor to provide concretised per-AF schemas per AFT."; + reference "0.3.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // config + state groupings + + // structural groupings + + grouping aft-top { + description + "Top-level grouping allowing per-protocol instantiation of the + AFT."; + + container afts { + description + "The abstract forwarding tables (AFTs) that are associated + with the network instance. An AFT is instantiated per-protocol + running within the network-instance - such that one exists for + IPv4 Unicast, IPv6 Unicast, MPLS, L2 forwarding entries, etc. + A forwarding entry within the FIB has a set of next-hops, + which may be a reference to an entry within another table - + e.g., where a Layer 3 next-hop has an associated Layer 2 + forwarding entry."; + + container ipv4-unicast { + description + "The abstract forwarding table for IPv4 unicast. Entries + within this table are uniquely keyed on the IPv4 unicast + destination prefix which is matched by ingress packets. + + The data set represented by the IPv4 Unicast AFT is the set + of entries from the IPv4 unicast RIB that have been selected + for installation into the FIB of the device exporting the + data structure."; + + uses aft-ipv4-unicast-structural; + } + + container ipv6-unicast { + description + "The abstract forwarding table for IPv6 unicast. Entries + within this table are uniquely keyed on the IPv6 unicast + destination prefix which is matched by ingress packets. + + The data set represented by the IPv6 Unicast AFTis the set + of entries within the IPv6 RIB that "; + + uses aft-ipv6-unicast-structural; + + } + + container policy-forwarding { + description + "The abstract forwarding table for policy-based forwarding + entries. Since multiple match criteria can be utilised + within a policy-based forwarding rule, this AFT provides a + flexible match criteria, and is indexed based on an + arbitrary 64-bit index. Entries within the AFT may match on + multiple field types (e.g., L4 header fields, as well as L2 + fields). + + Examples of entries within this table are: + - IPv4 policy-based routing based on DSCP. + - MPLS policy-based forwarding entries."; + + uses aft-pf-structural; + } + + container mpls { + description + "The abstract forwarding table for MPLS label based + forwarding entries. Entries within the table are keyed based + on the top-most MPLS label in the stack on the ingress + packet."; + + uses aft-mpls-structural; + } + + container ethernet { + description + "The abstract forwarding table for Ethernet based forwarding + entries. Entries within the table are keyed based on the + destination MAC address on the ingress packet."; + + uses aft-ethernet-structural; + } + + uses aft-next-hop-groups-structural; + uses aft-nhop-structural; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-alarm-types.yang b/vendor/cisco/nx/9.3-14/openconfig-alarm-types.yang new file mode 100644 index 000000000..c4617b5e6 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-alarm-types.yang @@ -0,0 +1,150 @@ +module openconfig-alarm-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/alarms/types"; + + prefix "oc-alarm-types"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines operational state data related to alarms + that the device is reporting. + + This model reuses some data items defined in the draft IETF + YANG Alarm Module: + https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02 + + Portions of this code were derived from the draft IETF YANG Alarm + Module. Please reproduce this note if possible. + + IETF code is subject to the following copyright and license: + Copyright (c) IETF Trust and the persons identified as authors of + the code. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, is permitted pursuant to, and subject to the license + terms contained in, the Simplified BSD License set forth in + Section 4.c of the IETF Trust's Legal Provisions Relating + to IETF Documents (http://trustee.ietf.org/license-info)."; + + oc-ext:openconfig-version "0.2.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.2.1"; + } + + revision "2018-01-16" { + description + "Moved alarm identities into separate types module"; + reference "0.2.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + identity OPENCONFIG_ALARM_TYPE_ID { + description + "Base identity for alarm type ID profiles"; + } + + identity AIS { + base OPENCONFIG_ALARM_TYPE_ID; + description + "Defines an alarm indication signal type of alarm"; + } + + identity EQPT { + base OPENCONFIG_ALARM_TYPE_ID; + description + "Defines an equipment related type of alarm that is specific + to the physical hardware"; + } + + identity LOS { + base OPENCONFIG_ALARM_TYPE_ID; + description + "Defines a loss of signal type of alarm"; + } + + identity OTS { + base OPENCONFIG_ALARM_TYPE_ID; + description + "Defines a optical transport signal type of alarm"; + } + + identity OPENCONFIG_ALARM_SEVERITY { + description + "Base identity for alarm severity profiles. Derived + identities are based on contents of the draft + IETF YANG Alarm Module"; + reference + "IETF YANG Alarm Module: Draft - typedef severity + https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02"; + + } + + identity UNKNOWN { + base OPENCONFIG_ALARM_SEVERITY; + description + "Indicates that the severity level could not be determined. + This level SHOULD be avoided."; + } + + identity MINOR { + base OPENCONFIG_ALARM_SEVERITY; + description + "Indicates the existence of a non-service affecting fault + condition and that corrective action should be taken in + order to prevent a more serious (for example, service + affecting) fault. Such a severity can be reported, for + example, when the detected alarm condition is not currently + degrading the capacity of the resource"; + } + + identity WARNING { + base OPENCONFIG_ALARM_SEVERITY; + description + "Indicates the detection of a potential or impending service + affecting fault, before any significant effects have been felt. + Action should be taken to further diagnose (if necessary) and + correct the problem in order to prevent it from becoming a more + serious service affecting fault."; + } + + identity MAJOR { + base OPENCONFIG_ALARM_SEVERITY; + description + "Indicates that a service affecting condition has developed + and an urgent corrective action is required. Such a severity + can be reported, for example, when there is a severe + degradation in the capability of the resource and its full + capability must be restored."; + } + + identity CRITICAL { + base OPENCONFIG_ALARM_SEVERITY; + description + "Indicates that a service affecting condition has occurred + and an immediate corrective action is required. Such a + severity can be reported, for example, when a resource becomes + totally out of service and its capability must be restored."; + } + +} \ No newline at end of file diff --git a/vendor/cisco/nx/9.3-14/openconfig-alarms.yang b/vendor/cisco/nx/9.3-14/openconfig-alarms.yang new file mode 100644 index 000000000..c7d71f195 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-alarms.yang @@ -0,0 +1,237 @@ +module openconfig-alarms { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/alarms"; + + prefix "oc-alarms"; + + // import some basic types + import openconfig-alarm-types { prefix oc-alarm-types; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-types { prefix oc-types; } + import openconfig-platform { prefix oc-platform; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines operational state data related to alarms + that the device is reporting. + + This model reuses some data items defined in the draft IETF + YANG Alarm Module: + https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02 + + Portions of this code were derived from the draft IETF YANG Alarm + Module. Please reproduce this note if possible. + + IETF code is subject to the following copyright and license: + Copyright (c) IETF Trust and the persons identified as authors of + the code. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, is permitted pursuant to, and subject to the license + terms contained in, the Simplified BSD License set forth in + Section 4.c of the IETF Trust's Legal Provisions Relating + to IETF Documents (http://trustee.ietf.org/license-info)."; + + oc-ext:openconfig-version "0.3.2"; + + revision "2019-07-09" { + description + "Clarify relative base for leaves using timeticks64."; + reference "0.3.2"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.1"; + } + + revision "2018-01-16" { + description + "Moved alarm identities into separate types module"; + reference "0.3.0"; + } + + revision "2018-01-10" { + description + "Make alarms list read only"; + reference "0.2.0"; + } + + revision "2017-08-24" { + description + "Initial public release"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // grouping statements + + grouping alarm-state { + description + "Operational state data for device alarms"; + + leaf id { + type string; + description + "Unique ID for the alarm -- this will not be a + configurable parameter on many implementations"; + } + + leaf resource { + type string; + description + "The item that is under alarm within the device. The + resource may be a reference to an item which is + defined elsewhere in the model. For example, it + may be a platform/component, interfaces/interface, + terminal-device/logical-channels/channel, etc. In this + case the system should match the name of the referenced + item exactly. The referenced item could alternatively be + the path of the item within the model."; + reference + "IETF YANG Alarm Module: Draft - typedef resource + https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02"; + } + + leaf text { + type string; + description + "The string used to inform operators about the alarm. This + MUST contain enough information for an operator to be able + to understand the problem. If this string contains structure, + this format should be clearly documented for programs to be + able to parse that information"; + reference + "IETF YANG Alarm Module: Draft - typedef alarm-text + https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02"; + } + + leaf time-created { + type oc-types:timeticks64; + description + "The time at which the alarm was raised by the system. + This value is expressed relative to the Unix Epoch."; + } + + leaf severity { + type identityref { + base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY; + } + description + "The severity level indicating the criticality and impact + of the alarm"; + reference + "IETF YANG Alarm Module: Draft - typedef severity + https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02"; + } + + leaf type-id { + type union { + type string; + type identityref { + base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID; + } + } + description + "The abbreviated name of the alarm, for example LOS, + EQPT, or OTS. Also referred to in different systems as + condition type, alarm identifier, or alarm mnemonic. It + is recommended to use the OPENCONFIG_ALARM_TYPE_ID + identities where possible and only use the string type + when the desired identityref is not yet defined"; + reference + "IETF YANG Alarm Module: Draft - typedef alarm-type-id + https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02"; + } + } + + grouping alarm-config { + description + "Configuration data for device alarms"; + } + + grouping alarms-top { + description + "Top-level grouping for device alarms"; + + container alarms { + description + "Top-level container for device alarms"; + + config false; + + list alarm { + key "id"; + description + "List of alarms, keyed by a unique id"; + + leaf id { + type leafref { + path "../state/id"; + } + + description + "References the unique alarm id"; + } + + container config { + description + "Configuration data for each alarm"; + + uses alarm-config; + } + + container state { + config false; + + description + "Operational state data for a device alarm"; + + uses alarm-config; + uses alarm-state; + } + } + } + } + + + // augments + + augment "/oc-platform:components/oc-platform:component/oc-platform:state" { + description + "Adds specific alarms related to a component."; + + leaf equipment-failure { + type boolean; + default "false"; + description + "If true, the hardware indicates that the component's physical equipment + has failed"; + } + + leaf equipment-mismatch { + type boolean; + default "false"; + description + "If true, the hardware indicates that the component inserted into the + affected component's physical location is of a different type than what + is configured"; + } + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-bfd.yang b/vendor/cisco/nx/9.3-14/openconfig-bfd.yang new file mode 100644 index 000000000..d5765fac3 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-bfd.yang @@ -0,0 +1,749 @@ +module openconfig-bfd { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/bfd"; + + prefix "oc-bfd"; + + // import some basic types + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-types { prefix "oc-types"; } + import openconfig-interfaces { prefix "oc-if"; } + import openconfig-if-types { prefix "oc-ift"; } + import openconfig-inet-types { prefix "oc-inet"; } + import openconfig-network-instance { prefix "oc-ni"; } + import openconfig-policy-types { prefix "oc-pol-types"; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "An OpenConfig model of Bi-Directional Forwarding Detection (BFD) + configuration and operational state."; + + oc-ext:openconfig-version "0.2.0"; + + revision "2019-10-25" { + description + "Correct when statements."; + reference "0.2.0"; + } + + revision "2019-06-02" { + description + "Fix detection multiplier to be 8-bit value"; + reference "0.1.1"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.1.0"; + } + + revision "2017-10-19" { + description + "Adopt OpenConfig types models, type corrections"; + reference "0.0.2"; + } + + revision "2016-06-24" { + description + "Initial revision"; + reference "0.0.1"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + typedef bfd-session-state { + type enumeration { + enum UP { + description + "The BFD session is perceived to be up by the system."; + } + enum DOWN { + description + "The BFD session is perceived to be down by the system."; + } + enum ADMIN_DOWN { + description + "The BFD session is administratively disabled."; + } + enum INIT { + description + "The BFD session is perceived to be initialising by the + system."; + } + } + description + "The state of the BFD session according to the system referred + to by the context of the leaf."; + reference + "RFC5880 - Bidirectional Forwarding Detection, Section + 4.1"; + } + + typedef bfd-diagnostic-code { + type enumeration { + enum NO_DIAGNOSTIC { + value 0; + description + "No diagnostic code was specified, or the session has not + changed state."; + } + enum DETECTION_TIMEOUT { + value 1; + description + "The control detection time expired: no BFD packet was + received within the required period."; + } + enum ECHO_FAILED { + value 2; + description + "The BFD echo function failed - echo packets have not been + received for the required period of time."; + } + enum FORWARDING_RESET { + value 3; + description + "The forwarding plane in the local system was reset - such + that the remote system cannot rely on the forwarding state of + the device specifying this error code."; + } + enum PATH_DOWN { + value 4; + description + "Signalling outside of BFD specified that the path underlying + this session has failed."; + } + enum CONCATENATED_PATH_DOWN { + value 5; + description + "When a BFD session runs over a series of path segments, this + error code indicates that a subsequent path segment (i.e., + one in the transmit path between the source and destination + of the session) has failed."; + } + enum ADMIN_DOWN { + value 6; + description + "The BFD session has been administratively disabled by the + peer."; + } + enum REVERSE_CONCATENATED_PATH_DOWN { + value 7; + description + "In the case that a BFD session is running over a series of + path segments, this error code indicates that a path segment + on the reverse path (i.e., in the transmit direction from the + destination to the source of the session) has failed."; + } + } + description + "Diagnostic codes defined by BFD. These typically indicate the + reason for a change of session state."; + reference + "RFC5880 - Bidirectional Forwarding Detection, Section + 4.1"; + } + + + grouping bfd-interface-config { + description + "Top-level per-interface configuration parameters for BFD."; + + leaf id { + type string; + description + "A unique identifier for the interface."; + } + + leaf enabled { + type boolean; + description + "When this leaf is set to true then the BFD session is enabled + on the specified interface - if it is set to false, it is + administratively disabled."; + } + + leaf local-address { + type oc-inet:ip-address; + description + "The source IP address to be used for BFD sessions over this + interface."; + } + + leaf desired-minimum-tx-interval { + type uint32; + units microseconds; + description + "The minimum interval between transmission of BFD control + packets that the operator desires. This value is advertised to + the peer, however the actual interval used is specified by + taking the maximum of desired-minimum-tx-interval and the + value of the remote required-minimum-receive interval value. + + This value is specified as an integer number of microseconds."; + } + + leaf required-minimum-receive { + type uint32; + units microseconds; + description + "The minimum interval between received BFD control packets that + this system should support. This value is advertised to the + remote peer to indicate the maximum frequency (i.e., minimum + inter-packet interval) between BFD control packets that is + acceptable to the local system."; + } + + // rjs: Could have required-minimum-echo-receive here, but this is + // generally not configurable. + + leaf detection-multiplier { + type uint8 { + range "1..max"; + } + description + "The number of packets that must be missed to declare this + session as down. The detection interval for the BFD session + is calculated by multiplying the value of the negotiated + transmission interval by this value."; + } + + leaf enable-per-member-link { + type boolean; + default false; + description + "When this leaf is set to true - BFD will be enabled on + each member interface of the aggregated Ethernet bundle."; + } + } + + grouping bfd-interface-state { + // placeholder + description + "Operational state parameters relating to BFD running on an + interface."; + } + + grouping bfd-session-state-mode-timers-common { + description + "Common operational state parameters that are re-used across + both asynchronous and echo modes of BFD."; + + leaf last-packet-transmitted { + type uint64; + description + "The date and time at which the last BFD packet + was transmitted for this session, expressed as the number + of nanoseconds since the Unix Epoch (January 1, 1970, + 00:00 UTC)."; + } + + leaf last-packet-received { + type uint64; + description + "The date and time at which the last BFD packet + was received for this session, expressed as the number + of nanoseconds since the Unix Epoch (January 1, 1970, + 00:00 UTC)."; + } + + leaf transmitted-packets { + // TODO: looks to be unsupported on JUNOS + type uint64; + description + "The number of packets that have been transmitted + by the local system."; + } + + leaf received-packets { + // TODO: looks to be unsupported on JUNOS + type uint64; + description + "The number of packets that have been received by the + local system from the remote neighbour."; + } + + leaf up-transitions { + // TODO: looks to only be supported in SROS + type uint64; + description + "The number of times that the adjacency with the neighbor + has transitioned into the up state."; + } + } + + grouping bfd-session-state-sessiondetails-common { + description + "Common session details for a BFD session."; + + leaf session-state { + type bfd-session-state; + description + "The state of the BFD session perceived by the local system."; + + } + + leaf remote-session-state { + type bfd-session-state; + description + "The reported state of the BFD session according to the remote + system. This state reflects the last state reported in a BFD + control packet."; + } + + leaf last-failure-time { + type oc-types:timeticks64; + description + "The time of the last transition of the BFD session out of + the UP state, expressed as the number of nanoseconds since + the Unix epoch."; + } + + leaf failure-transitions { + type uint64; + description + "The number of times that the BFD session has transitioned + out of the UP state."; + } + + leaf local-discriminator { + type string; + description + "A unique identifier used by the local system to identify this + BFD session."; + } + + leaf remote-discriminator { + type string; + description + "A unique identified used by the remote system to identify this + BFD session."; + } + + leaf local-diagnostic-code { + type bfd-diagnostic-code; + description + "The local BFD diagnostic code indicating the most recent + reason for failure of this BFD session."; + } + + leaf remote-diagnostic-code { + type bfd-diagnostic-code; + description + "The remote BFD diagnostic code indicating the remote system's + reason for failure of the BFD session"; + } + + leaf remote-minimum-receive-interval { + type uint32; + description + "The value of the minimum receive interval that was specified + in the most recent BFD control packet received from the peer."; + } + + leaf demand-mode-requested { + type boolean; + description + "This leaf is set to true when the remote system has requested + demand mode be run for this session."; + } + + leaf remote-authentication-enabled { + type boolean; + description + "This leaf is set to true when the remote system has specified + that authentication is present for the BFD session."; + } + + leaf remote-control-plane-independent { + type boolean; + description + "This leaf is set to true when the remote system has specified + that the hardware implementing this BFD session is independent + of the control plane's liveliness."; + } + } + + + grouping bfd-session-state-async-common { + description + "Common parameters for asynchronous BFD sessions"; + + container async { + description + "Operational state parameters specifically relating to + asynchronous mode of BFD."; + + uses bfd-session-state-mode-timers-common; + } + } + + grouping bfd-session-state-echo-common { + description + "Common parameters for echo-mode BFD sessions."; + + container echo { + description + "Operational state parameters specifically relating to the + echo mode of BFD."; + + leaf active { + type boolean; + description + "This leaf is set to true when echo mode is running between + the local and remote system. When it is set to false, solely + asynchronous mode is active."; + } + + uses bfd-session-state-mode-timers-common; + } + } + + + grouping bfd-session-state-common { + description + "Common operational state parameters that may be re-used across + multiple BFD session contexts."; + + leaf local-address { + type oc-inet:ip-address; + description + "The IP address used by the local system for this BFD session."; + } + + leaf remote-address { + type oc-inet:ip-address; + description + "The IP address used by the remote system for this BFD session."; + } + + leaf-list subscribed-protocols { + type identityref { + base "oc-pol-types:INSTALL_PROTOCOL_TYPE"; + } + description + "Indicates the set of protocols that currently use + this BFD session for liveliness detection."; + } + + uses bfd-session-state-sessiondetails-common; + uses bfd-session-state-echo-common; + uses bfd-session-state-async-common; + } + + grouping bfd-session-microbfd-common { + description + "BFD session parameters utilised only for micro-BFD sessions."; + + uses bfd-session-state-sessiondetails-common; + uses bfd-session-state-async-common; + } + + grouping bfd-interface-peer-state { + description + "Per-peer, per-interface operational state parameters for BFD."; + + uses bfd-session-state-common; + } + + grouping bfd-interface-microbfd-config { + description + "Configuration parameters for a microBFD session on an + interface."; + + leaf local-address { + type oc-inet:ip-address; + description + "The local IP address used by the system for the micro-BFD session + specified."; + } + + leaf remote-address { + type oc-inet:ip-address; + description + "The remote IP destination that should be used by the system for + the micro-BFD session specified."; + } + + leaf member-interface { + type leafref { + path "/oc-if:interfaces/" + + "oc-if:interface/oc-if:config/oc-if:name"; + } + // rjs: Note that this does not restrict to only interfaces that + // are part of the current LAG. An implementation should return + // NOK if such an interface is specified. + description + "Reference to a member link of the aggregate interface being + described."; + } + } + + grouping bfd-interface-microbfd-state { + description + "Operational state parameters relating to a micro-BFD session on + an interface."; + + uses bfd-session-microbfd-common; + } + + grouping bfd-interface-microbfd-structural { + description + "Structural grouping for micro-bfd configuration and state + parameters."; + + container micro-bfd-sessions { + when "/oc-if:interfaces/oc-if:interface" + + "[oc-if:name=current()/../interface-ref/config/interface]/" + + "oc-if:state/oc-if:type = 'oc-ift:IF_AGGREGATE'" { + description + "Include per-member link BFD only when the type of + interface is a link aggregate."; + } + + description + "Parameters relating to micro-BFD sessions associated + with the interface."; + + list micro-bfd-session { + key "member-interface"; + + description + "This list contains configuration and state parameters + relating to micro-BFD session."; + reference + "RFC7130 - Bidirectional Forwarding Detection (BFD) + on Link Aggregation Group (LAG) Interfaces."; + + + leaf member-interface { + type leafref { + path "../config/member-interface"; + } + description + "A reference to the member interface of the link + aggregate."; + } + + container config { + description + "Configuration parameters for the micro-BFD session."; + uses bfd-interface-microbfd-config; + } + + container state { + config false; + description + "Operational state parameters for the micro-BFD session."; + uses bfd-interface-microbfd-config; + uses bfd-interface-microbfd-state; + } + } + } + } + + grouping bfd-interface-peer-structural { + description + "Structural grouping for BFD peers (in the context of an interface)."; + + container peers { + description + "Parameters relating to the BFD peers which are seen + over this interface."; + + list peer { + key "local-discriminator"; + config false; + + description + "Parameters relating to the BFD peer specified by the + remote address."; + + leaf local-discriminator { + type leafref { + path "../state/local-discriminator"; + } + description + "The local discriminator, which is unique for the + session on the system."; + } + + container state { + config false; + description + "Operational state parameters for the BFD session."; + + uses bfd-interface-peer-state; + } + } + } + } + + grouping bfd-top { + description + "Structural grouping for Bidirectional Forwarding Detection (BFD)."; + + container bfd { + description + "Configuration and operational state parameters for BFD."; + reference "RFC5880, RFC5881"; + + container interfaces { + description + "Interfaces on which BFD sessions are to be enabled."; + + list interface { + key "id"; + + description + "Per-interface configuration and state parameters for BFD."; + + leaf id { + type leafref { + path "../config/id"; + } + description + "A reference to an identifier for the interface on which + BFD is enabled."; + } + + container config { + description + "Configuration parameters for BFD on the specified + interface."; + uses bfd-interface-config; + } + + container state { + config false; + description + "Operational state parameters for BFD on the specified + interface."; + uses bfd-interface-config; + uses bfd-interface-state; + } + + uses oc-if:interface-ref; + + uses bfd-interface-microbfd-structural; + uses bfd-interface-peer-structural; + } + } + } + } + + grouping enable-bfd-config { + description + "Configuration parameters relating to enabling BFD."; + + leaf enabled { + type boolean; + description + "When this leaf is set to true, BFD is used to detect the + liveliness of the remote peer or next-hop."; + } + } + + grouping enable-bfd-state { + description + "Operational state parameters relating to enabling BFD."; + + leaf associated-session { + // TODO: this is a leafref to something unique, but seems + // like it might be expensive for the NMS to find out since + // it will need to cycle through all interfaces looking for + // the associated local-discriminator. + type leafref { + path "/bfd/interfaces/interface/peers/peer/local-discriminator"; + } + description + "A reference to the BFD session that is tracking the liveliness + of the remote entity."; + } + + // + // A fix to the above is to have the following leaf to show which + // interface is associated. + // + // leaf associated-interface { + // type leafref { + // path "/bfd/interfaces/interface/config/id"; + // } + // } + } + + grouping bfd-enable { + description + "Grouping which can be included in a protocol wishing to enable + BFD."; + + container enable-bfd { + description + "Enable BFD for liveliness detection to the next-hop or + neighbour."; + + container config { + description + "Configuration parameters relating to enabling BFD."; + + uses enable-bfd-config; + } + + container state { + config false; + description + "Operational state parameters relating to enabing BFD."; + + uses enable-bfd-config; + uses enable-bfd-state; + } + } + } + + // rjs - TODO - should these be specified within each model? The + // answer here is probably yes, since otherwise openconfig + // network-instance ends up with a circular reference. + augment "/oc-ni:network-instances/oc-ni:network-instance/" + + "oc-ni:protocols/oc-ni:protocol/oc-ni:bgp/" + + "oc-ni:neighbors/oc-ni:neighbor" { + description + "Augment the BGP routing protocol to add a link to BFD for + neighbour detection."; + + uses bfd-enable; + } + + augment "/oc-ni:network-instances/oc-ni:network-instance/" + + "oc-ni:protocols/oc-ni:protocol/oc-ni:bgp/" + + "oc-ni:peer-groups/oc-ni:peer-group" { + description + "Augment the BGP routing protocol to add a link to BFD for + neighbor detection when specified within a peer-group."; + + uses bfd-enable; + } + + augment "/oc-ni:network-instances/oc-ni:network-instance/" + + "oc-ni:protocols/oc-ni:protocol/oc-ni:static-routes/" + + "oc-ni:static/oc-ni:next-hops/oc-ni:next-hop" { + description + "Augment the static route configuration to allow a next-hop + to be tracked by BFD."; + + uses bfd-enable; + } + + uses bfd-top; +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-bgp-common-multiprotocol.yang b/vendor/cisco/nx/9.3-14/openconfig-bgp-common-multiprotocol.yang new file mode 100644 index 000000000..46c61e823 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-bgp-common-multiprotocol.yang @@ -0,0 +1,458 @@ +submodule openconfig-bgp-common-multiprotocol { + + belongs-to openconfig-bgp { + prefix "oc-bgp"; + } + + import openconfig-extensions { prefix oc-ext; } + import openconfig-bgp-types { prefix oc-bgp-types; } + import openconfig-routing-policy { prefix oc-rpol; } + import openconfig-types { prefix oc-types; } + + include openconfig-bgp-common; + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This sub-module contains groupings that are related to support + for multiple protocols in BGP. The groupings are common across + multiple contexts."; + + oc-ext:openconfig-version "4.0.1"; + + revision "2017-07-30" { + description + "Clarification of add-paths send-max leaf"; + reference "4.0.1"; + } + + revision "2017-07-10" { + description + "Add error notifications; moved add-paths config; add AS + prepend policy features; removed unneeded config leaves"; + reference "4.0.0"; + } + + revision "2017-02-02" { + description + "Bugfix to remove remaining global-level policy data"; + reference "3.0.1"; + } + + revision "2017-01-26" { + description + "Add dynamic neighbor support, migrate to OpenConfig types"; + reference "3.0.0"; + } + + revision "2016-06-21" { + description + "OpenConfig BGP refactor"; + reference "2.1.1"; + } + + grouping bgp-common-mp-afi-safi-graceful-restart-config { + description + "BGP graceful restart parameters that apply on a per-AFI-SAFI + basis"; + + leaf enabled { + type boolean; + default false; + description + "This leaf indicates whether graceful-restart is enabled for + this AFI-SAFI"; + } + } + + grouping bgp-common-mp-afi-safi-config { + description + "Configuration parameters used for all BGP AFI-SAFIs"; + + leaf afi-safi-name { + type identityref { + base oc-bgp-types:AFI_SAFI_TYPE; + } + description "AFI,SAFI"; + } + + leaf enabled { + type boolean; + default false; + description + "This leaf indicates whether the IPv4 Unicast AFI,SAFI is + enabled for the neighbour or group"; + } + } + + grouping bgp-common-mp-all-afi-safi-list-contents { + description + "A common grouping used for contents of the list that is used + for AFI-SAFI entries"; + + // import and export policy included for the afi/safi + uses oc-rpol:apply-policy-group; + + uses bgp-common-mp-ipv4-unicast-group; + uses bgp-common-mp-ipv6-unicast-group; + uses bgp-common-mp-ipv4-labeled-unicast-group; + uses bgp-common-mp-ipv6-labeled-unicast-group; + uses bgp-common-mp-l3vpn-ipv4-unicast-group; + uses bgp-common-mp-l3vpn-ipv6-unicast-group; + uses bgp-common-mp-l3vpn-ipv4-multicast-group; + uses bgp-common-mp-l3vpn-ipv6-multicast-group; + uses bgp-common-mp-l2vpn-vpls-group; + uses bgp-common-mp-l2vpn-evpn-group; + } + + // Groupings relating to each address family + grouping bgp-common-mp-ipv4-unicast-group { + description + "Group for IPv4 Unicast configuration options"; + + container ipv4-unicast { + when "../afi-safi-name = 'oc-bgp-types:IPV4_UNICAST'" { + description + "Include this container for IPv4 Unicast specific + configuration"; + } + + description "IPv4 unicast configuration options"; + + // include common IPv[46] unicast options + uses bgp-common-mp-ipv4-ipv6-unicast-common; + + // placeholder for IPv4 unicast specific configuration + } + } + + grouping bgp-common-mp-ipv6-unicast-group { + description + "Group for IPv6 Unicast configuration options"; + + container ipv6-unicast { + when "../afi-safi-name = 'oc-bgp-types:IPV6_UNICAST'" { + description + "Include this container for IPv6 Unicast specific + configuration"; + } + + description "IPv6 unicast configuration options"; + + // include common IPv[46] unicast options + uses bgp-common-mp-ipv4-ipv6-unicast-common; + + // placeholder for IPv6 unicast specific configuration + // options + } + } + + grouping bgp-common-mp-ipv4-labeled-unicast-group { + description + "Group for IPv4 Labeled Unicast configuration options"; + + container ipv4-labeled-unicast { + when "../afi-safi-name = 'oc-bgp-types:IPV4_LABELED_UNICAST'" { + description + "Include this container for IPv4 Labeled Unicast specific + configuration"; + } + + description "IPv4 Labeled Unicast configuration options"; + + uses bgp-common-mp-all-afi-safi-common; + + // placeholder for IPv4 Labeled Unicast specific config + // options + } + } + + grouping bgp-common-mp-ipv6-labeled-unicast-group { + description + "Group for IPv6 Labeled Unicast configuration options"; + + container ipv6-labeled-unicast { + when "../afi-safi-name = 'oc-bgp-types:IPV6_LABELED_UNICAST'" { + description + "Include this container for IPv6 Labeled Unicast specific + configuration"; + } + + description "IPv6 Labeled Unicast configuration options"; + + uses bgp-common-mp-all-afi-safi-common; + + // placeholder for IPv6 Labeled Unicast specific config + // options. + } + } + + grouping bgp-common-mp-l3vpn-ipv4-unicast-group { + description + "Group for IPv4 Unicast L3VPN configuration options"; + + container l3vpn-ipv4-unicast { + when "../afi-safi-name = 'oc-bgp-types:L3VPN_IPV4_UNICAST'" { + description + "Include this container for IPv4 Unicast L3VPN specific + configuration"; + } + + description "Unicast IPv4 L3VPN configuration options"; + + // include common L3VPN configuration options + uses bgp-common-mp-l3vpn-ipv4-ipv6-unicast-common; + + // placeholder for IPv4 Unicast L3VPN specific config options. + } + } + + grouping bgp-common-mp-l3vpn-ipv6-unicast-group { + description + "Group for IPv6 Unicast L3VPN configuration options"; + + container l3vpn-ipv6-unicast { + when "../afi-safi-name = 'oc-bgp-types:L3VPN_IPV6_UNICAST'" { + description + "Include this container for unicast IPv6 L3VPN specific + configuration"; + } + + description "Unicast IPv6 L3VPN configuration options"; + + // include common L3VPN configuration options + uses bgp-common-mp-l3vpn-ipv4-ipv6-unicast-common; + + // placeholder for IPv6 Unicast L3VPN specific configuration + // options + } + } + + grouping bgp-common-mp-l3vpn-ipv4-multicast-group { + description + "Group for IPv4 L3VPN multicast configuration options"; + + container l3vpn-ipv4-multicast { + when "../afi-safi-name = 'oc-bgp-types:L3VPN_IPV4_MULTICAST'" { + description + "Include this container for multicast IPv6 L3VPN specific + configuration"; + } + + description "Multicast IPv4 L3VPN configuration options"; + + // include common L3VPN multicast options + uses bgp-common-mp-l3vpn-ipv4-ipv6-multicast-common; + + // placeholder for IPv4 Multicast L3VPN specific configuration + // options + } + } + + grouping bgp-common-mp-l3vpn-ipv6-multicast-group { + description + "Group for IPv6 L3VPN multicast configuration options"; + + container l3vpn-ipv6-multicast { + when "../afi-safi-name = 'oc-bgp-types:L3VPN_IPV6_MULTICAST'" { + description + "Include this container for multicast IPv6 L3VPN specific + configuration"; + } + + description "Multicast IPv6 L3VPN configuration options"; + + // include common L3VPN multicast options + uses bgp-common-mp-l3vpn-ipv4-ipv6-multicast-common; + + // placeholder for IPv6 Multicast L3VPN specific configuration + // options + } + } + + grouping bgp-common-mp-l2vpn-vpls-group { + description + "Group for BGP-signalled VPLS configuration options"; + + container l2vpn-vpls { + when "../afi-safi-name = 'oc-bgp-types:L2VPN_VPLS'" { + description + "Include this container for BGP-signalled VPLS specific + configuration"; + } + + description "BGP-signalled VPLS configuration options"; + + // include common L2VPN options + uses bgp-common-mp-l2vpn-common; + + // placeholder for BGP-signalled VPLS specific configuration + // options + } + } + + grouping bgp-common-mp-l2vpn-evpn-group { + description + "Group for BGP EVPN configuration options"; + + container l2vpn-evpn { + when "../afi-safi-name = 'oc-bgp-types:L2VPN_EVPN'" { + description + "Include this container for BGP EVPN specific + configuration"; + } + + description "BGP EVPN configuration options"; + + // include common L2VPN options + uses bgp-common-mp-l2vpn-common; + + // placeholder for BGP EVPN specific configuration options + } + } + + // Common groupings across multiple AFI,SAFIs + grouping bgp-common-mp-all-afi-safi-common { + description + "Grouping for configuration common to all AFI,SAFI"; + + container prefix-limit { + description + "Configure the maximum number of prefixes that will be + accepted from a peer"; + + container config { + description + "Configuration parameters relating to the prefix + limit for the AFI-SAFI"; + uses bgp-common-mp-all-afi-safi-common-prefix-limit-config; + } + + container state { + config false; + description + "State information relating to the prefix-limit for the + AFI-SAFI"; + uses bgp-common-mp-all-afi-safi-common-prefix-limit-config; + } + } + } + + grouping bgp-common-mp-ipv4-ipv6-unicast-common { + description + "Common configuration that is applicable for IPv4 and IPv6 + unicast"; + + // include common afi-safi options. + uses bgp-common-mp-all-afi-safi-common; + + // configuration options that are specific to IPv[46] unicast + container config { + description + "Configuration parameters for common IPv4 and IPv6 unicast + AFI-SAFI options"; + uses bgp-common-mp-ipv4-ipv6-unicast-common-config; + } + container state { + config false; + description + "State information for common IPv4 and IPv6 unicast + parameters"; + uses bgp-common-mp-ipv4-ipv6-unicast-common-config; + } + } + + grouping bgp-common-mp-l3vpn-ipv4-ipv6-unicast-common { + description + "Common configuration applied across L3VPN for IPv4 + and IPv6"; + + // placeholder -- specific configuration options that are generic + // across IPv[46] unicast address families. + uses bgp-common-mp-all-afi-safi-common; + } + + grouping bgp-common-mp-l3vpn-ipv4-ipv6-multicast-common { + description + "Common configuration applied across L3VPN for IPv4 + and IPv6"; + + // placeholder -- specific configuration options that are + // generic across IPv[46] multicast address families. + uses bgp-common-mp-all-afi-safi-common; + } + + grouping bgp-common-mp-l2vpn-common { + description + "Common configuration applied across L2VPN address + families"; + + // placeholder -- specific configuration options that are + // generic across L2VPN address families + uses bgp-common-mp-all-afi-safi-common; + } + + // Config groupings for common groups + grouping bgp-common-mp-all-afi-safi-common-prefix-limit-config { + description + "Configuration parameters relating to prefix-limits for an + AFI-SAFI"; + + leaf max-prefixes { + type uint32; + description + "Maximum number of prefixes that will be accepted + from the neighbour"; + } + + leaf prevent-teardown { + type boolean; + default false; + description + "Do not tear down the BGP session when the maximum + prefix limit is exceeded, but rather only log a + warning. The default of this leaf is false, such + that when it is not specified, the session is torn + down."; + } + + leaf shutdown-threshold-pct { + type oc-types:percentage; + description + "Threshold on number of prefixes that can be received + from a neighbour before generation of warning messages + or log entries. Expressed as a percentage of + max-prefixes"; + } + + leaf restart-timer { + type decimal64 { + fraction-digits 2; + } + units "seconds"; + description + "Time interval in seconds after which the BGP session + is re-established after being torn down due to exceeding + the max-prefix limit."; + } + } + + grouping bgp-common-mp-ipv4-ipv6-unicast-common-config { + description + "Common configuration parameters for IPv4 and IPv6 Unicast + address families"; + + leaf send-default-route { + type boolean; + default "false"; + description + "If set to true, send the default-route to the neighbour(s)"; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-bgp-common-structure.yang b/vendor/cisco/nx/9.3-14/openconfig-bgp-common-structure.yang new file mode 100644 index 000000000..30a5ad2cb --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-bgp-common-structure.yang @@ -0,0 +1,179 @@ +submodule openconfig-bgp-common-structure { + + belongs-to openconfig-bgp { + prefix "oc-bgp"; + } + + import openconfig-extensions { prefix oc-ext; } + + include openconfig-bgp-common-multiprotocol; + include openconfig-bgp-common; + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This sub-module contains groupings that are common across multiple BGP + contexts and provide structure around other primitive groupings."; + + + oc-ext:openconfig-version "4.0.1"; + + revision "2017-07-30" { + description + "Clarification of add-paths send-max leaf"; + reference "4.0.1"; + } + + revision "2017-07-10" { + description + "Add error notifications; moved add-paths config; add AS + prepend policy features; removed unneeded config leaves"; + reference "4.0.0"; + } + + revision "2017-02-02" { + description + "Bugfix to remove remaining global-level policy data"; + reference "3.0.1"; + } + + revision "2017-01-26" { + description + "Add dynamic neighbor support, migrate to OpenConfig types"; + reference "3.0.0"; + } + + revision "2016-06-21" { + description + "OpenConfig BGP refactor"; + reference "2.1.1"; + } + + grouping bgp-common-structure-neighbor-group-logging-options { + description + "Structural grouping used to include error handling configuration and + state for both BGP neighbors and groups"; + + container logging-options { + description + "Logging options for events related to the BGP neighbor or + group"; + container config { + description + "Configuration parameters enabling or modifying logging + for events relating to the BGPgroup"; + uses bgp-common-neighbor-group-logging-options-config; + } + container state { + config false; + description + "State information relating to logging for the BGP neighbor + or group"; + uses bgp-common-neighbor-group-logging-options-config; + } + } + } + + grouping bgp-common-structure-neighbor-group-ebgp-multihop { + description + "Structural grouping used to include eBGP multihop configuration and + state for both BGP neighbors and peer groups"; + + container ebgp-multihop { + description + "eBGP multi-hop parameters for the BGPgroup"; + container config { + description + "Configuration parameters relating to eBGP multihop for the + BGP group"; + uses bgp-common-neighbor-group-multihop-config; + } + container state { + config false; + description + "State information for eBGP multihop, for the BGP neighbor + or group"; + uses bgp-common-neighbor-group-multihop-config; + } + } + } + + grouping bgp-common-structure-neighbor-group-route-reflector { + description + "Structural grouping used to include route reflector configuration and + state for both BGP neighbors and peer groups"; + + container route-reflector { + description + "Route reflector parameters for the BGPgroup"; + container config { + description + "Configuraton parameters relating to route reflection + for the BGPgroup"; + uses bgp-common-neighbor-group-route-reflector-config; + } + container state { + config false; + description + "State information relating to route reflection for the + BGPgroup"; + uses bgp-common-neighbor-group-route-reflector-config; + } + } + } + + grouping bgp-common-structure-neighbor-group-as-path-options { + description + "Structural grouping used to include AS_PATH manipulation configuration + and state for both BGP neighbors and peer groups"; + + container as-path-options { + description + "AS_PATH manipulation parameters for the BGP neighbor or + group"; + container config { + description + "Configuration parameters relating to AS_PATH manipulation + for the BGP peer or group"; + uses bgp-common-neighbor-group-as-path-options-config; + } + container state { + config false; + description + "State information relating to the AS_PATH manipulation + mechanisms for the BGP peer or group"; + uses bgp-common-neighbor-group-as-path-options-config; + } + } + } + + grouping bgp-common-structure-neighbor-group-add-paths { + description + "Structural grouping used to include ADD-PATHs configuration and state + for both BGP neighbors and peer groups"; + + container add-paths { + description + "Parameters relating to the advertisement and receipt of + multiple paths for a single NLRI (add-paths)"; + container config { + description + "Configuration parameters relating to ADD_PATHS"; + uses bgp-common-neighbor-group-add-paths-config; + } + container state { + config false; + description + "State information associated with ADD_PATHS"; + uses bgp-common-neighbor-group-add-paths-config; + } + } + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-bgp-common.yang b/vendor/cisco/nx/9.3-14/openconfig-bgp-common.yang new file mode 100644 index 000000000..5ebc98b38 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-bgp-common.yang @@ -0,0 +1,648 @@ +submodule openconfig-bgp-common { + + belongs-to openconfig-bgp { + prefix "oc-bgp"; + } + + import openconfig-extensions { prefix oc-ext; } + import openconfig-bgp-types { prefix oc-bgp-types; } + import openconfig-routing-policy { prefix oc-rpol; } + import openconfig-types { prefix oc-types; } + import openconfig-inet-types { prefix oc-inet; } + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This sub-module contains common groupings that are common across + multiple contexts within the BGP module. That is to say that they + may be application to a subset of global, peer-group or neighbor + contexts."; + + oc-ext:openconfig-version "4.0.1"; + + revision "2017-07-30" { + description + "Clarification of add-paths send-max leaf"; + reference "4.0.1"; + } + + revision "2017-07-10" { + description + "Add error notifications; moved add-paths config; add AS + prepend policy features; removed unneeded config leaves"; + reference "4.0.0"; + } + + revision "2017-02-02" { + description + "Bugfix to remove remaining global-level policy data"; + reference "3.0.1"; + } + + revision "2017-01-26" { + description + "Add dynamic neighbor support, migrate to OpenConfig types"; + reference "3.0.0"; + } + + revision "2016-06-21" { + description + "OpenConfig BGP refactor"; + reference "2.1.1"; + } + + grouping bgp-common-neighbor-group-timers-config { + description + "Config parameters related to timers associated with the BGP + peer"; + + leaf connect-retry { + type decimal64 { + fraction-digits 2; + } + default 30; + description + "Time interval in seconds between attempts to establish a + session with the peer."; + } + + leaf hold-time { + type decimal64 { + fraction-digits 2; + } + default 90; + description + "Time interval in seconds that a BGP session will be + considered active in the absence of keepalive or other + messages from the peer. The hold-time is typically + set to 3x the keepalive-interval."; + reference + "RFC 4271 - A Border Gateway Protocol 4, Sec. 10"; + } + + leaf keepalive-interval { + type decimal64 { + fraction-digits 2; + } + default 30; + description + "Time interval in seconds between transmission of keepalive + messages to the neighbor. Typically set to 1/3 the + hold-time."; + } + + leaf minimum-advertisement-interval { + type decimal64 { + fraction-digits 2; + } + default 30; + description + "Minimum time which must elapse between subsequent UPDATE + messages relating to a common set of NLRI being transmitted + to a peer. This timer is referred to as + MinRouteAdvertisementIntervalTimer by RFC 4721 and serves to + reduce the number of UPDATE messages transmitted when a + particular set of NLRI exhibit instability."; + reference + "RFC 4271 - A Border Gateway Protocol 4, Sec 9.2.1.1"; + } + } + + grouping bgp-common-neighbor-group-config { + description + "Neighbor level configuration items."; + + leaf peer-as { + type oc-inet:as-number; + description + "AS number of the peer."; + } + + leaf local-as { + type oc-inet:as-number; + description + "The local autonomous system number that is to be used + when establishing sessions with the remote peer or peer + group, if this differs from the global BGP router + autonomous system number."; + } + + leaf peer-type { + type oc-bgp-types:peer-type; + description + "Explicitly designate the peer or peer group as internal + (iBGP) or external (eBGP)."; + } + + leaf auth-password { + type oc-types:routing-password; + description + "Configures an MD5 authentication password for use with + neighboring devices."; + } + + leaf remove-private-as { + // could also make this a container with a flag to enable + // remove-private and separate option. here, option implies + // remove-private is enabled. + type oc-bgp-types:remove-private-as-option; + description + "Remove private AS numbers from updates sent to peers - when + this leaf is not specified, the AS_PATH attribute should be + sent to the peer unchanged"; + } + + leaf route-flap-damping { + type boolean; + default false; + description + "Enable route flap damping."; + } + + leaf send-community { + type oc-bgp-types:community-type; + default "NONE"; + description + "Specify which types of community should be sent to the + neighbor or group. The default is to not send the + community attribute"; + } + + leaf description { + type string; + description + "An optional textual description (intended primarily for use + with a peer or group"; + } + } + + grouping bgp-common-neighbor-group-transport-config { + description + "Configuration parameters relating to the transport protocol + used by the BGP session to the peer"; + + leaf tcp-mss { + type uint16; + description + "Sets the max segment size for BGP TCP sessions."; + } + + leaf mtu-discovery { + type boolean; + default false; + description + "Turns path mtu discovery for BGP TCP sessions on (true) + or off (false)"; + } + + leaf passive-mode { + type boolean; + default false; + description + "Wait for peers to issue requests to open a BGP session, + rather than initiating sessions from the local router."; + } + + leaf local-address { + type union { + type oc-inet:ip-address; + type string; + } + //TODO: the string should be converted to a leafref type + //to point to an interface when YANG 1.1 is available with + //leafrefs in union types. + description + "Set the local IP (either IPv4 or IPv6) address to use + for the session when sending BGP update messages. This + may be expressed as either an IP address or reference + to the name of an interface."; + } + } + + grouping bgp-common-neighbor-group-error-handling-config { + description + "Configuration parameters relating to enhanced error handling + behaviours for BGP"; + + leaf treat-as-withdraw { + type boolean; + default "false"; + description + "Specify whether erroneous UPDATE messages for which the + NLRI can be extracted are reated as though the NLRI is + withdrawn - avoiding session reset"; + reference "draft-ietf-idr-error-handling-16"; + } + } + + grouping bgp-common-neighbor-group-logging-options-config { + description + "Configuration parameters specifying the logging behaviour for + BGP sessions to the peer"; + + leaf log-neighbor-state-changes { + type boolean; + default "true"; + description + "Configure logging of peer state changes. Default is + to enable logging of peer state changes."; + } + } + + grouping bgp-common-neighbor-group-multihop-config { + description + "Configuration parameters specifying the multihop behaviour for + BGP sessions to the peer"; + + leaf enabled { + type boolean; + default "false"; + description + "When enabled the referenced group or neighbors are permitted + to be indirectly connected - including cases where the TTL + can be decremented between the BGP peers"; + } + + leaf multihop-ttl { + type uint8; + description + "Time-to-live value to use when packets are sent to the + referenced group or neighbors and ebgp-multihop is enabled"; + } + } + + grouping bgp-common-neighbor-group-route-reflector-config { + description + "Configuration parameters determining whether the behaviour of + the local system when acting as a route-reflector"; + + leaf route-reflector-cluster-id { + type oc-bgp-types:rr-cluster-id-type; + description + "route-reflector cluster id to use when local router is + configured as a route reflector. Commonly set at the group + level, but allows a different cluster + id to be set for each neighbor."; + } + + leaf route-reflector-client { + type boolean; + default "false"; + description + "Configure the neighbor as a route reflector client."; + } + } + + grouping bgp-common-neighbor-group-as-path-options-config { + description + "Configuration parameters allowing manipulation of the AS_PATH + attribute"; + + leaf allow-own-as { + type uint8; + default 0; + description + "Specify the number of occurrences of the local BGP speaker's + AS that can occur within the AS_PATH before it is rejected."; + } + + leaf replace-peer-as { + type boolean; + default "false"; + description + "Replace occurrences of the peer's AS in the AS_PATH + with the local autonomous system number"; + } + + leaf disable-peer-as-filter { + type boolean; + default "false"; + description + "When set to true, the system advertises routes to a peer + even if the peer's AS was in the AS path. The default + behavior (false) suppresses advertisements to peers if + their AS number is in the AS path of the route."; + } + } + + grouping bgp-common-neighbor-group-add-paths-config { + description + "Configuration parameters specfying whether the local system + will send or receive multiple paths using ADD_PATHS"; + + leaf receive { + type boolean; + default false; + description + "Enable capability negotiation to receive multiple path + advertisements for an NLRI from the neighbor or group"; + reference + "RFC 7911 - Advertisement of Multiple Paths in BGP"; + } + + leaf send { + type boolean; + default false; + description + "Enable capability negotiation to send multiple path + advertisements for an NLRI from the neighbor or group"; + reference + "RFC 7911 - Advertisement of Multiple Paths in BGP"; + } + + leaf send-max { + type uint8; + description + "The maximum total number of paths to advertise to neighbors + for a single NLRI. This includes the single best path as + well as additional paths advertised when add-paths is + enabled."; + } + + leaf eligible-prefix-policy { + type leafref { + path "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + + "oc-rpol:policy-definition/oc-rpol:name"; + } + description + "A reference to a routing policy which can be used to + restrict the prefixes for which add-paths is enabled"; + } + } + + grouping bgp-common-graceful-restart-config { + description + "Configuration parameters relating to BGP graceful restart."; + + leaf enabled { + type boolean; + description + "Enable or disable the graceful-restart capability."; + } + + leaf restart-time { + type uint16 { + range 0..4096; + } + description + "Estimated time (in seconds) for the local BGP speaker to + restart a session. This value is advertise in the graceful + restart BGP capability. This is a 12-bit value, referred to + as Restart Time in RFC4724. Per RFC4724, the suggested + default value is <= the hold-time value."; + } + + leaf stale-routes-time { + type decimal64 { + fraction-digits 2; + } + description + "An upper-bound on the time thate stale routes will be + retained by a router after a session is restarted. If an + End-of-RIB (EOR) marker is received prior to this timer + expiring stale-routes will be flushed upon its receipt - if + no EOR is received, then when this timer expires stale paths + will be purged. This timer is referred to as the + Selection_Deferral_Timer in RFC4724"; + } + + leaf helper-only { + type boolean; + description + "Enable graceful-restart in helper mode only. When this + leaf is set, the local system does not retain forwarding + its own state during a restart, but supports procedures + for the receiving speaker, as defined in RFC4724."; + } + } + + grouping bgp-common-use-multiple-paths-config { + description + "Generic configuration options relating to use of multiple + paths for a referenced AFI-SAFI, group or neighbor"; + + leaf enabled { + type boolean; + default false; + description + "Whether the use of multiple paths for the same NLRI is + enabled for the neighbor. This value is overridden by + any more specific configuration value."; + } + } + + grouping bgp-common-use-multiple-paths-ebgp-as-options-config { + description + "Configuration parameters specific to eBGP multipath applicable + to all contexts"; + + leaf allow-multiple-as { + type boolean; + default "false"; + description + "Allow multipath to use paths from different neighbouring + ASes. The default is to only consider multiple paths from + the same neighbouring AS."; + } + } + + grouping bgp-common-global-group-use-multiple-paths { + description + "Common grouping used for both global and groups which provides + configuration and state parameters relating to use of multiple + paths"; + + container use-multiple-paths { + description + "Parameters related to the use of multiple paths for the + same NLRI"; + + container config { + description + "Configuration parameters relating to multipath"; + uses bgp-common-use-multiple-paths-config; + } + container state { + config false; + description + "State parameters relating to multipath"; + uses bgp-common-use-multiple-paths-config; + } + + container ebgp { + description + "Multipath parameters for eBGP"; + container config { + description + "Configuration parameters relating to eBGP multipath"; + uses bgp-common-use-multiple-paths-ebgp-config; + } + container state { + config false; + description + "State information relating to eBGP multipath"; + uses bgp-common-use-multiple-paths-ebgp-config; + } + } + + container ibgp { + description + "Multipath parameters for iBGP"; + container config { + description + "Configuration parameters relating to iBGP multipath"; + uses bgp-common-use-multiple-paths-ibgp-config; + } + container state { + config false; + description + "State information relating to iBGP multipath"; + uses bgp-common-use-multiple-paths-ibgp-config; + } + } + } + } + + grouping bgp-common-use-multiple-paths-ebgp-config { + description + "Configuration parameters relating to multipath for eBGP"; + + leaf allow-multiple-as { + type boolean; + default "false"; + description + "Allow multipath to use paths from different neighbouring + ASes. The default is to only consider multiple paths from + the same neighbouring AS."; + } + + leaf maximum-paths { + type uint32; + default 1; + description + "Maximum number of parallel paths to consider when using + BGP multipath. The default is use a single path."; + } + } + + grouping bgp-common-use-multiple-paths-ibgp-config { + description + "Configuration parmaeters relating to multipath for iBGP"; + + leaf maximum-paths { + type uint32; + default 1; + description + "Maximum number of parallel paths to consider when using + iBGP multipath. The default is to use a single path"; + } + } + + grouping bgp-common-route-selection-options-config { + description + "Set of configuration options that govern best + path selection."; + + leaf always-compare-med { + type boolean; + default "false"; + description + "Compare multi-exit discriminator (MED) value from + different ASes when selecting the best route. The + default behavior is to only compare MEDs for paths + received from the same AS."; + } + + leaf ignore-as-path-length { + type boolean; + default "false"; + description + "Ignore the AS path length when selecting the best path. + The default is to use the AS path length and prefer paths + with shorter length."; + } + + leaf external-compare-router-id { + type boolean; + default "true"; + description + "When comparing similar routes received from external + BGP peers, use the router-id as a criterion to select + the active path."; + } + + leaf advertise-inactive-routes { + type boolean; + default "false"; + description + "Advertise inactive routes to external peers. The + default is to only advertise active routes."; + } + + leaf enable-aigp { + type boolean; + default false; + description + "Flag to enable sending / receiving accumulated IGP + attribute in routing updates"; + } + + leaf ignore-next-hop-igp-metric { + type boolean; + default "false"; + description + "Ignore the IGP metric to the next-hop when calculating + BGP best-path. The default is to select the route for + which the metric to the next-hop is lowest"; + } + } + + grouping bgp-common-route-selection-options { + description + "Configuration and state relating to route selection options"; + + container route-selection-options { + description + "Parameters relating to options for route selection"; + container config { + description + "Configuration parameters relating to route selection + options"; + uses bgp-common-route-selection-options-config; + } + container state { + config false; + description + "State information for the route selection options"; + uses bgp-common-route-selection-options-config; + } + } + } + + grouping bgp-common-state { + description + "Grouping containing common counters relating to prefixes and + paths"; + + leaf total-paths { + type uint32; + description + "Total number of BGP paths within the context"; + } + + leaf total-prefixes { + type uint32; + description + "Total number of BGP prefixes received within the context"; + } + } + + +} + diff --git a/vendor/cisco/nx/9.3-14/openconfig-bgp-errors.yang b/vendor/cisco/nx/9.3-14/openconfig-bgp-errors.yang new file mode 100644 index 000000000..07a464de8 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-bgp-errors.yang @@ -0,0 +1,405 @@ +submodule openconfig-bgp-errors { + + belongs-to openconfig-bgp-types { + prefix "oc-bgp-types"; + } + + import openconfig-extensions { prefix "oc-ext"; } + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module defines BGP NOTIFICATION message error codes + and subcodes"; + + oc-ext:openconfig-version "4.0.1"; + + revision "2017-07-30" { + description + "Clarification of add-paths send-max leaf"; + reference "4.0.1"; + } + + revision "2017-07-10" { + description + "Add error notifications; moved add-paths config; add AS + prepend policy features; removed unneeded config leaves"; + reference "4.0.0"; + } + + + + identity BGP_ERROR_CODE { + description + "Indicates the error type in a BGP NOTIFICATION message"; + reference + "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)"; + } + + identity BGP_ERROR_SUBCODE { + description + "Provides more specific information about the nature of the + error reported in a NOTIFICATION message. Each Error + Code may have one or more Error Subcodes associated with it."; + reference + "RFC 4271 - A Border Gateway Protocol 4 (BGP-4)"; + } + + + identity UNSPECIFIC { + base BGP_ERROR_SUBCODE; + description + "The error subcode field is unspecific when the NOTIFICATION + message does not include any specific error subcode (i.e.., + value 0)."; + } + + identity MESSAGE_HEADER_ERROR { + base BGP_ERROR_CODE; + description + "Errors detected while processing the Message Header"; + } + + identity OPEN_MESSAGE_ERROR { + base BGP_ERROR_CODE; + description + "Errors detected while processing the OPEN message"; + } + + identity UPDATE_MESSAGE_ERROR { + base BGP_ERROR_CODE; + description + "Errors detected while processing the UPDATE message"; + } + + identity HOLD_TIMER_EXPIRED { + base BGP_ERROR_CODE; + description + "Indicates that the system did not receive successive + KEEPALIVE, UPDATE, and/or NOTIFICATION messages within the + period specified in the Hold Time field of the OPEN message"; + } + + identity FINITE_STATE_MACHINE_ERROR { + base BGP_ERROR_CODE; + description + "Error detected by the BGP Finite State Machine + (e.g., receipt of an unexpected event)"; + } + + identity CEASE { + base BGP_ERROR_CODE; + description + "Sent by a BGP peer to close its BGP connection in absence of + any fatal errors. If the BGP speaker terminates its + connection with a neihbor because the number of prefixes + received exceeds the configured upper bound, the speaker must + send the neighbor a NOTIFICATION message with the Cease + error code."; + } + + identity ROUTE_REFRESH_MESSAGE_ERROR { + base BGP_ERROR_CODE; + description + "The length, excluding the fixed-size message header, of the + received ROUTE-REFRESH message with Message Subtype 1 and 2 is + not 4. Applicable only when a BGP speaker has received the + 'Enhanced Route Refresh Capability' from a peer"; + reference + "RFC 7313 - Enhanced Route Refresh Capability for BGP-4"; + } + + identity MESSAGE_HEADER_SUBCODE { + base BGP_ERROR_SUBCODE; + description + "Error subcode definitions for Message Header error + notifications"; + } + + identity CONNECTION_NOT_SYNCHRONIZED { + base MESSAGE_HEADER_SUBCODE; + description + "Marker field of the message header is not all ones as + expected"; + } + + identity BAD_MESSAGE_LENGTH { + base MESSAGE_HEADER_SUBCODE; + description + "Indicates the message has an erroneous length with one + or more of the following: + + - the Length field of the message header is less than 19 or + greater than 4096 + + - the Length field of an OPEN message is less than the minimum + length of the OPEN message + + - the Length field of an UPDATE message is less than the + minimum length of the UPDATE message + + - the Length field of a KEEPALIVE message is not equal to 19 + + - the Length field of a NOTIFICATION message is less than the + minimum length of the NOTIFICATION message + + The erroneous Length field must be reported in the + NOTIFICATION data."; + } + + identity BAD_MESSAGE_TYPE { + base MESSAGE_HEADER_SUBCODE; + description + "Type field of the message header is not recognized. The + erroneous type field must be reported in the NOTIFICATION + data"; + } + + identity OPEN_MESSAGE_SUBCODE { + base BGP_ERROR_SUBCODE; + description + "Error subcode definitions for OPEN message error + notifications"; + } + + identity UNSUPPORTED_VERSION_NUMBER { + base OPEN_MESSAGE_SUBCODE; + description + "Version number in the Version field of the received OPEN + message is not supported"; + } + + identity BAD_PEER_AS { + base OPEN_MESSAGE_SUBCODE; + description + "Autonomous System field of the OPEN message is unacceptable"; + } + + identity BAD_BGP_IDENTIFIER { + base OPEN_MESSAGE_SUBCODE; + description + "BGP Identifier field of the OPEN message is syntactically + incorrect"; + } + + identity UNSUPPORTED_OPTIONAL_PARAMETER { + base OPEN_MESSAGE_SUBCODE; + description + "One of the Optional Parameters in the OPEN message is not + recognized"; + } + + identity UNACCEPTABLE_HOLD_TIME { + base OPEN_MESSAGE_SUBCODE; + description + "Hold Time field of the OPEN message is unacceptable"; + } + + identity UNSUPPORTED_CAPABILITY { + base OPEN_MESSAGE_SUBCODE; + description + "Inidicates that the peer does not support capabilities + advertisement -- the peer may send this subcode in response to + an OPEN message that carries the Capabilities Optional + Parameter"; + reference + "RFC 5492 - Capabilities Advertisement with BGP-4"; + } + + identity UPDATE_MESSAGE_SUBCODE { + base BGP_ERROR_SUBCODE; + description + "Error subcode definitions for UPDATE message error + notifications"; + } + + identity MALFORMED_ATTRIBUTE_LIST { + base UPDATE_MESSAGE_SUBCODE; + description + "Inidicates Withdrawn Routes Length or Total Attribute Length + is too large, or + + An attribute appears more than once in the UPDATE message"; + } + + identity UNRECOGNIZED_WELL_KNOWN_ATTRIBUTE { + base UPDATE_MESSAGE_SUBCODE; + description + "One or more of the well-known mandatory attributes are not + recognized"; + } + + identity MISSING_WELL_KNOWN_ATTRIBUTE { + base UPDATE_MESSAGE_SUBCODE; + description + "One or more of the well-known mandatory attributes are not + present"; + } + + identity ATTRIBUTE_FLAGS_ERROR { + base UPDATE_MESSAGE_SUBCODE; + description + "Attribute has Attribute Flags that conflict with the + Attribute Type Code"; + } + + identity ATTRIBUTE_LENGTH_ERROR { + base UPDATE_MESSAGE_SUBCODE; + description + "Attribute has an Attribute Length that conflicts with the + expected length (based on the attribute type code)"; + } + + identity INVALID_ORIGIN_ATTRIBUTE { + base UPDATE_MESSAGE_SUBCODE; + description + "ORIGIN attribute has an undefined value"; + } + + identity INVALID_NEXT_HOP_ATTRIBUTE { + base UPDATE_MESSAGE_SUBCODE; + description + "The NEXT_HOP attribute field is syntactically incorrect"; + } + + identity OPTIONAL_ATTRIBUTE_ERROR { + base UPDATE_MESSAGE_SUBCODE; + description + "An error is detected in the value of a recognized optional + attribute (such an attribute must be discarded)"; + } + + identity INVALID_NETWORK_FIELD { + base UPDATE_MESSAGE_SUBCODE; + description + "The NLRI field in the UPDATE message is syntactically + incorrect"; + } + + identity MALFORMED_AS_PATH { + base UPDATE_MESSAGE_SUBCODE; + description + "The AS_PATH attribute is syntactically incorrect"; + } + + identity FINITE_STATE_MACHINE_SUBCODE { + base BGP_ERROR_SUBCODE; + description + "Error subcode definitions for BGP finite state machine + errors."; + reference + "RFC 6608 - Subcodes for BGP Finite State Machine Error"; + } + + identity RECEIVE_UNEXPECTED_MESSAGE_OPENSENT { + base FINITE_STATE_MACHINE_SUBCODE; + description + "The peer BGP speaker received an unexpected message from + the local system while the peer speaker session was in the + OpenSent state"; + } + + identity RECEIVE_UNEXPECTED_MESSAGE_OPENCONFIRM { + base FINITE_STATE_MACHINE_SUBCODE; + description + "The peer BGP speaker received an unexpected message from + the local system while the peer speaker session was in the + OpenConfirm state"; + } + + identity RECEIVE_UNEXPECTED_MESSAGE_ESTABLISHED { + base FINITE_STATE_MACHINE_SUBCODE; + description + "The peer BGP speaker received an unexpected message from + the local system while the peer speaker session was in the + Established state"; + } + + identity CEASE_SUBCODE { + base BGP_ERROR_SUBCODE; + description + "Error subcode definitions for Cease notification messages"; + reference + "RFC 4486 - Subcodes for BGP Cease Notification Message"; + } + + identity MAX_NUM_PREFIXES_REACHED { + base CEASE_SUBCODE; + description + "The peer BGP speaker terminated its peering with the local + system because the number of address prefixes received + exceeds a locally configured upper bound"; + } + + identity ADMINISTRATIVE_SHUTDOWN { + base CEASE_SUBCODE; + description + "The peer BGP speaker administratively shut down its peering + with the local system"; + } + + identity PEER_DE_CONFIGURED { + base CEASE_SUBCODE; + description + "The peer BGP speaker de-configure the peering with the local + system"; + } + + identity ADMINISTRATIVE_RESET { + base CEASE_SUBCODE; + description + "The peer BGP speaker administratively reset the peering with + the local system"; + } + + identity CONNECTION_REJECTED { + base CEASE_SUBCODE; + description + "The peer BGP speaker disallowed the BGP connection to the + local system after the peer speaker accepted a transport + protocol connection"; + } + + identity OTHER_CONFIG_CHANGE { + base CEASE_SUBCODE; + description + "The peer BGP speaker administratively reset the peering with + the local sytem due to a configuration change that is not + covered by another subcode."; + } + + identity CONN_COLLISION_RESOLUTION { + base CEASE_SUBCODE; + description + "The peer BGP speaker sent a CEASE NOTIFICATION as a result of + the collision resolution procedure described in RFC 4271"; + } + + identity OUT_OF_RESOURCES { + base CEASE_SUBCODE; + description + "The peer BGP speaker ran out of resources (e.g., memory) and + reset the session with the local system"; + } + + identity ROUTE_REFRESH_SUBCODE { + base BGP_ERROR_SUBCODE; + description + "Error subcode definitions for the ROUTE-REFRESH message + error"; + } + + identity INVALID_MESSAGE_LENGTH { + base ROUTE_REFRESH_SUBCODE; + description + "The length, excluding the fixed-size message header, of the + received ROUTE-REFRESH message with Message Subtype 1 and 2 + is not 4"; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-bgp-global.yang b/vendor/cisco/nx/9.3-14/openconfig-bgp-global.yang new file mode 100644 index 000000000..a6fa8cd92 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-bgp-global.yang @@ -0,0 +1,375 @@ +submodule openconfig-bgp-global { + + belongs-to openconfig-bgp { + prefix "oc-bgp"; + } + + import openconfig-extensions { prefix oc-ext; } + import openconfig-yang-types { prefix oc-yang; } + import openconfig-inet-types { prefix oc-inet; } + + // Include common submodules + include openconfig-bgp-common; + include openconfig-bgp-common-multiprotocol; + include openconfig-bgp-peer-group; + include openconfig-bgp-common-structure; + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This sub-module contains groupings that are specific to the + global context of the OpenConfig BGP module"; + + oc-ext:openconfig-version "4.0.1"; + + revision "2017-07-30" { + description + "Clarification of add-paths send-max leaf"; + reference "4.0.1"; + } + + revision "2017-07-10" { + description + "Add error notifications; moved add-paths config; add AS + prepend policy features; removed unneeded config leaves"; + reference "4.0.0"; + } + + revision "2017-02-02" { + description + "Bugfix to remove remaining global-level policy data"; + reference "3.0.1"; + } + + revision "2017-01-26" { + description + "Add dynamic neighbor support, migrate to OpenConfig types"; + reference "3.0.0"; + } + + revision "2016-06-21" { + description + "OpenConfig BGP refactor"; + reference "2.1.1"; + } + + grouping bgp-global-config { + description + "Global configuration options for the BGP router."; + + leaf as { + type oc-inet:as-number; + mandatory true; + description + "Local autonomous system number of the router. Uses + the 32-bit as-number type from the model in RFC 6991."; + } + + leaf router-id { + type oc-yang:dotted-quad; + description + "Router id of the router - an unsigned 32-bit integer + expressed in dotted quad notation."; + reference + "RFC4271 - A Border Gateway Protocol 4 (BGP-4), + Section 4.2"; + } + } + + grouping bgp-global-state { + description + "Operational state parameters for the BGP neighbor"; + + uses bgp-common-state; + } + + grouping bgp-global-default-route-distance-config { + description + "Configuration options relating to the administrative distance + (or preference) assigned to routes received from different + sources (external, internal, and local)."; + + leaf external-route-distance { + type uint8 { + range "1..255"; + } + description + "Administrative distance for routes learned from external + BGP (eBGP)."; + } + leaf internal-route-distance { + type uint8 { + range "1..255"; + } + description + "Administrative distance for routes learned from internal + BGP (iBGP)."; + } + } + + grouping bgp-global-confederation-config { + description + "Configuration options specifying parameters when the local + router is within an autonomous system which is part of a BGP + confederation."; + + leaf identifier { + type oc-inet:as-number; + description + "Confederation identifier for the autonomous system. + Setting the identifier indicates that the local-AS is part + of a BGP confederation."; + } + + leaf-list member-as { + type oc-inet:as-number; + description + "Remote autonomous systems that are to be treated + as part of the local confederation."; + } + } + + grouping bgp-global-dynamic-neighbors { + description + "Grouping containing configuration relating to dynamic peers."; + + container dynamic-neighbor-prefixes { + description + "A list of IP prefixes from which the system should: + - Accept connections to the BGP daemon + - Dynamically configure a BGP neighbor corresponding to the + source address of the remote system, using the parameters + of the specified peer-group. + For such neighbors, an entry within the neighbor list should + be created, indicating that the peer was dynamically + configured, and referencing the peer-group from which the + configuration was derived."; + + list dynamic-neighbor-prefix { + key "prefix"; + description + "An individual prefix from which dynamic neighbor + connections are allowed."; + + leaf prefix { + type leafref { + path "../config/prefix"; + } + description + "Reference to the IP prefix from which source connections + are allowed for the dynamic neighbor group."; + } + + container config { + description + "Configuration parameters relating to the source prefix + for the dynamic BGP neighbor connections."; + + uses bgp-global-dynamic-neighbor-config; + } + + container state { + config false; + description + "Operational state parameters relating to the source + prefix for the dynamic BGP neighbor connections."; + + uses bgp-global-dynamic-neighbor-config; + } + } + } + } + + grouping bgp-global-dynamic-neighbor-config { + description + "Configuration parameters relating to an individual prefix from + which dynamic neighbors are accepted."; + + leaf prefix { + type oc-inet:ip-prefix; + description + "The IP prefix within which the source address of the remote + BGP speaker must fall to be considered eligible to the + dynamically configured."; } + + leaf peer-group { + type leafref { + // At bgp/global/dynamic-neighbor-prefixes/dynamic-neighbor + // prefix/config/peer-group + path "../../../../../peer-groups/peer-group/config/" + + "peer-group-name"; + } + description + "The peer-group within which the dynamic neighbor will be + configured. The configuration parameters used for the dynamic + neighbor are those specified within the referenced peer + group."; + } + } + + grouping bgp-global-mp-all-afi-safi-list-contents { + description + "A grouping used for contents of the list of AFI-SAFI + entries at the global BGP level."; + + // import and export policy included for the afi/safi + + uses bgp-common-mp-ipv4-unicast-group; + uses bgp-common-mp-ipv6-unicast-group; + uses bgp-common-mp-ipv4-labeled-unicast-group; + uses bgp-common-mp-ipv6-labeled-unicast-group; + uses bgp-common-mp-l3vpn-ipv4-unicast-group; + uses bgp-common-mp-l3vpn-ipv6-unicast-group; + uses bgp-common-mp-l3vpn-ipv4-multicast-group; + uses bgp-common-mp-l3vpn-ipv6-multicast-group; + uses bgp-common-mp-l2vpn-vpls-group; + uses bgp-common-mp-l2vpn-evpn-group; + } + + grouping bgp-global-afi-safi-list { + description + "List of address-families associated with the BGP instance"; + + list afi-safi { + key "afi-safi-name"; + + description + "AFI,SAFI configuration available for the + neighbour or group"; + + leaf afi-safi-name { + type leafref { + path "../config/afi-safi-name"; + } + description + "Reference to the AFI-SAFI name used as a key + for the AFI-SAFI list"; + } + + container config { + description + "Configuration parameters for the AFI-SAFI"; + uses bgp-common-mp-afi-safi-config; + } + container state { + config false; + description + "State information relating to the AFI-SAFI"; + uses bgp-common-mp-afi-safi-config; + uses bgp-common-state; + } + + container graceful-restart { + description + "Parameters relating to BGP graceful-restart"; + container config { + description + "Configuration options for BGP graceful-restart"; + uses bgp-common-mp-afi-safi-graceful-restart-config; + } + container state { + config false; + description + "State information for BGP graceful-restart"; + uses bgp-common-mp-afi-safi-graceful-restart-config; + } + } + + uses bgp-common-route-selection-options; + uses bgp-common-global-group-use-multiple-paths; + uses bgp-common-structure-neighbor-group-add-paths; + uses bgp-global-mp-all-afi-safi-list-contents; + } + } + + // Structural groupings + grouping bgp-global-base { + description + "Global configuration parameters for the BGP router"; + + container config { + description + "Configuration parameters relating to the global BGP router"; + uses bgp-global-config; + } + container state { + config false; + description + "State information relating to the global BGP router"; + uses bgp-global-config; + uses bgp-global-state; + } + + container default-route-distance { + description + "Administrative distance (or preference) assigned to + routes received from different sources + (external, internal, and local)."; + + container config { + description + "Configuration parameters relating to the default route + distance"; + uses bgp-global-default-route-distance-config; + } + container state { + config false; + description + "State information relating to the default route distance"; + uses bgp-global-default-route-distance-config; + } + } + + container confederation { + description + "Parameters indicating whether the local system acts as part + of a BGP confederation"; + + container config { + description + "Configuration parameters relating to BGP confederations"; + uses bgp-global-confederation-config; + } + container state { + config false; + description + "State information relating to the BGP confederations"; + uses bgp-global-confederation-config; + } + } + + container graceful-restart { + description + "Parameters relating the graceful restart mechanism for BGP"; + container config { + description + "Configuration parameters relating to graceful-restart"; + uses bgp-common-graceful-restart-config; + } + container state { + config false; + description + "State information associated with graceful-restart"; + uses bgp-common-graceful-restart-config; + } + } + + uses bgp-common-global-group-use-multiple-paths; + uses bgp-common-route-selection-options; + + container afi-safis { + description + "Address family specific configuration"; + uses bgp-global-afi-safi-list; + } + + uses bgp-global-dynamic-neighbors; + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-bgp-neighbor.yang b/vendor/cisco/nx/9.3-14/openconfig-bgp-neighbor.yang new file mode 100644 index 000000000..f88dc4e02 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-bgp-neighbor.yang @@ -0,0 +1,686 @@ +submodule openconfig-bgp-neighbor { + + belongs-to openconfig-bgp { + prefix "oc-bgp"; + } + + import openconfig-extensions { prefix oc-ext; } + import openconfig-routing-policy { prefix oc-rpol; } + import openconfig-types { prefix oc-types; } + import openconfig-bgp-types { prefix oc-bgp-types; } + import openconfig-inet-types { prefix oc-inet; } + import openconfig-yang-types { prefix oc-yang; } + + // Include the common submodule + include openconfig-bgp-common; + include openconfig-bgp-common-multiprotocol; + include openconfig-bgp-peer-group; + include openconfig-bgp-common-structure; + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This sub-module contains groupings that are specific to the + neighbor context of the OpenConfig BGP module."; + + oc-ext:openconfig-version "4.0.1"; + + revision "2017-07-30" { + description + "Clarification of add-paths send-max leaf"; + reference "4.0.1"; + } + + revision "2017-07-10" { + description + "Add error notifications; moved add-paths config; add AS + prepend policy features; removed unneeded config leaves"; + reference "4.0.0"; + } + + revision "2017-02-02" { + description + "Bugfix to remove remaining global-level policy data"; + reference "3.0.1"; + } + + revision "2017-01-26" { + description + "Add dynamic neighbor support, migrate to OpenConfig types"; + reference "3.0.0"; + } + + revision "2016-06-21" { + description + "OpenConfig BGP refactor"; + reference "2.1.1"; + } + + grouping bgp-neighbor-config { + description + "Configuration parameters relating to a base BGP neighbor that + are not also applicable to any other context + (e.g., peer group)"; + + leaf peer-group { + type leafref { + path "../../../../peer-groups/peer-group/peer-group-name"; + } + description + "The peer-group with which this neighbor is associated"; + } + + leaf neighbor-address { + type oc-inet:ip-address; + description + "Address of the BGP peer, either in IPv4 or IPv6"; + } + + leaf enabled { + type boolean; + default true; + description + "Whether the BGP peer is enabled. In cases where the + enabled leaf is set to false, the local system should not + initiate connections to the neighbor, and should not + respond to TCP connections attempts from the neighbor. If + the state of the BGP session is ESTABLISHED at the time + that this leaf is set to false, the BGP session should be + ceased."; + } + } + + grouping bgp-neighbor-use-multiple-paths { + description + "Multipath configuration and state applicable to a BGP + neighbor"; + + container use-multiple-paths { + description + "Parameters related to the use of multiple-paths for the same + NLRI when they are received only from this neighbor"; + + container config { + description + "Configuration parameters relating to multipath"; + uses bgp-common-use-multiple-paths-config; + } + container state { + config false; + description + "State parameters relating to multipath"; + uses bgp-common-use-multiple-paths-config; + } + + container ebgp { + description + "Multipath configuration for eBGP"; + container config { + description + "Configuration parameters relating to eBGP multipath"; + uses bgp-common-use-multiple-paths-ebgp-as-options-config; + } + container state { + config false; + description + "State information relating to eBGP multipath"; + uses bgp-common-use-multiple-paths-ebgp-as-options-config; + } + } + } + } + + grouping bgp-neighbor-state { + description + "Operational state parameters relating only to a BGP neighbor"; + + leaf session-state { + type enumeration { + enum IDLE { + description + "neighbor is down, and in the Idle state of the + FSM"; + } + enum CONNECT { + description + "neighbor is down, and the session is waiting for + the underlying transport session to be established"; + } + enum ACTIVE { + description + "neighbor is down, and the local system is awaiting + a conncetion from the remote peer"; + } + enum OPENSENT { + description + "neighbor is in the process of being established. + The local system has sent an OPEN message"; + } + enum OPENCONFIRM { + description + "neighbor is in the process of being established. + The local system is awaiting a NOTIFICATION or + KEEPALIVE message"; + } + enum ESTABLISHED { + description + "neighbor is up - the BGP session with the peer is + established"; + } + } + description + "Operational state of the BGP peer"; + } + + leaf last-established { + type oc-types:timeticks64; + description + "This timestamp indicates the time that the + BGP session last transitioned in or out of the Established + state. The value is the timestamp in seconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + + The BGP session uptime can be computed by clients as the + difference between this value and the current time in UTC + (assuming the session is in the ESTABLISHED state, per the + session-state leaf)."; + } + + leaf established-transitions { + type oc-yang:counter64; + description + "Number of transitions to the Established state for + the neighbor session. This value is analogous to the + bgpPeerFsmEstablishedTransitions object from the standard + BGP-4 MIB"; + reference + "RFC 4273 - Definitions of Managed Objects for BGP-4"; + } + + leaf-list supported-capabilities { + type identityref { + base oc-bgp-types:BGP_CAPABILITY; + } + description + "BGP capabilities negotiated as supported with the peer"; + } + + container messages { + description + "Counters for BGP messages sent and received from the + neighbor"; + container sent { + description + "Counters relating to BGP messages sent to the neighbor"; + uses bgp-neighbor-counters-message-types-state; + } + + container received { + description + "Counters for BGP messages received from the neighbor"; + uses bgp-neighbor-counters-message-types-state; + } + } + + container queues { + description + "Counters related to queued messages associated with the + BGP neighbor"; + uses bgp-neighbor-queue-counters-state; + } + + leaf dynamically-configured { + type boolean; + default false; + description + "When this leaf is set to true, the peer was configured dynamically + due to an inbound connection request from a specified source prefix + within a dynamic-neighbor-prefix."; + } + } + + grouping bgp-neighbor-counters-message-types-state { + description + "Grouping of BGP message types, included for re-use + across counters"; + + leaf UPDATE { + type uint64; + description + "Number of BGP UPDATE messages announcing, withdrawing + or modifying paths exchanged."; + } + + leaf NOTIFICATION { + type uint64; + description + "Number of BGP NOTIFICATION messages indicating an + error condition has occurred exchanged."; + } + + leaf last-notification-time { + type oc-types:timeticks64; + description + "This timestamp indicates the time that a NOTIFICATION + message was sent or received on the peering session + (based on whether this leaf is associated with + sent or received messages). + + The value is the timestamp in seconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + } + + leaf last-notification-error-code { + type identityref { + base oc-bgp-types:BGP_ERROR_CODE; + } + description + "Indicates the last BGP error sent or received on the peering + session (based on whether this leaf is associated with + sent or received messages)."; + } + + leaf last-notification-error-subcode { + type identityref { + base oc-bgp-types:BGP_ERROR_SUBCODE; + } + description + "Indicates the last BGP error subcode sent or received on + the peering session (based on whether this leaf is associated + with sent or received messages)"; + } + } + + grouping bgp-neighbor-queue-counters-state { + description + "Counters relating to the message queues associated with the + BGP peer"; + + leaf input { + type uint32; + description + "The number of messages received from the peer currently + queued"; + } + + leaf output { + type uint32; + description + "The number of messages queued to be sent to the peer"; + } + } + + grouping bgp-neighbor-transport-state { + description + "Operational state parameters relating to the transport session + used for the BGP session"; + + leaf local-port { + type oc-inet:port-number; + description + "Local TCP port being used for the TCP session supporting + the BGP session"; + } + + leaf remote-address { + type oc-inet:ip-address; + description + "Remote address to which the BGP session has been + established"; + } + + leaf remote-port { + type oc-inet:port-number; + description + "Remote port being used by the peer for the TCP session + supporting the BGP session"; + } + } + + grouping bgp-neighbor-error-handling-state { + description + "Operational state parameters relating to enhanced error + error handling for BGP"; + + leaf erroneous-update-messages { + type uint32; + description + "The number of BGP UPDATE messages for which the + treat-as-withdraw mechanism has been applied based + on erroneous message contents"; + } + } + + grouping bgp-neighbor-timers-state { + description + "Operational state parameters relating to BGP timers associated + with the BGP session"; + + leaf negotiated-hold-time { + type decimal64 { + fraction-digits 2; + } + description + "The negotiated hold-time for the BGP session"; + } + } + + grouping bgp-neighbor-afi-safi-graceful-restart-state { + description + "Operational state variables relating to the graceful-restart + mechanism on a per-AFI-SAFI basis"; + + leaf received { + type boolean; + description + "This leaf indicates whether the neighbor advertised the + ability to support graceful-restart for this AFI-SAFI"; + } + + leaf advertised { + type boolean; + description + "This leaf indicates whether the ability to support + graceful-restart has been advertised to the peer"; + } + } + + grouping bgp-neighbor-graceful-restart-state { + description + "Operational state information relevant to graceful restart + for BGP"; + + leaf peer-restart-time { + type uint16 { + range 0..4096; + } + description + "The period of time (advertised by the peer) that + the peer expects a restart of a BGP session to + take"; + } + + leaf peer-restarting { + type boolean; + description + "This flag indicates whether the remote neighbor is currently + in the process of restarting, and hence received routes are + currently stale"; + } + + leaf local-restarting { + type boolean; + description + "This flag indicates whether the local neighbor is currently + restarting. The flag is unset after all NLRI have been + advertised to the peer, and the End-of-RIB (EOR) marker has + been unset"; + } + + leaf mode { + type enumeration { + enum HELPER_ONLY { + description + "The local router is operating in helper-only mode, and + hence will not retain forwarding state during a local + session restart, but will do so during a restart of the + remote peer"; + } + enum BILATERAL { + description + "The local router is operating in both helper mode, and + hence retains forwarding state during a remote restart, + and also maintains forwarding state during local session + restart"; + } + enum REMOTE_HELPER { + description + "The local system is able to retain routes during restart + but the remote system is only able to act as a helper"; + } + } + description + "Ths leaf indicates the mode of operation of BGP graceful + restart with the peer"; + } + } + + grouping bgp-neighbor-afi-safi-state { + description + "Operational state parameters relating to an individual AFI, + SAFI for a neighbor"; + + leaf active { + type boolean; + description + "This value indicates whether a particular AFI-SAFI has + been succesfully negotiated with the peer. An AFI-SAFI + may be enabled in the current running configuration, but a + session restart may be required in order to negotiate the new + capability."; + } + + container prefixes { + description "Prefix counters for the BGP session"; + leaf received { + type uint32; + description + "The number of prefixes received from the neighbor"; + } + + leaf sent { + type uint32; + description + "The number of prefixes advertised to the neighbor"; + } + + leaf installed { + type uint32; + description + "The number of advertised prefixes installed in the + Loc-RIB"; + } + } + } + + grouping bgp-neighbor-afi-safi-list { + description + "List of address-families associated with the BGP neighbor"; + + list afi-safi { + key "afi-safi-name"; + + description + "AFI,SAFI configuration available for the + neighbour or group"; + + + leaf afi-safi-name { + type leafref { + path "../config/afi-safi-name"; + } + description + "Reference to the AFI-SAFI name used as a key + for the AFI-SAFI list"; + } + + container config { + description + "Configuration parameters for the AFI-SAFI"; + uses bgp-common-mp-afi-safi-config; + } + container state { + config false; + description + "State information relating to the AFI-SAFI"; + uses bgp-common-mp-afi-safi-config; + uses bgp-neighbor-afi-safi-state; + } + + + container graceful-restart { + description + "Parameters relating to BGP graceful-restart"; + container config { + description + "Configuration options for BGP graceful-restart"; + uses bgp-common-mp-afi-safi-graceful-restart-config; + } + container state { + config false; + description + "State information for BGP graceful-restart"; + uses bgp-common-mp-afi-safi-graceful-restart-config; + uses bgp-neighbor-afi-safi-graceful-restart-state; + } + } + + uses bgp-common-structure-neighbor-group-add-paths; + uses bgp-common-mp-all-afi-safi-list-contents; + uses bgp-neighbor-use-multiple-paths; + } + } + + grouping bgp-neighbor-base { + description + "Parameters related to a BGP neighbor"; + + container config { + description + "Configuration parameters relating to the BGP neighbor or + group"; + uses bgp-neighbor-config; + uses bgp-common-neighbor-group-config; + } + container state { + config false; + description + "State information relating to the BGP neighbor"; + uses bgp-neighbor-config; + uses bgp-common-neighbor-group-config; + uses bgp-neighbor-state; + } + + container timers { + description + "Timers related to a BGP neighbor"; + container config { + description + "Configuration parameters relating to timers used for the + BGP neighbor"; + uses bgp-common-neighbor-group-timers-config; + } + container state { + config false; + description + "State information relating to the timers used for the BGP + neighbor"; + uses bgp-common-neighbor-group-timers-config; + uses bgp-neighbor-timers-state; + } + } + + container transport { + description + "Transport session parameters for the BGP neighbor"; + container config { + description + "Configuration parameters relating to the transport + session(s) used for the BGP neighbor"; + uses bgp-common-neighbor-group-transport-config; + } + container state { + config false; + description + "State information relating to the transport session(s) + used for the BGP neighbor"; + uses bgp-common-neighbor-group-transport-config; + uses bgp-neighbor-transport-state; + } + } + + container error-handling { + description + "Error handling parameters used for the BGP neighbor or + group"; + container config { + description + "Configuration parameters enabling or modifying the + behavior or enhanced error handling mechanisms for the BGP + neighbor"; + uses bgp-common-neighbor-group-error-handling-config; + } + container state { + config false; + description + "State information relating to enhanced error handling + mechanisms for the BGP neighbor"; + uses bgp-common-neighbor-group-error-handling-config; + uses bgp-neighbor-error-handling-state; + } + } + + container graceful-restart { + description + "Parameters relating the graceful restart mechanism for BGP"; + container config { + description + "Configuration parameters relating to graceful-restart"; + uses bgp-common-graceful-restart-config; + } + container state { + config false; + description + "State information associated with graceful-restart"; + uses bgp-common-graceful-restart-config; + uses bgp-neighbor-graceful-restart-state; + } + } + + uses bgp-common-structure-neighbor-group-logging-options; + uses bgp-common-structure-neighbor-group-ebgp-multihop; + uses bgp-common-structure-neighbor-group-route-reflector; + uses bgp-common-structure-neighbor-group-as-path-options; + uses bgp-neighbor-use-multiple-paths; + uses oc-rpol:apply-policy-group; + + container afi-safis { + description + "Per-address-family configuration parameters associated with + the neighbor"; + uses bgp-neighbor-afi-safi-list; + } + } + + grouping bgp-neighbor-list { + description + "The list of BGP neighbors"; + + list neighbor { + key "neighbor-address"; + description + "List of BGP neighbors configured on the local system, + uniquely identified by peer IPv[46] address"; + + leaf neighbor-address { + type leafref { + path "../config/neighbor-address"; + } + description + "Reference to the address of the BGP neighbor used as + a key in the neighbor list"; + } + + uses bgp-neighbor-base; + } + + } + + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-bgp-peer-group.yang b/vendor/cisco/nx/9.3-14/openconfig-bgp-peer-group.yang new file mode 100644 index 000000000..a579b8530 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-bgp-peer-group.yang @@ -0,0 +1,259 @@ +submodule openconfig-bgp-peer-group { + + belongs-to openconfig-bgp { + prefix "oc-bgp"; + } + + import openconfig-extensions { prefix oc-ext; } + import openconfig-routing-policy { prefix oc-rpol; } + + // Include the common submodule + include openconfig-bgp-common; + include openconfig-bgp-common-multiprotocol; + include openconfig-bgp-common-structure; + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This sub-module contains groupings that are specific to the + peer-group context of the OpenConfig BGP module."; + + oc-ext:openconfig-version "4.0.1"; + + revision "2017-07-30" { + description + "Clarification of add-paths send-max leaf"; + reference "4.0.1"; + } + + revision "2017-07-10" { + description + "Add error notifications; moved add-paths config; add AS + prepend policy features; removed unneeded config leaves"; + reference "4.0.0"; + } + + revision "2017-02-02" { + description + "Bugfix to remove remaining global-level policy data"; + reference "3.0.1"; + } + + revision "2017-01-26" { + description + "Add dynamic neighbor support, migrate to OpenConfig types"; + reference "3.0.0"; + } + + revision "2016-06-21" { + description + "OpenConfig BGP refactor"; + reference "2.1.1"; + } + + grouping bgp-peer-group-config { + description + "Configuration parameters relating to a base BGP peer group that + are not also applicable to any other context (e.g., neighbor)"; + + leaf peer-group-name { + type string; + description + "Name of the BGP peer-group"; + } + + } + + grouping bgp-peer-group-afi-safi-list { + description + "List of address-families associated with the BGP peer-group"; + + list afi-safi { + key "afi-safi-name"; + + description + "AFI,SAFI configuration available for the + neighbour or group"; + + leaf afi-safi-name { + type leafref { + path "../config/afi-safi-name"; + } + description + "Reference to the AFI-SAFI name used as a key + for the AFI-SAFI list"; + } + + container config { + description + "Configuration parameters for the AFI-SAFI"; + uses bgp-common-mp-afi-safi-config; + } + container state { + config false; + description + "State information relating to the AFI-SAFI"; + uses bgp-common-mp-afi-safi-config; + } + + container graceful-restart { + description + "Parameters relating to BGP graceful-restart"; + container config { + description + "Configuration options for BGP graceful-restart"; + uses bgp-common-mp-afi-safi-graceful-restart-config; + } + container state { + config false; + description + "State information for BGP graceful-restart"; + uses bgp-common-mp-afi-safi-graceful-restart-config; + } + } + + uses bgp-common-structure-neighbor-group-add-paths; + uses bgp-common-global-group-use-multiple-paths; + uses bgp-common-mp-all-afi-safi-list-contents; + } + } + + grouping bgp-peer-group-base { + description + "Parameters related to a BGP group"; + + container config { + description + "Configuration parameters relating to the BGP neighbor or + group"; + uses bgp-peer-group-config; + uses bgp-common-neighbor-group-config; + } + container state { + config false; + description + "State information relating to the BGP peer-group"; + uses bgp-peer-group-config; + uses bgp-common-neighbor-group-config; + uses bgp-common-state; + } + + container timers { + description + "Timers related to a BGP peer-group"; + + container config { + description + "Configuration parameters relating to timers used for the + BGP neighbor or peer group"; + uses bgp-common-neighbor-group-timers-config; + } + container state { + config false; + description + "State information relating to the timers used for the BGP + group"; + uses bgp-common-neighbor-group-timers-config; + } + } + + container transport { + description + "Transport session parameters for the BGP peer-group"; + + container config { + description + "Configuration parameters relating to the transport + session(s) used for the BGP neighbor or group"; + uses bgp-common-neighbor-group-transport-config; + } + container state { + config false; + description + "State information relating to the transport session(s) + used for the BGP neighbor or group"; + uses bgp-common-neighbor-group-transport-config; + } + } + + container error-handling { + description + "Error handling parameters used for the BGP peer-group"; + + container config { + description + "Configuration parameters enabling or modifying the + behavior or enhanced error handling mechanisms for the BGP + group"; + uses bgp-common-neighbor-group-error-handling-config; + } + container state { + config false; + description + "State information relating to enhanced error handling + mechanisms for the BGP group"; + uses bgp-common-neighbor-group-error-handling-config; + } + } + + container graceful-restart { + description + "Parameters relating the graceful restart mechanism for BGP"; + container config { + description + "Configuration parameters relating to graceful-restart"; + uses bgp-common-graceful-restart-config; + } + container state { + config false; + description + "State information associated with graceful-restart"; + uses bgp-common-graceful-restart-config; + } + } + + uses bgp-common-structure-neighbor-group-logging-options; + uses bgp-common-structure-neighbor-group-ebgp-multihop; + uses bgp-common-structure-neighbor-group-route-reflector; + uses bgp-common-structure-neighbor-group-as-path-options; + uses bgp-common-global-group-use-multiple-paths; + uses oc-rpol:apply-policy-group; + + container afi-safis { + description + "Per-address-family configuration parameters associated with + thegroup"; + uses bgp-peer-group-afi-safi-list; + } + } + + grouping bgp-peer-group-list { + description + "The list of BGP peer groups"; + + list peer-group { + key "peer-group-name"; + description + "List of BGP peer-groups configured on the local system - + uniquely identified by peer-group name"; + + leaf peer-group-name { + type leafref { + path "../config/peer-group-name"; + } + description + "Reference to the name of the BGP peer-group used as a + key in the peer-group list"; + } + + uses bgp-peer-group-base; + } + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-bgp-policy.yang b/vendor/cisco/nx/9.3-14/openconfig-bgp-policy.yang new file mode 100644 index 000000000..b81c89ebe --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-bgp-policy.yang @@ -0,0 +1,1161 @@ +module openconfig-bgp-policy { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/bgp-policy"; + + prefix "oc-bgp-pol"; + + // import some basic types + import openconfig-inet-types { prefix oc-inet; } + import openconfig-routing-policy {prefix oc-rpol; } + import openconfig-policy-types { prefix oc-pol-types; } + import openconfig-bgp-types { prefix oc-bgp-types; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module contains data definitions for BGP routing policy. + It augments the base routing-policy module with BGP-specific + options for conditions and actions."; + + oc-ext:openconfig-version "6.0.1"; + + revision "2019-11-28" { + description + "Fix quotes on literals in when statements"; + reference "6.0.1"; + } + + revision "2019-02-01" { + description + "Move BGP community match-set-options from + policy-definitions/statements/.../bgp-conditions to + defined-sets/bgp-defined-sets/community-set for wider platform + support."; + reference "6.0.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "5.0.2"; + } + + revision "2018-08-20" { + description + "Correct description of AFI-SAFI enabled leaf."; + reference "5.0.1"; + } + + revision "2018-04-11" { + description + "Correct naming of BGP maximum prefix warning percentage leaf."; + reference "5.0.0"; + } + + revision "2018-03-20" { + description + "Added SR-TE policy SAFI"; + reference "4.1.0"; + } + + revision "2017-07-10" { + description + "Add error notifications; moved add-paths config; add AS + prepend policy features; removed unneeded config leaves"; + reference "4.0.0"; + } + + revision "2017-02-02" { + description + "Bugfix to remove remaining global-level policy data"; + reference "3.0.1"; + } + + revision "2017-01-26" { + description + "Add dynamic neighbor support, migrate to OpenConfig types"; + reference "3.0.0"; + } + + revision "2016-06-21" { + description + "OpenConfig BGP refactor"; + reference "2.1.1"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // typedef statements + + typedef bgp-set-community-option-type { + type enumeration { + enum ADD { + description + "add the specified communities to the existing + community attribute"; + } + enum REMOVE { + description + "remove the specified communities from the + existing community attribute"; + } + enum REPLACE { + description + "replace the existing community attribute with + the specified communities. If an empty set is + specified, this removes the community attribute + from the route."; + } + } + description + "Type definition for options when setting the community + attribute in a policy action"; + } + + typedef bgp-next-hop-type { + type union { + type oc-inet:ip-address; + type enumeration { + enum SELF { + description "special designation for local router's own + address, i.e., next-hop-self"; + } + } + } + description + "type definition for specifying next-hop in policy actions"; + } + + typedef bgp-set-med-type { + type union { + type uint32; + type string { + pattern '^[+-][0-9]+$'; + } + type enumeration { + enum IGP { + description "set the MED value to the IGP cost toward the + next hop for the route"; + } + } + } + description + "Type definition for specifying how the BGP MED can + be set in BGP policy actions. The three choices are to set + the MED directly, increment/decrement using +/- notation, + and setting it to the IGP cost (predefined value)."; + } + + // grouping statements + + grouping match-as-path-config { + description + "Configuration data for match conditions on AS path set"; + + leaf as-path-set { + type leafref { + path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + + "oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:as-path-sets/" + + "oc-bgp-pol:as-path-set/oc-bgp-pol:as-path-set-name"; + } + description "References a defined AS path set"; + } + uses oc-rpol:match-set-options-group; + } + + grouping match-as-path-state { + description + "Operational state data for match conditions on AS path set"; + } + + grouping match-as-path-top { + description + "Top-level grouping for match conditions on AS path set"; + + container match-as-path-set { + description + "Match a referenced as-path set according to the logic + defined in the match-set-options leaf"; + + container config { + description + "Configuration data for match conditions on AS path set"; + + uses match-as-path-config; + } + + container state { + + config false; + + description + "Operational state data for match conditions on AS + path set"; + + uses match-as-path-config; + uses match-as-path-state; + } + } + } + + grouping bgp-match-set-conditions { + description + "Condition statement definitions for checking membership in a + defined set"; + + uses match-as-path-top; + } + + grouping community-count-config { + description + "Configuration data for community count condition"; + + uses oc-pol-types:attribute-compare-operators; + } + + grouping community-count-state { + description + "Operational state data for community count condition"; + } + + grouping community-count-top { + description + "Top-level grouping for community count condition"; + + container community-count { + description + "Value and comparison operations for conditions based on the + number of communities in the route update"; + + container config { + description + "Configuration data for community count condition"; + + uses community-count-config; + } + + container state { + + config false; + + description + "Operational state data for community count condition"; + + uses community-count-config; + uses community-count-state; + } + } + } + + grouping as-path-length-config { + description + "Configuration data for AS path length condition"; + + uses oc-pol-types:attribute-compare-operators; + } + + grouping as-path-length-state { + description + "Operational state data for AS path length condition"; + } + + grouping as-path-length-top { + description + "Top-level grouping for AS path length condition"; + + container as-path-length { + description + "Value and comparison operations for conditions based on the + length of the AS path in the route update"; + + container config { + description + "Configuration data for AS path length condition"; + + uses as-path-length-config; + } + + container state { + + config false; + + description + "Operational state data for AS path length condition"; + + uses as-path-length-config; + uses as-path-length-state; + } + } + } + + grouping bgp-conditions-config { + description + "Configuration data for BGP-specific policy conditions"; + + leaf med-eq { + type uint32; + description + "Condition to check if the received MED value is equal to + the specified value"; + } + + leaf origin-eq { + type oc-bgp-types:bgp-origin-attr-type; + description + "Condition to check if the route origin is equal to the + specified value"; + } + + leaf-list next-hop-in { + type oc-inet:ip-address; + description + "List of next hop addresses to check for in the route + update"; + } + + leaf-list afi-safi-in { + type identityref { + base oc-bgp-types:AFI_SAFI_TYPE; + } + description + "List of address families which the NLRI may be + within"; + } + + leaf local-pref-eq { + type uint32; + // TODO: add support for other comparisons if needed + description + "Condition to check if the local pref attribute is equal to + the specified value"; + } + + leaf route-type { + // TODO: verify extent of vendor support for this comparison + type enumeration { + enum INTERNAL { + description "route type is internal"; + } + enum EXTERNAL { + description "route type is external"; + } + } + description + "Condition to check the route type in the route update"; + } + + leaf community-set { + type leafref { + path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + + "oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:community-sets/" + + "oc-bgp-pol:community-set/oc-bgp-pol:community-set-name"; + } + description + "References a defined community set"; + } + + leaf ext-community-set { + type leafref { + path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + + "oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:ext-community-sets/" + + "oc-bgp-pol:ext-community-set/" + + "oc-bgp-pol:ext-community-set-name"; + } + description "References a defined extended community set"; + } + } + + grouping bgp-conditions-state { + description + "Operational state data for BGP-specific policy conditions"; + } + + grouping bgp-conditions-top { + description + "Top-level grouping for BGP-specific policy conditions"; + + container bgp-conditions { + description + "Top-level container "; + + container config { + description + "Configuration data for BGP-specific policy conditions"; + + uses bgp-conditions-config; + } + + container state { + + config false; + + description + "Operational state data for BGP-specific policy + conditions"; + + uses bgp-conditions-config; + uses bgp-conditions-state; + } + + uses community-count-top; + uses as-path-length-top; + uses bgp-match-set-conditions; + } + } + + grouping community-set-config { + description + "Configuration data for BGP community sets"; + + leaf community-set-name { + type string; + mandatory true; + description + "name / label of the community set -- this is used to + reference the set in match conditions"; + } + + leaf-list community-member { + type union { + type oc-bgp-types:bgp-std-community-type; + type oc-bgp-types:bgp-community-regexp-type; + type oc-bgp-types:bgp-well-known-community-type; + } + description + "members of the community set. + For an ADD operation these are the communities that will be added; + the regexp type is not valid in this operation. + For REMOVE or REPLACE operations then matching communities will + be removed unless match-set-options is INVERT which will + reverse this to mean that anything that does not match will be + removed."; + } + + uses oc-rpol:match-set-options-group; + } + + grouping community-set-state { + description + "Operational state data for BGP community sets"; + } + + grouping community-set-top { + description + "Top-level grouping for BGP community sets"; + + container community-sets { + description + "Enclosing container for list of defined BGP community sets"; + + list community-set { + key "community-set-name"; + description + "List of defined BGP community sets"; + + leaf community-set-name { + type leafref { + path "../config/community-set-name"; + } + description + "Reference to list key"; + } + + container config { + description + "Configuration data for BGP community sets"; + + uses community-set-config; + } + + container state { + + config false; + + description + "Operational state data for BGP community sets"; + + uses community-set-config; + uses community-set-state; + } + } + } + } + + grouping ext-community-set-config { + description + "Configuration data for extended BGP community sets"; + + leaf ext-community-set-name { + type string; + description + "name / label of the extended community set -- this is + used to reference the set in match conditions"; + } + + leaf-list ext-community-member { + type union { + type oc-bgp-types:bgp-ext-community-type; + type oc-bgp-types:bgp-community-regexp-type; + } + description + "members of the extended community set + For an ADD operation these are the communities that will be added; + the regexp type is not valid in this operation. + For REMOVE or REPLACE operations then matching communities will + be removed unless match-set-options is INVERT which will + reverse this to mean that anything that does not match will be + removed."; + } + + uses oc-rpol:match-set-options-group; + } + + grouping ext-community-set-state { + description + "Operational state data for extended BGP community sets"; + } + + grouping ext-community-set-top { + description + "Top-level grouping for extended BGP community sets"; + + container ext-community-sets { + description + "Enclosing container for list of extended BGP community + sets"; + + list ext-community-set { + key "ext-community-set-name"; + description + "List of defined extended BGP community sets"; + + leaf ext-community-set-name { + type leafref { + path "../config/ext-community-set-name"; + } + description + "Reference to list key"; + } + + container config { + description + "Configuration data for extended BGP community sets"; + + uses ext-community-set-config; + } + + container state { + + config false; + + description + "Operational state data for extended BGP community sets"; + + uses ext-community-set-config; + uses ext-community-set-state; + } + } + } + } + + grouping as-path-set-config { + description + "Configuration data for AS path sets"; + + leaf as-path-set-name { + type string; + description + "name of the AS path set -- this is used to reference + the set in match conditions"; + } + + leaf-list as-path-set-member { + // TODO: need to refine typedef for AS path expressions + type string; + description + "AS path expression -- list of ASes in the set"; + } + } + + grouping as-path-set-state { + description + "Operational state data for AS path sets"; + } + + grouping as-path-set-top { + description + "Top-level grouping for AS path sets"; + + container as-path-sets { + description + "Enclosing container for list of define AS path sets"; + + list as-path-set { + key "as-path-set-name"; + description + "List of defined AS path sets"; + + leaf as-path-set-name { + type leafref { + path "../config/as-path-set-name"; + } + description + "Reference to list key"; + } + + container config { + description + "Configuration data for AS path sets"; + + uses as-path-set-config; + } + + container state { + + config false; + + description + "Operational state data for AS path sets"; + + uses as-path-set-config; + uses as-path-set-state; + } + } + } + } + + // augment statements + + augment "/oc-rpol:routing-policy/oc-rpol:defined-sets" { + description "adds BGP defined sets container to routing policy + model"; + + container bgp-defined-sets { + description + "BGP-related set definitions for policy match conditions"; + + uses community-set-top; + uses ext-community-set-top; + uses as-path-set-top; + } + } + + grouping as-path-prepend-config { + description + "Configuration data for the AS path prepend action"; + + leaf repeat-n { + type uint8 { + range 1..max; + } + description + "Number of times to prepend the value specified in the asn + leaf to the AS path. If no value is specified by the asn + leaf, the local AS number of the system is used. The value + should be between 1 and the maximum supported by the + implementation."; + } + + leaf asn { + type oc-inet:as-number; + description + "The AS number to prepend to the AS path. If this leaf is + not specified and repeat-n is set, then the local AS + number will be used for prepending."; + } + } + + grouping as-path-prepend-state { + description + "Operational state data for the AS path prepend action"; + } + + grouping as-path-prepend-top { + description + "Top-level grouping for the AS path prepend action"; + + container set-as-path-prepend { + description + "Action to prepend the specified AS number to the AS-path a + specified number of times"; + + container config { + description + "Configuration data for the AS path prepend action"; + + uses as-path-prepend-config; + } + + container state { + + config false; + + description + "Operational state data for the AS path prepend action"; + + uses as-path-prepend-config; + uses as-path-prepend-state; + } + } + } + + grouping set-community-action-common { + description + "Common leaves for set-community and set-ext-community + actions"; + + leaf method { + type enumeration { + enum INLINE { + description + "The extended communities are specified inline as a + list"; + } + enum REFERENCE { + description + "The extended communities are specified by referencing a + defined ext-community set"; + } + } + description + "Indicates the method used to specify the extended + communities for the set-ext-community action"; + } + + leaf options { + type bgp-set-community-option-type; + description + "Options for modifying the community attribute with + the specified values. These options apply to both + methods of setting the community attribute."; + } + } + + grouping set-community-inline-config { + description + "Configuration data for inline specification of set-community + action"; + + leaf-list communities { + type union { + type oc-bgp-types:bgp-std-community-type; + type oc-bgp-types:bgp-well-known-community-type; + } + description + "Set the community values for the update inline with + a list."; + } + } + + grouping set-community-inline-state { + description + "Operational state data or inline specification of + set-community action"; + } + + grouping set-community-inline-top { + description + "Top-level grouping or inline specification of set-community + action"; + + container inline { + when "../config/method='INLINE'" { + description + "Active only when the set-community method is INLINE"; + } + description + "Set the community values for the action inline with + a list."; + + container config { + description + "Configuration data or inline specification of set-community + action"; + + uses set-community-inline-config; + } + + container state { + + config false; + + description + "Operational state data or inline specification of + set-community action"; + + uses set-community-inline-config; + uses set-community-inline-state; + } + } + } + + grouping set-community-reference-config { + description + "Configuration data for referening a community-set in the + set-community action"; + + leaf community-set-ref { + type leafref { + path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + + "oc-bgp-pol:bgp-defined-sets/" + + "oc-bgp-pol:community-sets/oc-bgp-pol:community-set/" + + "oc-bgp-pol:community-set-name"; + } + description + "References a defined community set by name"; + } + } + + grouping set-community-reference-state { + description + "Operational state data for referening a community-set in the + set-community action"; + } + + grouping set-community-reference-top { + description + "Top-level grouping for referening a community-set in the + set-community action"; + + container reference { + when "../config/method='REFERENCE'" { + description + "Active only when the set-community method is REFERENCE"; + } + description + "Provide a reference to a defined community set for the + set-community action"; + + container config { + description + "Configuration data for referening a community-set in the + set-community action"; + + uses set-community-reference-config; + } + + container state { + + config false; + + description + "Operational state data for referening a community-set + in the set-community action"; + + uses set-community-reference-config; + uses set-community-reference-state; + } + } + } + + grouping set-community-action-config { + description + "Configuration data for the set-community action"; + + uses set-community-action-common; + } + + grouping set-community-action-state { + description + "Operational state data for the set-community action"; + } + + grouping set-community-action-top { + description + "Top-level grouping for the set-community action"; + + container set-community { + description + "Action to set the community attributes of the route, along + with options to modify how the community is modified. + Communities may be set using an inline list OR + reference to an existing defined set (not both)."; + + container config { + description + "Configuration data for the set-community action"; + + uses set-community-action-config; + } + + container state { + + config false; + + description + "Operational state data for the set-community action"; + + uses set-community-action-config; + uses set-community-action-state; + } + + uses set-community-inline-top; + uses set-community-reference-top; + } + } + + grouping set-ext-community-inline-config { + description + "Configuration data for inline specification of + set-ext-community action"; + + leaf-list communities { + type union { + type oc-bgp-types:bgp-ext-community-type; + type oc-bgp-types:bgp-well-known-community-type; + } + description + "Set the extended community values for the update inline + with a list."; + } + } + + grouping set-ext-community-inline-state { + description + "Operational state data or inline specification of + set-ext-community action"; + } + + grouping set-ext-community-inline-top { + description + "Top-level grouping or inline specification of set-ext-community + action"; + + container inline { + when "../config/method='INLINE'" { + description + "Active only when the set-community method is INLINE"; + } + description + "Set the extended community values for the action inline with + a list."; + + container config { + description + "Configuration data or inline specification of + set-ext-community action"; + + uses set-ext-community-inline-config; + } + + container state { + + config false; + + description + "Operational state data or inline specification of + set-ext-community action"; + + uses set-ext-community-inline-config; + uses set-ext-community-inline-state; + } + } + } + + grouping set-ext-community-reference-config { + description + "Configuration data for referening a extended community-set + in the set-ext-community action"; + + leaf ext-community-set-ref { + type leafref { + path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + + "oc-bgp-pol:bgp-defined-sets/" + + "oc-bgp-pol:ext-community-sets/" + + "oc-bgp-pol:ext-community-set/" + + "oc-bgp-pol:ext-community-set-name"; + } + description + "References a defined extended community set by + name"; + } + } + + grouping set-ext-community-reference-state { + description + "Operational state data for referening an extended + community-set in the set-ext-community action"; + } + + grouping set-ext-community-reference-top { + description + "Top-level grouping for referening an extended community-set + in the set-community action"; + + container reference { + when "../config/method='REFERENCE'" { + description + "Active only when the set-community method is REFERENCE"; + } + description + "Provide a reference to an extended community set for the + set-ext-community action"; + + container config { + description + "Configuration data for referening an extended + community-set in the set-ext-community action"; + + uses set-ext-community-reference-config; + } + + container state { + + config false; + + description + "Operational state data for referening an extended + community-set in the set-ext-community action"; + + uses set-ext-community-reference-config; + uses set-ext-community-reference-state; + } + } + } + + grouping set-ext-community-action-config { + description + "Configuration data for the set-ext-community action"; + + uses set-community-action-common; + } + + grouping set-ext-community-action-state { + description + "Operational state data for the set-ext-community action"; + } + + grouping set-ext-community-action-top { + description + "Top-level grouping for the set-ext-community action"; + + container set-ext-community { + description + "Action to set the extended community attributes of the + route, along with options to modify how the community is + modified. Extended communities may be set using an inline + list OR a reference to an existing defined set (but not + both)."; + + container config { + description + "Configuration data for the set-ext-community action"; + + uses set-ext-community-action-config; + } + + container state { + + config false; + + description + "Operational state data for the set-ext-community action"; + + uses set-ext-community-action-config; + uses set-ext-community-action-state; + } + uses set-ext-community-inline-top; + uses set-ext-community-reference-top; + } + } + + grouping bgp-actions-config { + description + "Configuration data for BGP-specific actions"; + + leaf set-route-origin { + type oc-bgp-types:bgp-origin-attr-type; + description "set the origin attribute to the specified + value"; + } + + leaf set-local-pref { + type uint32; + description "set the local pref attribute on the route + update"; + } + + leaf set-next-hop { + type bgp-next-hop-type; + description "set the next-hop attribute in the route update"; + } + + leaf set-med { + type bgp-set-med-type; + description "set the med metric attribute in the route + update"; + } + } + + grouping bgp-actions-state { + description + "Operational state data for BGP-specific actions"; + } + + grouping bgp-actions-top { + description + "Top-level grouping for BGP-specific actions"; + + container bgp-actions { + description + "Top-level container for BGP-specific actions"; + + container config { + description + "Configuration data for BGP-specific actions"; + + uses bgp-actions-config; + } + + container state { + + config false; + + description + "Operational state data for BGP-specific actions"; + + uses bgp-actions-config; + uses bgp-actions-state; + } + uses as-path-prepend-top; + uses set-community-action-top; + uses set-ext-community-action-top; + } + } + + augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + + "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" + + "oc-rpol:conditions" { + description + "BGP policy conditions added to routing policy module"; + + uses bgp-conditions-top; + } + + augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + + "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" + + "oc-rpol:actions" { + description "BGP policy actions added to routing policy + module"; + + uses bgp-actions-top; + } + + // rpc statements + + // notification statements +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-bgp-types.yang b/vendor/cisco/nx/9.3-14/openconfig-bgp-types.yang new file mode 100644 index 000000000..1e58de2b1 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-bgp-types.yang @@ -0,0 +1,554 @@ +module openconfig-bgp-types { + yang-version "1"; + + namespace "http://openconfig.net/yang/bgp-types"; + + prefix "oc-bgp-types"; + + import openconfig-types { prefix "oc-types"; } + import openconfig-inet-types { prefix "oc-inet"; } + import openconfig-extensions { prefix "oc-ext"; } + + // Include definitions of BGP error notifications + include openconfig-bgp-errors; + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module contains general data definitions for use in BGP + policy. It can be imported by modules that make use of BGP + attributes"; + + oc-ext:openconfig-version "4.0.1"; + + revision "2017-07-30" { + description + "Clarification of add-paths send-max leaf"; + reference "4.0.1"; + } + + revision "2017-07-10" { + description + "Add error notifications; moved add-paths config; add AS + prepend policy features; removed unneeded config leaves"; + reference "4.0.0"; + } + + revision "2017-02-02" { + description + "Bugfix to remove remaining global-level policy data"; + reference "3.0.1"; + } + + revision "2017-01-26" { + description + "Add dynamic neighbor support, migrate to OpenConfig types"; + reference "3.0.0"; + } + + revision "2016-06-21" { + description + "OpenConfig BGP refactor"; + reference "2.1.1"; + } + + + identity BGP_CAPABILITY { + description "Base identity for a BGP capability"; + } + + identity MPBGP { + base BGP_CAPABILITY; + description + "Multi-protocol extensions to BGP"; + reference "RFC2858"; + } + + identity ROUTE_REFRESH { + base BGP_CAPABILITY; + description + "The BGP route-refresh functionality"; + reference "RFC2918"; + } + + identity ASN32 { + base BGP_CAPABILITY; + description + "4-byte (32-bit) AS number functionality"; + reference "RFC6793"; + } + + identity GRACEFUL_RESTART { + base BGP_CAPABILITY; + description + "Graceful restart functionality"; + reference "RFC4724"; + } + + identity ADD_PATHS { + base BGP_CAPABILITY; + description + "BGP add-paths"; + reference "draft-ietf-idr-add-paths"; + } + + identity AFI_SAFI_TYPE { + description + "Base identity type for AFI,SAFI tuples for BGP-4"; + reference "RFC4760 - multiprotocol extensions for BGP-4"; + } + + identity IPV4_UNICAST { + base AFI_SAFI_TYPE; + description + "IPv4 unicast (AFI,SAFI = 1,1)"; + reference "RFC4760"; + } + + identity IPV6_UNICAST { + base AFI_SAFI_TYPE; + description + "IPv6 unicast (AFI,SAFI = 2,1)"; + reference "RFC4760"; + } + + identity IPV4_LABELED_UNICAST { + base AFI_SAFI_TYPE; + description + "Labeled IPv4 unicast (AFI,SAFI = 1,4)"; + reference "RFC3107"; + } + + identity IPV6_LABELED_UNICAST { + base AFI_SAFI_TYPE; + description + "Labeled IPv6 unicast (AFI,SAFI = 2,4)"; + reference "RFC3107"; + } + + identity L3VPN_IPV4_UNICAST { + base AFI_SAFI_TYPE; + description + "Unicast IPv4 MPLS L3VPN (AFI,SAFI = 1,128)"; + reference "RFC4364"; + } + + identity L3VPN_IPV6_UNICAST { + base AFI_SAFI_TYPE; + description + "Unicast IPv6 MPLS L3VPN (AFI,SAFI = 2,128)"; + reference "RFC4659"; + } + + identity L3VPN_IPV4_MULTICAST { + base AFI_SAFI_TYPE; + description + "Multicast IPv4 MPLS L3VPN (AFI,SAFI = 1,129)"; + reference "RFC6514"; + } + + identity L3VPN_IPV6_MULTICAST { + base AFI_SAFI_TYPE; + description + "Multicast IPv6 MPLS L3VPN (AFI,SAFI = 2,129)"; + reference "RFC6514"; + } + + identity L2VPN_VPLS { + base AFI_SAFI_TYPE; + description + "BGP-signalled VPLS (AFI,SAFI = 25,65)"; + reference "RFC4761"; + } + + identity L2VPN_EVPN { + base AFI_SAFI_TYPE; + description + "BGP MPLS Based Ethernet VPN (AFI,SAFI = 25,70)"; + } + + identity BGP_WELL_KNOWN_STD_COMMUNITY { + description + "Reserved communities within the standard community space + defined by RFC1997. These communities must fall within the + range 0x00000000 to 0xFFFFFFFF"; + reference "RFC1997"; + } + + identity NO_EXPORT { + base BGP_WELL_KNOWN_STD_COMMUNITY; + description + "Do not export NLRI received carrying this community outside + the bounds of this autonomous system, or this confederation if + the local autonomous system is a confederation member AS. This + community has a value of 0xFFFFFF01."; + reference "RFC1997"; + } + + identity NO_ADVERTISE { + base BGP_WELL_KNOWN_STD_COMMUNITY; + description + "All NLRI received carrying this community must not be + advertised to other BGP peers. This community has a value of + 0xFFFFFF02."; + reference "RFC1997"; + } + + identity NO_EXPORT_SUBCONFED { + base BGP_WELL_KNOWN_STD_COMMUNITY; + description + "All NLRI received carrying this community must not be + advertised to external BGP peers - including over confederation + sub-AS boundaries. This community has a value of 0xFFFFFF03."; + reference "RFC1997"; + } + + identity NOPEER { + base BGP_WELL_KNOWN_STD_COMMUNITY; + description + "An autonomous system receiving NLRI tagged with this community + is advised not to readvertise the NLRI to external bi-lateral + peer autonomous systems. An AS may also filter received NLRI + from bilateral peer sessions when they are tagged with this + community value"; + reference "RFC3765"; + } + + typedef bgp-session-direction { + type enumeration { + enum INBOUND { + description + "Refers to all NLRI received from the BGP peer"; + } + enum OUTBOUND { + description + "Refers to all NLRI advertised to the BGP peer"; + } + } + description + "Type to describe the direction of NLRI transmission"; + } + + typedef bgp-well-known-community-type { + type identityref { + base BGP_WELL_KNOWN_STD_COMMUNITY; + } + description + "Type definition for well-known IETF community attribute + values"; + reference + "IANA Border Gateway Protocol (BGP) Well Known Communities"; + } + + + typedef bgp-std-community-type { + // TODO: further refine restrictions and allowed patterns + // 4-octet value: + // 2 octets + // 2 octets + type union { + type uint32 { + // per RFC 1997, 0x00000000 - 0x0000FFFF and 0xFFFF0000 - + // 0xFFFFFFFF are reserved + } + type string { + pattern '^(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + + '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; + } + } + description + "Type definition for standard commmunity attributes represented as + a integer value, or a string of the form N:M where N and M are + integers between 0 and 65535."; + reference "RFC 1997 - BGP Communities Attribute"; + } + + typedef bgp-ext-community-type { + type union { + type string { + // Type 1: 2-octet global and 4-octet local + // (AS number) (Integer) + pattern '^(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '[1-9][0-9]{1,8}|[0-9])$'; + } + type string { + // Type 2: 4-octet global and 2-octet local + // (ipv4-address) (integer) + 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]):' + + '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; + } + type string { + // RFC5668: 4-octet global and 2-octet local + // (AS number) (integer) + pattern '^(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '[1-9][0-9]{1,8}|[0-9]):' + + '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; + } + type string { + // route-target with Type 1 + // route-target:(ASN):(local-part) + pattern '^route\-target:' + + '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '[1-9][0-9]{1,8}|[0-9])$'; + } + type string { + // route-target with Type 2 + // route-target:(IPv4):(local-part) + pattern '^route\-target:' + + '(([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]):' + + '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; + } + type string { + // 4-byte AS Type 1 route-target + pattern '^route\-target:' + + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '[1-9][0-9]{1,8}|[0-9]):' + + '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; + } + type string { + // route-origin with Type 1 + pattern '^route\-origin:' + + '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '[1-9][0-9]{1,8}|[0-9])$'; + } + type string { + // route-origin with Type 2 + pattern '^route\-origin:' + + '(([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]):' + + '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; + } + type string { + // 4-byte AS Type 1 route-origin + pattern '^route\-origin:' + + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '[1-9][0-9]{1,8}|[0-9]):' + + '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; + } + } + description + "Type definition for extended community attributes. In the case that + common communities are utilised, they are represented as a string + of the form: + - <2b AS>:<4b value> per RFC4360 section 3.1 + - <4b IPv4>:<2b value> per RFC4360 section 3.2 + - <4b AS>:<2b value> per RFC5668 section 2. + - route-target:<2b AS>:<4b value> per RFC4360 section 4 + - route-target:<4b IPv4>:<2b value> per RFC4360 section 4 + - route-origin:<2b ASN>:<4b value> per RFC4360 section 5 + - route-origin:<4b IPv4>:<2b value> per RFC4360 section 5"; + reference + "RFC 4360 - BGP Extended Communities Attribute + RFC 5668 - 4-Octet AS Specific BGP Extended Community"; + } + + typedef bgp-ext-community-recv-type { + type union { + type bgp-ext-community-type; + type binary { + length 8; + } + } + description + "A type definition utilised to define the extended community + in a context where the system is receiving the extended + community from an external source, such that the value may be + unknown. In the case that the received extended community is + unknown it is defined to be a 8-octet quantity formatted + according to RFC4360: + + Type Field: 1 or 2 octets. + Value Field: Remaining octets. + + The high-order octet of the type field is encoded such that + bit 0 indicates whether the extended community type is IANA + assigned; and bit 1 indicates whether the extended community + is transitive. The remaining bits of the high-order type + field must be interpreted to determine whether the low-order + type field should be parsed, or whether the entire remainder + of the extended community is a value."; + reference + "RFC 4360 - BGP Extended Communities Attribute + RFC 5668 - 4-Octet AS Specific BGP Extended Community"; + } + + typedef bgp-community-regexp-type { + // TODO: needs more work to decide what format these regexps can + // take. + type oc-types:std-regexp; + description + "Type definition for communities specified as regular + expression patterns"; + } + + typedef bgp-origin-attr-type { + type enumeration { + enum IGP { + description + "Origin of the NLRI is internal"; + } + enum EGP { + description + "Origin of the NLRI is EGP"; + } + enum INCOMPLETE { + description + "Origin of the NLRI is neither IGP or EGP"; + } + } + description + "Type definition for standard BGP origin attribute"; + reference "RFC 4271 - A Border Gateway Protocol 4 (BGP-4), + Sec 4.3"; + } + + typedef peer-type { + type enumeration { + enum INTERNAL { + description + "Internal (iBGP) peer"; + } + enum EXTERNAL { + description + "External (eBGP) peer"; + } + } + description + "Labels a peer or peer group as explicitly internal or + external"; + } + + identity REMOVE_PRIVATE_AS_OPTION { + description + "Base identity for options for removing private autonomous + system numbers from the AS_PATH attribute"; + } + + identity PRIVATE_AS_REMOVE_ALL { + base REMOVE_PRIVATE_AS_OPTION; + description + "Strip all private autonmous system numbers from the AS_PATH. + This action is performed regardless of the other content of the + AS_PATH attribute, and for all instances of private AS numbers + within that attribute."; + } + + identity PRIVATE_AS_REPLACE_ALL { + base REMOVE_PRIVATE_AS_OPTION; + description + "Replace all instances of private autonomous system numbers in + the AS_PATH with the local BGP speaker's autonomous system + number. This action is performed regardless of the other + content of the AS_PATH attribute, and for all instances of + private AS number within that attribute."; + } + + typedef remove-private-as-option { + type identityref { + base REMOVE_PRIVATE_AS_OPTION; + } + description + "Set of options for configuring how private AS path numbers + are removed from advertisements"; + } + + typedef rr-cluster-id-type { + type union { + type uint32; + type oc-inet:ipv4-address; + } + description + "Union type for route reflector cluster ids: + option 1: 4-byte number + option 2: IP address"; + } + + typedef community-type { + type enumeration { + enum STANDARD { + description "Send only standard communities"; + } + enum EXTENDED { + description "Send only extended communities"; + } + enum BOTH { + description "Send both standard and extended communities"; + } + enum NONE { + description "Do not send any community attribute"; + } + } + description + "type describing variations of community attributes: + STANDARD: standard BGP community [rfc1997] + EXTENDED: extended BGP community [rfc4360] + BOTH: both standard and extended community"; + } + + + typedef as-path-segment-type { + type enumeration { + enum AS_SEQ { + description + "Ordered set of autonomous systems that a route in + the UPDATE message has traversed"; + } + enum AS_SET { + description + "Unordered set of autonomous systems that a route in + the UPDATE message has traversed"; + } + enum AS_CONFED_SEQUENCE { + description + "Ordered set of Member Autonomous + Systems in the local confederation that the UPDATE message + has traversed"; + } + enum AS_CONFED_SET { + description + "Unordered set of Member Autonomous Systems + in the local confederation that the UPDATE message has + traversed"; + } + } + description + "Defines the types of BGP AS path segments."; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-bgp.yang b/vendor/cisco/nx/9.3-14/openconfig-bgp.yang new file mode 100644 index 000000000..f3ea180bb --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-bgp.yang @@ -0,0 +1,137 @@ +module openconfig-bgp { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/bgp"; + + prefix "oc-bgp"; + + // import some basic inet types + import openconfig-extensions { prefix oc-ext; } + + // Include the OpenConfig BGP submodules + // Common: defines the groupings that are common across more than + // one context (where contexts are neighbor, group, global) + include openconfig-bgp-common; + // Multiprotocol: defines the groupings that are common across more + // than one context, and relate to Multiprotocol + include openconfig-bgp-common-multiprotocol; + // Structure: defines groupings that are shared but are solely used for + // structural reasons. + include openconfig-bgp-common-structure; + // Include peer-group/neighbor/global - these define the groupings + // that are specific to one context + include openconfig-bgp-peer-group; + include openconfig-bgp-neighbor; + include openconfig-bgp-global; + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module describes a YANG model for BGP protocol + configuration.It is a limited subset of all of the configuration + parameters available in the variety of vendor implementations, + hence it is expected that it would be augmented with vendor- + specific configuration data as needed. Additional modules or + submodules to handle other aspects of BGP configuration, + including policy, VRFs, VPNs, and additional address families + are also expected. + + This model supports the following BGP configuration level + hierarchy: + + BGP + | + +-> [ global BGP configuration ] + +-> AFI / SAFI global + +-> peer group + +-> [ peer group config ] + +-> AFI / SAFI [ per-AFI overrides ] + +-> neighbor + +-> [ neighbor config ] + +-> [ optional pointer to peer-group ] + +-> AFI / SAFI [ per-AFI overrides ]"; + + oc-ext:openconfig-version "4.0.1"; + + revision "2017-07-30" { + description + "Clarification of add-paths send-max leaf"; + reference "4.0.1"; + } + + revision "2017-07-10" { + description + "Add error notifications; moved add-paths config; add AS + prepend policy features; removed unneeded config leaves"; + reference "4.0.0"; + } + + revision "2017-02-02" { + description + "Bugfix to remove remaining global-level policy data"; + reference "3.0.1"; + } + + revision "2017-01-26" { + description + "Add dynamic neighbor support, migrate to OpenConfig types"; + reference "3.0.0"; + } + + revision "2016-06-21" { + description + "OpenConfig BGP refactor"; + reference "2.1.1"; + } + + revision "2016-06-06" { + description + "OpenConfig public release"; + reference "2.1.0"; + } + + revision "2016-03-31" { + description + "OpenConfig public release"; + reference "2.0.1"; + } + + grouping bgp-top { + description + "Top-level grouping for the BGP model data"; + + container bgp { + description + "Top-level configuration and state for the BGP router"; + + container global { + description + "Global configuration for the BGP router"; + uses bgp-global-base; + } + + container neighbors { + description + "Configuration for BGP neighbors"; + uses bgp-neighbor-list; + } + + container peer-groups { + description + "Configuration for BGP peer-groups"; + uses bgp-peer-group-list; + } + } + } + + uses bgp-top; + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-extensions.yang b/vendor/cisco/nx/9.3-14/openconfig-extensions.yang new file mode 100644 index 000000000..5fe060f01 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-extensions.yang @@ -0,0 +1,177 @@ +module openconfig-extensions { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/openconfig-ext"; + + prefix "oc-ext"; + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module provides extensions to the YANG language to allow + OpenConfig specific functionality and meta-data to be defined."; + + revision "2018-10-17" { + description + "Add extension for regular expression type."; + reference "0.4.0"; + } + + revision "2017-04-11" { + description + "rename password type to 'hashed' and clarify description"; + reference "0.3.0"; + } + + revision "2017-01-29" { + description + "Added extension for annotating encrypted values."; + reference "0.2.0"; + } + + revision "2015-10-09" { + description + "Initial OpenConfig public release"; + reference "0.1.0"; + } + + + // extension statements + extension openconfig-version { + argument "semver" { + yin-element false; + } + description + "The OpenConfig version number for the module. This is + expressed as a semantic version number of the form: + x.y.z + where: + * x corresponds to the major version, + * y corresponds to a minor version, + * z corresponds to a patch version. + This version corresponds to the model file within which it is + defined, and does not cover the whole set of OpenConfig models. + + Individual YANG modules are versioned independently -- the + semantic version is generally incremented only when there is a + change in the corresponding file. Submodules should always + have the same semantic version as their parent modules. + + A major version number of 0 indicates that this model is still + in development (whether within OpenConfig or with industry + partners), and is potentially subject to change. + + Following a release of major version 1, all modules will + increment major revision number where backwards incompatible + changes to the model are made. + + The minor version is changed when features are added to the + model that do not impact current clients use of the model. + + The patch-level version is incremented when non-feature changes + (such as bugfixes or clarifications to human-readable + descriptions that do not impact model functionality) are made + that maintain backwards compatibility. + + The version number is stored in the module meta-data."; + } + + extension openconfig-hashed-value { + description + "This extension provides an annotation on schema nodes to + indicate that the corresponding value should be stored and + reported in hashed form. + + Hash algorithms are by definition not reversible. Clients + reading the configuration or applied configuration for the node + should expect to receive only the hashed value. Values written + in cleartext will be hashed. This annotation may be used on + nodes such as secure passwords in which the device never reports + a cleartext value, even if the input is provided as cleartext."; + } + + extension regexp-posix { + description + "This extension indicates that the regular expressions included + within the YANG module specified are conformant with the POSIX + regular expression format rather than the W3C standard that is + specified by RFC6020 and RFC7950."; + } + + extension telemetry-on-change { + description + "The telemetry-on-change annotation is specified in the context + of a particular subtree (container, or list) or leaf within the + YANG schema. Where specified, it indicates that the value stored + by the nodes within the context change their value only in response + to an event occurring. The event may be local to the target, for + example - a configuration change, or external - such as the failure + of a link. + + When a telemetry subscription allows the target to determine whether + to export the value of a leaf in a periodic or event-based fashion + (e.g., TARGET_DEFINED mode in gNMI), leaves marked as + telemetry-on-change should only be exported when they change, + i.e., event-based."; + } + + extension telemetry-atomic { + description + "The telemetry-atomic annotation is specified in the context of + a subtree (containre, or list), and indicates that all nodes + within the subtree are always updated together within the data + model. For example, all elements under the subtree may be updated + as a result of a new alarm being raised, or the arrival of a new + protocol message. + + Transport protocols may use the atomic specification to determine + optimisations for sending or storing the corresponding data."; + } + + extension operational { + description + "The operational annotation is specified in the context of a + grouping, leaf, or leaf-list within a YANG module. It indicates + that the nodes within the context are derived state on the device. + + OpenConfig data models divide nodes into the following three categories: + + - intended configuration - these are leaves within a container named + 'config', and are the writable configuration of a target. + - applied configuration - these are leaves within a container named + 'state' and are the currently running value of the intended configuration. + - derived state - these are the values within the 'state' container which + are not part of the applied configuration of the device. Typically, they + represent state values reflecting underlying operational counters, or + protocol statuses."; + } + + extension catalog-organization { + argument "org" { + yin-element false; + } + description + "This extension specifies the organization name that should be used within + the module catalogue on the device for the specified YANG module. It stores + a pithy string where the YANG organization statement may contain more + details."; + } + + extension origin { + argument "origin" { + yin-element false; + } + description + "This extension specifies the name of the origin that the YANG module + falls within. This allows multiple overlapping schema trees to be used + on a single network element without requiring module based prefixing + of paths."; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-if-aggregate.yang b/vendor/cisco/nx/9.3-14/openconfig-if-aggregate.yang new file mode 100644 index 000000000..8115652ba --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-if-aggregate.yang @@ -0,0 +1,200 @@ +module openconfig-if-aggregate { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/interfaces/aggregate"; + + prefix "oc-lag"; + + // import some basic types + import openconfig-interfaces { prefix oc-if; } + import openconfig-if-ethernet { prefix oc-eth; } + import iana-if-type { prefix ift; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Model for managing aggregated (aka bundle, LAG) interfaces."; + + oc-ext:openconfig-version "2.0.0"; + + revision "2017-07-14" { + description + "Added Ethernet/IP state data; Add dhcp-client; + migrate to OpenConfig types modules; Removed or + renamed opstate values"; + reference "2.0.0"; + } + + revision "2016-12-22" { + description + "Fixes to Ethernet interfaces model"; + reference "1.1.0"; + } + + // extension statements + + // feature statements + + // identity statements + + // typedef statements + + + + typedef aggregation-type { + type enumeration { + enum LACP { + description "LAG managed by LACP"; + } + enum STATIC { + description "Statically configured bundle / LAG"; + } + } + description + "Type to define the lag-type, i.e., how the LAG is + defined and managed"; + } + + // grouping statements + + + grouping aggregation-logical-config { + description + "Configuration data for aggregate interfaces"; + + + leaf lag-type { + type aggregation-type; + description + "Sets the type of LAG, i.e., how it is + configured / maintained"; + } + + leaf min-links { + type uint16; + description + "Specifies the mininum number of member + interfaces that must be active for the aggregate interface + to be available"; + } + } + + grouping aggregation-logical-state { + description + "Operational state data for aggregate interfaces"; + + leaf lag-speed { + type uint32; + units Mbps; + description + "Reports effective speed of the aggregate interface, + based on speed of active member interfaces"; + } + + leaf-list member { + when "oc-lag:lag-type = 'STATIC'" { + description + "The simple list of member interfaces is active + when the aggregate is statically configured"; + } + type oc-if:base-interface-ref; + description + "List of current member interfaces for the aggregate, + expressed as references to existing interfaces"; + } + } + + grouping aggregation-logical-top { + description "Top-level data definitions for LAGs"; + + container aggregation { + + description + "Options for logical interfaces representing + aggregates"; + + container config { + description + "Configuration variables for logical aggregate / + LAG interfaces"; + + uses aggregation-logical-config; + } + + container state { + + config false; + description + "Operational state variables for logical + aggregate / LAG interfaces"; + + uses aggregation-logical-config; + uses aggregation-logical-state; + + } + } + } + + grouping ethernet-if-aggregation-config { + description + "Adds configuration items for Ethernet interfaces + belonging to a logical aggregate / LAG"; + + leaf aggregate-id { + type leafref { + path "/oc-if:interfaces/oc-if:interface/oc-if:name"; + } + description + "Specify the logical aggregate interface to which + this interface belongs"; + } + } + + // data definition statements + + // augment statements + + augment "/oc-if:interfaces/oc-if:interface" { + when "oc-if:type = 'ift:ieee8023adLag'" { + description "active when the interface is set to type LAG"; + } + description "Adds LAG configuration to the interface module"; + + uses aggregation-logical-top; + } + + augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" + + "oc-eth:config" { + when "oc-if:type = 'ift:ethernetCsmacd'" { + description "active when the interface is Ethernet"; + } + description "Adds LAG settings to individual Ethernet + interfaces"; + + uses ethernet-if-aggregation-config; + } + + augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" + + "oc-eth:state" { + when "oc-if:type = 'ift:ethernetCsmacd'" { + description "active when the interface is Ethernet"; + } + description "Adds LAG settings to individual Ethernet + interfaces"; + + uses ethernet-if-aggregation-config; + } + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-if-ethernet.yang b/vendor/cisco/nx/9.3-14/openconfig-if-ethernet.yang new file mode 100644 index 000000000..0a3c2e8d4 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-if-ethernet.yang @@ -0,0 +1,345 @@ +module openconfig-if-ethernet { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/interfaces/ethernet"; + + prefix "oc-eth"; + + // import some basic types + import openconfig-interfaces { prefix oc-if; } + import iana-if-type { prefix ift; } + import openconfig-yang-types { prefix oc-yang; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Model for managing Ethernet interfaces -- augments the IETF YANG + model for interfaces described by RFC 7223"; + + oc-ext:openconfig-version "2.0.0"; + + revision "2017-07-14" { + description + "Added Ethernet/IP state data; Add dhcp-client; + migrate to OpenConfig types modules; Removed or + renamed opstate values"; + reference "2.0.0"; + } + + revision "2016-12-22" { + description + "Fixes to Ethernet interfaces model"; + reference "1.1.0"; + } + + // extension statements + + // feature statements + + // identity statements + + identity ETHERNET_SPEED { + description "base type to specify available Ethernet link + speeds"; + } + + identity SPEED_10MB { + base ETHERNET_SPEED; + description "10 Mbps Ethernet"; + } + + identity SPEED_100MB { + base ETHERNET_SPEED; + description "100 Mbps Ethernet"; + } + + identity SPEED_1GB { + base ETHERNET_SPEED; + description "1 GBps Ethernet"; + } + + identity SPEED_10GB { + base ETHERNET_SPEED; + description "10 GBps Ethernet"; + } + + identity SPEED_25GB { + base ETHERNET_SPEED; + description "25 GBps Ethernet"; + } + + identity SPEED_40GB { + base ETHERNET_SPEED; + description "40 GBps Ethernet"; + } + + identity SPEED_50GB { + base ETHERNET_SPEED; + description "50 GBps Ethernet"; + } + + identity SPEED_100GB { + base ETHERNET_SPEED; + description "100 GBps Ethernet"; + } + + identity SPEED_UNKNOWN { + base ETHERNET_SPEED; + description + "Interface speed is unknown. Systems may report + speed UNKNOWN when an interface is down or unpopuplated (e.g., + pluggable not present)."; + } + + // typedef statements + + + // grouping statements + + grouping ethernet-interface-config { + description "Configuration items for Ethernet interfaces"; + + leaf mac-address { + type oc-yang:mac-address; + description + "Assigns a MAC address to the Ethernet interface. If not + specified, the corresponding operational state leaf is + expected to show the system-assigned MAC address."; + } + + leaf auto-negotiate { + type boolean; + default true; + description + "Set to TRUE to request the interface to auto-negotiate + transmission parameters with its peer interface. When + set to FALSE, the transmission parameters are specified + manually."; + reference + "IEEE 802.3-2012 auto-negotiation transmission parameters"; + } + + leaf duplex-mode { + type enumeration { + enum FULL { + description "Full duplex mode"; + } + enum HALF { + description "Half duplex mode"; + } + } + description + "When auto-negotiate is TRUE, this optionally sets the + duplex mode that will be advertised to the peer. If + unspecified, the interface should negotiate the duplex mode + directly (typically full-duplex). When auto-negotiate is + FALSE, this sets the duplex mode on the interface directly."; + } + + leaf port-speed { + type identityref { + base ETHERNET_SPEED; + } + description + "When auto-negotiate is TRUE, this optionally sets the + port-speed mode that will be advertised to the peer for + negotiation. If unspecified, it is expected that the + interface will select the highest speed available based on + negotiation. When auto-negotiate is set to FALSE, sets the + link speed to a fixed value -- supported values are defined + by ETHERNET_SPEED identities"; + } + + leaf enable-flow-control { + type boolean; + default false; + description + "Enable or disable flow control for this interface. + Ethernet flow control is a mechanism by which a receiver + may send PAUSE frames to a sender to stop transmission for + a specified time. + + This setting should override auto-negotiated flow control + settings. If left unspecified, and auto-negotiate is TRUE, + flow control mode is negotiated with the peer interface."; + reference + "IEEE 802.3x"; + } + } + + grouping ethernet-interface-state-counters { + description + "Ethernet-specific counters and statistics"; + + // ingress counters + + leaf in-mac-control-frames { + type oc-yang:counter64; + description + "MAC layer control frames received on the interface"; + } + + leaf in-mac-pause-frames { + type oc-yang:counter64; + description + "MAC layer PAUSE frames received on the interface"; + } + + leaf in-oversize-frames { + type oc-yang:counter64; + description + "Number of oversize frames received on the interface"; + } + + leaf in-jabber-frames { + type oc-yang:counter64; + description + "Number of jabber frames received on the + interface. Jabber frames are typically defined as oversize + frames which also have a bad CRC. Implementations may use + slightly different definitions of what constitutes a jabber + frame. Often indicative of a NIC hardware problem."; + } + + leaf in-fragment-frames { + type oc-yang:counter64; + description + "Number of fragment frames received on the interface."; + } + + leaf in-8021q-frames { + type oc-yang:counter64; + description + "Number of 802.1q tagged frames received on the interface"; + } + + leaf in-crc-errors { + type oc-yang:counter64; + description + "Number of receive error events due to FCS/CRC check + failure"; + } + + // egress counters + + leaf out-mac-control-frames { + type oc-yang:counter64; + description + "MAC layer control frames sent on the interface"; + } + + leaf out-mac-pause-frames { + type oc-yang:counter64; + description + "MAC layer PAUSE frames sent on the interface"; + } + + leaf out-8021q-frames { + type oc-yang:counter64; + description + "Number of 802.1q tagged frames sent on the interface"; + } + } + + grouping ethernet-interface-state { + description + "Grouping for defining Ethernet-specific operational state"; + + leaf hw-mac-address { + type oc-yang:mac-address; + description + "Represenets the 'burned-in', or system-assigned, MAC + address for the Ethernet interface."; + } + + leaf negotiated-duplex-mode { + type enumeration { + enum FULL { + description "Full duplex mode"; + } + enum HALF { + description "Half duplex mode"; + } + } + description + "When auto-negotiate is set to TRUE, and the interface has + completed auto-negotiation with the remote peer, this value + shows the duplex mode that has been negotiated."; + } + + leaf negotiated-port-speed { + type identityref { + base ETHERNET_SPEED; + } + description + "When auto-negotiate is set to TRUE, and the interface has + completed auto-negotiation with the remote peer, this value + shows the interface speed that has been negotiated."; + } + + container counters { + description "Ethernet interface counters"; + + uses ethernet-interface-state-counters; + + } + + } + + // data definition statements + + grouping ethernet-top { + description "top-level Ethernet config and state containers"; + + container ethernet { + description + "Top-level container for ethernet configuration + and state"; + + container config { + description "Configuration data for ethernet interfaces"; + + uses ethernet-interface-config; + + } + + container state { + + config false; + description "State variables for Ethernet interfaces"; + + uses ethernet-interface-config; + uses ethernet-interface-state; + + } + + } + } + + // augment statements + + augment "/oc-if:interfaces/oc-if:interface" { + description "Adds addtional Ethernet-specific configuration to + interfaces model"; + + uses ethernet-top { + when "oc-if:state/oc-if:type = 'ift:ethernetCsmacd'" { + description "Additional interface configuration parameters when + the interface type is Ethernet"; + } + } + } + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-if-ip-ext.yang b/vendor/cisco/nx/9.3-14/openconfig-if-ip-ext.yang new file mode 100644 index 000000000..a5b720b54 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-if-ip-ext.yang @@ -0,0 +1,169 @@ +module openconfig-if-ip-ext { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/interfaces/ip-ext"; + + prefix "oc-ip-ext"; + + import openconfig-interfaces { prefix oc-if; } + import openconfig-if-ip { prefix oc-ip; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module adds extensions to the base IP configuration and + operational state model to support additional use cases."; + + oc-ext:openconfig-version "2.3.0"; + + revision "2018-01-05" { + description + "Add logical loopback to interface."; + reference "2.3.0"; + } + + revision "2017-12-21" { + description + "Added IPv6 router advertisement configuration."; + reference "2.1.0"; + } + + revision "2017-07-14" { + description + "Added Ethernet/IP state data; Add dhcp-client; + migrate to OpenConfig types modules; Removed or + renamed opstate values"; + reference "2.0.0"; + } + + revision "2016-12-22" { + description + "Fixes to Ethernet interfaces model"; + reference "1.1.0"; + } + + + // grouping statements + + grouping ipv6-autoconf-config { + description + "Configuration data for IPv6 address autoconfiguration"; + + leaf create-global-addresses { + type boolean; + default true; + description + "[adapted from IETF IP model RFC 7277] + + If enabled, the host creates global addresses as + described in RFC 4862."; + reference + "RFC 4862: IPv6 Stateless Address Autoconfiguration + Section 5.5"; + } + leaf create-temporary-addresses { + type boolean; + default false; + description + "[adapted from IETF IP model RFC 7277] + + If enabled, the host creates temporary addresses as + described in RFC 4941."; + reference + "RFC 4941: Privacy Extensions for Stateless Address + Autoconfiguration in IPv6"; + } + + leaf temporary-valid-lifetime { + type uint32; + units "seconds"; + default 604800; + description + "[adapted from IETF IP model RFC 7277] + + The time period during which the temporary address + is valid."; + reference + "RFC 4941: Privacy Extensions for Stateless Address + Autoconfiguration in IPv6 + - TEMP_VALID_LIFETIME"; + } + + leaf temporary-preferred-lifetime { + type uint32; + units "seconds"; + default 86400; + description + "[adapted from IETF IP model RFC 7277] + + The time period during which the temporary address is + preferred."; + reference + "RFC 4941: Privacy Extensions for Stateless Address + Autoconfiguration in IPv6 + - TEMP_PREFERRED_LIFETIME"; + } + } + + grouping ipv6-autoconf-state { + description + "Operational state data for IPv6 address autoconfiguration"; + + //TODO: placeholder for additional opstate for IPv6 autoconf + } + + grouping ipv6-autoconf-top { + description + "Top-level grouping for IPv6 address autoconfiguration"; + + container autoconf { + description + "Top-level container for IPv6 autoconf"; + + container config { + description + "[adapted from IETF IP model RFC 7277] + + Parameters to control the autoconfiguration of IPv6 + addresses, as described in RFC 4862."; + reference + "RFC 4862: IPv6 Stateless Address Autoconfiguration"; + + uses ipv6-autoconf-config; + } + + container state { + + config false; + + description + "Operational state data "; + + uses ipv6-autoconf-config; + uses ipv6-autoconf-state; + } + } + } + + // data definition statements + + // augment statements + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface/oc-ip:ipv6" { + description + "Adds address autoconfiguration to the base IP model"; + + uses ipv6-autoconf-top; + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-if-ip.yang b/vendor/cisco/nx/9.3-14/openconfig-if-ip.yang new file mode 100644 index 000000000..a20e21c77 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-if-ip.yang @@ -0,0 +1,1312 @@ +module openconfig-if-ip { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/interfaces/ip"; + + prefix "oc-ip"; + + // import some basic types + import openconfig-inet-types { prefix oc-inet; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-vlan { prefix oc-vlan; } + import openconfig-yang-types { prefix oc-yang; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This model defines data for managing configuration and + operational state on IP (IPv4 and IPv6) interfaces. + + This model reuses data items defined in the IETF YANG model for + interfaces described by RFC 7277 with an alternate structure + (particularly for operational state data) and with + additional configuration items. + + Portions of this code were derived from IETF RFC 7277. + Please reproduce this note if possible. + + IETF code is subject to the following copyright and license: + Copyright (c) IETF Trust and the persons identified as authors of + the code. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, is permitted pursuant to, and subject to the license + terms contained in, the Simplified BSD License set forth in + Section 4.c of the IETF Trust's Legal Provisions Relating + to IETF Documents (http://trustee.ietf.org/license-info)."; + + oc-ext:openconfig-version "2.3.0"; + + revision "2018-01-05" { + description + "Add logical loopback to interface."; + reference "2.3.0"; + } + + revision "2017-12-21" { + description + "Added IPv6 router advertisement configuration."; + reference "2.1.0"; + } + + revision "2017-07-14" { + description + "Added Ethernet/IP state data; Add dhcp-client; + migrate to OpenConfig types modules; Removed or + renamed opstate values"; + reference "2.0.0"; + } + + revision "2017-04-03"{ + description + "Update copyright notice."; + reference "1.1.1"; + } + + revision "2016-12-22" { + description + "Fixes to Ethernet interfaces model"; + reference "1.1.0"; + } + + + // typedef statements + + typedef ip-address-origin { + type enumeration { + enum OTHER { + description + "None of the following."; + } + enum STATIC { + description + "Indicates that the address has been statically + configured - for example, using NETCONF or a Command Line + Interface."; + } + enum DHCP { + description + "Indicates an address that has been assigned to this + system by a DHCP server."; + } + enum LINK_LAYER { + description + "Indicates an address created by IPv6 stateless + autoconfiguration that embeds a link-layer address in its + interface identifier."; + } + enum RANDOM { + description + "Indicates an address chosen by the system at + random, e.g., an IPv4 address within 169.254/16, an + RFC 4941 temporary address, or an RFC 7217 semantically + opaque address."; + reference + "RFC 4941: Privacy Extensions for Stateless Address + Autoconfiguration in IPv6 + RFC 7217: A Method for Generating Semantically Opaque + Interface Identifiers with IPv6 Stateless + Address Autoconfiguration (SLAAC)"; + } + } + description + "The origin of an address."; + } + + typedef neighbor-origin { + type enumeration { + enum OTHER { + description + "None of the following."; + } + enum STATIC { + description + "Indicates that the mapping has been statically + configured - for example, using NETCONF or a Command Line + Interface."; + } + enum DYNAMIC { + description + "Indicates that the mapping has been dynamically resolved + using, e.g., IPv4 ARP or the IPv6 Neighbor Discovery + protocol."; + } + } + description + "The origin of a neighbor entry."; + } + + // grouping statements + + grouping ip-common-global-config { + description + "Shared configuration data for IPv4 or IPv6 assigned + globally on an interface."; + + leaf dhcp-client { + type boolean; + default false; + description + "Enables a DHCP client on the interface in order to request + an address"; + } + } + + grouping ip-common-counters-state { + description + "Operational state for IP traffic statistics for IPv4 and + IPv6"; + + container counters { + description + "Packet and byte counters for IP transmission and + reception for the address family."; + + + leaf in-pkts { + type oc-yang:counter64; + description + "The total number of IP packets received for the specified + address family, including those received in error"; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf in-octets { + type oc-yang:counter64; + description + "The total number of octets received in input IP packets + for the specified address family, including those received + in error."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf in-error-pkts { + // TODO: this counter combines several error conditions -- + // could consider breaking them out to separate leaf nodes + type oc-yang:counter64; + description + "Number of IP packets discarded due to errors for the + specified address family, including errors in the IP + header, no route found to the IP destination, invalid + address, unknown protocol, etc."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf in-forwarded-pkts { + type oc-yang:counter64; + description + "The number of input packets for which the device was not + their final IP destination and for which the device + attempted to find a route to forward them to that final + destination."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf in-forwarded-octets { + type oc-yang:counter64; + description + "The number of octets received in input IP packets + for the specified address family for which the device was + not their final IP destination and for which the + device attempted to find a route to forward them to that + final destination."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf in-discarded-pkts { + type oc-yang:counter64; + description + "The number of input IP packets for the + specified address family, for which no problems were + encountered to prevent their continued processing, but + were discarded (e.g., for lack of buffer space)."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf out-pkts { + type oc-yang:counter64; + description + "The total number of IP packets for the + specified address family that the device supplied + to the lower layers for transmission. This includes + packets generated locally and those forwarded by the + device."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf out-octets { + type oc-yang:counter64; + description + "The total number of octets in IP packets for the + specified address family that the device + supplied to the lower layers for transmission. This + includes packets generated locally and those forwarded by + the device."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf out-error-pkts { + // TODO: this counter combines several error conditions -- + // could consider breaking them out to separate leaf nodes + type oc-yang:counter64; + description + "Number of IP packets for the specified address family + locally generated and discarded due to errors, including + no route found to the IP destination."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf out-forwarded-pkts { + type oc-yang:counter64; + description + "The number of packets for which this entity was not their + final IP destination and for which it was successful in + finding a path to their final destination."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf out-forwarded-octets { + type oc-yang:counter64; + description + "The number of octets in packets for which this entity was + not their final IP destination and for which it was + successful in finding a path to their final destination."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf out-discarded-pkts { + type oc-yang:counter64; + description + "The number of output IP packets for the + specified address family for which no problem was + encountered to prevent their transmission to their + destination, but were discarded (e.g., for lack of + buffer space)."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + } + + } + + + + grouping ipv4-global-config { + description + "Configuration data for IPv4 interfaces across + all addresses assigned to the interface"; + + leaf enabled { + type boolean; + default true; + description + "Controls whether IPv4 is enabled or disabled on this + interface. When IPv4 is enabled, this interface is + connected to an IPv4 stack, and the interface can send + and receive IPv4 packets."; + } + + leaf mtu { + type uint16 { + range "68..max"; + } + units octets; + description + "The size, in octets, of the largest IPv4 packet that the + interface will send and receive. + + The server may restrict the allowed values for this leaf, + depending on the interface's type. + + If this leaf is not configured, the operationally used MTU + depends on the interface's type."; + reference + "RFC 791: Internet Protocol"; + } + + uses ip-common-global-config; + + + } + + grouping ipv4-address-config { + + description + "Per IPv4 adresss configuration data for the + interface."; + + leaf ip { + type oc-inet:ipv4-address; + description + "The IPv4 address on the interface."; + } + + leaf prefix-length { + type uint8 { + range "0..32"; + } + description + "The length of the subnet prefix."; + } + } + + grouping ipv4-neighbor-config { + description + "Per IPv4 neighbor configuration data. Neighbor + entries are analagous to static ARP entries, i.e., they + create a correspondence between IP and link-layer addresses"; + + leaf ip { + type oc-inet:ipv4-address; + description + "The IPv4 address of the neighbor node."; + } + leaf link-layer-address { + type oc-yang:phys-address; + mandatory true; + description + "The link-layer address of the neighbor node."; + } + } + + grouping ipv4-address-state { + description + "State variables for IPv4 addresses on the interface"; + + leaf origin { + type ip-address-origin; + description + "The origin of this address, e.g., statically configured, + assigned by DHCP, etc.."; + } + } + + grouping ipv4-neighbor-state { + description + "State variables for IPv4 neighbor entries on the interface."; + + leaf origin { + type neighbor-origin; + description + "The origin of this neighbor entry, static or dynamic."; + } + } + + grouping ipv6-global-config { + description + "Configuration data at the global level for each + IPv6 interface"; + + leaf enabled { + type boolean; + default true; + description + "Controls whether IPv6 is enabled or disabled on this + interface. When IPv6 is enabled, this interface is + connected to an IPv6 stack, and the interface can send + and receive IPv6 packets."; + } + + leaf mtu { + type uint32 { + range "1280..max"; + } + units octets; + description + "The size, in octets, of the largest IPv6 packet that the + interface will send and receive. + + The server may restrict the allowed values for this leaf, + depending on the interface's type. + + If this leaf is not configured, the operationally used MTU + depends on the interface's type."; + reference + "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification + Section 5"; + } + + leaf dup-addr-detect-transmits { + type uint32; + default 1; + description + "The number of consecutive Neighbor Solicitation messages + sent while performing Duplicate Address Detection on a + tentative address. A value of zero indicates that + Duplicate Address Detection is not performed on + tentative addresses. A value of one indicates a single + transmission with no follow-up retransmissions."; + reference + "RFC 4862: IPv6 Stateless Address Autoconfiguration"; + } + + uses ip-common-global-config; + } + + grouping ipv6-address-config { + description "Per-address configuration data for IPv6 interfaces"; + + leaf ip { + type oc-inet:ipv6-address; + description + "The IPv6 address on the interface."; + } + + leaf prefix-length { + type uint8 { + range "0..128"; + } + mandatory true; + description + "The length of the subnet prefix."; + } + } + + grouping ipv6-address-state { + description + "Per-address operational state data for IPv6 interfaces"; + + leaf origin { + type ip-address-origin; + description + "The origin of this address, e.g., static, dhcp, etc."; + } + + leaf status { + type enumeration { + enum PREFERRED { + description + "This is a valid address that can appear as the + destination or source address of a packet."; + } + enum DEPRECATED { + description + "This is a valid but deprecated address that should + no longer be used as a source address in new + communications, but packets addressed to such an + address are processed as expected."; + } + enum INVALID { + description + "This isn't a valid address, and it shouldn't appear + as the destination or source address of a packet."; + } + enum INACCESSIBLE { + description + "The address is not accessible because the interface + to which this address is assigned is not + operational."; + } + enum UNKNOWN { + description + "The status cannot be determined for some reason."; + } + enum TENTATIVE { + description + "The uniqueness of the address on the link is being + verified. Addresses in this state should not be + used for general communication and should only be + used to determine the uniqueness of the address."; + } + enum DUPLICATE { + description + "The address has been determined to be non-unique on + the link and so must not be used."; + } + enum OPTIMISTIC { + description + "The address is available for use, subject to + restrictions, while its uniqueness on a link is + being verified."; + } + } + description + "The status of an address. Most of the states correspond + to states from the IPv6 Stateless Address + Autoconfiguration protocol."; + reference + "RFC 4293: Management Information Base for the + Internet Protocol (IP) + - IpAddressStatusTC + RFC 4862: IPv6 Stateless Address Autoconfiguration"; + } + } + + grouping ipv6-neighbor-config { + description + "Per-neighbor configuration data for IPv6 interfaces"; + + leaf ip { + type oc-inet:ipv6-address; + description + "The IPv6 address of the neighbor node."; + } + + leaf link-layer-address { + type oc-yang:phys-address; + mandatory true; + description + "The link-layer address of the neighbor node."; + } + } + + grouping ipv6-neighbor-state { + description "Per-neighbor state variables for IPv6 interfaces"; + + leaf origin { + type neighbor-origin; + description + "The origin of this neighbor entry."; + } + leaf is-router { + type empty; + description + "Indicates that the neighbor node acts as a router."; + } + leaf neighbor-state { + type enumeration { + enum INCOMPLETE { + description + "Address resolution is in progress, and the link-layer + address of the neighbor has not yet been + determined."; + } + enum REACHABLE { + description + "Roughly speaking, the neighbor is known to have been + reachable recently (within tens of seconds ago)."; + } + enum STALE { + description + "The neighbor is no longer known to be reachable, but + until traffic is sent to the neighbor no attempt + should be made to verify its reachability."; + } + enum DELAY { + description + "The neighbor is no longer known to be reachable, and + traffic has recently been sent to the neighbor. + Rather than probe the neighbor immediately, however, + delay sending probes for a short while in order to + give upper-layer protocols a chance to provide + reachability confirmation."; + } + enum PROBE { + description + "The neighbor is no longer known to be reachable, and + unicast Neighbor Solicitation probes are being sent + to verify reachability."; + } + } + description + "The Neighbor Unreachability Detection state of this + entry."; + reference + "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) + Section 7.3.2"; + } + } + + grouping ip-vrrp-ipv6-config { + description + "IPv6-specific configuration data for VRRP on IPv6 + interfaces"; + + leaf virtual-link-local { + type oc-inet:ip-address; + description + "For VRRP on IPv6 interfaces, sets the virtual link local + address"; + } + } + + grouping ip-vrrp-ipv6-state { + description + "IPv6-specific operational state for VRRP on IPv6 interfaces"; + + uses ip-vrrp-ipv6-config; + } + + grouping ip-vrrp-tracking-config { + description + "Configuration data for tracking interfaces + in a VRRP group"; + + leaf-list track-interface { + type leafref { + path "/oc-if:interfaces/oc-if:interface/oc-if:name"; + } + // TODO: we may need to add some restriction to ethernet + // or IP interfaces. + description + "Sets a list of one or more interfaces that should + be tracked for up/down events to dynamically change the + priority state of the VRRP group, and potentially + change the mastership if the tracked interface going + down lowers the priority sufficiently. Any of the tracked + interfaces going down will cause the priority to be lowered. + Some implementations may only support a single + tracked interface."; + } + + leaf priority-decrement { + type uint8 { + range 0..254; + } + default 0; + description "Set the value to subtract from priority when + the tracked interface goes down"; + } + } + + grouping ip-vrrp-tracking-state { + description + "Operational state data for tracking interfaces in a VRRP + group"; + } + + grouping ip-vrrp-tracking-top { + description + "Top-level grouping for VRRP interface tracking"; + + container interface-tracking { + description + "Top-level container for VRRP interface tracking"; + + container config { + description + "Configuration data for VRRP interface tracking"; + + uses ip-vrrp-tracking-config; + } + + container state { + + config false; + + description + "Operational state data for VRRP interface tracking"; + + uses ip-vrrp-tracking-config; + uses ip-vrrp-tracking-state; + } + } + } + + grouping ip-vrrp-config { + description + "Configuration data for VRRP on IP interfaces"; + + leaf virtual-router-id { + type uint8 { + range 1..255; + } + description + "Set the virtual router id for use by the VRRP group. This + usually also determines the virtual MAC address that is + generated for the VRRP group"; + } + + leaf-list virtual-address { + type oc-inet:ip-address; + description + "Configure one or more virtual addresses for the + VRRP group"; + } + + leaf priority { + type uint8 { + range 1..254; + } + default 100; + description + "Specifies the sending VRRP interface's priority + for the virtual router. Higher values equal higher + priority"; + } + + leaf preempt { + type boolean; + default true; + description + "When set to true, enables preemption by a higher + priority backup router of a lower priority master router"; + } + + leaf preempt-delay { + type uint16 { + range 0..3600; + } + default 0; + description + "Set the delay the higher priority router waits + before preempting"; + } + + leaf accept-mode { + type boolean; + // TODO: should we adopt the RFC default given the common + // operational practice of setting to true? + default false; + description + "Configure whether packets destined for + virtual addresses are accepted even when the virtual + address is not owned by the router interface"; + } + + leaf advertisement-interval { + type uint16 { + range 1..4095; + } + // TODO this range is theoretical -- needs to be validated + // against major implementations. + units "centiseconds"; + default 100; + description + "Sets the interval between successive VRRP + advertisements -- RFC 5798 defines this as a 12-bit + value expressed as 0.1 seconds, with default 100, i.e., + 1 second. Several implementation express this in units of + seconds"; + } + } + + grouping ip-vrrp-state { + description + "Operational state data for VRRP on IP interfaces"; + + leaf current-priority { + type uint8; + description "Operational value of the priority for the + interface in the VRRP group"; + } + } + + grouping ip-vrrp-top { + description + "Top-level grouping for Virtual Router Redundancy Protocol"; + + container vrrp { + description + "Enclosing container for VRRP groups handled by this + IP interface"; + + reference "RFC 5798 - Virtual Router Redundancy Protocol + (VRRP) Version 3 for IPv4 and IPv6"; + + list vrrp-group { + key "virtual-router-id"; + description + "List of VRRP groups, keyed by virtual router id"; + + leaf virtual-router-id { + type leafref { + path "../config/virtual-router-id"; + } + description + "References the configured virtual router id for this + VRRP group"; + } + + container config { + description + "Configuration data for the VRRP group"; + + uses ip-vrrp-config; + } + + container state { + + config false; + + description + "Operational state data for the VRRP group"; + + uses ip-vrrp-config; + uses ip-vrrp-state; + } + + uses ip-vrrp-tracking-top; + } + } + } + + grouping ipv6-ra-config { + description + "Configuration parameters for IPv6 router advertisements."; + + leaf interval { + type uint32; + units seconds; + description + "The interval between periodic router advertisement neighbor + discovery messages sent on this interface expressed in + seconds."; + } + + leaf lifetime { + type uint32; + units seconds; + description + "The lifetime advertised in the router advertisement neighbor + discovery message on this interface."; + } + + leaf suppress { + type boolean; + default false; + description + "When set to true, router advertisement neighbor discovery + messages are not transmitted on this interface."; + } + } + + grouping ipv4-proxy-arp-config { + description + "Configuration parameters for IPv4 proxy ARP"; + + leaf mode { + type enumeration { + enum DISABLE { + description + "The system should not respond to ARP requests that + do not specify an IP address configured on the local + subinterface as the target address."; + } + enum REMOTE_ONLY { + description + "The system responds to ARP requests only when the + sender and target IP addresses are in different + subnets."; + } + enum ALL { + description + "The system responds to ARP requests where the sender + and target IP addresses are in different subnets, as well + as those where they are in the same subnet."; + } + } + default "DISABLE"; + description + "When set to a value other than DISABLE, the local system should + respond to ARP requests that are for target addresses other than + those that are configured on the local subinterface using its own + MAC address as the target hardware address. If the REMOTE_ONLY + value is specified, replies are only sent when the target address + falls outside the locally configured subnets on the interface, + whereas with the ALL value, all requests, regardless of their + target address are replied to."; + reference "RFC1027: Using ARP to Implement Transparent Subnet Gateways"; + } + } + + grouping ipv4-top { + description "Top-level configuration and state for IPv4 + interfaces"; + + container ipv4 { + description + "Parameters for the IPv4 address family."; + + container addresses { + description + "Enclosing container for address list"; + + list address { + key "ip"; + description + "The list of configured IPv4 addresses on the interface."; + + leaf ip { + type leafref { + path "../config/ip"; + } + description "References the configured IP address"; + } + + container config { + description "Configuration data for each configured IPv4 + address on the interface"; + + uses ipv4-address-config; + + } + + container state { + + config false; + description "Operational state data for each IPv4 address + configured on the interface"; + + uses ipv4-address-config; + uses ipv4-address-state; + } + + } + } + + container proxy-arp { + description + "Configuration and operational state parameters + relating to proxy ARP. This functionality allows a + system to respond to ARP requests that are not + explicitly destined to the local system."; + + container config { + description + "Configuration parameters for proxy ARP"; + uses ipv4-proxy-arp-config; + } + + container state { + config false; + description + "Operational state parameters for proxy ARP"; + uses ipv4-proxy-arp-config; + } + } + + container neighbors { + description + "Enclosing container for neighbor list"; + + list neighbor { + key "ip"; + description + "A list of mappings from IPv4 addresses to + link-layer addresses. + + Entries in this list are used as static entries in the + ARP Cache."; + reference + "RFC 826: An Ethernet Address Resolution Protocol"; + + leaf ip { + type leafref { + path "../config/ip"; + } + description "References the configured IP address"; + } + + container config { + description "Configuration data for each configured IPv4 + address on the interface"; + + uses ipv4-neighbor-config; + + } + + container state { + + config false; + description "Operational state data for each IPv4 address + configured on the interface"; + + uses ipv4-neighbor-config; + uses ipv4-neighbor-state; + } + } + } + + uses oc-if:sub-unnumbered-top; + + container config { + description + "Top-level IPv4 configuration data for the interface"; + + uses ipv4-global-config; + } + + container state { + + config false; + description + "Top level IPv4 operational state data"; + + uses ipv4-global-config; + uses ip-common-counters-state; + } + } + } + + grouping ipv6-top { + description + "Top-level configuration and state for IPv6 interfaces"; + + container ipv6 { + description + "Parameters for the IPv6 address family."; + + container addresses { + description + "Enclosing container for address list"; + + list address { + key "ip"; + description + "The list of configured IPv6 addresses on the interface."; + + leaf ip { + type leafref { + path "../config/ip"; + } + description "References the configured IP address"; + } + + container config { + description + "Configuration data for each IPv6 address on + the interface"; + + uses ipv6-address-config; + + } + + container state { + + config false; + description + "State data for each IPv6 address on the + interface"; + + uses ipv6-address-config; + uses ipv6-address-state; + } + } + } + + container router-advertisement { + description + "Configuration and operational state parameters relating to + router advertisements."; + + container config { + description + "Configuration parameters relating to router advertisements + for IPv6."; + uses ipv6-ra-config; + } + + container state { + config false; + description + "Operational state parameters relating to router + advertisements for IPv6."; + uses ipv6-ra-config; + } + } + + container neighbors { + description + "Enclosing container for list of IPv6 neighbors"; + + list neighbor { + key "ip"; + description + "List of IPv6 neighbors"; + + leaf ip { + type leafref { + path "../config/ip"; + } + description + "References the configured IP neighbor address"; + } + + container config { + description "Configuration data for each IPv6 address on + the interface"; + + uses ipv6-neighbor-config; + + } + + container state { + + config false; + description "State data for each IPv6 address on the + interface"; + + uses ipv6-neighbor-config; + uses ipv6-neighbor-state; + } + } + } + uses oc-if:sub-unnumbered-top; + + container config { + description "Top-level config data for the IPv6 interface"; + + uses ipv6-global-config; + } + + container state { + config false; + description + "Top-level operational state data for the IPv6 interface"; + + uses ipv6-global-config; + uses ip-common-counters-state; + + } + } + } + + // augment statements + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface" { + description + "IPv4 address family configuration for + interfaces"; + + uses ipv4-top; + + } + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface" { + description + "IPv6 address family configuration for + interfaces"; + + uses ipv6-top; + + } + + // VRRP for IPv4 interfaces + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface/oc-ip:ipv4/oc-ip:addresses/oc-ip:address" { + + description + "Additional IP addr family configuration for + interfaces"; + + uses ip-vrrp-top; + + } + + // VRRP for IPv6 interfaces + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address" { + description + "Additional IP addr family configuration for + interfaces"; + + uses ip-vrrp-top; + + } + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/" + + "vrrp/vrrp-group/config" { + description + "Additional VRRP data for IPv6 interfaces"; + + uses ip-vrrp-ipv6-config; + } + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/vrrp/" + + "vrrp-group/state" { + description + "Additional VRRP data for IPv6 interfaces"; + + uses ip-vrrp-ipv6-state; + } + + // Augments for for routed VLANs + + augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan" { + description + "IPv4 address family configuration for + interfaces"; + + uses ipv4-top; + } + + augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan" { + description + "IPv6 address family configuration for + interfaces"; + + uses ipv6-top; + } + + // VRRP for routed VLAN interfaces + + augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/" + + "oc-ip:ipv4/oc-ip:addresses/oc-ip:address" { + description + "Additional IP addr family configuration for + interfaces"; + + uses ip-vrrp-top; + + } + + augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/" + + "oc-ip:ipv6/oc-ip:addresses/oc-ip:address" { + description + "Additional IP addr family configuration for + interfaces"; + + uses ip-vrrp-top; + + } + + augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/" + + "oc-ip:ipv6/oc-ip:addresses/oc-ip:address/vrrp/vrrp-group/config" { + description + "Additional VRRP data for IPv6 interfaces"; + + uses ip-vrrp-ipv6-config; + } + + + augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/" + + "oc-ip:ipv6/oc-ip:addresses/oc-ip:address/vrrp/vrrp-group/state" { + description + "Additional VRRP data for IPv6 interfaces"; + + uses ip-vrrp-ipv6-state; + } + + // rpc statements + + // notification statements +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-if-types.yang b/vendor/cisco/nx/9.3-14/openconfig-if-types.yang new file mode 100644 index 000000000..27d2dc1d8 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-if-types.yang @@ -0,0 +1,108 @@ +module openconfig-if-types { + yang-version "1"; + + namespace "http://openconfig.net/yang/openconfig-if-types"; + + prefix "oc-ift"; + + // import statements + import openconfig-extensions { prefix oc-ext; } + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module contains a set of interface type definitions that + are used across OpenConfig models. These are generally physical + or logical interfaces, distinct from hardware ports (which are + described by the OpenConfig platform model)."; + + oc-ext:openconfig-version "0.2.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.2.1"; + } + + revision "2018-01-05" { + description + "Add tunnel types into the INTERFACE_TYPE identity."; + reference "0.2.0"; + } + + revision "2016-11-14" { + description + "Initial version"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + identity INTERFACE_TYPE { + description + "Base identity from which interface types are derived."; + } + + identity IF_ETHERNET { + base INTERFACE_TYPE; + description + "Ethernet interfaces based on IEEE 802.3 standards, as well + as FlexEthernet"; + reference + "IEEE 802.3-2015 - IEEE Standard for Ethernet + OIF Flex Ethernet Implementation Agreement 1.0"; + } + + identity IF_AGGREGATE { + base INTERFACE_TYPE; + description + "An aggregated, or bonded, interface forming a + Link Aggregation Group (LAG), or bundle, most often based on + the IEEE 802.1AX (or 802.3ad) standard."; + reference + "IEEE 802.1AX-2008"; + } + + identity IF_LOOPBACK { + base INTERFACE_TYPE; + description + "A virtual interface designated as a loopback used for + various management and operations tasks."; + } + + identity IF_ROUTED_VLAN { + base INTERFACE_TYPE; + description + "A logical interface used for routing services on a VLAN. + Such interfaces are also known as switch virtual interfaces + (SVI) or integrated routing and bridging interfaces (IRBs)."; + } + + identity IF_SONET { + base INTERFACE_TYPE; + description + "SONET/SDH interface"; + } + + identity IF_TUNNEL_GRE4 { + base INTERFACE_TYPE; + description + "A GRE tunnel over IPv4 transport."; + } + + identity IF_TUNNEL_GRE6 { + base INTERFACE_TYPE; + description + "A GRE tunnel over IPv6 transport."; + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-igmp-types.yang b/vendor/cisco/nx/9.3-14/openconfig-igmp-types.yang new file mode 100644 index 000000000..6e54f66ea --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-igmp-types.yang @@ -0,0 +1,64 @@ +module openconfig-igmp-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/igmp/types"; + + prefix "oc-igmp-types"; + + // import some basic types + import openconfig-extensions { prefix "oc-ext"; } + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines types related to the IGMP protocol model."; + + oc-ext:openconfig-version "0.1.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.1.1"; + } + + revision "2018-02-19" { + description + "Initial revision."; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // typedef statements + + typedef igmp-version { + type uint8 { + range 1..3; + } + description + "IGMP Version."; + reference "v1 = RFC1112, v2 = RFC2236, v3 = RFC3376"; + } + + typedef igmp-interval-type { + type uint16 { + range 1..1024; + } + units "seconds"; + description + "Interval at which the router sends the IGMP query message toward + the upstream neighbor."; + reference "RFC3376 8.2 Page 40"; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-igmp.yang b/vendor/cisco/nx/9.3-14/openconfig-igmp.yang new file mode 100644 index 000000000..f70580dda --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-igmp.yang @@ -0,0 +1,373 @@ +module openconfig-igmp { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/igmp"; + + prefix "oc-igmp"; + + // import some basic types/interfaces + import openconfig-igmp-types { prefix oc-igmp-types; } + import openconfig-types { prefix "oc-types"; } + import openconfig-acl { prefix "oc-acl"; } + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-interfaces { prefix oc-if; } + import ietf-inet-types { prefix "inet"; } + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "An OpenConfig model for Internet Group Management Protocol (IGMP)."; + + oc-ext:openconfig-version "0.2.0"; + + revision "2019-07-09" { + description + "Re-indent module to two spaces. + Normalise timeticks64 usage to nanoseconds."; + reference "0.2.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.1.1"; + } + + revision "2018-02-19" { + description + "Initial revision."; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + grouping admin-config { + description + "Re-usable grouping to enable or disable a particular feature."; + + leaf enabled { + type boolean; + default false; + description + "When set to true, the functionality within which this + leaf is defined is enabled, when set to false it is + explicitly disabled."; + } + } + + grouping igmp-interface-config { + description + "Configuration data for IGMP on each interface."; + + leaf interface-id { + type oc-if:interface-id; + description + "Reference to an interface on which IGMP is enabled."; + } + + uses admin-config; + + leaf version { + type oc-igmp-types:igmp-version; + description + "IGMP Version."; + } + + leaf query-interval { + type oc-igmp-types:igmp-interval-type; + description + "Interval at which the router sends the IGMP membership + queries."; + } + + leaf filter-prefixes { + type string; + // TODO work out what this should be. + // On Juniper it's a "policy" and on Cisco a sort of "class map" + description + "List used to filter joins."; + } + } + + grouping igmp-counters-per-version { + description + "Counters for each IGMP protocol version."; + + container state { + config false; + description + "Counters for each IGMP protocol version."; + + leaf v1 { + type uint32; + description + "IGMP v1."; + } + leaf v2 { + type uint32; + description + "IGMP v2."; + } + leaf v3 { + type uint32; + description + "IGMP v3."; + } + } + } + + grouping igmp-interface-counters { + description + "State and session data for IGMP on each interface."; + + + container counters { + description + "Counters avaiable on a per interface bases for IGMP."; + + container queries { + description + "IGMP membership queries."; + + container sent { + description + "Number of IGMP membership queries sent."; + uses igmp-counters-per-version; + } + + container received { + description + "Number of IGMP membership queries received."; + uses igmp-counters-per-version; + } + } + + container reports { + description + "Number of IGMP membership reports received."; + uses igmp-counters-per-version; + } + } + } + + grouping igmp-snooping-state { + description + "IGMP membership snooping state."; + + leaf group { + type inet:ipv4-address; + description + "Multicast address."; + } + + leaf source { + type inet:ipv4-address; + description + "Source address of multicast."; + } + + leaf reporter { + type inet:ipv4-address; + description + "Address of the last reporter."; + } + } + + grouping igmp-snooping-structural { + description + "IGMP membership information determined through snooping."; + + container membership-groups { + description + "List of IGMP Membership information."; + + list group { + key "group"; + config false; + description + "Multicast group membership."; + + leaf group { + type leafref { + path "../state/group"; + } + description + "Multicast address."; + } + + container state { + config false; + description + "Multicast group membership."; + + uses igmp-snooping-state; + } + } + } + } + + grouping igmp-interface-state { + description + "IGMP interface state."; + + leaf query-expires { + type oc-types:timeticks64; + description + "This timestamp indicates the time that the next query is sent + expressed relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + } + } + + grouping igmp-interface-top { + description + "Configuration and state data for IGMP on each interface."; + + container interfaces { + description + "The interfaces on which IGMP is configured."; + + list interface { + key "interface-id"; + description + "This container defines interface IGMP configuration and + state information."; + + leaf interface-id { + type leafref { + path "../config/interface-id"; + } + description + "Reference to an interface on which IGMP is enabled."; + } + + container config { + description + "IGMP interface configuration."; + + uses igmp-interface-config; + } + + container state { + config false; + description + "This container defines state information for IGMP + interfaces."; + + uses igmp-interface-state; + uses igmp-interface-config; + } + + uses igmp-interface-counters; + uses igmp-snooping-structural; + uses oc-if:interface-ref; + } + } + } + + grouping igmp-ssm-maps-config { + description + "A Source Specific Multicast (SSM) mapping. This allows + IGMP v2 hosts to be able to join in SSM environments + by translating IGMP v2 reports into IGMP v3 reports. + The request in an IGMP v2 join is sent toward the source + address found by matching the multicast address."; + + leaf source { + type inet:ipv4-address; + description + "Multicast source address."; + } + + leaf ssm-ranges { + type leafref { + path "/oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/" + + "oc-acl:config/oc-acl:name"; + } + description + "List of accepted source specific multicast (SSM) address + ranges."; + } + } + + grouping igmp-global-config { + description + "This grouping defines global config options for IGMP."; + + } + + grouping igmp-global-top { + description + "Top level grouping for global IGMP configuration."; + + container ssm { + description + "Source specific multicast (SSM)."; + + container mappings { + description + "A list of source specific multicast (SSM) mappings."; + + list mapping { + key "source"; + description + "A Source Specific Multicast (SSM) mapping. This allows + IGMP v2 hosts to be able to join in SSM environments + by translating IGMP v2 reports into IGMP v3 reports. + The request in an IGMP v2 join is sent toward the source + address found by matching the multicast address."; + + leaf source { + type leafref { + path "../config/source"; + } + description + "Multicast source address."; + } + + container config { + description + "Configuration for SSM maps."; + uses igmp-ssm-maps-config; + } + container state { + config false; + description + "State for SSM maps."; + uses igmp-ssm-maps-config; + } + } + } + } + } + + grouping igmp-top { + description + "Top-level grouping for IGMP."; + + container igmp { + description + "Top-level IGMP configuration and operational state."; + + container global { + description + "Global IGMP configuration and operational state."; + uses igmp-global-top; + } + + uses igmp-interface-top; + } + } + + // data definition statements +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-inet-types.yang b/vendor/cisco/nx/9.3-14/openconfig-inet-types.yang new file mode 100644 index 000000000..904ffd899 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-inet-types.yang @@ -0,0 +1,349 @@ +module openconfig-inet-types { + + yang-version "1"; + namespace "http://openconfig.net/yang/types/inet"; + prefix "oc-inet"; + + import openconfig-extensions { prefix "oc-ext"; } + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module contains a set of Internet address related + types for use in OpenConfig modules. + + Portions of this code were derived from IETF RFC 6021. + Please reproduce this note if possible. + + IETF code is subject to the following copyright and license: + Copyright (c) IETF Trust and the persons identified as authors of + the code. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, is permitted pursuant to, and subject to the license + terms contained in, the Simplified BSD License set forth in + Section 4.c of the IETF Trust's Legal Provisions Relating + to IETF Documents (http://trustee.ietf.org/license-info)."; + + oc-ext:openconfig-version "0.3.3"; + + revision "2019-04-25" { + description + "Fix regex bug for ipv6-prefix type"; + reference "0.3.3"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.2"; + } + + revision 2017-08-24 { + description + "Minor formatting fixes."; + reference "0.3.1"; + } + + revision 2017-07-06 { + description + "Add domain-name and host typedefs"; + reference "0.3.0"; + } + + revision 2017-04-03 { + description + "Add ip-version typedef."; + reference "0.2.0"; + } + + revision 2017-04-03 { + description + "Update copyright notice."; + reference "0.1.1"; + } + + revision 2017-01-26 { + description + "Initial module for inet types"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // IPv4 and IPv6 types. + + typedef ipv4-address { + 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])$'; + } + description + "An IPv4 address in dotted quad notation using the default + zone."; + } + + typedef ipv4-address-zoned { + 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])(%[a-zA-Z0-9_]+)$'; + } + description + "An IPv4 address in dotted quad notation. This type allows + specification of a zone index to disambiguate identical + address values. For link-local addresses, the index is + typically the interface index or interface name."; + } + + typedef ipv6-address { + type string { + pattern + // Must support compression through different lengths + // therefore this regexp is complex. + '^(([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}|:)' + + ')$'; + } + description + "An IPv6 address represented as either a full address; shortened + or mixed-shortened formats, using the default zone."; + } + + typedef ipv6-address-zoned { + type string { + pattern + // Must support compression through different lengths + // therefore this regexp is complex. + '^(([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}|:)' + + ')(%[a-zA-Z0-9_]+)$'; + } + description + "An IPv6 address represented as either a full address; shortened + or mixed-shortened formats. This type allows specification of + a zone index to disambiguate identical address values. For + link-local addresses, the index is typically the interface + index or interface name."; + } + + typedef ipv4-prefix { + 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-2][0-9])|(3[0-2]))$'; + } + description + "An IPv4 prefix represented in dotted quad notation followed by + a slash and a CIDR mask (0 <= mask <= 32)."; + } + + typedef ipv6-prefix { + 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])$'; + } + description + "An IPv6 prefix represented in full, shortened, or mixed + shortened format followed by a slash and CIDR mask + (0 <= mask <= 128)."; + } + + typedef ip-address { + type union { + type ipv4-address; + type ipv6-address; + } + description + "An IPv4 or IPv6 address with no prefix specified."; + } + + typedef ip-prefix { + type union { + type ipv4-prefix; + type ipv6-prefix; + } + description + "An IPv4 or IPv6 prefix."; + } + + typedef ip-version { + type enumeration { + enum UNKNOWN { + value 0; + description + "An unknown or unspecified version of the Internet + protocol."; + } + enum IPV4 { + value 4; + description + "The IPv4 protocol as defined in RFC 791."; + } + enum IPV6 { + value 6; + description + "The IPv6 protocol as defined in RFC 2460."; + } + } + description + "This value represents the version of the IP protocol. + Note that integer representation of the enumerated values + are not specified, and are not required to follow the + InetVersion textual convention in SMIv2."; + reference + "RFC 791: Internet Protocol + RFC 2460: Internet Protocol, Version 6 (IPv6) Specification + RFC 4001: Textual Conventions for Internet Network Addresses"; + } + + typedef domain-name { + type string { + length "1..253"; + pattern + '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' + + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' + + '|\.'; + } + description + "The domain-name type represents a DNS domain name. + Fully quallified left to the models which utilize this type. + + Internet domain names are only loosely specified. Section + 3.5 of RFC 1034 recommends a syntax (modified in Section + 2.1 of RFC 1123). The pattern above is intended to allow + for current practice in domain name use, and some possible + future expansion. It is designed to hold various types of + domain names, including names used for A or AAAA records + (host names) and other records, such as SRV records. Note + that Internet host names have a stricter syntax (described + in RFC 952) than the DNS recommendations in RFCs 1034 and + 1123, and that systems that want to store host names in + schema nodes using the domain-name type are recommended to + adhere to this stricter standard to ensure interoperability. + + The encoding of DNS names in the DNS protocol is limited + to 255 characters. Since the encoding consists of labels + prefixed by a length bytes and there is a trailing NULL + byte, only 253 characters can appear in the textual dotted + notation. + + Domain-name values use the US-ASCII encoding. Their canonical + format uses lowercase US-ASCII characters. Internationalized + domain names MUST be encoded in punycode as described in RFC + 3492"; + } + + typedef host { + type union { + type ip-address; + type domain-name; + } + description + "The host type represents either an unzoned IP address or a DNS + domain name."; + } + + typedef as-number { + type uint32; + description + "A numeric identifier for an autonomous system (AS). An AS is a + single domain, under common administrative control, which forms + a unit of routing policy. Autonomous systems can be assigned a + 2-byte identifier, or a 4-byte identifier which may have public + or private scope. Private ASNs are assigned from dedicated + ranges. Public ASNs are assigned from ranges allocated by IANA + to the regional internet registries (RIRs)."; + reference + "RFC 1930 Guidelines for creation, selection, and registration + of an Autonomous System (AS) + RFC 4271 A Border Gateway Protocol 4 (BGP-4)"; + } + + typedef dscp { + type uint8 { + range "0..63"; + } + description + "A differentiated services code point (DSCP) marking within the + IP header."; + reference + "RFC 2474 Definition of the Differentiated Services Field + (DS Field) in the IPv4 and IPv6 Headers"; + } + + typedef ipv6-flow-label { + type uint32 { + range "0..1048575"; + } + description + "The IPv6 flow-label is a 20-bit value within the IPv6 header + which is optionally used by the source of the IPv6 packet to + label sets of packets for which special handling may be + required."; + reference + "RFC 2460 Internet Protocol, Version 6 (IPv6) Specification"; + } + + typedef port-number { + type uint16; + description + "A 16-bit port number used by a transport protocol such as TCP + or UDP."; + reference + "RFC 768 User Datagram Protocol + RFC 793 Transmission Control Protocol"; + } + + typedef uri { + type string; + description + "An ASCII-encoded Uniform Resource Identifier (URI) as defined + in RFC 3986."; + reference + "RFC 3986 Uniform Resource Identifier (URI): Generic Syntax"; + } + + typedef url { + type string; + description + "An ASCII-encoded Uniform Resource Locator (URL) as defined + in RFC 3986, section 1.1.3"; + reference + "RFC 3986, paragraph 1.1.3"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-interfaces.yang b/vendor/cisco/nx/9.3-14/openconfig-interfaces.yang new file mode 100644 index 000000000..b5c928ec5 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-interfaces.yang @@ -0,0 +1,965 @@ +module openconfig-interfaces { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/interfaces"; + + prefix "oc-if"; + + // import some basic types + import ietf-interfaces { prefix ietf-if; } + import openconfig-yang-types { prefix oc-yang; } + import openconfig-types { prefix oc-types; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Model for managing network interfaces and subinterfaces. This + module also defines convenience types / groupings for other + models to create references to interfaces: + + base-interface-ref (type) - reference to a base interface + interface-ref (grouping) - container for reference to a + interface + subinterface + interface-ref-state (grouping) - container for read-only + (opstate) reference to interface + subinterface + + This model reuses data items defined in the IETF YANG model for + interfaces described by RFC 7223 with an alternate structure + (particularly for operational state data) and with + additional configuration items. + + Portions of this code were derived from IETF RFC 7223. + Please reproduce this note if possible. + + IETF code is subject to the following copyright and license: + Copyright (c) IETF Trust and the persons identified as authors of + the code. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, is permitted pursuant to, and subject to the license + terms contained in, the Simplified BSD License set forth in + Section 4.c of the IETF Trust's Legal Provisions Relating + to IETF Documents (http://trustee.ietf.org/license-info)."; + + oc-ext:openconfig-version "2.0.0"; + + revision "2017-07-14" { + description + "Added Ethernet/IP state data; Add dhcp-client; + migrate to OpenConfig types modules; Removed or + renamed opstate values"; + reference "2.0.0"; + } + + revision "2017-04-03" { + description + "Update copyright notice."; + reference "1.1.1"; + } + + revision "2016-12-22" { + description + "Fixes to Ethernet interfaces model"; + reference "1.1.0"; + } + + + // typedef statements + + typedef base-interface-ref { + type leafref { + path "/oc-if:interfaces/oc-if:interface/oc-if:name"; + } + description + "Reusable type for by-name reference to a base interface. + This type may be used in cases where ability to reference + a subinterface is not required."; + } + + typedef interface-id { + type string; + description + "User-defined identifier for an interface, generally used to + name a interface reference. The id can be arbitrary but a + useful convention is to use a combination of base interface + name and subinterface index."; + } + + // grouping statements + + grouping interface-ref-common { + description + "Reference leafrefs to interface / subinterface"; + + leaf interface { + type leafref { + path "/oc-if:interfaces/oc-if:interface/oc-if:name"; + } + description + "Reference to a base interface. If a reference to a + subinterface is required, this leaf must be specified + to indicate the base interface."; + } + + leaf subinterface { + type leafref { + path "/oc-if:interfaces/" + + "oc-if:interface[oc-if:name=current()/../interface]/" + + "oc-if:subinterfaces/oc-if:subinterface/oc-if:index"; + } + description + "Reference to a subinterface -- this requires the base + interface to be specified using the interface leaf in + this container. If only a reference to a base interface + is requuired, this leaf should not be set."; + } + } + + grouping interface-ref-state-container { + description + "Reusable opstate w/container for a reference to an + interface or subinterface"; + + container state { + config false; + description + "Operational state for interface-ref"; + + uses interface-ref-common; + } + } + + grouping interface-ref { + description + "Reusable definition for a reference to an interface or + subinterface"; + + container interface-ref { + description + "Reference to an interface or subinterface"; + + container config { + description + "Configured reference to interface / subinterface"; + + uses interface-ref-common; + } + + uses interface-ref-state-container; + } + } + + grouping interface-ref-state { + description + "Reusable opstate w/container for a reference to an + interface or subinterface"; + + container interface-ref { + description + "Reference to an interface or subinterface"; + + uses interface-ref-state-container; + } + } + + grouping base-interface-ref-state { + description + "Reusable opstate w/container for a reference to a + base interface (no subinterface)."; + + container state { + config false; + description + "Operational state for base interface reference"; + + leaf interface { + type base-interface-ref; + description + "Reference to a base interface."; + } + } + } + + + grouping interface-common-config { + description + "Configuration data data nodes common to physical interfaces + and subinterfaces"; + + leaf description { + type string; + description + "A textual description of the interface. + + A server implementation MAY map this leaf to the ifAlias + MIB object. Such an implementation needs to use some + mechanism to handle the differences in size and characters + allowed between this leaf and ifAlias. The definition of + such a mechanism is outside the scope of this document. + + Since ifAlias is defined to be stored in non-volatile + storage, the MIB implementation MUST map ifAlias to the + value of 'description' in the persistently stored + datastore. + + Specifically, if the device supports ':startup', when + ifAlias is read the device MUST return the value of + 'description' in the 'startup' datastore, and when it is + written, it MUST be written to the 'running' and 'startup' + datastores. Note that it is up to the implementation to + + decide whether to modify this single leaf in 'startup' or + perform an implicit copy-config from 'running' to + 'startup'. + + If the device does not support ':startup', ifAlias MUST + be mapped to the 'description' leaf in the 'running' + datastore."; + reference + "RFC 2863: The Interfaces Group MIB - ifAlias"; + } + + leaf enabled { + type boolean; + default "true"; + description + "This leaf contains the configured, desired state of the + interface. + + Systems that implement the IF-MIB use the value of this + leaf in the 'running' datastore to set + IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry + has been initialized, as described in RFC 2863. + + Changes in this leaf in the 'running' datastore are + reflected in ifAdminStatus, but if ifAdminStatus is + changed over SNMP, this leaf is not affected."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + + } + + grouping interface-phys-config { + description + "Configuration data for physical interfaces"; + + leaf name { + type string; + description + "The name of the interface. + + A device MAY restrict the allowed values for this leaf, + possibly depending on the type of the interface. + For system-controlled interfaces, this leaf is the + device-specific name of the interface. The 'config false' + list interfaces/interface[name]/state contains the currently + existing interfaces on the device. + + If a client tries to create configuration for a + system-controlled interface that is not present in the + corresponding state list, the server MAY reject + the request if the implementation does not support + pre-provisioning of interfaces or if the name refers to + an interface that can never exist in the system. A + NETCONF server MUST reply with an rpc-error with the + error-tag 'invalid-value' in this case. + + The IETF model in RFC 7223 provides YANG features for the + following (i.e., pre-provisioning and arbitrary-names), + however they are omitted here: + + If the device supports pre-provisioning of interface + configuration, the 'pre-provisioning' feature is + advertised. + + If the device allows arbitrarily named user-controlled + interfaces, the 'arbitrary-names' feature is advertised. + + When a configured user-controlled interface is created by + the system, it is instantiated with the same name in the + /interfaces/interface[name]/state list."; + } + + leaf type { + type identityref { + base ietf-if:interface-type; + } + mandatory true; + description + "The type of the interface. + + When an interface entry is created, a server MAY + initialize the type leaf with a valid value, e.g., if it + is possible to derive the type from the name of the + interface. + + If a client tries to set the type of an interface to a + value that can never be used by the system, e.g., if the + type is not supported or if the type does not match the + name of the interface, the server MUST reject the request. + A NETCONF server MUST reply with an rpc-error with the + error-tag 'invalid-value' in this case."; + reference + "RFC 2863: The Interfaces Group MIB - ifType"; + } + + leaf mtu { + type uint16; + description + "Set the max transmission unit size in octets + for the physical interface. If this is not set, the mtu is + set to the operational default -- e.g., 1514 bytes on an + Ethernet interface."; + } + + uses interface-common-config; + } + + grouping interface-phys-holdtime-config { + description + "Configuration data for interface hold-time settings -- + applies to physical interfaces."; + + leaf up { + type uint32; + units milliseconds; + default 0; + description + "Dampens advertisement when the interface + transitions from down to up. A zero value means dampening + is turned off, i.e., immediate notification."; + } + + leaf down { + type uint32; + units milliseconds; + default 0; + description + "Dampens advertisement when the interface transitions from + up to down. A zero value means dampening is turned off, + i.e., immediate notification."; + } + } + + grouping interface-phys-holdtime-state { + description + "Operational state data for interface hold-time."; + } + + grouping interface-phys-holdtime-top { + description + "Top-level grouping for setting link transition + dampening on physical and other types of interfaces."; + + container hold-time { + description + "Top-level container for hold-time settings to enable + dampening advertisements of interface transitions."; + + container config { + description + "Configuration data for interface hold-time settings."; + + uses interface-phys-holdtime-config; + } + + container state { + + config false; + + description + "Operational state data for interface hold-time."; + + uses interface-phys-holdtime-config; + uses interface-phys-holdtime-state; + } + } + } + + grouping interface-common-state { + description + "Operational state data (in addition to intended configuration) + at the global level for this interface"; + + leaf ifindex { + type uint32; + description + "System assigned number for each interface. Corresponds to + ifIndex object in SNMP Interface MIB"; + reference + "RFC 2863 - The Interfaces Group MIB"; + } + + leaf admin-status { + type enumeration { + enum UP { + description + "Ready to pass packets."; + } + enum DOWN { + description + "Not ready to pass packets and not in some test mode."; + } + enum TESTING { + //TODO: This is generally not supported as a configured + //admin state, though it's in the standard interfaces MIB. + //Consider removing it. + description + "In some test mode."; + } + } + //TODO:consider converting to an identity to have the + //flexibility to remove some values defined by RFC 7223 that + //are not used or not implemented consistently. + mandatory true; + description + "The desired state of the interface. In RFC 7223 this leaf + has the same read semantics as ifAdminStatus. Here, it + reflects the administrative state as set by enabling or + disabling the interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + + leaf oper-status { + type enumeration { + enum UP { + value 1; + description + "Ready to pass packets."; + } + enum DOWN { + value 2; + description + "The interface does not pass any packets."; + } + enum TESTING { + value 3; + description + "In some test mode. No operational packets can + be passed."; + } + enum UNKNOWN { + value 4; + description + "Status cannot be determined for some reason."; + } + enum DORMANT { + value 5; + description + "Waiting for some external event."; + } + enum NOT_PRESENT { + value 6; + description + "Some component (typically hardware) is missing."; + } + enum LOWER_LAYER_DOWN { + value 7; + description + "Down due to state of lower-layer interface(s)."; + } + } + //TODO:consider converting to an identity to have the + //flexibility to remove some values defined by RFC 7223 that + //are not used or not implemented consistently. + mandatory true; + description + "The current operational state of the interface. + + This leaf has the same semantics as ifOperStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifOperStatus"; + } + + leaf last-change { + type oc-types:timeticks64; + units nanoseconds; + description + "This timestamp indicates the time of the last state change + of the interface (e.g., up-to-down transition). This + corresponds to the ifLastChange object in the standard + interface MIB. + + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + reference + "RFC 2863: The Interfaces Group MIB - ifLastChange"; + } + + } + + + grouping interface-counters-state { + description + "Operational state representing interface counters + and statistics."; + + //TODO: we may need to break this list of counters into those + //that would appear for physical vs. subinterface or logical + //interfaces. For now, just replicating the full stats + //grouping to both interface and subinterface. + + container counters { + description + "A collection of interface-related statistics objects."; + + leaf in-octets { + type oc-yang:counter64; + description + "The total number of octets received on the interface, + including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; + } + + leaf in-unicast-pkts { + type oc-yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were not addressed to a + multicast or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; + } + + leaf in-broadcast-pkts { + type oc-yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInBroadcastPkts"; + } + + leaf in-multicast-pkts { + type oc-yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a multicast + address at this sub-layer. For a MAC-layer protocol, + this includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInMulticastPkts"; + } + + leaf in-discards { + type oc-yang:counter64; + description + "The number of inbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being deliverable to a higher-layer + protocol. One possible reason for discarding such a + packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + + + reference + "RFC 2863: The Interfaces Group MIB - ifInDiscards"; + } + + leaf in-errors { + type oc-yang:counter64; + description + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of + inbound transmission units that contained errors + preventing them from being deliverable to a higher-layer + protocol. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInErrors"; + } + + leaf in-unknown-protos { + type oc-yang:counter64; + description + "For packet-oriented interfaces, the number of packets + received via the interface that were discarded because + of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces that + support protocol multiplexing, the number of + transmission units received via the interface that were + discarded because of an unknown or unsupported protocol. + For any interface that does not support protocol + multiplexing, this counter is not present. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; + } + + leaf in-fcs-errors { + type oc-yang:counter64; + description + "Number of received packets which had errors in the + frame check sequence (FCS), i.e., framing errors. + + Discontinuities in the value of this counter can occur + when the device is re-initialization as indicated by the + value of 'last-clear'."; + } + + leaf out-octets { + type oc-yang:counter64; + description + "The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; + } + + leaf out-unicast-pkts { + type oc-yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were not addressed + to a multicast or broadcast address at this sub-layer, + including those that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; + } + + leaf out-broadcast-pkts { + type oc-yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were addressed to a + broadcast address at this sub-layer, including those + that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutBroadcastPkts"; + } + + + leaf out-multicast-pkts { + type oc-yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were addressed to a + multicast address at this sub-layer, including those + that were discarded or not sent. For a MAC-layer + protocol, this includes both Group and Functional + addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutMulticastPkts"; + } + + leaf out-discards { + type oc-yang:counter64; + description + "The number of outbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being transmitted. One possible reason + for discarding such a packet could be to free up buffer + space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; + } + + leaf out-errors { + type oc-yang:counter64; + description + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutErrors"; + } + + leaf carrier-transitions { + type oc-yang:counter64; + description + "Number of times the interface state has transitioned + between up and down since the time the device restarted + or the last-clear time, whichever is most recent."; + } + + leaf last-clear { + type oc-types:timeticks64; + units nanoseconds; + description + "Timestamp of the last time the interface counters were + cleared. + + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + } + } + } + + // data definition statements + + grouping sub-unnumbered-config { + description + "Configuration data for unnumbered subinterfaces"; + + leaf enabled { + type boolean; + default false; + description + "Indicates that the subinterface is unnumbered. By default + the subinterface is numbered, i.e., expected to have an + IP address configuration."; + } + } + + grouping sub-unnumbered-state { + description + "Operational state data unnumbered subinterfaces"; + } + + grouping sub-unnumbered-top { + description + "Top-level grouping unnumbered subinterfaces"; + + container unnumbered { + description + "Top-level container for setting unnumbered interfaces. + Includes reference the interface that provides the + address information"; + + container config { + description + "Configuration data for unnumbered interface"; + + uses sub-unnumbered-config; + } + + container state { + + config false; + + description + "Operational state data for unnumbered interfaces"; + + uses sub-unnumbered-config; + uses sub-unnumbered-state; + } + + uses oc-if:interface-ref; + } + } + + grouping subinterfaces-config { + description + "Configuration data for subinterfaces"; + + leaf index { + type uint32; + default 0; + description + "The index of the subinterface, or logical interface number. + On systems with no support for subinterfaces, or not using + subinterfaces, this value should default to 0, i.e., the + default subinterface."; + } + + uses interface-common-config; + + } + + grouping subinterfaces-state { + description + "Operational state data for subinterfaces"; + + leaf name { + type string; + description + "The system-assigned name for the sub-interface. This MAY + be a combination of the base interface name and the + subinterface index, or some other convention used by the + system."; + } + + uses interface-common-state; + uses interface-counters-state; + } + + grouping subinterfaces-top { + description + "Subinterface data for logical interfaces associated with a + given interface"; + + container subinterfaces { + description + "Enclosing container for the list of subinterfaces associated + with a physical interface"; + + list subinterface { + key "index"; + + description + "The list of subinterfaces (logical interfaces) associated + with a physical interface"; + + leaf index { + type leafref { + path "../config/index"; + } + description + "The index number of the subinterface -- used to address + the logical interface"; + } + + container config { + description + "Configurable items at the subinterface level"; + + uses subinterfaces-config; + } + + container state { + + config false; + description + "Operational state data for logical interfaces"; + + uses subinterfaces-config; + uses subinterfaces-state; + } + } + } + } + + grouping interfaces-top { + description + "Top-level grouping for interface configuration and + operational state data"; + + container interfaces { + description + "Top level container for interfaces, including configuration + and state data."; + + + list interface { + key "name"; + + description + "The list of named interfaces on the device."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "References the configured name of the interface"; + //TODO: need to consider whether this should actually + //reference the name in the state subtree, which + //presumably would be the system-assigned name, or the + //configured name. Points to the config/name now + //because of YANG 1.0 limitation that the list + //key must have the same "config" as the list, and + //also can't point to a non-config node. + } + + container config { + description + "Configurable items at the global, physical interface + level"; + + uses interface-phys-config; + } + + container state { + + config false; + description + "Operational state data at the global interface level"; + + uses interface-phys-config; + uses interface-common-state; + uses interface-counters-state; + } + + uses interface-phys-holdtime-top; + uses subinterfaces-top; + } + } + } + + uses interfaces-top; + + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-isis-lsdb-types.yang b/vendor/cisco/nx/9.3-14/openconfig-isis-lsdb-types.yang new file mode 100644 index 000000000..db6e5f783 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-isis-lsdb-types.yang @@ -0,0 +1,703 @@ +module openconfig-isis-lsdb-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/isis-lsdb-types"; + + prefix "oc-isis-lsdb-types"; + + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module contains general LSDB type definitions for use in + ISIS YANG model. "; + + oc-ext:openconfig-version "0.4.2"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.4.2"; + } + + revision "2018-06-05" { + description + "Fix bugs in when statements."; + reference "0.4.1"; + } + + revision "2018-05-14" { + description + "Update LSDB model to correct Extended IS reach TLV + bug. This change is backwards incompatible due to + adding an additional level of hierarchy to support + multiple instances of the TLV."; + reference "0.4.0"; + } + + revision "2017-07-26" { + description + "Update LSDB and fix bugs."; + reference "0.3.2"; + } + + revision "2017-05-15" { + description + "Refactor LSDB."; + reference "0.3.0"; + } + + revision "2017-01-13" { + description + "Remove top-level /isis container"; + reference "0.2.1"; + } + + revision "2016-12-15" { + description + "Add segment routing to IS-IS module"; + reference "0.2.0"; + } + + revision "2016-10-18" { + description + "Initial revision of IS-IS models."; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + identity ISIS_TLV_TYPE { + description + "Base identity for an ISIS TLV type."; + } + + identity ISIS_SUBTLV_TYPE { + description + "Base identity for an ISIS SUB-TLV type."; + } + + identity IS_REACHABILITY_SUBTLVS_TYPE { + base "ISIS_SUBTLV_TYPE"; + description + "Base identity for an ISIS TLV 22, 23, 222, 223, 141 SUB-TLV + type."; + } + + identity IP_REACHABILITY_SUBTLVS_TYPE { + base "ISIS_SUBTLV_TYPE"; + description + "Base identity for an ISIS TLV 135, 235, 236, 237 SUB-TLV + type."; + } + + identity ROUTER_CAPABILITY_SUBTLVS_TYPE { + base "ISIS_SUBTLV_TYPE"; + description + "Base identity for an ISIS TLV 242 SUB-TLV type."; + } + + identity AREA_ADDRESSES { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 1. Intermediate System to Intermediate System Intra- + Domain Routeing Exchange Protocol for use in Conjunction with + the Protocol for Providing the Connectionless-mode Network + Service (ISO 8473), International Standard 10589: 2002, Second + Edition, 2002."; + reference + "ISO 10589"; + } + + identity IIS_NEIGHBORS { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 2. Intermediate System to Intermediate System Intra- + Domain Routeing Exchange Protocol for use in Conjunction with + the Protocol for Providing the Connectionless-mode Network + Service (ISO 8473), International Standard 10589: 2002, Second + Edition, 2002."; + reference + "ISO 10589"; + } + + identity INSTANCE_ID { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 7. An Instance Identifier (IID) to uniquely + identify an IS-IS instance. When the IID = 0, the list of + supported ITIDs MUST NOT be present. An IID-TLV with IID = 0 + MUST NOT appear in an SNP or LSP. When the TLV appears (with a + non-zero IID) in an SNP or LSP, exactly one ITID. MUST be + present indicating the topology with which the PDU is + associated. If no ITIDs or multiple ITIDs are present or the + IID is zero, then the PDU MUST be ignored"; + reference + "RFC6822: IS-IS Multi-Instance"; + } + + identity AUTHENTICATION { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 10.Intermediate System to Intermediate System Intra- + Domain Routeing Exchange Protocol for use in Conjunction with + the Protocol for Providing the Connectionless-mode Network + Service (ISO 8473) International Standard 10589: 2002, Second + Edition, 2002."; + reference + "ISO 10589"; + } + + identity PURGE_OI { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 13. If an IS generates a purge, it SHOULD include + this TLV in the purge with its own system ID. If an IS + receives a purge that does not include this TLV, then it SHOULD + add this TLV with both its own system ID and the system ID of + the IS from which it received the purge. This allows ISs + receiving purges to log the system ID of the originator, or the + upstream source of the purge."; + reference + "RFC6232: Purge Originator Identification TLV"; + } + + identity LSP_BUFFER_SIZE { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 14. The maximum MTU that the advertising system can + receive, expressed in bytes."; + reference + "ISO 10589: LSP Buffer Size TLV"; + } + + identity EXTENDED_IS_REACHABILITY { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 22. An extended IS reachability TLV that has a + different data structure to TLV 2 that introduces the use of + sub-TLV object-group."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering"; + } + + identity IS_NEIGHBOR_ATTRIBUTE { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 23. Identical in format to TLV 22 and included in + Original LSPs or Extended LSPs. Regardless of the type of LSP + in which the TLVs appear, the information pertains to the + neighbor relationship between the Originating System and the IS + identified in the TLV"; + reference + "RFC5311: Simplified Extension of Link State PDU (LSP) Space + for IS-IS"; + } + + identity ISIS_ALIAS_ID { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 24. IS-Alias TLV which extension-capable ISs to + recognize the Originating System of an Extended LSP set. It + identifies the Normal system-id of the Originating System"; + reference + "RFC5311: Simplified Extension of Link State PDU (LSP) Space + for IS-IS"; + } + + identity IPV4_INTERNAL_REACHABILITY { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 128. TLV defines IP addresses within the routing + domain reachable directly via one or more interfaces on this + Intermediate system"; + reference + "RFC1195: OSI ISIS for IP and Dual Environments. RFC5302: + Domain-Wide Prefix Distribution with Two-Level IS-IS"; + } + + identity NLPID { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 129. TLV defines the set Network Layer Protocol + Identifiers for Network Layer protocols that this Intermediate + System is capable of relaying"; + reference + "RFC1195: Use of OSI IS-IS for Routing in TCP/IP and + Dual Environments"; + } + + identity IPV4_EXTERNAL_REACHABILITY { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 130. TLV defines IP addresses outside the routing + domain reachable via interfaces on this Intermediate system. + This is permitted to appear multiple times, and in an LSP with + any LSP number. However, this field must not appear in + pseudonode LSPs"; + reference " + RFC1195: OSI ISIS for IP and Dual Environments. RFC5302: + Domain-Wide Prefix Distribution with Two-Level IS-IS"; + } + + identity IPV4_INTERFACE_ADDRESSES { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 132. The IP address of one or more interfaces + corresponding to the SNPAs enabled on this Intermediate system + (i.e., one or more IP addresses of this router). This is + permitted to appear multiple times, and in an LSP with any LSP + number."; + reference + "RFC1195: Use of OSI IS-IS for Routing in TCP/IP and Dual + Environments"; + } + + identity IPV4_TE_ROUTER_ID { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 134. Traffic Engineering router ID TLV that contains + the 4-octet router ID of the router originating the LSP"; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering"; + } + + identity EXTENDED_IPV4_REACHABILITY { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 135. Extended IP reachability TLV that provides for a + 32-bit metric and adds one bit to indicate that a prefix has + been redistributed _down_ in the hierarchy"; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering"; + } + + identity DYNAMIC_NAME { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 137. The Dynamic hostname TLV is optional. This TLV + may be present in any fragment of a non-pseudonode LSP. The + value field identifies the symbolic name of the router + originating the LSP. This symbolic name can be the FQDN for the + router, it can be a subset of the FQDN, or it can be any string + operators want to use for the router."; + reference + "RFC6233: IS-IS Registry Extension for Purges, RFC 5301: Dynamic + Hostname Exchange Mechanism for IS-IS."; + } + + identity IPV4_SRLG { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 138. IPv4 Shared Risk Link Group TLV"; + reference + "RFC5307: IS-IS Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + } + + identity IPV6_SRLG { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 139. IPv6 Shared Risk Link Group"; + reference + "RFC6119: IPv6 Traffic Engineering in IS-IS"; + } + + identity IPV6_TE_ROUTER_ID { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 140. The IPv6 TE Router ID TLV contains a 16-octet + IPv6 address. A stable global IPv6 address MUST be used, so that + the router ID provides a routable address, regardless of the + state of a node's interfaces. If a router does not implement + traffic engineering, it MAY include or omit the IPv6 TE Router + ID TLV. If a router implements traffic engineering for IPv6, it + MUST include this TLV in its LSP. This TLV MUST NOT be included + more than once in an LSP."; + reference + "RFC6119: IPv6 Traffic Engineering in IS-IS."; + } + + identity MT_ISN { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 222. TLV is aligned with extended IS reachability TLV + type 22 beside an additional two bytes in front at the beginning + of the TLV that. indicate MT membership."; + reference + "RFC5120: M-ISIS: Multi Topology (MT) Routing in Intermediate + System to Intermediate Systems (IS-ISs)"; + } + + identity MT_IS_NEIGHBOR_ATTRIBUTE { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 223. Is is identical in format to TLV 222. In the + event that there is a need to advertise in Extended LSPs such + information associated with neighbors of the Originating System, + it is necessary to define new TLVs to carry the sub-TLV + information."; + reference + "RFC5311: Simplified Extension of Link State PDU (LSP) Space for + IS-IS"; + } + + identity MULTI_TOPOLOGY { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 229. This MT TLV can advertise up to 127 MTs. It is + announced in IIHs and LSP fragment 0, and can occur multiple + times. The resulting MT set SHOULD be the union of all the MT + TLV occurrences in the packet. Any other IS-IS PDU occurrence of + this TLV MUST be ignored. Lack of MT TLV in hellos and fragment + zero LSPs MUST be interpreted as participation of the + advertising interface or router in MT ID #0 only. If a router + advertises MT TLV, it has to advertise all the MTs it + participates in, specifically including topology ID #0 also."; + reference + "RFC5120: M-ISIS: Multi Topology (MT) Routing in Intermediate + System to Intermediate Systems (IS-ISs)"; + } + + identity IPV6_INTERFACE_ADDRESSES { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 232. IPv6 Interface Address TLV that maps directly to + the IP Interface Address TLV in [RFC1195]. We necessarily modify + the contents to be 0-15 16-octet IPv6 interface addresses + instead of 0-63 4-octet IPv4 interface addresses"; + reference "RFC5308: Routing IPv6 with IS-IS."; + } + + identity MT_IPV4_REACHABILITY { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 235. TLV is aligned with extended IP reachability TLV + type 135 beside an additional two bytes in front to indicate MT + membership"; + reference + "RFC5120: M-ISIS: Multi Topology (MT) Routing in Intermediate + System to Intermediate Systems (IS-ISs)"; + } + + identity IPV6_REACHABILITY { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 236. The IPv6 Reachability TLV describes network + reachability through the specification of a routing prefix, + metric information, a bit to indicate if the prefix is being + advertised down from a higher level, a bit to indicate if the + prefix is being distributed from another routing protocol, and + OPTIONALLY the existence of Sub-TLVs to allow for later + extension."; + reference + "RFC5308: Routing IPv6 with IS-IS"; + } + + identity MT_IPV6_REACHABILITY { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 237. TLV is aligned with IPv6 Reachability TLV type + 236 beside an additional two bytes in front to indicate MT + membership."; + reference + "RFC5120: M-ISIS: Multi Topology (MT) Routing in Intermediate + System to Intermediate Systems (IS-ISs)."; + } + + identity ROUTER_CAPABILITY { + base "ISIS_TLV_TYPE"; + description + "ISIS TLV 242. IS-IS TLV named CAPABILITY, formed of multiple + sub-TLVs, which allows a router to announce its capabilities + within an IS-IS level or the entire routing domain."; + reference + "RFC4971: Intermediate System to Intermediate System (IS-IS) + Extensions for Advertising Router Information."; + } + + //sub-TLVs for TLVs 22, 23, 141, 222, 223 + + identity IS_REACHABILITY_ADMIN_GROUP { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 3. Administrative group(color)."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering"; + } + + identity IS_REACHABILITY_LINK_ID { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 4. Link Local/Remote Identifiers."; + reference + "RFC5307: IS-IS Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + } + + identity IS_REACHABILITY_IPV4_INTERFACE_ADDRESS { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 6. IPv4 Interface Address."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering."; + } + + identity IS_REACHABILITY_IPV4_NEIGHBOR_ADDRESS { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 8. IPv4 Neighbor Address."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering."; + } + + identity IS_REACHABILITY_MAX_LINK_BANDWIDTH { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 9. Maximum Link Bandwidth."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering."; + } + + identity IS_REACHABILITY_MAX_RESERVABLE_BANDWIDTH { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 10. Maximum Reservable Bandwidth."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering."; + } + + identity IS_REACHABILITY_UNRESERVED_BANDWIDTH { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 11. Unreserved bandwidth."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering."; + } + + identity IS_REACHABILITY_IPV6_INTERFACE_ADDRESS { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 12. IPv6 Interface Address."; + reference + "RFC6119: IPv6 Traffic Engineering in IS-IS."; + } + + identity IS_REACHABILITY_IPV6_NEIGHBOR_ADDRESS { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 13. IPv6 Neighbor Address."; + reference + "RFC6119: IPv6 Traffic Engineering in IS-IS."; + } + + identity IS_REACHABILITY_EXTENDED_ADMIN_GROUP { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 14. Extended Administrative Group."; + reference + "RFC7308: Extended Administrative Groups in MPLS Traffic + Engineering (MPLS-TE)."; + } + + identity IS_REACHABILITY_TE_DEFAULT_METRIC { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 18. TE Default Metric."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering."; + } + + identity IS_REACHABILITY_LINK_ATTRIBUTES { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 19. Link Attributes."; + reference + "RFC5209: Definition of an IS-IS Link Attribute Sub-TLV."; + } + + identity IS_REACHABILITY_LINK_PROTECTION_TYPE { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 20. Link Protection Type."; + reference + "RFC5307: IS-IS Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS)"; + } + + identity IS_REACHABILITY_BANDWIDTH_CONSTRAINTS { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 22. Bandwidth Constraints."; + reference + "RFC4124: Protocol Extensions for Support of Diffserv-aware MPLS + Traffic Engineering."; + } + + identity IS_REACHABILITY_UNCONSTRAINED_LSP { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 23. Unconstrained LSP."; + reference + "RFC5330: A Link-Type sub-TLV to Convey the Number of Traffic + Engineering Label Switched Paths Signalled with Zero + Reserved Bandwidth across a Link."; + } + + identity IS_REACHABILITY_ADJ_SID { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 31. Adjacency Segment Identifier."; + reference + "draft-ietf-isis-segment-routing-extensions."; + } + + identity IS_REACHABILITY_ADJ_LAN_SID { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 32. Adjacency LAN Segment Identifier."; + reference + "draft-ietf-isis-segment-routing-extensions."; + } + + identity IS_REACHABILITY_LINK_DELAY { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 33. Unidirectional Link Delay."; + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; + } + + identity IS_REACHABILITY_MIN_MAX_LINK_DELAY { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 34. Min/Max Unidirectional Link Delay."; + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; + } + + identity IS_REACHABILITY_LINK_DELAY_VARIATION { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 35. Unidirectional Link Delay Variation."; + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; + } + + identity IS_REACHABILITY_LINK_LOSS { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 36. Unidirectional Link Loss Delay."; + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; + } + + identity IS_REACHABILITY_RESIDUAL_BANDWIDTH { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 37. Unidirectional Residual Bandwidth."; + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; + } + + identity IS_REACHABILITY_AVAILABLE_BANDWIDTH { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 38. Unidirectional Available Bandwidth."; + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; + } + + identity IS_REACHABILITY_UTILIZED_BANDWIDTH { + base "IS_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 39. Unidirectional Utilized Bandwidth."; + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions."; + } + + //sub-TLVs for TLVs 135, 235, 236, 237 + identity IP_REACHABILITY_TAG { + base "IP_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 1. 32-bit Administrative Tag."; + reference + "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 + Reachability."; + } + + identity IP_REACHABILITY_TAG64 { + base "IP_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 2. 64-bit Administrative Tag."; + reference + "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 + Reachability."; + } + + identity IP_REACHABILITY_PREFIX_SID { + base "IP_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 3. Prefix Segment Identifier."; + reference + "draft-ietf-isis-segment-routing-extension."; + } + + identity IP_REACHABILITY_PREFIX_FLAGS { + base "IP_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 4. Prefix Attribute Flags."; + reference + "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 + Reachability."; + } + + identity IP_REACHABILITY_IPV4_ROUTER_ID { + base "IP_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 11. IPv4 Source Router ID."; + reference + "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 + Reachability."; + } + + identity IP_REACHABILITY_IPV6_ROUTER_ID { + base "IP_REACHABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 12. IPv6 Source Router ID."; + reference + "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6 + Reachability."; + } + + + //sub-TLVs for TLVs 242 + + identity ROUTER_CAPABILITY_SR_CAPABILITY { + base "ROUTER_CAPABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 2. Segment Routing Capability."; + reference + "draft-ietf-isis-segment-routing-extensions."; + } + + identity ROUTER_CAPABILITY_SR_ALGORITHM { + base "ROUTER_CAPABILITY_SUBTLVS_TYPE"; + description + "sub-TLV 19. Segment Routing Algorithm."; + reference + "draft-ietf-isis-segment-routing-extensions."; + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-isis-lsp.yang b/vendor/cisco/nx/9.3-14/openconfig-isis-lsp.yang new file mode 100644 index 000000000..86f5950c0 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-isis-lsp.yang @@ -0,0 +1,3604 @@ +submodule openconfig-isis-lsp { + + belongs-to openconfig-isis { + prefix oc-isis; + } + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-inet-types { prefix "inet"; } + import openconfig-isis-types { prefix "oc-isis-types"; } + import openconfig-isis-lsdb-types { prefix "oc-isis-lsdb-types"; } + import openconfig-types { prefix "oc-types"; } + import openconfig-mpls-types { prefix "oc-mpls-types"; } + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net "; + + description + "This sub-module describes a YANG model for the IS-IS Link State + Database (LSDB). + + Portions of this code were derived from IETF RFCs relating to the + IS-IS protocol. + Please reproduce this note if possible. + IETF code is subject to the following copyright and license: + Copyright (c) IETF Trust and the persons identified as authors of + the code. + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, is permitted pursuant to, and subject to the license + terms contained in, the Simplified BSD License set forth in + Section 4.c of the IETF Trust's Legal Provisions Relating + to IETF Documents (http://trustee.ietf.org/license-info)."; + + oc-ext:openconfig-version "0.4.2"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.4.2"; + } + + revision "2018-06-05" { + description + "Fix bugs in when statements."; + reference "0.4.1"; + } + + revision "2018-05-14" { + description + "Update LSDB model to correct Extended IS reach TLV + bug. This change is backwards incompatible due to + adding an additional level of hierarchy to support + multiple instances of the TLV."; + reference "0.4.0"; + } + + revision "2017-07-26" { + description + "Update LSDB and fix bugs."; + reference "0.3.2"; + } + + revision "2017-05-15" { + description + "Refactor LSDB."; + reference "0.3.0"; + } + + revision "2017-01-13" { + description + "Remove top-level /isis container"; + reference "0.2.1"; + } + + revision "2016-12-15" { + description + "Add segment routing to IS-IS module"; + reference "0.2.0"; + } + + revision "2016-10-18" { + description + "Initial revision of IS-IS models."; + reference "0.1.0"; + } + + typedef isis-metric-flags { + type enumeration { + enum INTERNAL { + description + "When this flag is not set, internal metrics are in use."; + } + enum UNSUPPORTED { + description + "When this flag (referred to as the S-bit) is set, then + the metric is unsupported."; + } + } + description + "Type definition for flags used in IS-IS metrics"; + } + + grouping isis-lsdb-link-characteristics-a-bit { + description + "Definition of the A bit, as used in IS-IS link delay TLVs."; + + leaf a-bit { + type boolean; + description + "The A bit is set when the measured value of this parameter + exceeds its configured maximum threshold. The A bit is cleared + when the measured value falls below its configured reuse + threshold."; + } + } + + grouping isis-lsdb-tlv-nlpid-state { + description + "NLP ID parameters for IS-IS."; + + leaf-list nlpid { + type enumeration { + enum IPV4 { + description "IPv4 Address family."; + } + enum IPV6 { + description "IPv6 Address family."; + } + } + description + "Protocol supported. IPv4 is defined as (0xcc) and IPv6 - + (0x8e)"; + reference + "RFC1195: Use of OSI IS-IS for Routing in TCP/IP and + Dual Environments. TLV 129. "; + } + } + + grouping isis-lsdb-subtlv-type-state { + description + "Per-subTLV type operational state parameters for ISIS."; + + leaf type { + type identityref { + base oc-isis-lsdb-types:ISIS_SUBTLV_TYPE; + } + description + "The type of subTLV being described. The type of subTLV is + expressed as a canonical name."; + } + } + + grouping isis-lsdb-tlv-type-state { + description + "Per-subTLV type operational state parameters for ISIS."; + + leaf type { + type identityref { + base oc-isis-lsdb-types:ISIS_TLV_TYPE; + } + description + "The type of TLV being described. The type of TLV is + expressed as a canonical name."; + } + } + + grouping is-reachability-neighbor-state { + description + "This grouping defines is-reachability neighbor."; + + container subtlvs { + description + "This container describes IS Neighbor sub-TLVs."; + + list subtlv { + key "type"; + + description + "List of subTLV types in the LSDB for the specified TLV."; + + leaf type { + type leafref { + path "../state/type"; + } + description + "Reference to the sub-TLV type."; + } + + container state { + description + "State parameters of IS neighbor state"; + + uses isis-lsdb-subtlv-type-state; + } + + container admin-group { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_ADMIN_GROUP'" { + description + "Only include the administrative group container when + the sub-TLV is type 3"; + } + description + "This container defines sub-TLV 3."; + + container state { + description + "State parameters of sub-TLV 3."; + + leaf-list admin-group { + type uint32; + description + "The administrative group sub-TLV contains a 4-octet + bit mask assigned by the network administrator. Each + set bit corresponds to one administrative group + assigned to the interface. By convention, the least + significant bit is referred to as group 0, and the + most significant bit is referred to as group 31."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering. + sub-TLV 3: TLV 22,23,141,222, 223."; + } + } + } + + container link-id { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_ID'" { + description + "Only include the link identifier container when the + sub-TLV is type 4"; + } + description + "This container defines sub-TLV 4."; + + container state { + description + "State parameters of sub-TLV 4."; + + leaf local { + type uint32; + description + "The value field of this sub-TLV contains 4 octets of + Link Local Identifier followed by 4 octets of Link + Remote Identifier."; + reference + "RFC5307: IS-IS Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS). sub-TLV 3: TLV + 22,23,141,222, 223."; + } + + leaf remote { + type uint32; + description + "If the Link Remote Identifier is unknown, it is set + to 0."; + reference + "RFC5307: IS-IS Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS). sub-TLV 3: TLV + 22,23,141,222, 223."; + } + } + } + + container ipv4-interface-address { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_IPV4_INTERFACE_ADDRESS'" { + description + "Only include the IPv4 interface address group container + when the sub-TLV is type 6"; + } + description + "This container defines sub-TLV 6."; + + container state { + description + "State parameters of sub-TLV 6."; + + leaf-list address { + type inet:ipv4-address; + description + "A 4-octet IPv4 address for the interface described by + the (main) TLV. This sub-TLV can occur multiple + times."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering. + sub-TLV 6: TLV 22,23,41,222,223."; + } + } + } + + container ipv4-neighbor-address { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_IPV4_NEIGHBOR_ADDRESS'" { + description + "Only include the IPv4 neighbor address container when + the sub-TLV is type 8."; + } + description + "This container defines sub-TLV 8."; + + container state { + description + "State parameters of sub-TLV 8."; + + leaf-list address { + type inet:ipv4-address; + description + "A single IPv4 address for a neighboring router on + this link. This sub-TLV can occur multiple times."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering. + sub-TLV 8: TLV 22,23, 141,222,223."; + } + } + } + + container max-link-bandwidth { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_MAX_LINK_BANDWIDTH'" { + description + "Only include the maximum link bandwidth container when + the sub-TLV is type 9."; + } + description + "This container defines sub-TLV 9."; + + container state { + description + "State parameters of sub-TLV 9."; + + leaf bandwidth { + type oc-types:ieeefloat32; + units "bytes per second"; + description + "The maximum bandwidth that can be used on this link + in this direction (from the system originating the LSP + to its neighbors). It is encoded in 32 bits in IEEE + floating point format. The units are bytes (not + bits!) per second."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering. + sub-TLV 9: TLV 22,23,141,222,223."; + } + } + } + + container max-reservable-link-bandwidth { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_MAX_RESERVABLE_BANDWIDTH'" { + description + "Only include the maximum reservable link bandwidth + container when the sub-TLV type is 10."; + } + description + "This container defines sub-TLV 10."; + + container state { + description + "State parameters of sub-TLV 10."; + + leaf bandwidth { + type oc-types:ieeefloat32; + units "bytes per second"; + description + "The maximum amount of bandwidth that can be reserved + in this direction on this link. Note that for + oversubscription purposes, this can be greater than + the bandwidth of the link. It is encoded in 32 bits + in IEEE floating point format. The units are bytes + (not bits!) per second."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering. + Sub-TLV 10: TLV 22,23,141,222,223."; + } + } + } + + container unreserved-bandwidth { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_UNRESERVED_BANDWIDTH'" { + description + "Only include the unreserved bandwidth container when + the sub-TLV type is 11."; + } + description + "This container defines unreserved-bandwidth. The units + are bytes per second."; + + reference + "RFC5305: IS-IS Extensions for Traffic Engineering. sub- + TLV 11: TLV 22,23,141,222,223"; + + list setup-priority { + key "priority"; + + leaf priority { + type leafref { + path "../state/priority"; + } + description + "Reference to the setup priority to which the + unreserved bandwidth corresponds."; + } + + description + "Setup priority (0 through 7) for unreserved + bandwidth."; + + container state { + description + "State parameters of IS Extended Reachability sub-TLV + 11."; + + leaf priority { + type uint8 { + range "0..7"; + } + description + "Setup priority level of 0 through 7 to be used by + Unreserved Bandwidth sub-TLV 11."; + } + + leaf bandwidth { + type oc-types:ieeefloat32; + units "bytes per second"; + description + "The amount of bandwidth reservable in this + direction on this link. Note that for + oversubscription purposes, this can be greater than + the bandwidth of the link. It contains eight 32-bit + IEEE floating point numbers(one for each priority). + The units are bytes (not bits!) per second. The + values correspond to the bandwidth that can be + reserved with a setup priority of 0 through 7, + arranged in increasing order with priority 0 + occurring at the start of the sub-TLV, and priority + 7 at the end of the sub-TLV."; + } + } + } + } + + container ipv6-interface-address { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_IPV6_INTERFACE_ADDRESS'" { + description + "Only include the IPv6 interface address when the + sub-TLV type is 12."; + } + description + "This container defines sub-TLV 12."; + + container state { + description + "State parameters of sub-TLV 12."; + + leaf-list address { + type inet:ipv6-address; + description + "Contains a 16-octet IPv6 address for the interface + described by the containing Extended IS Reachability + TLV. This sub-TLV can occur multiple times."; + reference + "RFC6119: IPv6 Traffic Engineering in IS-IS. sub-TLV + 12: TLV 22,23,141,222,223."; + } + } + } + + container ipv6-neighbor-address { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_IPV6_NEIGHBOR_ADDRESS'" { + description + "Only include the IPv6 neighbor address when the + sub-TLV type is 13."; + } + description + "This container defines sub-TLV 13."; + + container state { + description + "State parameters of sub-TLV 13."; + + leaf-list address { + type inet:ipv6-address; + description + "Contains a 16-octet IPv6 address for a neighboring + router on the link described by the (main) TLV. This + sub-TLV can occur multiple times."; + reference + "RFC6119: IPv6 Traffic Engineering in IS-IS. sub-TLV + 13: ISIS TLV 22,23,141,222,223."; + } + } + } + + container extended-admin-group { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_EXTENDED_ADMIN_GROUP'" { + description + "Only include the extended admin group when the + sub-TLV type is 14."; + } + description + "This container defines sub-TLV 14."; + container state { + description + "State parameters of sub-TLV 14."; + + leaf-list extended-admin-group { + type uint32; + description + "The extended-admin-group sub-TLV is used in addition + to the Administrative Groups when it is desirable to + make more than 32 colors available for advertisement + in a network."; + reference + "RFC7308: Extended Administrative Groups in MPLS + Traffic Engineering (MPLS-TE). sub-TLV 14: TLV + 22,23,141,222,223."; + } + } + } + + container te-default-metric { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_TE_DEFAULT_METRIC'" { + description + "Only include the default traffic engineering metric + container when the sub-TLV type is 18."; + } + description + "This container defines sub-TLV 18."; + container state { + description + "State parameters of sub-TLV 18."; + + leaf metric { + type uint32; + description + "This metric is administratively assigned and can be + used to present a differently weighted topology to + traffic engineering SPF calculations. To preclude + overflow within a traffic engineering SPF + implementation, all metrics greater than or equal to + MAX_PATH_METRIC SHALL be considered to have a metric + of MAX_PATH_METRIC."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering. + sub-TLV 18: TLV 22,23,141,222,223."; + } + } + } + + container link-attributes { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_ATTRIBUTES'" { + description + "Only include the link attributes container when the + sub-TLV is type 19."; + } + description + "This container defines link-attributes."; + + container state { + description + "State parameters of IS Extended Reachability sub-TLV + 19."; + + leaf-list local-protection { + type enumeration { + enum LOCAL_PROTECTION { + description + "If set, local protection is available for the + link."; + } + enum LINK_EXCLUDED { + description + "If set, the link is excluded from local + protection."; + } + } + description + "Link local-protection attributes."; + + reference + "RFC5029: Definition of an IS-IS Link Attribute Sub- + TLV. TLV 22, sub-TLV 19."; + } + } + } + + container link-protection-type { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_PROTECTION_TYPE'" { + description + "Only include the link protection type container when + the sub-TLV type 20."; + } + description + "ISIS LSDB parameters relating to the type of link + protection offered."; + + container state { + description + "State parameters of sub-TLV 20."; + + leaf-list type { + type enumeration { + enum EXTRA_TRAFFIC { + description + "If set the link has extra traffic protection. If + the link is of type Extra Traffic, it means that + the link is protecting another link or links. The + LSPs on a link of this type will be lost if any of + the links it is protecting fail."; + } + enum UNPROTECTED { + description + "If set, the link is unprotected. If the link is + of type Unprotected, it means that there is no + other link protecting this link. The LSPs on a + link of this type will be lost if the link + fails."; + } + enum SHARED { + description + "If set, the link has shared protection. If the + link is of type Shared, it means that there are + one or more disjoint links of type Extra Traffic + that are protecting this link. These Extra + Traffic links are shared between one or more links + of type Shared."; + } + enum ONE_ONE { + description + "If set, the link has dedicated 1:1 protection. If + the link is of type Dedicated 1:1, it means that + there is one dedicated disjoint link of type Extra + Traffic that is protecting this link."; + } + enum PLUS_ONE { + description + "If set, the link has dedicated 1+1 protection. If + the link is of type Dedicated 1+1, it means that a + dedicated disjoint link is protecting this link. + However, the protecting link is not advertised in + the link state database and is therefore not + available for the routing of LSPs."; + } + enum ENHANCED { + description + "If set the link has enhanced protection. If the + link is of type Enhanced, it means that a + protection scheme that is more reliable than + Dedicated 1+1, e.g., 4 fiber BLSR/MS-SPRING, is + being used to protect this link."; + } + } + description + "Link protection capabilities."; + reference + "RFC5307: IS-IS Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS). sub-TLV 20: + TLV 22,23,141,222,223."; + } + } + } + + container bandwidth-constraints { + when "../state/type =" + + "'oc-isis-lsdb-types:IS_REACHABILITY_BANDWIDTH_CONSTRAINTS'" { + description + "Only include the bandwidth constraints container when + the sub-TLV is type 22."; + } + description + "This container defines bandwidth-constraints. For DS-TE, + the existing Maximum Reservable link bandwidth parameter + is retained, but its semantics is generalized and + interpreted as the aggregate bandwidth constraint across + all Class-Types"; + + reference + "RFC4124: Protocol Extensions for Support of Diffserv- + aware MPLS Traffic Engineering. sub-TLV 22: TLV 22, 23, + 141, 222,223"; + + list bandwidth-constraint { + key "model-id"; + + description + "List of the Bandwidth Constraints sub-TLV instances + present in the TLV."; + + leaf model-id { + type leafref { + path "../state/model-id"; + } + description + "Reference to the model ID associated with the + instance of the Bandwidth Constraints sub-TLV."; + } + + container state { + description + "State parameters of IS Extended Reachability sub-TLV + 22."; + + leaf model-id { + type uint8; + description + "Identifier for the Bandwidth Constraints Model + currently in use by the LSR initiating the IGP + advertisement."; + } + } + + container constraints { + description + "Constraints contained within the Bandwidth + Constraints sub-TLV"; + + list constraint { + key "constraint-id"; + + description + "List of the constraints within the Bandwidth + Constraints sub-TLV. The BC0 level is indicated by + the constraint-id leaf being set to 0, with BCN + being indicated by constraint-id N."; + + leaf constraint-id { + type leafref { + path "../state/constraint-id"; + } + description + "Reference to the unique ID for the BCN level."; + } + + container state { + description + "Operational state parameters of the BCN level"; + + leaf constraint-id { + type uint32; + description + "Unique reference for the bandwidth constraint level. BC0 + is indicated by this leaf being set to zero, with BCN + represented by this leaf being set to N."; + } + + leaf bandwidth { + type oc-types:ieeefloat32; + units "bytes per second"; + description + "The bandwidth constraint, expressed as a 32-bit IEEE + floating point number expressed in bytes per second."; + } + } + } + } + } + } + + container unconstrained-lsp { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_UNCONSTRAINED_LSP'" { + description + "Only include the unconstrained LSP container when the + sub-TLV is type 23."; + } + description + "This container defines sub-TLV 23."; + container state { + description + "State parameters of sub-TLV 23."; + + uses isis-lsdb-subtlv-type-state; + + leaf count { + type uint16; + description + "Unconstrained TE LSP count(TE Label Switched Paths + (LSPs) signalled with zero bandwidth)."; + reference + "RFC5330: A Link-Type sub-TLV to Convey the Number of + Traffic Engineering Label Switched Paths Signalled + with Zero Reserved Bandwidth across a Link. sub-TLV + 23: TLV 22,23,141,222,223"; + } + } + } + + container adjacency-sids { + when "../state/type = 'oc-isis-lsdb-types:IS_REACHABILITY_ADJ_SID'" { + description + "Only include the adjacency SIDs container when the + sub-TLV type is 31"; + } + + description + "This container defines segment routing adjacency SIDs."; + + list adjacency-sid { + key "value"; + + description + "Adjacency Segment-IDs List. An IGP-Adjacency Segment is + an IGP segment attached to a unidirectional adjacency or + a set of unidirectional adjacencies. By default, an IGP- + Adjacency Segment is local to the node which advertises + it."; + + leaf value { + type leafref { + path "../state/value"; + } + description + "Reference to the value of the Adjacency-SID."; + } + + container state { + description + "State parameters of Adjacency-SID."; + + leaf value { + type uint32; + description + "Adjacency-SID value."; + } + + leaf-list flags { + type enumeration { + enum ADDRESS_FAMILY { + description + "Address-family flag. When unset, the Adj-SID + refers to an adjacency with outgoing IPv4 + encapsulation. If set then the Adj-SID refers to + an adjacency with outgoing IPv6 encapsulation."; + } + enum BACKUP { + description + "Backup flag. When set, the Adj-SID refers to an + adjacency being protected (e.g.: using IPFRR or + MPLS-FRR)."; + } + enum VALUE { + description + "Value flag. When set, the SID carries a value + (instead of an index). By default the flag is + SET."; + } + enum LOCAL { + description + "Local flag. When set, the value/index carried + by the SID has local significance. By default + the flag is SET."; + } + enum SET { + description + "Set flag. When set, the S-Flag indicates that + the Adj-SID refers to a set of adjacencies."; + } + } + description + "Flags associated with Adj-Segment-ID."; + } + + leaf weight { + type uint8; + description + "Value that represents the weight of the Adj-SID for + the purpose of load balancing."; + } + } + } + + reference + "draft-ietf-isis-segment-routing-extensions. sub-TLV 31: + TLV 22, 222, 223, 141. "; + } + + container lan-adjacency-sids { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_ADJ_LAN_SID'" { + description + "Only include the LAN adjacency SID container when + the sub-TLV is type 32."; + } + description + "This container defines segment routing LAN adjacency + SIDs"; + + list lan-adjacency-sid { + key "value"; + + description + "Adjacency Segment-IDs List. An IGP-Adjacency Segment is + an IGP segment attached to a unidirectional adjacency or + a set of unidirectional adjacencies. By default, an IGP- + Adjacency Segment is local to the node which advertises + it."; + + leaf value { + type leafref { + path "../state/value"; + } + description + "Reference to the value of the LAN Adjacency-SID."; + } + + container state { + description + "State parameters of LAN Adjacency-SID."; + + leaf value { + type uint32; + description + "LAN Adjacency-SID value."; + } + + leaf-list flags { + type enumeration { + enum ADDRESS_FAMILY { + description + "Address-family flag. When unset, the Adj-SID + refers to an adjacency with outgoing IPv4 + encapsulation. If set then the Adj-SID refers to + an adjacency with outgoing IPv6 encapsulation."; + } + enum BACKUP { + description + "Backup flag. When set, the Adj-SID refers to an + adjacency being protected (e.g.: using IPFRR or + MPLS-FRR)."; + } + enum VALUE { + description + "Value flag. When set, the SID carries a value + (instead of an index). By default the flag is + SET."; + } + enum LOCAL { + description + "Local flag. When set, the value/index carried + by the SID has local significance. By default + the flag is SET."; + } + enum SET { + description + "Set flag. When set, the S-Flag indicates that + the Adj-SID refers to a set of adjacencies."; + } + } + description + "Flags associated with LAN-Adj-Segment-ID."; + } + + leaf weight { + type uint8; + description + "Value that represents the weight of the Adj-SID + for the purpose of load balancing."; + } + + leaf neighbor-id { + type oc-isis-types:system-id; + description + "System ID of the neighbor associated with the LAN- + Adj-Segment-ID value."; + } + } + } + + reference + "draft-ietf-isis-segment-routing-extensions. sub-TLV 32: + TLV 22, 222, 223, 141."; + } + + container link-delay { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_DELAY'" { + description + "Include the link delay container only when the sub-TLV + type is type 33."; + } + description + "This container defines unidirectional link delay."; + + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric + Extensions. sub-TLV 33: TLV 22, 23, 141, 222, 223."; + + container state { + description + "State parameters of IS Extended Reachability sub-TLV + 33."; + + uses isis-lsdb-link-characteristics-a-bit; + + leaf delay { + type uint32; + units microseconds; + description + "Average link delay value (in microseconds) between + two directly connected IS-IS neighbors over a + configurable interval."; + } + } + } + + container min-max-link-delay { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_MIN_MAX_LINK_DELAY'" { + description + "Only include the min/max link delay container when the + sub-TLV is type 34."; + } + description + "This container defines min/max link delay."; + + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric + Extensions. sub-TLV 34: TLV 22, 23, 141, 222, 223."; + + container state { + description + "State parameters of IS Extended Reachability sub-TLV + 34."; + + uses isis-lsdb-link-characteristics-a-bit; + + leaf min-delay { + type uint32; + units microseconds; + description + "Minimum measured link delay value(in microseconds) + between two directly connected IS-IS neighbors over a + configurable interval."; + } + + leaf max-delay { + type uint32; + units microseconds; + description + "Maximum measured link delay value(in microseconds) + between two directly connected IS-IS neighbors over a + configurable interval."; + } + } + } + + container link-delay-variation { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_DELAY_VARIATION'" { + description + "Only include the link delay variation container when + the sub-TLV is type 35."; + } + description + "This container defines unidirectional link delay + variation."; + + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric + Extensions. sub-TLV 35: TLV 22,23,141,222,223."; + + container state { + description + "State parameters of IS Extended Reachability sub-TLV + 35."; + + leaf delay { + type uint32; + units microseconds; + description + "Average link delay between two directly connected IS- + IS neighbors over a configurable interval."; + } + } + } + + container link-loss { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_LINK_LOSS'" { + description + "Only include the link loss container when the sub-TLV + is type 36."; + } + description + "This container defines unidirectional link loss delay."; + + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric + Extensions. sub-TLV 36: TLV 22, 23, 141, 222, 223."; + + container state { + description + "State parameters of IS Extended Reachability sub-TLV + 36."; + + uses isis-lsdb-link-characteristics-a-bit; + + leaf link-loss { + type uint32; + description + "Link packet loss as a percentage of the total traffic + sent over a configurable interval. The basic unit is + 0.000003%, where (2^24 - 2) is 50.331642%. This value + is the highest packet-loss percentage that can be + expressed (the assumption being that precision is more + important on high-speed links than the ability to + advertise loss rates greater than this, and that high- + speed links with over 50% loss are unusable). + Therefore, measured values that are larger than the + field maximum SHOULD be encoded as the maximum + value."; + } + } + } + + container residual-bandwidth { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_RESIDUAL_BANDWIDTH'" { + description + "Only include the resdiual bandwidth container when the + sub-TLV is type 37."; + } + description + "This container defines unidirectional residual + bandwidth."; + + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric + Extensions. sub-TLV 37: TLV 22, 23, 141, 222, 223."; + + container state { + description + "State parameters of IS Extended Reachability sub-TLV + 37."; + + leaf bandwidth { + type oc-types:ieeefloat32; + units "bytes per second"; + description + "Residual bandwidth on a link,forwarding adjacency + [RFC4206], or bundled link in IEEE floating-point + format with units of bytes per second. For a link or + forwarding adjacency, residual bandwidth is defined to + be the Maximum Bandwidth [RFC5305] minus the bandwidth + currently allocated to RSVP-TE label switched paths. + For a bundled link, residual bandwidth is defined to + be the sum of the component link residual + bandwidths."; + } + } + } + + container available-bandwidth { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_AVAILABLE_BANDWIDTH'" { + description + "Only include the available bandwdith container when the + sub-TLV is type 38."; + } + description + "This container defines unidirectional lavailable + bandwidth."; + + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric + Extensions. sub-TLV 38: TLV 22, 23, 141, 222, 223."; + + container state { + description + "State parameters of IS Extended Reachability sub-TLV + 38."; + + uses isis-lsdb-subtlv-type-state; + + leaf bandwidth { + type oc-types:ieeefloat32; + units "bytes per second"; + description + "The available bandwidth on a link, forwarding + adjacency, or bundled link in IEEE floating-point + format with units of bytes per second. For a link or + forwarding adjacency, available bandwidth is defined + to be residual bandwidth minus the measured bandwidth + used for the actual forwarding of non-RSVP-TE label + switched path packets. For a bundled link, available + bandwidth is defined to be the sum of the component + link available bandwidths minus the measured bandwidth + used for the actual forwarding of non-RSVP-TE label + switched path packets. For a bundled link, available + bandwidth is defined to be the sum of the component + link available bandwidths."; + } + } + } + + container utilized-bandwidth { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_REACHABILITY_UTILIZED_BANDWIDTH'" { + description + "Only include the utilized bandwidth container when the + TLV is type 39."; + } + description + "This container defines unidirectional utilized + bandwidth."; + + reference + "RFC7810: IS-IS Traffic Engineering (TE) Metric + Extensions. sub-TLV 39: TLV 22, 23, 141, 222, 223."; + + container state { + description + "State parameters of IS Extended Reachability sub-TLV + 39."; + + uses isis-lsdb-subtlv-type-state; + + leaf bandwidth { + type oc-types:ieeefloat32; + units "bytes per second"; + description + "The bandwidth utilization on a link, forwarding + adjacency, or bundled link in IEEE floating-point + format with units of bytes per second. For a link or + forwarding adjacency, bandwidth utilization represents + the actual utilization of the link (i.e., as measured + by the advertising node). For a bundled link, + bandwidth utilization is defined to be the sum of the + component link bandwidth utilizations."; + } + } + } + } + } + + uses isis-lsdb-undefined-subtlv; + } + + grouping isis-lsdb-undefined-tlv { + description + "Grouping for unknown TLVs in the IS-IS LSDB"; + + container undefined-tlvs { + description + "Surrounding container for a list of unknown TLVs."; + + list undefined-tlv { + key "type"; + description + "List of TLVs that are not defined within the model, or are + not recognised by the system."; + + leaf type { + type leafref { + path "../state/type"; + } + description + "Reference to the undefined TLV's type"; + } + + container state { + description + "State parameters of the undefined TLV."; + + uses undefined-tlv-state; + } + } + } + } + + grouping isis-lsdb-undefined-subtlv { + description + "Grouping for unknown Sub-TLVs in the IS-IS LSDB."; + + container undefined-subtlvs { + description + "This container describes undefined ISIS TLVs."; + + list undefined-subtlv { + key "type"; + + description + "Sub-TLVs that are not defined in the model or not + recognised by system."; + + leaf type { + type leafref { + path "../state/type"; + } + description + "Reference to the type of the undefined sub-TLV"; + } + + container state { + description + "State parameters of the undefined sub-TLV."; + + uses undefined-subtlv-state; + } + } + } + } + + grouping isis-lsdb-prefix-state { + description + "This grouping defines prefix reachability."; + + container subtlvs { + description + "This container describes IS prefix sub-TLVs."; + + list subtlv { + key "type"; + + description + "List of subTLV types in the LSDB for the specified TLV."; + + leaf type { + type leafref { + path "../state/type"; + } + description + "Reference to the sub-TLV type"; + } + + container state { + description + "State parameters for a prefix."; + + uses isis-lsdb-subtlv-type-state; + } + + container tag { + when "../state/type = " + + "'oc-isis-lsdb-types:IP_REACHABILITY_TAG'" { + description + "Only include the tag container when the sub-TLV is type + 1."; + } + description + "This container defines sub-TLV 1."; + + container state { + description + "State parameters of sub-TLV 1."; + + leaf-list tag32 { + type uint32; + description + "List of 32-bit tags associated with the prefix. Example + uses of these tags include carrying BGP standard (or + extended) communities and controlling redistribution + between levels and areas, different routing protocols, + or multiple instances of IS-IS running on the same + router."; + reference + "RFC5130: A Policy Control Mechanism in IS-IS Using + Administrative Tags. sub-TLV 1."; + } + } + } + + container tag64 { + when "../state/type = " + + "'oc-isis-lsdb-types:IP_REACHABILITY_TAG64'" { + description + "Only include the tag64 container when the sub-TLV is type + 2."; + } + description + "This container defines sub-TLV 2."; + + container state { + description + "State parameters of sub-TLV 2."; + + leaf-list tag64 { + type uint64; + description + "List of 64-bit tags associated with the prefix. Example + uses of these tags include carrying BGP standard (or + extended) communities and controlling redistribution + between levels and areas, different routing protocols, + or multiple instances of IS-IS running on the same + router."; + reference + "RFC5130: A Policy Control Mechanism in IS-IS Using + Administrative Tags. sub-TLV 2."; + } + } + } + + container flags { + when "../state/type = " + + "'oc-isis-lsdb-types:IP_REACHABILITY_PREFIX_FLAGS'" { + description + "Only include the flags container when the sub-TLV is type + 4."; + } + description + "This container defines sub-TLV 4."; + + container state { + description + "State parameters of sub-TLV 4."; + + uses isis-lsdb-subtlv-type-state; + + leaf-list flags { + type enumeration { + enum EXTERNAL_FLAG { + description + "External prefix flag. Set if the prefix has been + redistributed from another protocol. This includes + the case where multiple virtual routers are + supported and the source of the redistributed prefix + is another IS-IS instance."; + } + enum READVERTISEMENT_FLAG { + description + "Readvertisement flag. Set when the prefix has been + leaked from one level to another (upwards or + downwards)."; + } + enum NODE_FLAG { + description + "Node flag. Set when the prefix identifies the + advertising router, i.e., the prefix is a host + prefix advertising a globally reachable address + typically associated with a loopback address."; + } + } + description + "Additional prefix reachability flags."; + + reference + "RFC7794: IS-IS Prefix Attributes for Extended IPv4 and + IPv6 Reachability. sub-TLV 4."; + } + } + } + + container ipv4-source-router-id { + when "../state/type = " + + "'oc-isis-lsdb-types:IP_REACHABILITY_IPV4_ROUTER_ID'" { + description + "Only include the IPv4 Source Router ID container when + the sub-TLV is type 11."; + } + description + "This container defines sub-TLV 11."; + + container state { + description + "State parameters of sub-TLV 11."; + + uses isis-lsdb-subtlv-type-state; + + leaf router-id { + type inet:ipv4-address; + description + "IPv4 Source router ID address. In cases where the + advertisement is an identifier for the advertising + router (e.g., with the N-flag set in the Prefix + Attribute Flags sub-TLV), it may be useful for other + routers to know the source of the advertisement. When + reachability advertisement is leaked from one level to + another, Router ID advertised is always the Router ID + of the IS-IS instance that originated the + advertisement. This would be true even if the prefix + had been learned from another protocol."; + reference + "RFC7794: IS-IS Prefix Attributes for Extended IPv4 + and IPv6 Reachability. sub-TLV 11"; + } + } + } + + container ipv6-source-router-id { + when "../state/type = " + + "'oc-isis-lsdb-types:IP_REACHABILITY_IPV6_ROUTER_ID'" { + description + "Only include the IPv6 Source Router ID container when + the sub-TLV is type 12."; + } + description + "This container defines sub-TLV 12."; + + container state { + description + "State parameters of sub-TLV 12."; + + uses isis-lsdb-subtlv-type-state; + + leaf router-id { + type inet:ipv6-address; + description + "IPv6 Source router ID address. In cases where the + advertisement is an identifier for the advertising + router (e.g., with the N-flag set in the Prefix + Attribute Flags sub-TLV), it may be useful for other + routers to know the source of the advertisement. When + reachability advertisement is leaked from one level to + another, Router ID advertised is always the Router ID + of the IS-IS instance that originated the + advertisement. This would be true even if the prefix + had been learned from another protocol."; + reference + "RFC7794: IS-IS Prefix Attributes for Extended IPv4 + and IPv6 Reachability. sub-TLV 12."; + } + } + } + + uses isis-lsdb-prefix-sid-state; + } + } + + uses isis-lsdb-undefined-subtlv; + } + + grouping isis-lsdb-prefix-sid-state { + description + "This grouping defines ISIS Prefix SID."; + + container prefix-sids { + when "../state/type = " + + "'oc-isis-lsdb-types:IP_REACHABILITY_PREFIX_SID'" { + description + "Only include the Prefix SID container when + the sub-TLV is type 3."; + } + description + "This container defines segment routing extensions for + prefixes."; + + reference + "draft-ietf-isis-segment-routing-extensions. sub-TLV 3: TLV + 135, 235, 236, 237."; + + list prefix-sid { + key "value"; + + description + "Prefix Segment-ID list. IGP-Prefix Segment is an IGP segment + attached to an IGP prefix. An IGP-Prefix Segment is global + (unless explicitly advertised otherwise) within the SR/IGP + domain."; + + leaf value { + type leafref { + path "../state/value"; + } + description + "Reference to the value of the prefix SID."; + } + + container state { + description + "State parameters for Prefix-SID."; + + leaf value { + type uint32; + description + "IGP Prefix-SID value."; + } + + leaf-list flags { + type enumeration { + enum READVERTISEMENT { + description + "Readvertisment flag. When set, the prefix to which + this Prefix-SID is attached, has been propagated by + the router either from another level or from + redistribution."; + } + enum NODE { + description + "Node flag. When set, the Prefix-SID refers to the + router identified by the prefix. Typically, the + N-Flag is set on Prefix-SIDs attached to a router + loopback address."; + } + enum NO_PHP { + description + "Penultimate-Hop-Popping flag. When set, then the + penultimate hop MUST NOT pop the Prefix-SID before + delivering the packet to the node that advertised + the Prefix-SID."; + } + enum EXPLICIT_NULL { + description + "Explicit-Null flag. When set, any upstream neighbor + of the Prefix-SID originator MUST replace the + Prefix-SID with a Prefix-SID having an Explicit-NULL + value (0 for IPv4 and 2 for IPv6) before forwarding + the packet."; + } + enum VALUE { + description + "Value flag. When set, the Prefix-SID carries a + value (instead of an index). By default the flag is + UNSET."; + } + enum LOCAL { + description + "Local flag. When set, the value/index carried by + the Prefix-SID has local significance. By default + the flag is UNSET."; + } + } + description + "Flags associated with Prefix Segment-ID."; + } + + leaf algorithm { + type uint8; + description + "Prefix-SID algorithm to be used for path computation."; + } + } + } + } + } + + grouping isis-lsdb-common-metric-specification { + description + "Common definitions of the metric in IS-IS."; + + container default-metric { + description + "This container defines ISIS Default Metric."; + + container state { + description + "State parameters for default-metric."; + + leaf flags { + type enumeration { + enum INTERNAL { + description + "When set to zero, indicates internal metrics."; + } + } + description + "ISIS Default-Metric Flags."; + } + + leaf metric { + type oc-isis-types:narrow-metric; + description + "ISIS default metric value. This is a metric understood by + every Intermediate system in the domain. Each circuit + shall have a positive integral value assigned for this + metric. The value may be associated with any objective + function of the circuit, but by convention is intended to + measure the capacity of the circuit for handling traffic, + for example, its throughput in bits-per-second. Higher + values indicate a lower capacity."; + } + } + } + + container delay-metric { + description + "This container defines the ISIS delay metric."; + + container state { + description + "State parameters of delay-metric."; + + leaf metric { + type oc-isis-types:narrow-metric; + description + "ISIS delay metric value. This metric measures the transit + delay of the associated circuit. It is an optional metric, + which if assigned to a circuit shall have a positive + integral value. Higher values indicate a longer transit + delay."; + } + + leaf-list flags { + type isis-metric-flags; + description + "ISIS Delay Metric Flags."; + } + } + } + + container expense-metric { + description + "This container defines the ISIS expense metric."; + + container state { + description + "State parameters of expense-metric."; + + leaf metric { + type oc-isis-types:narrow-metric; + description + "ISIS expense metric value. This metric measures the + monetary cost of utilising the associated circuit. It is + an optional metric, which if assigned to a circuit shall + have a positive integral value1). Higher values indicate a + larger monetary expense."; + } + + leaf-list flags { + type isis-metric-flags; + description + "ISIS Expense Metric Flags."; + } + } + } + + container error-metric { + description + "This container defines the ISIS error metric."; + + container state { + description + "State parameters of error-metric."; + + leaf metric { + type oc-isis-types:narrow-metric; + description + "ISIS error metric value. This metric measures the + residual error probability of the associated circuit. It + is an optional metric, which if assigned to a circuit + shall have a non-zero value. Higher values indicate a + larger probability of undetected errors on the circuit."; + } + + leaf-list flags { + type isis-metric-flags; + description + "IS-IS error metric flags."; + } + } + } + } + + grouping isis-lsdb-neighbor { + description + "This grouping defines attributes of an ISIS standard + neighbor."; + + container state { + description + "State parameters of IS standard neighbor."; + + leaf system-id { + type oc-isis-types:system-id; + description + "System-ID of IS neighbor."; + } + } + + uses isis-lsdb-common-metric-specification; + + } + + grouping ipv4-prefix-attributes-state { + description + "This group defines attributes of an IPv4 standard prefix."; + + container state { + description + "State parameters of IPv4 standard prefix."; + + leaf up-down { + type boolean; + description + "The up/down bit. Set if a prefix is advertised from a + higher level to a lower level (e.g., level 2 to level 1), + indicating that the prefix has traveled down the hierarchy. + Prefixes that have the up/down bit set may only be + advertised down the hierarchy, i.e., to lower levels. When a + prefix is first injected into IS-IS, the bit is UNSET."; + } + + leaf prefix { + type inet:ipv4-prefix; + description + "IPv4 prefix contained within reachability TLVs."; + } + } + + uses isis-lsdb-common-metric-specification; + } + + grouping isis-lsdb-common-mt-id { + description + "Common definition of the multi-topology ID"; + + leaf mt-id { + type uint16 { + range "0..4095"; + } + description + "Multi-topology ID"; + } + } + + grouping ipv4-prefix-extended-state { + description + "This grouping defines attributes of an IPv4 extended prefix."; + + container state { + description + "State parameters of an IPv4 extended prefix."; + uses ipv4-prefix-extended-params-state; + } + + uses isis-lsdb-prefix-state; + } + + grouping ipv4-mt-prefix-extended-state { + description + "State parameters that relate to an IPv4 prefix in a + multi-topology context."; + + container state { + description + "State parameters of an IPv4 extended prefix."; + uses ipv4-prefix-extended-params-state; + uses isis-lsdb-common-mt-id; + } + + uses isis-lsdb-prefix-state; + } + + grouping ipv4-prefix-extended-params-state { + description + "State parameters that relate to an IPv4 prefix"; + + leaf up-down { + type boolean; + description + "The up/down bit. Set if a prefix is advertised from a + higher level to a lower level (e.g., level 2 to level 1), + indicating that the prefix has traveled down the hierarchy. + Prefixes that have the up/down bit set may only be + advertised down the hierarchy, i.e., to lower levels. When a + prefix is first injected into IS-IS, the bit is UNSET."; + } + + leaf s-bit { + type boolean; + description + "The Sub-TLV present bit. If UNSET, the octets of Sub-TLVs + are not present. Otherwise, the bit is set and the octet + following the prefix will contain the length of the Sub-TLV + portion of the structure."; + } + + leaf prefix { + type inet:ipv4-prefix; + description + "IPv4 prefix contained within extended reachability TLVs."; + } + + leaf metric { + type oc-isis-types:wide-metric; + description + "ISIS metric value."; + } + } + + grouping ipv6-prefix-extended-state { + description + "State parameters relating to an IPv6 prefix."; + + container state { + description + "State parameters of IPv6 prefix attributes"; + + uses ipv6-prefix-extended-params-state; + } + + uses isis-lsdb-prefix-state; + } + + grouping ipv6-mt-prefix-extended-state { + description + "State parameters relating to a multi-topology IPv6 + prefix."; + + container state { + description + "State parameters relating an IPv6 prefix attribute"; + uses ipv6-prefix-extended-params-state; + uses isis-lsdb-common-mt-id; + } + + uses isis-lsdb-prefix-state; + } + + grouping ipv6-prefix-extended-params-state { + description + "Common parameters of an IPv6 extended prefix."; + + leaf up-down { + type boolean; + description + "The up/down bit. Set if a prefix is advertised from a + higher level to a lower level (e.g., level 2 to level 1), + indicating that the prefix has traveled down the hierarchy. + Prefixes that have the up/down bit set may only be + advertised down the hierarchy, i.e., to lower levels. When a + prefix is first injected into IS-IS, the bit is UNSET."; + } + + leaf x-bit { + type boolean; + description + "The external bit. Set when the prefix was distributed into + IS-IS from another routing protocol."; + } + + leaf s-bit { + type boolean; + description + "The sub-tlv present bit. If UNSET, the octets of Sub-TLVs + are not present. Otherwise, the bit is set and the octet + following the prefix will contain the length of the Sub-TLV + portion of the structure."; + } + + leaf prefix { + type inet:ipv6-prefix; + description + "IPv6 prefix contained within extended reachability TLVs."; + } + + leaf metric { + type oc-isis-types:wide-metric; + description + "ISIS metric value."; + } + } + + grouping isis-lsdb-common-extisreach-neighbors { + description + "Common structure for the Extended IS Reachability and IS + Reachability Neighbour attributes."; + + container neighbors { + description + "This container describes IS neighbors."; + + list neighbor { + key "system-id"; + description + "This list describes ISIS extended neighbors and + reachability attributes."; + + leaf system-id { + type leafref { + path "../state/system-id"; + } + description + "Reference to the neighboring system's system ID."; + } + + container state { + description + "State parameters corresponding to the extended + neighbour."; + + leaf system-id { + type oc-isis-types:system-id; + description + "System-id of the neighbor."; + } + } + + container instances { + description + "This list contains all instances of an adjacency + between the originating IS and the remote IS. + Multiple instances are used where there are + parallel adjacencies between two systems."; + + list instance { + key "id"; + + description + "Instance of the TLV to the remote IS neighbor."; + + leaf id { + type leafref { + path "../state/id"; + } + description + "Reference to the unique identifier for + the instance of the extended IS + reachability sub-TLV."; + } + + container state { + description + "State parameters of extended neighbor"; + + leaf id { + type uint64; + description + "Unique identifier for the instance of the + TLV for the IS neighbor. The instance + ID is not required to be consistent across + across readvertisements of the LSP."; + } + + leaf metric { + type oc-isis-types:wide-metric; + description + "Metric value."; + } + } + uses is-reachability-neighbor-state; + } + } + } + } + } + + grouping isis-lsdb-mtis-common { + description + "Common grouping for structure used within the multi-topology IS + neighbour and multi-topology IS neighbour attribute TLVs."; + + container neighbors { + description + "MT-IS neigbor attributes."; + + list neighbor { + key "mt-id system-id"; + description + "This container describes IS neighbors."; + + leaf mt-id { + type leafref { + path "../state/mt-id"; + } + description + "Reference to the topology that the neighbor is + within."; + } + + leaf system-id { + type leafref { + path "../state/system-id"; + } + description + "Reference to the System ID of the neighbor."; + } + + container state { + description + "Operational state parameters related to the + MT ISN TLV."; + + uses mt-isis-neighbor-state; + } + + container instances { + description + "This list contains all instances of an adjacency + between the originating and remote IS. Multiple + instances are used to indicate where there are + parallel adjacencies between systems."; + + list instance { + key "id"; + + description + "Instance of TLV-222 between the originating + and remote IS."; + + leaf id { + type leafref { + path "../state/id"; + } + description + "Reference to the unique identifier for the + instance of the multi-topology IS neighbor + TLV instance."; + } + + uses mt-isis-neighbor-instance; + } + } + } + } + } + + grouping mt-isis-neighbor-state { + description + "This grouping defines state parameters that are related to + each neighbour entry for the MT ISN TLV."; + + leaf mt-id { + type uint16 { + range "0..4095"; + } + description + "Identifier of a topology being announced."; + } + + leaf system-id { + type oc-isis-types:system-id; + description + "System-id of the IS neighbor."; + } + } + + grouping mt-isis-neighbor-instance { + description + "This grouping defines list of ISIS multi-topology neighbors for + extended ISIS LSP (multiple system IDs)."; + + container state { + description + "State parameters of MT neighbor."; + + leaf metric { + type oc-isis-types:wide-metric; + description + "ISIS metric value."; + } + + leaf id { + type uint64; + description + "Unique identifier for the TLV instance for the + neighbor. The ID is not required to be consistent + across readvertisements of the LSP."; + } + } + uses is-reachability-neighbor-state; + } + + grouping isis-lsdb-generic-tlv { + description + "Generic TLV encoding grouping."; + + leaf type { + type uint8; + description + "TLV Type."; + } + + leaf length { + type uint8; + description + "TLV length."; + } + + leaf value { + type binary; + description + "TLV value."; + } + } + + grouping undefined-tlv-state { + description + "Generic grouping defining an unknown TLV."; + + uses isis-lsdb-generic-tlv; + } + + grouping undefined-subtlv-state { + description + "Generic grouping defining an unknown sub-TLV."; + + uses isis-lsdb-generic-tlv; + } + + grouping lsp-state { + description + "This grouping defines ISIS LSP state information."; + + leaf lsp-id { + type leafref { + path "../state/lsp-id"; + } + + description + "A reference to the Link State PDU ID."; + } + + container state { + description + "State parameters of Link State PDU."; + + leaf lsp-id { + type oc-isis-types:lsp-id; + description + "LSP ID of the LSP."; + } + + leaf maximum-area-addresses { + type uint8; + description + "Number of area addresses permitted for this ISs area. 0 + indicates the IS only supports three area addresses (by + default). Any number inclusive of 1 and 254 indicates the + number of areas allowed."; + } + + leaf version { + type uint8; + default 1; + description + "PDU version. This is set to 1."; + } + + leaf version2 { + type uint8; + default 1; + description + "PDU version2. This is set to 1"; + } + + leaf id-length { + type uint8; + description + "Length of the ID field of NSAP addresses and NETs used in + this routing domain."; + } + + leaf pdu-type { + type enumeration { + enum LEVEL_1 { + description "This enum describes ISIS level 1 PDU."; + } + enum LEVEL_2 { + description "This enum describes ISIS level 2 PDU."; + } + } + description + "Link State PDU type."; + } + + leaf remaining-lifetime { + type uint16; + units "seconds"; + description + "Remaining lifetime in seconds before the LSP expiration."; + } + + leaf sequence-number { + type uint32; + description + "Sequence number of the LSP."; + } + + leaf checksum { + type uint16; + description + "Checksum of the LSP."; + } + + leaf pdu-length { + type uint16; + description + "Total length of the LSP."; + } + + leaf-list flags { + type enumeration { + enum PARTITION_REPAIR { + description + "When set, the originator supports partition + repair."; + } + enum ATTACHED_ERROR { + description + "When set, the originator is attached to another + area using the referred metric."; + } + enum ATTACHED_EXPENSE { + description + "When set, the originator is attached to another + area using the referred metric."; + } + enum ATTACHED_DELAY { + description + "When set, the originator is attached to another + area using the referred metric."; + } + enum ATTACHED_DEFAULT { + description + "When set, the originator is attached to another + area using the referred metric."; + } + enum OVERLOAD { + description + "When set, the originator is overloaded, and must + be avoided in path calculation."; + } + } + description + "LSP Type-Block flags."; + } + + leaf is-type { + type oc-isis-types:level-number; + description + "Type of neighboring system."; + } + } + + container tlvs { + description + "This container defines Link State PDU State TLVs."; + + list tlv { + key "type"; + + description + "List of TLV types in the LSDB for the specified LSP."; + + leaf type { + type leafref { + path "../state/type"; + } + description + "Reference to the TLV's type."; + } + + container state { + config false; + description + "Operational state parameters relating to the specified + LSP"; + + uses isis-lsdb-tlv-type-state; + } + + container area-address { + when "../state/type = 'oc-isis-lsdb-types:AREA_ADDRESSES'" { + description + "Include area address parameters only when the TLV type + is TLV 1."; + } + + description + "This container defines TLV 1."; + + container state { + description + "State parameters of ISIS TLV 1."; + + leaf-list address { + type oc-isis-types:area-address; + description + "Area adress(es) of the IS. Set of manual area + addresses of this IS."; + reference + "ISO 10589 Intermediate System to Intermediate System + Intra- Domain Routeing Exchange Protocol for use in + Conjunction with the Protocol for Providing the + Connectionless-mode Network Service (ISO 8473 ) + International Standard 10589: 2002, Second Edition, + 2002. TLV 1."; + } + } + } + + container lsp-buffer-size { + when "../state/type = " + + "'oc-isis-lsdb-types:LSP_BUFFER_SIZE'" { + description + "Include the LSP buffer size parameters only when the + TLV type is TLV 14."; + } + + description + "This container defines TLV 14 - the LSP Buffer Size + TLV."; + + container state { + description + "State parameters of TLV 14."; + + leaf size { + type uint16; + units "bytes"; + description + "The maximum MTU that the advertising system can + receive, expressed in bytes."; + reference + "ISO 10589 Intermediate System to Intermediate System + Intra- Domain Routeing Exchange Protocol for use in + Conjunction with the Protocol for Providing the + Connectionless-mode Network Service (ISO 8473 ) + International Standard 10589: 2002, Second Edition, + 2002. TLV 14."; + } + } + } + + container nlpid { + when "../state/type = 'oc-isis-lsdb-types:NLPID'" { + description + "Include NLPID specification only when the TLV type is + TLV 129."; + } + + description + "This container defines TLV 129."; + + container state { + description + "State parameters of ISIS TLV 129."; + + uses isis-lsdb-tlv-nlpid-state; + } + } + + container hostname { + when "../state/type = 'oc-isis-lsdb-types:DYNAMIC_NAME'" { + description + "Include the dynamic hostname TLV only when the TLV is + type 137."; + } + description + "This container defines TLV 137."; + + container state { + description + "State parameters of ISIS TLV 137."; + + leaf-list hostname { + type string; + description + "Name of the node."; + + reference + "RFC6233: IS-IS Registry Extension for Purges, RFC + 5301: Dynamic Hostname Exchange Mechanism for IS-IS. + TLV 137"; + } + } + } + + container ipv4-interface-addresses { + when "../state/type = " + + "'oc-isis-lsdb-types:IPV4_INTERFACE_ADDRESSES'" { + description + "Include the IPv4 interface addresses TLV only when the + TLV is type 132."; + } + description + "This container defines TLV 132."; + + container state { + description + "State parameters of ISIS TLV 132."; + + leaf-list address { + type inet:ipv4-address; + description + "IPv4 address(es) of the interface corresponding to + the SNPA over which this PDU is to be transmitted."; + reference + "RFC1195: Use of OSI IS-IS for Routing in TCP/IP and + Dual Environments. TLV 132."; + } + } + } + + container ipv6-interface-addresses { + when "../state/type = " + + "'oc-isis-lsdb-types:IPV6_INTERFACE_ADDRESSES'" { + description + "Include the IPv6 interface addresses TLV only when the + TLV is type 232."; + } + description + "This container defines TLV 232."; + + container state { + description + "State parameters of ISIS TLV 232."; + + leaf-list address { + type inet:ipv6-address; + description + "IPv6 interface addresses of the node. MUST contain + only the non-link-local IPv6 addresses assigned to the + IS."; + reference + "RFC5308: Routing IPv6 with IS-IS. TLV 232."; + } + } + } + + container ipv4-te-router-id { + when "../state/type = " + + "'oc-isis-lsdb-types:IPV4_TE_ROUTER_ID'" { + description + "Include the IPv4 traffic engineering router ID TLV only + when the TLV is type 134."; + } + description + "This container defines TLV 134."; + + container state { + description + "State parameters of ISIS TLV 134."; + + leaf-list router-id { + type inet:ipv4-address; + description + "IPv4 Traffic Engineering router ID of the node. For + traffic engineering, it guarantees that we have a + single stable address that can always be referenced in + a path that will be reachable from multiple hops away, + regardless of the state of the node's interfaces."; + reference + "RFC5305: IS-IS Extensions for Traffic Engineering. TLV + 134."; + } + } + } + + container ipv6-te-router-id { + when "../state/type = " + + "'oc-isis-lsdb-types:IPV6_TE_ROUTER_ID'" { + description + "Include the IPv6 traffic engineering router ID TLV only + when the TLV is type 140."; + } + description + "This container defines TLV 140."; + + container state { + description + "State parameters of ISIS TLV 140."; + + leaf-list router-id { + type inet:ipv6-address; + description + "IPv6 Traffic Engineering router ID of the node. For + traffic engineering, it guarantees that we have a + single stable address that can always be referenced in + a path that will be reachable from multiple hops away, + regardless of the state of the node's interfaces."; + reference + "RFC6119: IPv6 Traffic Engineering in IS-IS. TLV + 140."; + } + } + } + + container instance-ids { + when "../state/type = 'oc-isis-lsdb-types:INSTANCE_ID'" { + description + "Include the ISIS Instance Identifier TLV only when the + TLV is type 7."; + } + description + "This container defines ISIS Instance Identifier TLV."; + reference "RFC6822: IS-IS Multi-Instance. TLV 7."; + + list instance-id { + key "instance-id"; + + description + "A list of instance IDs received within TLV 7 within an + IS-IS LSP. In the case that more than one instance of + TLV 7 is included in the LSP, the instance IDs specified + within the instances are concatenated within this + list."; + + leaf instance-id { + type leafref { + path "../state/instance-id"; + } + description + "Reference to the unique instance ID."; + } + container state { + description + "State parameters of ISIS TLV 7."; + + leaf instance-id { + type uint16; + description + "An Instance Identifier (IID) to uniquely identify + an IS-IS instance. When the IID = 0, the list of + supported ITIDs MUST NOT be present. An IID-TLV with + IID = 0 MUST NOT appear in an SNP or LSP. When the + TLV appears (with a non-zero IID) in an SNP or LSP, + exactly one ITID. MUST be present indicating the + topology with which the PDU is associated. If no + ITIDs or multiple ITIDs are present or the IID is + zero, then the PDU MUST be ignored."; + } + + leaf-list topology-id { + type uint16; + description + "Instance-Specific Topology Identifiers (ITIDs)."; + } + } + } + } + + container ipv4-srlgs { + when "../state/type = 'oc-isis-lsdb-types:IPV4_SRLG'" { + description + "Include the IPv4 SRLG TLV only when the TLV is type + 138."; + } + description + "This container defines ISIS SRLG TLV 138."; + + reference + "RFC5307: IS-IS Extensions in Support of Generalized + Multi-Protocol Label Switching (GMPLS). TLV 138."; + + list ipv4-srlg { + key "instance-number"; + + description + "Instance of the IPv4 SRLG TLV"; + + leaf instance-number { + type leafref { + path "../state/instance-number"; + } + description + "Reference to the instance number of TLV 138."; + } + + container state { + description + "State parameters of TLV 138."; + + leaf instance-number { + type uint32; + description + "An arbitrary unsigned 32-bit integer used to + disambiguate the instance of TLV 138. The instance + identifier is synthesised by the system + and may be renumbered for the same SRLG definition + in subsequent advertised LSPs if (and only if) the + entire list of SRLGs is replaced."; + } + + leaf system-id { + type oc-isis-types:system-id; + description + "Neighbor system ID."; + } + + leaf psn-number { + type uint8; + description + "Pseudonode number if the neighbor is on a LAN + interface."; + } + + leaf-list flags { + type enumeration { + enum NUMBERED { + description + "When set, the interface is numbered, whereas if + unset indicates that the interface is + unnumbered."; + } + } + description + "SRLG flags."; + } + + leaf ipv4-interface-address { + type inet:ipv4-address; + description + "IPv4 interface address."; + } + + leaf ipv4-neighbor-address { + type inet:ipv4-address; + description + "IPv4 neighbor address."; + } + + leaf-list srlg-value { + type uint32; + description + "List of SRLG values."; + } + } + } + } + + container ipv6-srlgs { + when "../state/type = 'oc-isis-lsdb-types:IPV6_SRLG'" { + description + "Include the IPv6 SRLG TLV only when the TLV is type + 139."; + } + description + "This container defines ISIS SRLG TLV."; + + reference + "RFC6119: IPv6 Traffic Engineering in IS-IS. TLV 139."; + + list ipv6-srlg { + key "instance-number"; + + description + "Instance of the IPv6 SRLG TLV."; + + leaf instance-number { + type leafref { + path "../state/instance-number"; + } + description + "Reference to the instance number of the IPv6 Shared + Risk Link Group (SRLG) TLV."; + } + + container state { + description + "State parameters of TLV 139."; + + leaf instance-number { + type uint32; + description + "An arbitrary unsigned 32-bit integer used to + disambiguate the instance of TLV 138. The instance + identifier is synthesised by the system + and may be renumbered for the same SRLG definition + in subsequent advertised LSPs if (and only if) the + entire list of SRLGs is replaced."; + } + + leaf system-id { + type oc-isis-types:system-id; + description + "Neighbor system ID."; + } + + leaf psn-number { + type uint8; + description + "Pseudonode number if the neighbor is on a LAN + interface."; + } + + leaf-list flags { + type enumeration { + enum NA { + description + "When set, the IPv6 neighbour address is + included, whereas if unset, it is omitted"; + } + } + description + "IPv6 SRLG flags."; + } + + leaf ipv6-interface-address { + type inet:ipv6-address; + description + "IPv6 interface address or Link Local Identifier."; + } + + leaf ipv6-neighbor-address { + type inet:ipv6-address; + description + "IPv6 neighbor address or Link Remote Identifier."; + } + + leaf-list srlg-value { + type uint32; + description + "SRLG values."; + } + } + } + } + + container purge-oi { + when "../state/type = 'oc-isis-lsdb-types:PURGE_OI'" { + description + "Only include the purge originator identitication TLV + when the TLV type is 13."; + } + description + "This container defines ISIS purge TLV."; + + reference + "RFC6232: Purge Originator Identification TLV for IS-IS. + TLV 13."; + + container state { + description + "State parameters of TLV 13."; + + leaf system-id-count { + type uint8; + description + "Number of system IDs carried in this TLV."; + } + + leaf source-system-id { + type oc-isis-types:system-id; + description + "System ID of the Intermediate System that inserted + this TLV."; + } + + leaf received-system-id { + type oc-isis-types:system-id; + description + "System ID of the Intermediate System from which the + purge was received."; + } + } + } + + container router-capabilities { + when "../state/type = " + + "'oc-isis-lsdb-types:ROUTER_CAPABILITY'" { + description + "Only include the router capability TLV when the TLV is + type 242."; + } + description + "This container defines router capabilities."; + + list capability { + key "instance-number"; + + description + "This list describes IS Router capabilities."; + + reference + "RFC4971: Intermediate System to Intermediate System + (IS-IS) Extensions for Advertising Router Information. + TLV 242."; + + leaf instance-number { + type leafref { + path "../state/instance-number"; + } + description + "Reference to the instance number of the router + capability TLV."; + } + + container state { + description + "State parameters of TLV 242."; + + leaf instance-number { + type uint32; + description + "A unique instance number for the instance of the + router capabilities TLV. The instance number should + be autogenerated by the producer of the data and may + be renumbered if the entire LSP contents are + replaced in subsequent advertisements."; + } + + leaf router-id { + type inet:ipv4-address; + description + "IPv4 router-id."; + } + + leaf-list flags { + type enumeration { + enum FLOOD { + description + "When the S bit is set(1), the IS - IS Router + CAPABILITY TLV MUST be flooded across the entire + routing domain. When the S bit is not set(0), + the TLV MUST NOT be leaked between levels . This + bit MUST NOT be altered during the TLV + leaking."; + } + enum DOWN { + description + "When the IS-IS Router CAPABILITY TLV is leaked + from level - 2 to level-1, the Down bit MUST be + set. Otherwise, this bit MUST be clear. IS - IS + Router capability TLVs with the Down bit set + MUST NOT be leaked from level - 1 to level-2. + This is to prevent TLV looping."; + } + } + description + "Router capability flags."; + } + } + + container subtlvs { + description + "This container describes router capability TLV + sub-TLVs"; + + list subtlv { + key "type"; + description + "List of subTLV types in the LSDB for the specified + TLV"; + + leaf type { + type leafref { + path "../state/type"; + } + description + "Reference to the sub-TLV type"; + } + + container state { + description + "State parameters of IS Router Capabilities"; + + uses isis-lsdb-subtlv-type-state; + } + + container segment-routing-algorithms { + when "../state/type = " + + "'oc-isis-lsdb-types:ROUTER_CAPABILITY_SR_ALGORITHM'" { + description + "Only include segment routing algorithm when the + sub-TLV is type 19."; + } + description + "This container defines SR algorithm sub-TLV 19."; + + reference + "draft-ietf-isis-segment-routing-extensions. + TLV 242, sub-TLV 19"; + + container state { + description + "State parameters of sub-TLV 19 - Segment + Routing Algorithm."; + + leaf-list algorithm { + type enumeration { + enum SPF { + value 0; + description + "Shortest Path First (SPF) algorithm + based on link metric. This is the + well-known shortest path algorithm as + computed by the IS-IS Decision process. + Consistent with the deployed practice + for link-state protocols, algorithm 0 + permits any node to overwrite the SPF + path with a different path based on + local policy."; + } + enum STRICT_SPF { + value 1; + description + "Strict Shortest Path First (SPF) + algorithm based on link metric. The + algorithm is identical to algorithm 0 + but algorithm 1 requires that all nodes + along the path will honor the SPF + routing decision. Local policy MUST NOT + alter the forwarding decision computed + by algorithm 1 at the node claiming to + support algorithm 1."; + } + } + description + "The Segment Routing algorithm that is + described by the TLV."; + } + } + } + + container segment-routing-capability { + when "../state/type = " + + "'oc-isis-lsdb-types:ROUTER_CAPABILITY_SR_CAPABILITY'" { + description + "Only include the SR capability sub-TLV when + the sub-TLV type is 2."; + } + description + "This container defines SR Capability sub-TLV 2."; + + reference + "draft-ietf-isis-segment-routing-extensions. TLV + 242, sub-TLV 2."; + + container state { + description + "State parameters of IS SR Router Capability"; + + leaf-list flags { + type enumeration { + enum IPV4_MPLS { + description + "When set, the router is capable of + processing SR MPLS encapsulated IPv4 + packets on all interfaces."; + } + enum IPV6_MPLS { + description + "When set, the router is capable of + processing SR MPLS encapsulated IPv6 + packets on all interfaces."; + } + enum IPV6_SR { + description + "When set, the router is capable of + processing the IPv6 Segment Routing Header + on all interfaces."; + } + } + description + "Segment Routing Capability Flags."; + } + } + + container srgb-descriptors { + description + "SRGB Descriptors included within the SR + capability sub-TLV"; + + list srgb-descriptor { + key "range"; + description + "Descriptor entry within the SR capabilty + sub-TLV"; + + leaf range { + type leafref { + path "../state/range"; + } + description + "Reference to unique SRGB Descriptor."; + } + + container state { + description + "State parameters of the SR range"; + + leaf range { + type uint32; + description + "Number of SRGB elements. The range + value MUST be greater than 0."; + } + + leaf label { + type oc-mpls-types:mpls-label; + description + "The first value of the SRGB when + expressed as an MPLS label."; + } + } + } + } + } + } + } + uses isis-lsdb-undefined-subtlv; + } + } + + container is-reachability { + when "../state/type = 'oc-isis-lsdb-types:IIS_NEIGHBORS'" { + description + "Include IIS_NEIGHBORS sub-TLV when the TLV type is 2."; + } + description + "This container describes list of ISIS neighbors and + attributes."; + + reference + "ISO 10589, Intermediate System to Intermediate System + Intra- Domain Routeing Exchange Protocol for use in + Conjunction with the Protocol for Providing the + Connectionless-mode Network Service (ISO 8473), + International Standard 10589: 2002, Second Edition, + 2002. TLV 2."; + + container neighbors { + description + "This container describes IS neighbors."; + + list neighbor { + key "system-id"; + description + "IS reachability neighbor attributes."; + + leaf system-id { + type leafref { + path "../state/system-id"; + } + description + "Reference to the system ID of the neighbor."; + } + + uses isis-lsdb-neighbor; + } + } + } + + container ipv4-internal-reachability { + when "../state/type = " + + "'oc-isis-lsdb-types:IPV4_INTERNAL_REACHABILITY'" { + description + "Include IPv4 internal reachability TLV when the TLV + type is specified as 128."; + } + description + "This container defines list of IPv4 internal reachability + information."; + + reference + "RFC1195: OSI ISIS for IP and Dual Environments. RFC5302: + Domain-Wide Prefix Distribution with Two-Level IS-IS. TLV + 128"; + + container prefixes { + description + "This container describes IS prefixes."; + + list prefix { + key "prefix"; + + description + "IPv4 prefixes and internal reachability attributes."; + + leaf prefix { + type leafref { + path "../state/prefix"; + } + description + "Reference to the IPv4 prefix"; + } + + uses ipv4-prefix-attributes-state; + } + } + } + + container ipv4-external-reachability { + when "../state/type = " + + "'oc-isis-lsdb-types:IPV4_EXTERNAL_REACHABILITY'" { + description + "Include IPv4 external reachability when the TLV type + is set to 130."; + } + description + "This container defines list of IPv4 external reachability + information."; + + reference + "RFC1195: OSI ISIS for IP and Dual Environments. RFC5302: + Domain-Wide Prefix Distribution with Two-Level IS-IS. TLV + 130"; + + container prefixes { + description + "This container describes IS neighbors."; + + list prefix { + key "prefix"; + + description + "IPv4 external prefixes and reachability attributes."; + + leaf prefix { + type leafref { + path "../state/prefix"; + } + description + "Reference to the IPv4 prefix."; + } + + uses ipv4-prefix-attributes-state; + } + } + } + + container authentication { + when "../state/type = 'oc-isis-lsdb-types:AUTHENTICATION'" { + description + "Only include the authentication TLV when the TLV is + type 10."; + } + description + "This container defines authentication information of the + node."; + + reference + "ISO 10589 Intermediate System to Intermediate System + Intra- Domain Routeing Exchange Protocol for use in + Conjunction with the Protocol for Providing the + Connectionless-mode Network Service (ISO 8473) + International Standard 10589: 2002, Second Edition, 2002. + TLV 10."; + + container state { + description + "State parameters of TLV 10."; + + leaf crypto-type { + type enumeration { + enum HMAC_MD5 { + description + "HMAC-MD5 Authentication type."; + } + enum CLEARTEXT { + description + "Cleartext Authentication type."; + } + } + description + "Authentication type to be used."; + } + + leaf authentication-key { + type string; + description + "Authentication key to be used."; + } + } + } + + container extended-is-reachability { + when "../state/type = " + + "'oc-isis-lsdb-types:EXTENDED_IS_REACHABILITY'" { + description + "Only included the extended IS reachability TLV when the + TLV is type 22."; + } + + description + "This container defines list of ISIS extended reachability + neighbors."; + + reference + "RFC5305: IS-IS Extensions for Traffic Engineering. TLV + 22."; + + uses isis-lsdb-common-extisreach-neighbors; + } + + container extended-ipv4-reachability { + when "../state/type = " + + "'oc-isis-lsdb-types:EXTENDED_IPV4_REACHABILITY'" { + description + "Only include the extended IPv4 reachability container + when the TLV type is 135."; + } + description + "This container defines list of IPv4 extended reachability + information."; + + reference + "RFC5305: IS-IS Extensions for Traffic Engineering. TLV + 135"; + + container prefixes { + description + "This container describes IS prefixes."; + + list prefix { + key "prefix"; + + description + "This list describes IPv4 extended prefixes and + attributes."; + + leaf prefix { + type leafref { + path "../state/prefix"; + } + description + "Reference to the IPv4 prefix that the TLV describes + the attributes of."; + } + + uses ipv4-prefix-extended-state; + } + } + } + + container ipv6-reachability { + when "../state/type = " + + "'oc-isis-lsdb-types:IPV6_REACHABILITY'" { + description + "Only include the IPv6 reachability container when the + TLV type is 236."; + } + description + "This container defines list of IPv6 reachability + information."; + + reference + "RFC5308: Routing IPv6 with IS-IS. TLV 236"; + + container prefixes { + description + "This container describes IS prefixes."; + + list prefix { + key "prefix"; + + description + "This list defines IPv6 extended prefix attributes."; + + leaf prefix { + type leafref { + path "../state/prefix"; + } + description + "Reference to the IPv6 prefix that the TLV + corresponds to."; + } + + uses ipv6-prefix-extended-state; + } + } + } + + container multi-topology { + when "../state/type = 'oc-isis-lsdb-types:MULTI_TOPOLOGY'" { + description + "Only include the multi-topology container when the TLV + is type 229."; + } + + description + "This container defines the topology supported."; + + reference + "RFC5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs). TLV + 229"; + + container topologies { + description + "This container describes IS topologies."; + + list topology { + key "mt-id"; + + description + "This list describes a topology."; + + leaf mt-id { + type leafref { + path "../state/mt-id"; + } + description + "Reference to the multi-topology ID being described + by the list entry."; + } + + container state { + description + "State parameters of IS multi-topology TLV 229."; + + leaf mt-id { + type uint16 { + range "0 .. 4095"; + } + description + "Multi-topology ID."; + } + + leaf attributes { + type enumeration { + enum OVERLOAD { + description + "When set, node is overloaded, still part of + the topology but cannot be used for transit."; + } + enum ATTACHED { + description + "When set, node is attached to another area + using the referred metric and can be used as + default gateway."; + } + } + description + "Attributes of the LSP for the associated + topology."; + } + } + } + } + } + + container isis-neighbor-attribute { + when "../state/type = " + + "'oc-isis-lsdb-types:IS_NEIGHBOR_ATTRIBUTE'" { + description + "Only include the neighbor attribute container when the + TLV is type 23."; + } + description + "This container defines list of ISIS topology neighbors + for extended ISIS LSP (multiple system IDs). "; + + reference + "RFC5311: Simplified Extension of Link State PDU (LSP) + Space for IS-IS. TLV 23. It is identical in format to the + extended IS reachability TLV 22."; + + uses isis-lsdb-common-extisreach-neighbors; + } + + container is-alias-id { + when "../state/type = 'oc-isis-lsdb-types:ISIS_ALIAS_ID'" { + description + "Only include the ISIS alias ID container when the TLV + is type 24."; + } + + description + "This container defines the IS-Alias TLV which allows + extension-capable ISs to recognize the Originating System + of an Extended LSP set. It identifies the Normal system- + id of the Originating System."; + + reference + "RFC5311: Simplified Extension of Link State PDU (LSP) + Space for IS-IS TLV 24."; + + container state { + config false; + description + "State parameters of alias ID."; + + leaf alias-id { + type oc-isis-types:system-id; + description + "List of alias ID(s)."; + } + } + } + + container mt-isn { + when "../state/type = 'oc-isis-lsdb-types:MT_ISN'" { + description + "Only include the MT ISN container when the TLV is type + 222."; + } + description + "This container defines list of ISIS multi-topology + neighbors."; + + reference + "RFC5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs). TLV + 222."; + + uses isis-lsdb-mtis-common; + } + + container mt-isis-neighbor-attribute { + when "../state/type = " + + "'oc-isis-lsdb-types:MT_IS_NEIGHBOR_ATTRIBUTE'" { + description + "Only include the MT ISIS neighbor attribute container + when the TLV is type 223."; + } + + description + "This container defines list of ISIS multi-topology + neighbors."; + + reference + "RFC5311: Simplified Extension of Link State PDU (LSP) + Space for IS-IS. TLV 223. It is identical in format to the + MT-ISN TLV 222."; + + uses isis-lsdb-mtis-common; + } + + container mt-ipv4-reachability { + when "../state/type = " + + "'oc-isis-lsdb-types:MT_IPV4_REACHABILITY'" { + description + "Only include the multi-topology IPv4 reachability + container when the TLV is type 235."; + } + description + "This container defines list of IPv4 reachability + Information in multi-topology environment."; + + reference + "RFC5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs). TLV + 235."; + + container prefixes { + description + "This container describes IS prefixes."; + + list prefix { + key "mt-id prefix"; + + leaf mt-id { + type leafref { + path "../state/mt-id"; + } + description + "Reference to the topology ID of the topology that + the prefix is within."; + } + + leaf prefix { + type leafref { + path "../state/prefix"; + } + description + "Reference to the prefix to which reachability is + being advertised."; + } + + description + "IPv4 prefixes that are contained within MT + reachability TLV."; + + uses ipv4-mt-prefix-extended-state; + } + } + } + + container mt-ipv6-reachability { + when "../state/type = " + + "'oc-isis-lsdb-types:MT_IPV6_REACHABILITY'" { + description + "Only include the multi-topology IPv6 reachability + container when the TLV is type 237."; + } + description + "This container defines list of IPv6 reachability + information in multi - topology environment."; + + reference + "RFC5120: M-ISIS: Multi Topology (MT) Routing in + Intermediate System to Intermediate Systems (IS-ISs). TLV + 237."; + + container prefixes { + description + "This container describes IS prefixes."; + + list prefix { + key "prefix mt-id"; + description + "List of IPv6 prefixes contained within MT + reachability TLV."; + + leaf prefix { + type leafref { + path "../state/prefix"; + } + description + "Reference to the IPv6 prefix described by the + TLV."; + } + + leaf mt-id { + type leafref { + path "../state/mt-id"; + } + description + "Reference to the multi-topology ID."; + } + + uses ipv6-mt-prefix-extended-state; + } + } + } + } + } + + uses isis-lsdb-undefined-tlv; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-isis-policy.yang b/vendor/cisco/nx/9.3-14/openconfig-isis-policy.yang new file mode 100644 index 000000000..d94ec7fe5 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-isis-policy.yang @@ -0,0 +1,206 @@ +module openconfig-isis-policy { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/openconfig-isis-policy"; + + prefix "oc-isis-pol"; + + // import some basic types + import openconfig-routing-policy {prefix rpol; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-isis-types { prefix isis-types; } + + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net "; + + description + "This module contains data definitions for ISIS routing policy. + It augments the base routing-policy module with BGP-specific + options for conditions and actions."; + + oc-ext:openconfig-version "0.4.2"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.4.2"; + } + + revision "2018-06-05" { + description + "Fix bugs in when statements."; + reference "0.4.1"; + } + + revision "2018-05-14" { + description + "Update LSDB model to correct Extended IS reach TLV + bug. This change is backwards incompatible due to + adding an additional level of hierarchy to support + multiple instances of the TLV."; + reference "0.4.0"; + } + + revision "2017-07-26" { + description + "Update LSDB and fix bugs."; + reference "0.3.2"; + } + + revision "2017-05-15" { + description + "Refactor LSDB."; + reference "0.3.0"; + } + + revision "2017-01-13" { + description + "Remove top-level /isis container"; + reference "0.2.1"; + } + + revision "2016-12-15" { + description + "Add segment routing to IS-IS module"; + reference "0.2.0"; + } + + revision "2016-10-18" { + description + "Initial revision of IS-IS models."; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // extension statements + + // feature statements + + // identity statements + + // typedef statements + + // grouping statements + + grouping isis-match-conditions { + description + "Criteria used to match IS-IS routes within the policy"; + + container isis-conditions { + description + "Match conditions relating to the IS-IS protocol"; + + container config { + description + "Configuration parameters relating to IS-IS match + conditions"; + + uses isis-match-conditions-config; + } + + container state { + config false; + description + "Operational state parameters relating to IS-IS match + conditions"; + uses isis-match-conditions-config; + } + } + } + + grouping isis-match-conditions-config { + description + "Match conditions for IS-IS"; + + leaf level-eq { + type isis-types:level-number; + description + "Match the level that the IS-IS prefix is within. This can + be used in the case that import or export policies refer + to an IS-IS instance that has multiple levels configured + within it"; + } + } + + grouping isis-actions { + description + "Actions supplied by the IS-IS protocol to be set on a + route within the policy"; + + container isis-actions { + description + "Actions that can be performed by IS-IS within a policy"; + + container config { + description + "Configuration parameters relating to IS-IS actions"; + + uses isis-actions-config; + } + + container state { + config false; + description + "Operational state associated with IS-IS actions"; + + uses isis-actions-config; + } + } + } + + grouping isis-actions-config { + description + "Actions for IS-IS"; + + leaf set-level { + type isis-types:level-number; + description + "Set the level that a prefix is to be imported into."; + } + + leaf set-metric-type { + type isis-types:level-number; + description + "Set the type of metric that is to be specified when the + set metric leaf is specified"; + } + + leaf set-metric { + type isis-types:wide-metric; + description + "Set the metric of the IS-IS prefix"; + } + } + + // augment statements + augment "/rpol:routing-policy/rpol:policy-definitions/" + + "rpol:policy-definition/rpol:statements/rpol:statement/" + + "rpol:actions" { + description "This augments igp-actions with ISIS conditions"; + uses isis-actions; + + } + + augment "/rpol:routing-policy/rpol:policy-definitions/" + + "rpol:policy-definition/rpol:statements/rpol:statement/" + + "rpol:conditions" { + description "This augments igp-conditions with ISIS conditions"; + uses isis-match-conditions; + } + + // rpc statements + + // notification statements +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-isis-routing.yang b/vendor/cisco/nx/9.3-14/openconfig-isis-routing.yang new file mode 100644 index 000000000..9df1c9321 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-isis-routing.yang @@ -0,0 +1,396 @@ +submodule openconfig-isis-routing { + + belongs-to openconfig-isis { + prefix "oc-isis"; + } + + // import some basic types + import openconfig-isis-types { prefix oc-isis-types; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-mpls-types { prefix oc-mplst; } + import openconfig-segment-routing { prefix oc-sr; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module describes YANG model for ISIS Routing"; + + oc-ext:openconfig-version "0.4.2"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.4.2"; + } + + revision "2018-06-05" { + description + "Fix bugs in when statements."; + reference "0.4.1"; + } + + revision "2018-05-14" { + description + "Update LSDB model to correct Extended IS reach TLV + bug. This change is backwards incompatible due to + adding an additional level of hierarchy to support + multiple instances of the TLV."; + reference "0.4.0"; + } + + revision "2017-07-26" { + description + "Update LSDB and fix bugs."; + reference "0.3.2"; + } + + revision "2017-05-15" { + description + "Refactor LSDB."; + reference "0.3.0"; + } + + revision "2017-01-13" { + description + "Remove top-level /isis container"; + reference "0.2.1"; + } + + revision "2016-12-15" { + description + "Add segment routing to IS-IS module"; + reference "0.2.0"; + } + + revision "2016-10-18" { + description + "Initial revision of IS-IS models."; + reference "0.1.0"; + } + + // extension statements + + // feature statements + + // identity statements + + // typedef statements + + // grouping statements + + grouping rt-admin-config { + description + "Re-usable grouping to enable or disable a particular IS-IS feature."; + + leaf enabled { + type boolean; + description + "When set to true, the functionality within which this leaf is + defined is enabled, when set to false it is explicitly disabled."; + } + } + + grouping isis-afi-safi-config { + description + "This grouping defines Address-Family configuration parameters"; + + leaf afi-name { + type identityref { + base oc-isis-types:AFI_TYPE; + } + description + "Address-family type."; + } + + leaf safi-name { + type identityref { + base oc-isis-types:SAFI_TYPE; + } + description + "Subsequent address-family type."; + } + } + + grouping isis-shortcuts-afi-config { + description + "This grouping defines ISIS Shortcuts configuration parameters"; + + leaf afi-name { + type identityref { + base oc-isis-types:AFI_TYPE; + } + description "Address-family type."; + } + + leaf-list nh-type { + type identityref { + base oc-mplst:PATH_SETUP_PROTOCOL; + } + description "Tunnel NH Type(RSVP,SR). When present it implies + that nh-type shortcut is enabled for a specified AFI."; + } + } + + grouping isis-shortcuts-config { + description + "This grouping defines ISIS Shortcuts consfiguration parameters"; + + container config { + description "This container defines ISIS shortcuts configuration."; + uses rt-admin-config; + } + + container state { + config false; + description "This container defines state for ISIS shortcuts."; + uses rt-admin-config; + } + } + + grouping isis-mt-config { + description + "This grouping defines ISIS multi-topology configuration parameters"; + + leaf afi-name { + type identityref { + base oc-isis-types:AFI_TYPE; + } + description + "Address-family type."; + } + leaf safi-name { + type identityref { + base oc-isis-types:SAFI_TYPE; + } + description + "Subsequent address-family type."; + } + //prefer single topology + } + + + + // *********** STRUCTURE GROUPINGS ********************** + + grouping isis-metric-config { + description + "This grouping defines ISIS metric configuration"; + + leaf metric { + type uint32; + default 10; + description "ISIS metric value(default=10)."; + } + } + + grouping isis-afi-safi-list { + description + "This grouping defines address-family configuration and state + information"; + + list af { + key "afi-name safi-name"; + + description + "Address-family/Subsequent Address-family list."; + + leaf afi-name { + type leafref { + path "../config/afi-name"; + } + description + "Reference to address-family type"; + } + + leaf safi-name { + type leafref { + path "../config/safi-name"; + } + description + "Reference to subsequent address-family type"; + } + + container config { + description + "This container defines AFI-SAFI configuration parameters"; + + uses isis-afi-safi-config; + uses isis-metric-config; + uses rt-admin-config; + } + + container state { + config false; + description + "This container defines AFI-SAFI State information"; + + uses isis-afi-safi-config; + uses isis-metric-config; + uses rt-admin-config; + } + + uses isis-mt-list; + } + } + + grouping isis-if-afi-safi-list { + description + "This grouping defines address-family configuration and state + information"; + + list af { + key "afi-name safi-name"; + + description + "Address-family/Subsequent Address-family list."; + + leaf afi-name { + type leafref { + path "../config/afi-name"; + } + description + "Reference to address-family type"; + } + + leaf safi-name { + type leafref { + path "../config/safi-name"; + } + description + "Reference to subsequent address-family type"; + } + + container config { + description + "This container defines AFI-SAFI configuration parameters. Single + topology is the default setting."; + uses isis-afi-safi-config; + uses isis-metric-config; + uses rt-admin-config; + } + + container state { + config false; + description + "This container defines AFI-SAFI State information"; + uses isis-afi-safi-config; + uses isis-metric-config; + uses rt-admin-config; + } + + uses oc-sr:sr-igp-interface-top; + } + } + + grouping isis-if-global-afi-safi-list { + description + "This grouping defines address-family configuration and state + information"; + + list af { + key "afi-name safi-name"; + + description + "Address-family/Subsequent Address-family list."; + + leaf afi-name { + type leafref { + path "../config/afi-name"; + } + description + "Reference to address-family type"; + } + + leaf safi-name { + type leafref { + path "../config/safi-name"; + } + description + "Reference to subsequent address-family type"; + } + + container config { + description + "This container defines AFI-SAFI configuration parameters. Single + topology is the default setting."; + uses isis-afi-safi-config; + uses rt-admin-config; + } + + container state { + config false; + description + "This container defines AFI-SAFI State information"; + uses isis-afi-safi-config; + uses rt-admin-config; + } + } + } + + grouping isis-shortcuts-afi-list { + description + "This grouping defines ISIS Shorcuts configuration and + state information"; + + list afi { + key "afi-name"; + + description + "Address-family list."; + + leaf afi-name { + type leafref { + path "../config/afi-name"; + } + description + "Reference to address-family type."; + } + + container config { + description + "This container defines ISIS Shortcuts configuration parameters"; + uses isis-shortcuts-afi-config; + } + + container state { + config false; + description + "This container defines ISIS Shortcuts state information"; + uses isis-shortcuts-afi-config; + } + } + } + + grouping isis-mt-list { + description + "This grouping defines multi-topology address-family configuration and + state information. MT0 - IPv4 Unicast, MT2 - IPv6 Unicast, MT3 - + IPv4 Multicast, MT4 - IPv6 Multicast"; + + container multi-topology { + description + "This container defines multi-topology address-family configuration + and state information. ISIS TLV 235, 237."; + + container config { + description + "This container defines AFI-SAFI multi-topology configuration + parameters"; + uses isis-mt-config; + } + + container state { + config false; + description + "This container defines AFI-SAFI multi-topology state information"; + uses isis-mt-config; + uses rt-admin-config; + } + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-isis-types.yang b/vendor/cisco/nx/9.3-14/openconfig-isis-types.yang new file mode 100644 index 000000000..a35caf4ca --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-isis-types.yang @@ -0,0 +1,356 @@ +module openconfig-isis-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/isis-types"; + + prefix "oc-isis-types"; + + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module contains general data definitions for use in ISIS YANG + model."; + + oc-ext:openconfig-version "0.4.2"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.4.2"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.4.1"; + } + + revision "2018-05-14" { + description + "Update LSDB model to correct Extended IS reach TLV + bug. This change is backwards incompatible due to + adding an additional level of hierarchy to support + multiple instances of the TLV."; + reference "0.4.0"; + } + + revision "2017-07-26" { + description + "Update LSDB and fix bugs."; + reference "0.3.2"; + } + + revision "2017-05-15" { + description + "Refactor LSDB."; + reference "0.3.0"; + } + + revision "2017-01-13" { + description + "Remove top-level /isis container"; + reference "0.2.1"; + } + + revision "2016-12-15" { + description + "Add segment routing to IS-IS module"; + reference "0.2.0"; + } + + revision "2016-10-18" { + description + "Initial revision of IS-IS models."; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + identity OVERLOAD_RESET_TRIGGER_TYPE { + description + "Base identify type for triggers that reset Overload Bit"; + } + + identity WAIT_FOR_BGP { + base OVERLOAD_RESET_TRIGGER_TYPE; + description + "Base identity type for resetting Overload Bit when BGP has converged. "; + } + + identity WAIT_FOR_SYSTEM { + base OVERLOAD_RESET_TRIGGER_TYPE; + description + "Base identity type for resetting Overload Bit when system resources have + been restored. "; + } + + identity MT_TYPE { + description + "Base identify type for multi-topology"; + } + + identity SAFI_TYPE { + description + "Base identify type for SAFI"; + } + + identity AFI_TYPE { + description + "Base identify type for AFI"; + } + + identity AFI_SAFI_TYPE { + description + "Base identify type for AFI/SAFI"; + } + + identity IPV4_UNICAST { + base AFI_SAFI_TYPE; + description + "Base identify type for IPv4 Unicast address family"; + } + + identity IPV6_MULTICAST { + base AFI_SAFI_TYPE; + description + "Base identify type for IPv6 multicast address family"; + } + + identity IPV4_MULTICAST { + base AFI_SAFI_TYPE; + description + "Base identify type for IPv4 multicast address family"; + } + + identity IPV6_UNICAST { + base AFI_SAFI_TYPE; + description + "Base identify type for IPv6 unicast address family"; + } + + identity UNICAST { + base SAFI_TYPE; + description + "Base identify type for IPv4 Unicast address family"; + } + + identity MULTICAST { + base SAFI_TYPE; + description + "Base identify type for IPv6 multicast address family"; + } + + identity IPV4 { + base AFI_TYPE; + description + "Base identify type for IPv4 address family"; + } + + identity IPV6 { + base AFI_TYPE; + description + "Base identify type for IPv6 address family"; + } + + // typedef statements + typedef level-type { + type enumeration { + enum LEVEL_1 { + description "This enum describes ISIS level 1"; + } + enum LEVEL_2 { + description "This enum describes ISIS level 2"; + } + enum LEVEL_1_2 { + description "This enum describes ISIS level 1-2"; + } + } + description + "This type defines ISIS level types"; + } + + typedef level-number { + type uint8 { + range "1..2"; + } + description + "This type defines ISIS level."; + } + + typedef adaptive-timer-type { + type enumeration { + enum LINEAR { + description "This enum describes linear algorithm timer"; + } + enum EXPONENTIAL { + description "This enum describes exponential algorithm timer"; + } + } + description + "This type defines ISIS adaptive timer types"; + } + + typedef hello-padding-type { + type enumeration { + enum STRICT { + description "This enum describes strict padding"; + } + enum LOOSE { + description "This enum describes loose padding"; + } + enum ADAPTIVE { + description "This enum describes adaptive padding"; + } + enum DISABLE { + description "This enum disables padding"; + } + } + description + "This type defines ISIS hello padding type"; + } + + typedef circuit-type { + type enumeration { + enum POINT_TO_POINT { + description "This enum describes a point-to-point interface"; + } + enum BROADCAST { + description "This enum describes a broadcast interface"; + } + } + description + "This type defines ISIS interface types "; + } + + typedef metric-type { + type enumeration { + enum INTERNAL { + description "This enum describes internal route type"; + } + enum EXTERNAL { + description "This enum describes external route type"; + } + } + description + "This type defines ISIS metric type"; + } + + typedef wide-metric { + type uint32 { + range "1..16777215"; + } + description + "This type defines ISIS wide metric."; + } + + typedef narrow-metric { + type uint8 { + range "1..63"; + } + description + "This type defines ISIS narrow metric."; + } + + typedef metric-style { + type enumeration { + enum NARROW_METRIC { + description + "This enum describes narrow metric style"; + reference "RFC1195"; + } + enum WIDE_METRIC { + description + "This enum describes wide metric style"; + reference "RFC5305"; + } + } + description + "This type defines ISIS metric styles"; + } + + typedef isis-interface-adj-state { + type enumeration { + enum UP { + description + "This state describes that adjacency is established."; + } + enum DOWN { + description + "This state describes that adjacency is NOT established."; + } + enum INIT { + description + "This state describes that adjacency is establishing."; + } + enum FAILED { + description + "This state describes that adjacency is failed."; + } + } + description + "This type defines the state of the interface."; + } + + typedef net { + type string { + pattern '^[a-fA-F0-9]{2}(\.[a-fA-F0-9]{4}){3,9}\.[a-fA-F0-9]{2}$'; + } + description + "This type defines OSI NET address. A NET should should be in + the form xx.yyyy.yyyy.yyyy.00 with up to 9 sets of yyyy."; + } + + typedef area-address { + type string { + pattern '^[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}$'; + } + description + "This type defines the ISIS area address."; + } + + typedef system-id { + type string { + pattern '^[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}$'; + } + description + "This type defines ISIS system id using pattern, system id looks + like : 0143.0438.AeF0"; + } + + typedef extended-circuit-id { + type uint32; + description + "This type defines interface circuit ID."; + } + + typedef lsp-id { + type string { + pattern + '^[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' + + '{4}\.[0-9][0-9]-[0-9][0-9]$'; + } + description + "This type defines ISIS LSP ID. ISIS LSP ID type should be in + the form of xxxx.xxxx.xxxx.xx-xx"; + } + typedef snpa { + type string { + length "0 .. 20"; + } + description + "This type defines Subnetwork Point of Attachment format."; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-isis.yang b/vendor/cisco/nx/9.3-14/openconfig-isis.yang new file mode 100644 index 000000000..e6b0b86b9 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-isis.yang @@ -0,0 +1,2076 @@ +module openconfig-isis { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/openconfig-isis"; + + prefix "oc-isis"; + + // import some basic types + import ietf-inet-types { prefix "inet"; } + import ietf-yang-types { prefix "yang"; } + import openconfig-types { prefix "oc-types"; } + import openconfig-isis-types { prefix "oc-isis-types"; } + import openconfig-routing-policy { prefix "oc-rpol"; } + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-interfaces { prefix "oc-if"; } + import openconfig-segment-routing { prefix "oc-sr"; } + // TODO(robjs): Import authentication and keychain following merge of these + // modules. + //import openconfig-authentication-types { prefix "oc-auth-types"; } + //import openconfig-keychain { prefix "oc-keychain"; } + + // Include submodules: + // IS-IS LSP is the LSDB for IS-IS. + include openconfig-isis-lsp; + // IS-IS RT is routing-related features for IS-IS + include openconfig-isis-routing; + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net "; + + description + "This module describes a YANG model for ISIS protocol configuration. + It is a limited subset of all of the configuration parameters + available in the variety of vendor implementations, hence it is + expected that it would be augmented with vendor - specific configuration + data as needed. Additional modules or submodules to handle other + aspects of ISIS configuration, including policy, routing, types, + LSDB and additional address families are also expected. This model + supports the following ISIS configuration level hierarchy: + + ISIS + +-> { global ISIS configuration} + +-> levels +-> { level config} + +-> { system-level-counters } + +-> { level link-state-database} + +-> interface +-> { interface config } + +-> { circuit-counters } + +-> { levels config } + +-> { level adjacencies }"; + + oc-ext:openconfig-version "0.4.2"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.4.2"; + } + + revision "2018-06-05" { + description + "Fix bugs in when statements."; + reference "0.4.1"; + } + + revision "2018-06-05" { + description + "Fix bugs in when statements."; + reference "0.4.1"; + } + + revision "2018-05-14" { + description + "Update LSDB model to correct Extended IS reach TLV + bug. This change is backwards incompatible due to + adding an additional level of hierarchy to support + multiple instances of the TLV."; + reference "0.4.0"; + } + + revision "2017-07-26" { + description + "Update LSDB and fix bugs."; + reference "0.3.2"; + } + + revision "2017-05-15" { + description + "Refactor LSDB."; + reference "0.3.0"; + } + + revision "2017-01-13" { + description + "Remove top-level /isis container"; + reference "0.2.1"; + } + + revision "2016-12-15" { + description + "Add segment routing to IS-IS module"; + reference "0.2.0"; + } + + revision "2016-10-18" { + description + "Initial revision of IS-IS models."; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // extension statements + + // feature statements + + // identity statements + + // typedef statements + + // grouping statements + + grouping isis-global-config { + description + "This grouping defines lobal configuration options for ISIS router."; + + // multi-instance + leaf instance { + type string; + default 0; + description + "ISIS Instance."; + } + + leaf-list net { + type oc-isis-types:net; + description + "ISIS network entity title (NET). The first 8 bits are usually + 49 (private AFI), next 16 bits represent area, next 48 bits represent + system id and final 8 bits are set to 0."; + reference + "International Organization for Standardization, Information + technology - Open Systems Interconnection-Network service + Definition - ISO/ IEC 8348:2002."; + } + + leaf maximum-area-addresses { + type uint8; + default 3; + description + "Maximum areas supported."; + } + + leaf level-capability { + type oc-isis-types:level-type; + default "LEVEL_1_2"; + description + "ISIS level capability(level-1, level-2,vlevel-1-2)."; + } + + leaf max-ecmp-paths { + type uint8; + description + "ISIS max-paths count."; + } + + leaf poi-tlv { + type boolean; + default false; + description + "ISIS purge TLV. When set to true, a TLV is added to purges to record + the system ID of the IS generating the purge."; + reference "RFC6232: Purge Originator Identification TLV for IS-IS. TLV 13."; + } + + leaf iid-tlv { + type boolean; + default false; + description + "ISIS Instance Identifier TLV. When set to trues, the IID-TLV identifies + the unique instance as well as the topology/topologies to which the + PDU applies."; + reference "RFC6822: IS-IS Multi-Instance. TLV 7"; + } + + leaf fast-flooding { + type boolean; + default true; + description + "When set to true, IS will always flood the LSP that triggered an SPF + before the router actually runs the SPF computation."; + } + } + + grouping admin-config { + description + "Re-usable grouping to enable or disable a particular IS-IS feature."; + + leaf enabled { + type boolean; + default false; + description + "When set to true, the functionality within which this leaf is + defined is enabled, when set to false it is explicitly disabled."; + } + } + + grouping isis-bfd-config { + description + "This grouping defines Bidirectionl-Forwarding-Detection + configuration."; + + //There is also BFD state under adjacency + leaf bfd-tlv { + type boolean; + description + "When set to true, BFD TLV is used. This enables support for the IS-IS + BFD TLV options, which specify that a BFD session must be established + before an IS-IS adjacency can transition to the established state. + This option should be enabled on all IS-IS neighbors on a shared + interface."; + reference "RFC6213. TLV 148"; + } + reference "RFC5880: Bidirectional Forwarding Detection (BFD)."; + } + + grouping isis-authentication-check-config { + description + "This grouping defines ISIS authentication check."; + + leaf authentication-check { + type boolean; + default true; + description + "When set to true, reject all ISIS protocol PDUs that either have a mismatch + in authentication-type or authentication-key."; + } + } + + grouping isis-metric-style-config { + description + "This grouping defines ISIS metric style."; + + leaf metric-style { + type oc-isis-types:metric-style; + description + "ISIS metric style types(narrow, wide)."; + } + } + + grouping authentication-key-config { + description + "This grouping defines authentication key configuration."; + + leaf auth-password { + type oc-types:routing-password; + description + "Authentication key string."; + } + } + + grouping keychain-base-group { + description + "This grouping defines keychain configuration."; + + container keychain { + description + "This container defines keychain parameters."; + + // TODO(robjs): Import keychain parameters following merge of the auth + // models. + //uses oc-keychain:keychain-common-base; + //uses oc-keychain:tolerance-base; + //uses oc-keychain:keychain-key-base; + } + } + + grouping isis-authentication-config { + description + "This grouping defines ISIS authentication configuration."; + + // TODO(robjs): Add authentication following merge of auth modules. + //leaf auth-type { + // type oc-auth-types:auth-type; + // description + // "ISIS authentication type (key, key-chain)."; + //} + + leaf csnp-authentication { + type boolean; + default false; + description + "Enable or disable for IS-IS CSNPs."; + } + + leaf psnp-authentication { + type boolean; + default false; + description + "Enable or disable authentication for IS-IS PSNPs."; + } + + leaf lsp-authentication { + type boolean; + default false; + description + "Enable or disable authentication for IS-IS LSPs."; + } + } + + grouping isis-authentication-group { + description + "This grouping defines ISIS authentication."; + + container config { + description + "This container defines ISIS authentication configuration."; + + uses isis-authentication-config; + } + + container state { + config false; + description + "This container defines ISIS authentication state."; + + uses isis-authentication-config; + } + + container key { + description + "This container defines ISIS authentication key"; + container config { + description + "This container defines ISIS authentication key configuration."; + + uses authentication-key-group-config { + // TODO(aashaikh): Add auth-type conditions after merge of + // auth models. + // when "../auth-type = 'KEY'"; + } + } + + container state { + config false; + description + "This container defines ISIS authentication key state."; + + uses authentication-key-group-config { + // TODO(aashaikh): Add auth-type conditions after merge of + // auth models. + // when "../auth-type = 'KEY'"; + } + } + } + + uses keychain-base-group { + // TODO(aashaikh): Add auth-type conditions after merge of + // auth models. + // when "../auth-type = 'KEY_CHAIN'"; + } + } + + grouping isis-hello-authentication-config { + description + "Configuration options for IS-IS hello authentication."; + + leaf hello-authentication { + type boolean; + default false; + description + "Enabled or disable ISIS Hello authentication."; + } + + // TODO(robjs): Add hello-auth-type following merge of auth models. + //leaf hello-auth-type { + // type oc-auth-types:auth-type; + // description + // "ISIS authentication type (key, key-chain)."; + //} + } + + grouping isis-hello-authentication-group { + description + "This grouping defines ISIS hello-authentication."; + + container config { + description + "This container defines ISIS authentication configuration."; + + uses isis-hello-authentication-config; + } + + container state { + config false; + description + "This container defines ISIS authentication state."; + + uses isis-hello-authentication-config; + } + + container key { + description + "This container defines ISIS authentication key"; + + container config { + description + "This container defines ISIS authentication key configuration."; + + uses authentication-key-group-config { + // TODO(aashaikh): Add auth-type conditions after merge of + // auth models. + // when "../auth-type = 'KEY'"; + } + } + + container state { + config false; + description + "This container defines ISIS authentication key state."; + + uses authentication-key-group-config { + // TODO(aashaikh): Add auth-type conditions after merge of + // auth models. + // when "../auth-type = 'KEY'"; + } + } + } + + uses keychain-base-group { + // TODO(aashaikh): Add auth-type conditions after merge of + // auth models. + // when "../auth-type = 'KEY_CHAIN'"; + } + } + + grouping isis-ldp-igp-config { + description + "This grouping defines ISIS/LDP Synchronization configuration."; + + leaf enabled { + type boolean; + default true; + description + "When set to true, rely on IGP/LDP synchronization. IGP cost for + link is maintained at max until LDP adjacencies are established "; + reference "RFC5443: LDP IGP Synchronization."; + } + + leaf post-session-up-delay { + type uint16; + units seconds; + description + "Specifies a delay, expressed in units of seconds, + between the LDP session to the IGP neighbor being established, and + it being considered synchronized by the IGP."; + } + } + + grouping isis-te-config { + description + "This grouping defines ISIS Traffic Engineering configuration."; + + leaf ipv4-router-id { + type inet:ipv4-address-no-zone; + description + "IPv4 MPLS Traffic Engineering Router-ID."; + } + + leaf ipv6-router-id { + type inet:ipv6-address-no-zone; + description + "IPv6 MPLS Traffic Engineering Router-ID."; + } + } + + grouping isis-reference-bandwidth-config { + description + "This grouping defines ISIS Reference Bandwidth Configuration."; + + leaf reference-bandwidth { + type uint32; + description + "ISIS Reference Bandwidth value"; + } + } + + grouping isis-overload-bit-set-config { + description + "This grouping defines ISIS Overload Bit."; + + leaf set-bit { + type boolean; + default false; + description + "When set to true, IS-IS overload bit is set."; + } + + leaf set-bit-on-boot { + type boolean; + default false; + description + "When set to true, the IS-IS overload bit is set on system boot."; + } + + leaf advertise-high-metric { + type boolean; + default false; + description + "When set to true, the local IS advertises links with the highest + available metric regardless of their configured metric. The metric + value is based on the metric style - if wide metrics are utilised + the metric is advertised as 16777214, otherwise they are advertised + with a value of 63."; + } + } + + grouping isis-overload-bit-reset-config { + description + "This grouping defines ISIS Overload Bit Reset Triggers"; + + leaf reset-trigger { + type identityref { + base oc-isis-types:OVERLOAD_RESET_TRIGGER_TYPE; + } + description + "In the case that the system sets the overload bit on start, the + system should reset the bit (i.e., clear the overload bit) upon + the specified trigger."; + } + + leaf delay { + type uint16; + units seconds; + description + "If a reset trigger is specified, the system should delay resetting + the overload bit for the specified number of seconds after the + trigger occurs."; + } + } + + grouping isis-attached-bit-config { + description + "This grouping defines ISIS Attached Bit"; + + leaf ignore-bit { + type boolean; + default false; + description + "When set to true, if the attached bit is set on an incoming Level 1 + IS-IS, the local system ignores it. In this case the local system + does not set a default route to the L1L2 router advertising the PDU + with the attached bit set."; + } + + leaf suppress-bit { + type boolean; + default false; + description + "When set to true, if the local IS acts as a L1L2 router, then the + attached bit is not advertised in locally generated PDUs."; + } + } + + grouping overload-bit-group { + description + "This grouping defines ISIS Overload Bit."; + + container config { + description + "This container defines ISIS Overload Bit configuration."; + + uses isis-overload-bit-set-config; + } + + container state { + config false; + description + "This container defines state for ISIS Overload Bit."; + + uses isis-overload-bit-set-config; + } + + container reset-triggers { + description + "This container defines state for ISIS Overload Bit reset triggers"; + + list reset-trigger { + key "reset-trigger"; + + description + "This list describes ISIS Overload reset trigger reasons."; + + leaf reset-trigger { + type leafref { + path "../config/reset-trigger"; + } + description + "Reference to the reset trigger reason"; + } + + container config { + description + "This container defines ISIS Overload Bit reset trigger + configuration."; + + uses isis-overload-bit-reset-config; + } + + container state { + config false; + description + "This container defines state for ISIS Overload Bit reset + triggers."; + + uses isis-overload-bit-reset-config; + } + } + } + } + + + grouping isis-base-level-config { + description + "This grouping defines ISIS Level configuration."; + + leaf level-number { + type oc-isis-types:level-number; + description + "ISIS level number (level-1, level-2)."; + } + } + + grouping isis-interface-level-config { + description + "This grouping defines ISIS Interface Level configuration."; + + leaf level-number { + type oc-isis-types:level-number; + description + "ISIS level number(level-1, level-2)."; + } + + leaf passive { + type boolean; + default false; + description + "ISIS passive interface admin enable/disable function."; + } + + leaf priority { + type uint8 { + range "0 .. 127"; + } + description + "ISIS neighbor priority(LAN hello PDU only)."; + } + } + + grouping isis-hello-timers-config { + description + "This grouping defines ISIS hello timers configuration."; + + leaf hello-interval { + type uint32; + description + "ISIS hello-interval value."; + } + + leaf hello-multiplier { + type uint8; + description + "ISIS hello-multiplier value."; + } + } + + grouping isis-interface-config { + description + "This grouping defines ISIS interface configuration."; + + leaf interface-id { + type oc-if:interface-id; + description + "Interface for which ISIS configuration is to be applied."; + } + + leaf passive { + type boolean; + default false; + description + "When set to true, the referenced interface is a passive interface + such that it is not eligible to establish adjacencies with other + systems, but is advertised into the IS-IS topology."; + } + + leaf hello-padding { + type oc-isis-types:hello-padding-type; + description + "This leaf controls padding type for IS-IS Hello PDUs."; + } + + leaf circuit-type { + type oc-isis-types:circuit-type; + description + "ISIS circuit type (p2p, broadcast)."; + } + } + + grouping isis-adaptive-timers-state { + description + "This grouping defines ISIS adaptive timers state"; + + leaf adaptive-timer { + type oc-isis-types:adaptive-timer-type; + description + "ISIS adaptive timer types (linear, exponential)."; + } + } + + grouping isis-lsp-generation-timers-config { + description + "This grouping defines ISIS LSP Generation timers configuration"; + + leaf lsp-max-wait-interval { + type uint64; + units milliseconds; + description + "Time interval in milliseconds that specifies max interval between + two consecutive occurrences of an LSP being generated."; + } + + leaf lsp-first-wait-interval { + type uint64; + units milliseconds; + description + "Time interval in milliseconds that specifies the first LSP generation + delay."; + } + + leaf lsp-second-wait-interval { + type uint64; + units milliseconds; + description + "Time interval in milliseconds that specifies the millisecond LSP + generation delay."; + } + } + + grouping isis-lsp-timers-config { + description + "This grouping defines ISIS LSP timers configuration"; + + leaf lsp-lifetime-interval { + type uint16; + units seconds; + default 1200; + description + "Time interval in seconds that specifies how long an LSP remains in + LSDB without being refreshed."; + } + + leaf lsp-refresh-interval { + type uint16; + units seconds; + description + "Time interval in seconds that specifies how often route topology + that a device originates is transmitted in LSPs."; + } + } + + grouping isis-spf-timers-config { + description + "This grouping defines ISIS SPF timers configuration."; + + leaf spf-hold-interval { + type uint64; + units milliseconds; + default 5000; + description + "SPF Hold Down time interval in milliseconds."; + } + + leaf spf-first-interval { + type uint64; + units milliseconds; + description + "Time interval in milliseconds between the + detection of topology change and when the SPF algorithm runs."; + } + leaf spf-second-interval { + type uint64; + units milliseconds; + description + "Time interval in milliseconds between the first and second + SPF calculation."; + } + } + + grouping isis-interface-timers-config { + description + "This grouping defines ISIS interface timers configuration."; + + leaf csnp-interval { + type uint16; + units seconds; + description + "The interval, specified in seconds, at which periodic CSNP packets + should be transmitted by the local IS."; + } + + leaf lsp-pacing-interval { + type uint64; + units milliseconds; + description + "The interval interval in milliseconds between the + detection of topology change and when the SPF algorithm runs."; + } + } + + grouping isis-transport-config { + description + "This grouping defines configuration parameters relating to the + transport protocol used by the ISIS."; + + leaf lsp-mtu-size { + type uint16; + description + "The maximum size in bytes of an IS-IS Link state PDU."; + } + } + + grouping isis-graceful-restart-config { + description + "This grouping defines ISIS graceful restart configuration."; + + leaf helper-only { + type boolean; + description + "Enable or disable the IS-IS graceful restart helper function. When + this leaf is set, the local system does not utilise the IS-IS + graceful restart procedures during its own restart, but supports + retaining forwarding information during a remote speaker's restart."; + } + reference "RFC 5306: Restart Signaling for IS-IS."; + } + + // configuration context containers + grouping inter-level-propagation-policies-structural { + description + "Propagate prefixes between IS-IS levels."; + + container inter-level-propagation-policies { + description + "Policies to propagate prefixes between IS-IS levels."; + + container level1-to-level2 { + description + "Policies relating to prefixes to be propagated from + Level 1 to Level 2."; + + container config { + description + "Configuration parameters relating to the propagation + of prefixes from IS-IS Level 1 to Level 2."; + + uses inter-level-propagation-policy-config; + } + + container state { + config false; + description + "Operational state parameters relating to the + propagation of prefixes from IS-IS Level 1 to Level 2."; + + uses inter-level-propagation-policy-config; + } + + } + + container level2-to-level1 { + description + "Policies relating to prefixes to be propagated from + Level2 to Level 1."; + + container config { + description + "Configuration parameters relating to the propagation + of prefixes from IS-IS Level 2 to Level 1."; + + uses inter-level-propagation-policy-config; + } + + container state { + config false; + description + "Operational state parameters relating to the propagation + of prefixes from IS-IS Level 2 to Level 1."; + + uses inter-level-propagation-policy-config; + } + } + } + } + + grouping inter-level-propagation-policy-config { + description + "Policy governing the propagation of prefixes between levels."; + + uses oc-rpol:apply-policy-import-config; + } + + grouping authentication-key-group-config { + description + "This grouping defines ISIS authentication key configuration."; + + uses authentication-key-config; + + // TODO(robjs): Add crypto-algorithm after merge of authentication modules. + //leaf crypto-algorithm { + // type identityref { + // base oc-auth-types:CRYPTO_TYPE; + // } + // description + // "Authentication key cryptographic algorithm to be used for key encryption."; + //} + } + + grouping isis-global-base { + description + "This grouping describes ISIS Global router."; + + container config { + description + "This container defines ISIS global configuration router."; + + uses isis-authentication-check-config; + uses isis-global-config; + } + + container state { + config false; + description + "This container defines state for ISIS global router."; + + uses isis-authentication-check-config; + uses isis-global-config; + } + + container lsp-bit { + description + "This container defines ISIS LSP Operational Bits."; + + container overload-bit { + description + "This container defines Overload Bit configuration."; + uses overload-bit-group; + } + + container attached-bit { + description + "This container defines Attached Bit."; + + container config { + description + "This container defines Attached Bit configuration."; + + uses isis-attached-bit-config; + } + + container state { + config false; + description + "This container defines state for Link State PDU Bit."; + + uses isis-attached-bit-config; + } + } + } + + container reference-bandwidth { + description + "This container defines ISIS Reference Bandwidth."; + + container config { + description + "This container defines Reference Bandwidth configuration"; + uses isis-reference-bandwidth-config; + } + + container state { + config false; + description + "This container defines state for Reference Bandwidth."; + + uses isis-reference-bandwidth-config; + } + } + + container nsr { + description + "This container defines ISIS Non-Stop Routing."; + + container config { + description + "This container defines Non-Stop-Routing configuration."; + + uses admin-config; + } + + container state { + config false; + description + "This container defines state for Non-Stop-Routing"; + + uses admin-config; + } + } + + container graceful-restart { + description + "This container defines ISIS Graceful Restart."; + + container config { + description + "This container defines ISIS graceful-restart configuration."; + + uses admin-config; + uses isis-graceful-restart-config; + } + + container state { + config false; + description + "This container defines state information for ISIS graceful-restart."; + + uses admin-config; + uses isis-graceful-restart-config; + } + } + + container timers { + description + "This container defines ISIS timers."; + + container config { + description + "This container defines ISIS global timers configuration."; + + uses isis-lsp-timers-config; + } + + container state { + config false; + description + "This container defines state information for ISIS global timers."; + + uses isis-lsp-timers-config; + } + + container spf { + description + "This container defines ISIS SPF timer settings."; + + container config { + description + "This container defines ISIS SPF timers configuration."; + + uses isis-spf-timers-config; + } + + container state { + config false; + description + "This container defines state information for ISIS SPF timers."; + + uses isis-spf-timers-config; + uses isis-adaptive-timers-state; + } + } + + container lsp-generation { + description + "This container defines ISIS LSP Generation."; + + container config { + description + "This container defines ISIS LSP Generation timers + configuration."; + + uses isis-lsp-generation-timers-config; + } + + container state { + config false; + description + "This container defines state information for ISIS LSP Generation + timers."; + + uses isis-lsp-generation-timers-config; + uses isis-adaptive-timers-state; + } + } + } + + container transport { + description + "This container defines ISIS transport."; + + container config { + description + "This container defines ISIS transport related configuration."; + + uses isis-transport-config; + } + + container state { + config false; + description + "This container defines state information for ISIS transport + parameters."; + + uses isis-transport-config; + } + } + + container mpls { + description + "Configuration and operational state relating to MPLS-related + features in IS-IS"; + + container igp-ldp-sync { + description + "Configuration and operational state relating to synchronisation + between the LDP and IS-IS"; + + container config { + description + "This container defines ISIS/IGP configuration."; + + uses isis-ldp-igp-config; + } + + container state { + config false; + description + "This container defines state information for ISIS/LDP Sync."; + + uses isis-ldp-igp-config; + } + } + } + + container igp-shortcuts { + description + "This container defines IGP shortcuts configuration and state + information."; + + uses isis-shortcuts-afi-list; + } + + container afi-safi { + description + "This container defines address-family specific configuration + and state information."; + + uses isis-afi-safi-list; + } + + uses oc-sr:sr-igp-top; + } + + grouping isis-route-preference-config { + description + "This grouping defines ISIS route preference configuration"; + + leaf external-route-preference { + type uint8 { + range "1..max"; + } + description + "Administrative Distance(preference) for external ISIS routes."; + } + + leaf internal-route-preference { + type uint8 { + range "1..max"; + } + description + "Administrative Distance(preference) for internal ISIS routes."; + } + } + + grouping isis-interfaces { + description + "This grouping defines ISIS interfaces configured on local system."; + + list interface { + key "interface-id"; + + description + "This list contains ISIS interfaces."; + + leaf interface-id { + type leafref { + path "../config/interface-id"; + } + description + "Reference to interface-id"; + } + + uses isis-interface-group; + uses oc-if:interface-ref; + } + } + + grouping isis-interface-group { + description + "This grouping defines ISIS interfaces configured on local system."; + + container config { + description + "This container defines ISIS interface configuration."; + + uses admin-config; + uses isis-interface-config; + } + + container state { + config false; + description + "This container defines state information for ISIS interfaces."; + + uses admin-config; + uses isis-interface-config; + } + + container circuit-counters { + description + "This container defines state information for ISIS circuit counters."; + + uses circuit-counters-structural; + } + + container authentication { + description + "This container defines ISIS authentication."; + + uses isis-hello-authentication-group; + } + + container afi-safi { + description + "This container defines address-family specific configuration + and state information."; + + uses isis-if-global-afi-safi-list; + } + + container levels { + description + "This container defines ISIS level specific configuration and + state information."; + + uses isis-interface-levels; + } + + container timers { + description + "This container describes ISIS interface timers configuration"; + + container config { + description + "Configuration parameters relating to interface + timers for IS-IS"; + + uses isis-interface-timers-config; + } + + container state { + config false; + description + "This container defines state information for ISIS interface timers."; + + uses isis-interface-timers-config; + } + } + + container bfd { + //TODO(bogdanov): Integrate BFD model/module + description + "This container defines BFD."; + + container config { + description + "This container defines BFD configuration parameters."; + + uses isis-bfd-config; + } + + container state { + config false; + description + "This container defines BFD state information."; + + uses isis-bfd-config; + } + } + } + + grouping isis-levels { + description + "This grouping defines global ISIS Levels."; + + list level { + key "level-number"; + + description + "Configuration and operational state parameters related to a + particular level within the IS-IS protocol instance"; + + leaf level-number { + type leafref { + path "../config/level-number"; + } + description + "Reference to ISIS level-number."; + } + + uses isis-level-group; + } + } + + grouping isis-interface-levels { + description + "This grouping defines ISIS interface Levels."; + + list level { + key "level-number"; + description + "Configuration and operational state parameters related to a + particular level on an IS-IS enabled interface."; + + leaf level-number { + type leafref { + path "../config/level-number"; + } + description + "Reference to ISIS level-number."; + } + + uses isis-interface-level-group; + } + } + + grouping isis-level-group { + description + "This grouping defines ISIS level configuration and state + information."; + + container config { + description + "This container defines ISIS level based configuration."; + + uses admin-config; + uses isis-base-level-config; + uses isis-metric-style-config; + uses isis-authentication-check-config; + } + + container state { + config false; + description + "This container defines ISIS level state information."; + + uses admin-config; + uses isis-base-level-config; + uses isis-metric-style-config; + uses isis-authentication-check-config; + } + + container system-level-counters { + description + "This container defines ISIS system level counters."; + + uses system-level-counters-structural; + } + + container link-state-database { + config false; + description + "This container defines ISIS LSDB."; + + list lsp { + key "lsp-id"; + description + "This list describes LSPs in the LSDB."; + uses lsp-state; + } + } + + container traffic-engineering { + description + "This container defines ISIS TE."; + + container config { + description + "This container defines ISIS TE configuration."; + + uses admin-config; + uses isis-te-config; + } + + container state { + config false; + description + "This container defines ISIS TE state information."; + + uses admin-config; + uses isis-te-config; + } + } + + container route-preference { + description + "This container defines Administrative Distance (or preference) + assigned to ISIS routes (level1 internal, level2 internal, level1 + external, level2 external)."; + + container config { + description + "This container defines route preference configuration."; + uses isis-route-preference-config; + } + + container state { + config false; + description + "This container defines ISIS route preference state information."; + uses isis-route-preference-config; + } + } + + container authentication { + description + "This container defines ISIS authentication."; + uses isis-authentication-group; + } + + } + + grouping isis-interface-level-group { + description + "This grouping defines ISIS interface level."; + + container config { + description + "This container defines interface ISIS level configuration."; + + uses isis-interface-level-config; + uses admin-config; + } + + container state { + config false; + description + "This container defines interface ISIS level state information."; + + uses isis-interface-level-config; + uses admin-config; + } + + container packet-counters { + description + "This container defines ISIS interface packet counters."; + + uses packet-counters-structural; + } + + container adjacencies { + config false; + description + "This container defines ISIS adjacencies."; + + list adjacency { + key "system-id"; + + description + "List of the local system's IS-IS adjacencies."; + + leaf system-id { + type leafref { + path "../state/system-id"; + } + description + "Reference to the IS neighbor."; + } + + container state { + description + "Operational state relating to the IS-IS adjacency with the + remote system"; + + uses adjacency-state; + } + } + } + + container timers { + description + "This container defines ISIS timers."; + + container config { + description + "This container defines ISIS interface hello-timers configuration."; + + uses isis-hello-timers-config; + } + + container state { + config false; + description + "This container defines ISIS interface hello-timers state."; + + uses isis-hello-timers-config; + } + } + + container afi-safi { + description + "This container defines address-family specific configuration + and state information."; + + uses isis-if-afi-safi-list; + } + + container hello-authentication { + description + "This container defines ISIS authentication."; + + uses isis-hello-authentication-group; + } + } + + + grouping isis-top { + description + "This grouping define top-level ISIS model data."; + + container isis { + description + "This container defines top-level ISIS configuration and state + information."; + + container global { + description + "This container defines global ISIS configuration and state + information."; + + uses isis-global-base; + uses inter-level-propagation-policies-structural; + } + + container levels { + description + "This container defines ISIS level configuration and state + information."; + uses isis-levels; + } + + container interfaces { + description + "This container defines global ISIS interface configuration and + state information."; + uses isis-interfaces; + } + } + } + + grouping adjacency-state { + description + "This grouping defines ISIS adjacency."; + + leaf system-id { + type oc-isis-types:system-id; + description + "ISIS neighbor system-id."; + } + + leaf neighbor-ipv4-address { + type inet:ipv4-address-no-zone; + description + "ISIS Neighbor IPv4 address."; + } + + leaf neighbor-ipv6-address { + type inet:ipv6-address-no-zone; + description + "ISIS Neighbor IPv6 address."; + } + + leaf neighbor-snpa { + type oc-isis-types:snpa; + description + "ISIS neighbor SNPA."; + } + + leaf local-extended-circuit-id { + type oc-isis-types:extended-circuit-id; + description + "Local extended circuit ID."; + } + leaf neighbor-extended-circuit-id { + type oc-isis-types:extended-circuit-id; + description + "ISIS neighbor extended circuit ID."; + } + + leaf priority { + type uint8 { + range "0..127"; + } + description + "Priority of the neighboring IS(LAN Hello only)."; + } + + leaf dis-system-id { + type oc-isis-types:system-id; + description + "DIS System ID(LAN hello only)."; + } + + leaf neighbor-circuit-type { + type oc-isis-types:level-type; + description + "Received ISIS circuit type (level-1, level-2, level-1-2)."; + } + + leaf adjacency-type { + type oc-isis-types:level-type; + description + "Formed ISIS adjacency type(level-1, level-2, level-1-2)."; + } + + leaf adjacency-state { + type oc-isis-types:isis-interface-adj-state; + description + "P2P 3-way ISIS adjacency state(up, down, init, failed)."; + reference "RFC4303. TLV 240."; + } + + leaf remaining-hold-time { + type uint16; + units seconds; + description + "Holding time in seconds for adjacency. This value is based on received + hello PDUs and the elapsed time since receipt."; + } + + leaf up-time { + type yang:timestamp; + description + "Adjacency up time."; + } + + leaf multi-topology { + type boolean; + description + "When set to true, ISIS multi-topology is supported."; + reference "RFC5129. TLV 229."; + } + + leaf-list topology { + type identityref { + base oc-isis-types:AFI_SAFI_TYPE; + } + description + "ISIS topology type support(ipv4-unicast, ipv6-unicast, + ipv4-multicast, ipv6-multicast)."; + } + + leaf restart-support { + type boolean; + description + "When set to true, Graceful-restart signaling is supported."; + } + + leaf restart-suppress { + type boolean; + description + "When set to true, adjacency is not advertised. The SA bit is used by a + starting router to request that its neighbor suppress advertisement of + the adjacency to the starting router in the neighbor's LSPs."; + } + + leaf restart-status { + type boolean; + description + "When set to true, neighbor is being helped. The RR bit is used by a + (re)starting router to signal to its neighbors that a (re)start is in + progress."; + } + + leaf-list area-address { + type oc-isis-types:area-address; + description + "List of ISIS area-address(es)."; + } + + leaf-list nlpid { + type enumeration { + enum IPV4 { + description + "IPv4 Address family."; + } + enum IPV6 { + description + "IPv6 Address family."; + } + } + description + "Supported Protocol. IPv4 is defined as (0xcc) + and IPv6 - (0x8e). ISIS reference is TLV 129."; + } + + // TODO(bogdanov): update when BFD model is integrated. + //leaf ipv4-bfd-status { + //type oc-isis-types:bfd-state; + //description + // "IPv4 BFD session status."; + //} + //leaf ipv6-bfd-status { + //type oc-isis-types:bfd-state; + //description + // "IPv4 BFD session status. "; + //} + + } + + grouping packet-counters-generic-state { + description + "Operational state parameters relating to LSP packet counters."; + + leaf received { + type yang:counter32; + description + "The number of the specified type of PDU received on the interface."; + } + leaf processed { + type yang:counter32; + description + "The number of the specified type of PDU received on the interface + that have been processed by the local system."; + } + leaf dropped { + type yang:counter32; + description + "The number of the specified type of PDU received on the interface + that have been dropped."; + } + + leaf sent { + type yang:counter32; + description + "The number of the specified type of PDU that have been sent by the + local system on the interface."; + } + + leaf retransmit { + type yang:counter32; + description + "The number of the specified type of PDU that that have been + retransmitted by the local system on the interface."; + } + } + + grouping packet-counters-structural { + description + "This grouping defines ISIS packet counter state."; + + container lsp { + description + "This container defines LSP packet counters."; + + container state { + config false; + description + "This container defines LSP PDU counters."; + + uses packet-counters-generic-state; + } + } + + container iih { + description + "This container defines IIH packet counters."; + + container state { + config false; + description + "Operational counters relating to IIH PDUs"; + + uses packet-counters-generic-state; + } + } + + container ish { + description + "This container defines ISH packet counters."; + + container state { + config false; + description + "Operational state relating to ISH PDUs."; + + uses packet-counters-generic-state; + } + } + + container esh { + description + "This container defines ESH packet counters."; + container state { + config false; + description + "Operational state relating to ESH PDUs"; + + uses packet-counters-generic-state; + } + } + + container psnp { + description + "This container defines PSNP packet counters."; + + container state { + config false; + description + "Packet counters relating to PSNPs."; + + uses packet-counters-generic-state; + } + } + + container csnp { + description + "Operational state parameters relating to CSNPs."; + + container state { + config false; + description + "Packet counters relating to CSNPs."; + + uses packet-counters-generic-state; + } + } + + container unknown { + description + "Operational state parameters relating to IS-IS PDUs that are not + otherwise classified - referred to as Unknown PDUs."; + + container state { + config false; + description + "Packet counters relating to unknown PDUs."; + + uses packet-counters-generic-state; + } + } + } + + grouping system-level-counters-state { + description + "IS-IS counters that are relevant to the system IS-IS context."; + + leaf corrupted-lsps { + type yang:counter32; + description + "Number of corrupted in-memory LSPs detected. LSPs received from the + wire with a bad checksum are silently dropped and not counted. LSPs + received from the wire with parse errors are counted by lsp-errors. MIB + Entry: SysCorrLSPs."; + } + + leaf database-overloads { + type yang:counter32; + description + "Number of times the database has become + overloaded. + MIB entry: SysLSPL(Level)DbaseOloads."; + } + + leaf manual-address-drop-from-areas { + type yang:counter32; + description + "Number of times a manual address has been dropped from area. + MIB Entry: SysManAddrDropFromAreas."; + } + + leaf exceed-max-seq-nums { + type yang:counter32; + description + "The number of times the system has attempted to exceed the maximum + sequence number. MIB Entry: SysAttmptToExMaxSeqNums."; + } + leaf seq-num-skips { + type yang:counter32; + description + "Number of times a sequence number skip has occurred. MIB Entry: + SysSeqNumSkips."; + } + + leaf own-lsp-purges { + type yang:counter32; + description + "Number of times a zero-aged copy of the system's + own LSP is received from some other node. + MIB Entry: isisSysOwnLSPPurges."; + } + + leaf id-len-mismatch { + type yang:counter32; + description + "Number of times a PDU is received with a different value for ID field + length from that of the receiving system. MIB Entry: + isisSysIDFieldLenMismatches."; + } + + leaf part-changes { + type yang:counter32; + description + "The number of partition changes detected. MIB Entry: SysPartChanges."; + } + + leaf max-area-address-mismatches { + type yang:counter32; + description + "Number of times a PDU is received with a different value for + MaximumAreaAddresses from that of the receiving system. MIB Entry: + SysMaxAreaAddrMismatches."; + } + + leaf auth-fails { + type yang:counter32; + description + "The number of authentication key failures. + MIB Entry: SysAuthFails."; + } + + leaf spf-runs { + type yang:counter32; + description + "The number of times SPF was ran at this level."; + } + + leaf auth-type-fails { + type yang:counter32; + description + "The number of authentication type mismatches."; + } + + leaf lsp-errors { + type yang:counter32; + description + "The number of received LSPs with errors."; + } + } + + grouping system-level-counters-structural { + description + "This grouping defines system level counters."; + + container state { + config false; + description + "The container defines a list of system counters for the IS."; + + uses system-level-counters-state; + } + } + + grouping circuit-counters-state { + description + "Operational state parameters relating to counters specific to one + interface or circuit."; + + leaf adj-changes { + type yang:counter32; + description + "Number of times an adjacency state change has occurred on this circuit. + MIB Entry: CircAdjChanges."; + } + + leaf init-fails { + type yang:counter32; + description + "Number of times initialization of this circuit has failed. This counts + events such as PPP NCP failures. MIB Entry: CircInitFails."; + } + + leaf rejected-adj { + type yang:counter32; + description + "Number of times an adjacency has been rejected on this circuit. MIB + Entry: CircRejAdjs."; + } + + leaf id-field-len-mismatches { + type yang:counter32; + description + "Number of times an IS-IS control PDU with an ID field length different + from that for this system has been received. + MIB Entry: CircIDFieldLenMismatches."; + } + + leaf max-area-address-mismatches { + type yang:counter32; + description + "Number of times an IS-IS control PDU with a max area address field + different from that for this system has been received. MIB Entry: + CircMaxAreaAddrMismatches."; + } + + leaf auth-type-fails { + type yang:counter32; + description + "Number of times an IS-IS control PDU with an auth type field different + from that for this system has been received. MIB Entry: + CircAuthTypeFails."; + } + + leaf auth-fails { + type yang:counter32; + description + "Number of times an IS-IS control PDU with the correct auth type has + failed to pass authentication validation. MIB Entry: CircAuthFails."; + } + + leaf lan-dis-changes { + type yang:counter32; + description + "Number of times the Designated IS has changed on this circuit at this + level. If the circuit is point to point, this count is zero. MIB Entry: + CircLANDesISChanges."; + } + + leaf adj-number { + type uint32; + description + "Number of adjacencies on this circuit. + MIB Entry: CircNumAdj."; + } + } + + grouping circuit-counters-structural { + description + "This grouping defines circuit counters."; + + container state { + config false; + description + "The container defines a list of counters for IS circuit."; + + uses circuit-counters-state; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-lacp.yang b/vendor/cisco/nx/9.3-14/openconfig-lacp.yang new file mode 100644 index 000000000..710bff679 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-lacp.yang @@ -0,0 +1,469 @@ +module openconfig-lacp { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/lacp"; + + prefix "oc-lacp"; + + // import some basic types + import openconfig-interfaces { prefix oc-if; } + import openconfig-yang-types { prefix oc-yang; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module describes configuration and operational state + data for Link Aggregation Control Protocol (LACP) for + managing aggregate interfaces. It works in conjunction with + the OpenConfig interfaces and aggregate interfaces models."; + + oc-ext:openconfig-version "1.1.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "1.1.1"; + } + + revision "2017-05-05" { + description + "Add member local and remote port num"; + reference "1.1.0"; + } + + revision "2016-05-26" { + description + "OpenConfig public release"; + reference "1.0.2"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // typedef statements + + typedef lacp-activity-type { + type enumeration { + enum ACTIVE { + description + "Interface is an active member, i.e., will detect and + maintain aggregates"; + } + enum PASSIVE { + description + "Interface is a passive member, i.e., it participates + with an active partner"; + } + } + description + "Describes the LACP membership type, active or passive, of the + interface in the aggregate"; + reference "IEEE 802.1AX-2008"; + } + + typedef lacp-timeout-type { + type enumeration { + enum LONG { + description + "Participant wishes to use long timeouts to detect + status of the aggregate, i.e., will expect less frequent + transmissions. Long timeout is 90 seconds."; + } + enum SHORT { + description + "Participant wishes to use short timeouts, i.e., expects + frequent transmissions to aggressively detect status + changes. Short timeout is 3 seconds."; + } + } + description + "Type of timeout used, short or long, by LACP participants"; + reference "IEEE 802.1AX-2008"; + } + + typedef lacp-synchronization-type { + type enumeration { + enum IN_SYNC { + description + "Participant is in sync with the system id and key + transmitted"; + } + enum OUT_SYNC { + description + "Participant is not in sync with the system id and key + transmitted"; + } + } + description + "Indicates LACP synchronization state of participant"; + reference "IEEE 802.1AX-2008"; + } + + typedef lacp-period-type { + type enumeration { + enum FAST { + description "Send LACP packets every second"; + } + enum SLOW { + description "Send LACP packets every 30 seconds"; + } + } + description + "Defines the period options for the time between sending + LACP messages"; + reference "IEEE 802.3ad"; + } + + // grouping statements + + + grouping aggregation-lacp-members-config { + description + "Configuration data for lacp member interfaces"; + + //currently a placeholder -- the list of member interfaces + //and their status is considered opstate only + } + + grouping aggregation-lacp-members-state { + description + "Operational status data for the member interfaces"; + + leaf interface { + type oc-if:base-interface-ref; + description + "Reference to interface member of the LACP aggregate"; + } + + leaf activity { + type lacp-activity-type; + description "Indicates participant is active or passive"; + } + + leaf timeout { + type lacp-timeout-type; + description + "The timeout type (short or long) used by the + participant"; + } + + leaf synchronization { + type lacp-synchronization-type; + description + "Indicates whether the participant is in-sync or + out-of-sync"; + } + + leaf aggregatable { + type boolean; + description + "A true value indicates that the participant will allow + the link to be used as part of the aggregate. A false + value indicates the link should be used as an individual + link"; + } + + leaf collecting { + type boolean; + description + "If true, the participant is collecting incoming frames + on the link, otherwise false"; + } + + leaf distributing { + type boolean; + description + "When true, the participant is distributing outgoing + frames; when false, distribution is disabled"; + } + + leaf system-id { + type oc-yang:mac-address; + description + "MAC address that defines the local system ID for the + aggregate interface"; + } + + leaf oper-key { + type uint16; + description + "Current operational value of the key for the aggregate + interface"; + } + + leaf partner-id { + type oc-yang:mac-address; + description + "MAC address representing the protocol partner's interface + system ID"; + } + + leaf partner-key { + type uint16; + description + "Operational value of the protocol partner's key"; + } + + leaf port-num { + type uint16; + description + "Port number of the local (actor) aggregation member"; + } + + leaf partner-port-num { + type uint16; + description + "Port number of the partner (remote) port for this member + port"; + } + } + +grouping aggregation-lacp-members-statistics { + description + "LACP packet statistics for the member interfaces"; + + container counters { + description + "LACP protocol counters"; + + leaf lacp-in-pkts { + type oc-yang:counter64; + description + "Number of LACPDUs received"; + } + + leaf lacp-out-pkts { + type oc-yang:counter64; + description + "Number of LACPDUs transmitted"; + } + + leaf lacp-rx-errors { + type oc-yang:counter64; + description + "Number of LACPDU receive packet errors"; + } + + leaf lacp-tx-errors { + type oc-yang:counter64; + description + "Number of LACPDU transmit packet errors"; + } + + leaf lacp-unknown-errors { + type oc-yang:counter64; + description + "Number of LACPDU unknown packet errors"; + } + + leaf lacp-errors { + type oc-yang:counter64; + description + "Number of LACPDU illegal packet errors"; + } + } + } + + grouping aggregation-lacp-members-top { + description + "Top-level grouping for aggregate members list"; + + container members { + config false; + description + "Enclosing container for the list of members interfaces of + the aggregate. This list is considered operational state + only so is labeled config false and has no config container"; + + list member { + key "interface"; + description + "List of member interfaces and their associated status for + a LACP-controlled aggregate interface. Member list is not + configurable here -- each interface indicates items + its participation in the LAG."; + + leaf interface { + type leafref { + path "../state/interface"; + } + description + "Reference to aggregate member interface"; + } + + + container state { + + config false; + + description + "Operational state data for aggregate members"; + + uses aggregation-lacp-members-state; + uses aggregation-lacp-members-statistics; + } + } + } + } + + grouping lacp-interfaces-config { + description + "Configuration data for each LACP-enabled interface"; + + leaf name { + type oc-if:base-interface-ref; + description + "Reference to the interface on which LACP should be + configured. The type of the target interface must be + ieee8023adLag"; + } + + leaf interval { + type lacp-period-type; + default SLOW; + description + "Set the period between LACP messages -- uses + the lacp-period-type enumeration."; + } + + leaf lacp-mode { + type lacp-activity-type; + default ACTIVE; + description + "ACTIVE is to initiate the transmission of LACP packets. + PASSIVE is to wait for peer to initiate the transmission of + LACP packets."; + //TODO:some implementations configure the LACP mode on each + //member interface rather than on the LAG interface. There + //may be use cases for this identified at a later time. + } + + leaf system-id-mac { + type oc-yang:mac-address; + description + "The MAC address portion of the node's System ID. This is + combined with the system priority to construct the 8-octet + system-id"; + } + + uses aggregation-lacp-global-config; + } + + grouping lacp-interfaces-state { + description + "Operational state data for each LACP-enabled interface"; + } + + grouping lacp-interfaces-top { + description + "Top-level grouping for LACP-enabled interfaces"; + + container interfaces { + description + "Enclosing container for the list of LACP-enabled + interfaces"; + + list interface { + key "name"; + description + "List of aggregate interfaces managed by LACP"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the list key"; + } + + container config { + description + "Configuration data for each LACP aggregate interface"; + + uses lacp-interfaces-config; + } + + container state { + + config false; + + description + "Operational state data for each LACP aggregate + interface"; + + uses lacp-interfaces-config; + uses lacp-interfaces-state; + } + + uses aggregation-lacp-members-top; + } + } + } + + grouping aggregation-lacp-global-config { + description + "Configuration data for LACP aggregate interfaces"; + + + leaf system-priority { + type uint16; + description + "Sytem priority used by the node on this LAG interface. + Lower value is higher priority for determining which node + is the controlling system."; + } + } + + grouping aggregation-lacp-global-state { + description + "Operational data for LACP aggregate interfaces"; + + } + + grouping aggregation-lacp-top { + description + "Top level configuration and state variable containers for + LACP data"; + + container lacp { + description + "Configuration and operational state data for LACP protocol + operation on the aggregate interface"; + + container config { + description + "Configuration data for LACP"; + + uses aggregation-lacp-global-config; + } + + container state { + + config false; + description + "Operational state data for LACP"; + + uses aggregation-lacp-global-config; + uses aggregation-lacp-global-state; + } + uses lacp-interfaces-top; + } + } + + // data definition statements + uses aggregation-lacp-top; + + // augment statements + + +} \ No newline at end of file diff --git a/vendor/cisco/nx/9.3-14/openconfig-lldp-types.yang b/vendor/cisco/nx/9.3-14/openconfig-lldp-types.yang new file mode 100644 index 000000000..6c4a0ac17 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-lldp-types.yang @@ -0,0 +1,306 @@ +module openconfig-lldp-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/lldp/types"; + + prefix "oc-lldp-types"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines types related to the LLDP protocol model."; + + oc-ext:openconfig-version "0.1.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.1.1"; + } + + revision "2016-05-16" { + description + "Initial public revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + identity LLDP_SYSTEM_CAPABILITY { + description + "Base identity for standard LLDP system capabilities. + The system capabilities field contains a bit-map of the + capabilities that define the primary function(s) of + the system. A system may advertise more than one capability."; + reference + "Table 8-4 System Capabilities, IEEE 802.1AB-2009"; + } + + identity OTHER { + base LLDP_SYSTEM_CAPABILITY; + description + "Other capability not specified; bit position 1"; + } + + identity REPEATER { + base LLDP_SYSTEM_CAPABILITY; + description + "Repeater capability; bit position 2"; + reference + "IETF RFC 2108"; + } + + identity MAC_BRIDGE { + base LLDP_SYSTEM_CAPABILITY; + description + "MAC bridge capability; bit position 3"; + reference + "IEEE Std 802.1D"; + } + + identity WLAN_ACCESS_POINT { + base LLDP_SYSTEM_CAPABILITY; + description + "WLAN access point capability; bit position 4"; + reference + "IEEE Std 802.11 MIB"; + } + + identity ROUTER { + base LLDP_SYSTEM_CAPABILITY; + description + "Router; bit position 5"; + reference + "IETF RFC 1812"; + } + + identity TELEPHONE { + base LLDP_SYSTEM_CAPABILITY; + description + "Telephone capability; bit position 6"; + reference + "IETF RFC 4293"; + } + + identity DOCSIS_CABLE_DEVICE { + base LLDP_SYSTEM_CAPABILITY; + description + "DOCSIS cable device; bit position 7"; + reference + "IETF RFC 4639 and IETF RFC 4546"; + } + + identity STATION_ONLY { + base LLDP_SYSTEM_CAPABILITY; + description + "Station only capability, for devices that implement only an + end station capability, and for which none of the other + capabilities apply; bit position 8"; + reference + "IETF RFC 4293"; + } + + identity C_VLAN { + base LLDP_SYSTEM_CAPABILITY; + description + "C-VLAN component of a VLAN Bridge; bit position 9"; + reference + "IEEE Std 802.1Q"; + } + + identity S_VLAN { + base LLDP_SYSTEM_CAPABILITY; + description + "S-VLAN component of a VLAN Bridge; bit position 10"; + reference + "IEEE Std 802.1Q"; + } + + identity TWO_PORT_MAC_RELAY { + base LLDP_SYSTEM_CAPABILITY; + description + "Two-port MAC Relay (TPMR) capability; bit position 11"; + reference + "IEEE Std 802.1Q"; + } + + identity LLDP_TLV { + description + "A base identity which describes the TLVs in LLDP"; + } + + identity CHASSIS_ID { + base LLDP_TLV; + description + "The chassis identifier of the device associated with + the transmitting LLDP agent"; + reference "IEEE Std 802.1AB"; + } + + identity PORT_ID { + base LLDP_TLV; + description + "The port identifier associated with the interface + on with the LLDP agent is transmitting"; + reference "IEEE Std 802.1AB"; + } + + identity PORT_DESCRIPTION { + base LLDP_TLV; + description + "The description of the port that is associated with + the interface on which the LLDP agent is transmitting"; + reference "IEEE Std 802.1AB"; + } + + identity SYSTEM_NAME { + base LLDP_TLV; + description + "The assigned name (sysName or hostname) of the device + which is transmitting the LLDP PDU"; + reference "IEEE Std 802.1AB"; + } + + identity SYSTEM_DESCRIPTION { + base LLDP_TLV; + description + "The description (sysDescr) of the device which is + transmitting the LLDP PDU"; + reference "IEEE Std 802.1AB"; + } + + identity SYSTEM_CAPABILITIES { + base LLDP_TLV; + description + "The primary functions of the device transmitting the + LLDP PDU and their administrative status"; + reference "IEEE Std 802.1AB"; + } + + identity MANAGEMENT_ADDRESS { + base LLDP_TLV; + description + "The address associated with the device transmitting the + LLDP PDU which can be used for higher-layer network + management"; + reference "IEEE Std 802.1AB"; + } + + // typedef statements + + typedef chassis-id-type { + type enumeration { + enum CHASSIS_COMPONENT { + description + "Chassis identifier based on the value of entPhysicalAlias + object defined in IETF RFC 2737"; + } + enum INTERFACE_ALIAS { + description + "Chassis identifier based on the value of ifAlias object + defined in IETF RFC 2863"; + } + enum PORT_COMPONENT { + description + "Chassis identifier based on the value of entPhysicalAlias + object defined in IETF RFC 2737 for a port or backplane + component"; + } + enum MAC_ADDRESS { + description + "Chassis identifier based on the value of a unicast source + address (encoded in network byte order and IEEE 802.3 + canonical bit order), of a port on the containing chassis + as defined in IEEE Std 802-2001"; + } + enum NETWORK_ADDRESS { + description + "Chassis identifier based on a network address, + associated with a particular chassis. The encoded address + is composed of two fields. The first field is a single + octet, representing the IANA AddressFamilyNumbers value + for the specific address type, and the second field is the + network address value"; + } + enum INTERFACE_NAME { + description + "Chassis identifier based on the name of the interface, + e.g., the value of ifName object defined in IETF RFC 2863"; + } + enum LOCAL { + description + "Chassis identifier based on a locally defined value"; + } + } + description + "Type definition with enumerations describing the source of + the chassis identifier"; + reference + "IEEE 802.1AB LLDP MIB"; + } + + typedef port-id-type { + type enumeration { + enum INTERFACE_ALIAS { + description + "Chassis identifier based on the value of ifAlias object + defined in IETF RFC 2863"; + } + enum PORT_COMPONENT { + description + "Port identifier based on the value of entPhysicalAlias + object defined in IETF RFC 2737 for a port component"; + } + enum MAC_ADDRESS { + description + "Port identifier based on the value of a unicast source + address (encoded in network byte order and IEEE 802.3 + canonical bit order) associated with a port"; + } + enum NETWORK_ADDRESS { + description + "Port identifier based on a network address, + associated with a particular port"; + } + enum INTERFACE_NAME { + description + "Port identifier based on the name of the interface, + e.g., the value of ifName object defined in IETF RFC 2863"; + } + enum AGENT_CIRCUIT_ID { + description + "Port identifer based on the circuit id in the DHCP + relay agent information option as defined in IETF + RFC 3046"; + } + enum LOCAL { + description + "Port identifier based on a locally defined alphanumeric + string"; + } + } + description + "Type definition with enumerations describing the basis of + the port identifier"; + reference + "IEEE 802.1AB LLDP MIB"; + } + + +} \ No newline at end of file diff --git a/vendor/cisco/nx/9.3-14/openconfig-lldp.yang b/vendor/cisco/nx/9.3-14/openconfig-lldp.yang new file mode 100644 index 000000000..e687b7c61 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-lldp.yang @@ -0,0 +1,660 @@ +module openconfig-lldp { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/lldp"; + + prefix "oc-lldp"; + + import openconfig-lldp-types { prefix oc-lldp-types; } + import openconfig-interfaces { prefix oc-if; } + import ietf-yang-types { prefix yang; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state data + for the LLDP protocol."; + + oc-ext:openconfig-version "0.2.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.2.1"; + } + + revision "2018-07-17" { + description + "Adds ttl to lldp-neighbor-state"; + reference "0.2.0"; + } + + revision "2016-05-16" { + description + "Initial public revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + + // grouping statements + + grouping lldp-common-counters { + description + "Definition of global and per-interface counters"; + + leaf frame-in { + type yang:counter64; + description + "The number of lldp frames received."; + } + + leaf frame-out { + type yang:counter64; + description + "The number of frames transmitted out."; + } + + leaf frame-error-in { + type yang:counter64; + description + "The number of LLDP frames received with errors."; + } + + leaf frame-discard { + type yang:counter64; + description + "The number of LLDP frames received and discarded."; + } + + leaf tlv-discard { + type yang:counter64; + description + "The number of TLV frames received and discarded."; + } + + leaf tlv-unknown { + type yang:counter64; + description + "The number of frames received with unknown TLV."; + } + + leaf last-clear { + type yang:date-and-time; + description + "Indicates the last time the counters were + cleared."; + } + } + + grouping lldp-global-counters { + description + "Definition of global LLDP counters"; + + uses lldp-common-counters; + + leaf tlv-accepted { + type yang:counter64; + description + "The number of valid TLVs received."; + } + + leaf entries-aged-out { + type yang:counter64; + description + "The number of entries aged out due to timeout."; + } + + } + + grouping lldp-interface-counters { + description + "Definition of per-interface LLDP counters"; + + uses lldp-common-counters; + + leaf frame-error-out { + type yang:counter64; + description + "The number of frame transmit errors on the + interface."; + } + } + + grouping lldp-system-info-config { + description + "Configuration data for system-level local and remote + LLDP information"; + + leaf system-name { + type string { + length 0..255; + } + description + "The system name field shall contain an alpha-numeric string + that indicates the system's administratively assigned name. + The system name should be the system's fully qualified domain + name. If implementations support IETF RFC 3418, the sysName + object should be used for this field."; + } + + leaf system-description { + type string { + length 0..255; + } + description + "The system description field shall contain an alpha-numeric + string that is the textual description of the network entity. + The system description should include the full name and + version identification of the system's hardware type, + software operating system, and networking software. If + implementations support IETF RFC 3418, the sysDescr object + should be used for this field."; + } + + leaf chassis-id { + type string; + description + "The Chassis ID is a mandatory TLV which identifies the + chassis component of the endpoint identifier associated with + the transmitting LLDP agent"; + } + + leaf chassis-id-type { + type oc-lldp-types:chassis-id-type; + description + "This field identifies the format and source of the chassis + identifier string. It is an enumerator defined by the + LldpChassisIdSubtype object from IEEE 802.1AB MIB."; + } + } + + grouping lldp-system-info-state { + description + "Operational state data reported for the local and remote + systems"; + + } + + grouping lldp-neighbor-config { + description + "Configuration data for LLDP neighbors"; + + } + + grouping lldp-neighbor-state { + description + "Operational state data for LLDP neighbors"; + + leaf id { + type string; + description + "System generated identifier for the neighbor on the + interface."; + } + + leaf age { + type uint64; + units "seconds"; + description + "Age since discovery"; + } + + leaf last-update { + type int64; + description + "Seconds since last update received."; + } + + leaf ttl { + type uint16; + units "seconds"; + description + "The time-to-live (TTL) is a mandatory TLV which indicates + how long information from the neighbor should be considered + valid."; + } + + leaf port-id { + type string; + description + "The Port ID is a mandatory TLV which identifies the port + component of the endpoint identifier associated with the + transmitting LLDP agent. If the specified port is an IEEE + 802.3 Repeater port, then this TLV is optional."; + } + + leaf port-id-type { + type oc-lldp-types:port-id-type; + description + "This field identifies the format and source of the port + identifier string. It is an enumerator defined by the + PtopoPortIdType object from RFC2922."; + } + + leaf port-description { + type string; + description + "The binary string containing the actual port identifier for + the port which this LLDP PDU was transmitted. The source and + format of this field is defined by PtopoPortId from + RFC2922."; + } + + leaf management-address { + type string; + description + "The Management Address is a mandatory TLV which identifies a + network address associated with the local LLDP agent, which + can be used to reach the agent on the port identified in the + Port ID TLV."; + } + + leaf management-address-type { + type string; + description + "The enumerated value for the network address type + identified in this TLV. This enumeration is defined in the + 'Assigned Numbers' RFC [RFC3232] and the + ianaAddressFamilyNumbers object."; + } + } + + grouping lldp-capabilities-config { + description + "Configuration data for LLDP capabilities"; + } + + grouping lldp-capabilities-state { + description + "Operational state data for LLDP capabilities"; + + leaf name { + type identityref { + base oc-lldp-types:LLDP_SYSTEM_CAPABILITY; + } + description + "Name of the system capability advertised by the neighbor. + Capabilities are represented in a bitmap that defines the + primary functions of the system. The capabilities are + defined in IEEE 802.1AB."; + } + + leaf enabled { + type boolean; + description + "Indicates whether the corresponding system capability is + enabled on the neighbor."; + reference + "Sec 8.5.8.2 of IEEE 802.1AB-2009"; + } + } + + grouping lldp-capabilities-top { + description + "Top-level grouping for LLDP capabilities"; + + container capabilities { + config false; + description + "Enclosing container for list of LLDP capabilities"; + + list capability { + key "name"; + description + "List of LLDP system capabilities advertised by the + neighbor"; + + leaf name { + type leafref { + path "../state/name"; + } + description + "Reference to capabilities list key"; + } + + container config { + description + "Configuration data for LLDP capabilities"; + + uses lldp-capabilities-config; + } + + container state { + + config false; + + description + "Operational state data for LLDP capabilities"; + + uses lldp-capabilities-config; + uses lldp-capabilities-state; + } + } + } + } + + grouping lldp-custom-tlv-config { + description + "Configuration data for custom LLDP TLVs"; + } + + grouping lldp-custom-tlv-state { + description + "Operational state data for custom LLDP TLVs"; + + leaf type { + type int32; + description + "The integer value identifying the type of information + contained in the value field."; + } + + leaf oui { + type string; + description + "The organizationally unique identifier field shall contain + the organization's OUI as defined in Clause 9 of IEEE Std + 802. The high-order octet is 0 and the low-order 3 octets + are the SMI Network Management Private Enterprise Code of + the Vendor in network byte order, as defined in the + 'Assigned Numbers' RFC [RFC3232]."; + } + + leaf oui-subtype { + type string; + description + "The organizationally defined subtype field shall contain a + unique subtype value assigned by the defining organization."; + } + + // TODO: consider making this string type + leaf value { + type binary; + description + "A variable-length octet-string containing the + instance-specific information for this TLV."; + } + } + + grouping lldp-custom-tlv-top { + description + "Top-level grouping for custom LLDP TLVs"; + + container custom-tlvs { + config false; + description + "Enclosing container for list of custom TLVs from a + neighbor"; + + list tlv { + key "type oui oui-subtype"; + description + "List of custom LLDP TLVs from a neighbor"; + + leaf type { + type leafref { + path "../state/type"; + } + description + "Reference to type list key"; + } + + leaf oui { + type leafref { + path "../state/oui"; + } + description + "Reference to oui list key"; + } + + leaf oui-subtype { + type leafref { + path "../state/oui-subtype"; + } + description + "Reference to oui-subtype list key"; + } + + container config { + description + "Configuration data "; + + uses lldp-custom-tlv-config; + } + + container state { + + config false; + + description + "Operational state data "; + + uses lldp-custom-tlv-config; + uses lldp-custom-tlv-state; + } + } + } + } + + grouping lldp-neighbor-top { + description + "Top-level grouping for the LLDP neighbor list"; + + container neighbors { + config false; + description + "Enclosing container for list of LLDP neighbors on an + interface"; + + list neighbor { + key "id"; + description + "List of LLDP neighbors"; + + leaf id { + type leafref { + path "../state/id"; + } + description + " "; + } + + container config { + description + "Configuration data "; + + uses lldp-neighbor-config; + } + + container state { + + config false; + + description + "Operational state data "; + + uses lldp-system-info-config; + uses lldp-system-info-state; + uses lldp-neighbor-config; + uses lldp-neighbor-state; + } + + uses lldp-custom-tlv-top; + uses lldp-capabilities-top; + } + } + } + + grouping lldp-interface-config { + description + "Configuration data for LLDP on each interface"; + + leaf name { + type oc-if:base-interface-ref; + description + "Reference to the LLDP Ethernet interface"; + } + + leaf enabled { + type boolean; + default "true"; + description + "Enable or disable the LLDP protocol on the interface."; + } + } + + grouping lldp-interface-state { + description + "Operational state data for LLDP on each interface"; + + container counters { + description + "LLDP counters on each interface"; + + uses lldp-interface-counters; + } + } + + grouping lldp-interface-top { + description + "Top-level grouping "; + + container interfaces { + description + "Enclosing container "; + + list interface { + key "name"; + description + "List of interfaces on which LLDP is enabled / available"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the list key"; + } + + container config { + description + "Configuration data for LLDP on each interface"; + + uses lldp-interface-config; + } + + container state { + + config false; + + description + "Operational state data "; + + uses lldp-interface-config; + uses lldp-interface-state; + } + + uses lldp-neighbor-top; + } + } + } + + + grouping lldp-config { + description + "Configuration data for global LLDP parameters"; + + leaf enabled { + type boolean; + default "true"; + description + "System level state of the LLDP protocol."; + } + + leaf hello-timer { + type uint64; + units "seconds"; + description + "System level hello timer for the LLDP protocol."; + } + + leaf-list suppress-tlv-advertisement { + type identityref { + base oc-lldp-types:LLDP_TLV; + } + description + "Indicates whether the local system should suppress the + advertisement of particular TLVs with the LLDP PDUs that it + transmits. Where a TLV type is specified within this list, it + should not be included in any LLDP PDU transmitted by the + local agent."; + } + } + + grouping lldp-state { + description + "Operational state data for global LLDP parameters"; + + container counters { + description + "Global LLDP counters"; + + uses lldp-global-counters; + } + } + + grouping lldp-top { + description + "Top-level grouping for LLDP model"; + + container lldp { + description + "Top-level container for LLDP configuration and state data"; + + container config { + description + "Configuration data "; + + uses lldp-config; + uses lldp-system-info-config; + } + + container state { + + config false; + + description + "Operational state data "; + + uses lldp-config; + uses lldp-system-info-config; + uses lldp-system-info-state; + uses lldp-state; + } + + uses lldp-interface-top; + } + } + + // data definition statements + + uses lldp-top; + + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-local-routing.yang b/vendor/cisco/nx/9.3-14/openconfig-local-routing.yang new file mode 100644 index 000000000..5184fe7de --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-local-routing.yang @@ -0,0 +1,408 @@ +module openconfig-local-routing { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/local-routing"; + + prefix "oc-loc-rt"; + + // import some basic types + import openconfig-inet-types { prefix inet; } + import openconfig-policy-types { prefix oc-pt; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-interfaces { prefix oc-if; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module describes configuration and operational state data + for routes that are locally generated, i.e., not created by + dynamic routing protocols. These include static routes, locally + created aggregate routes for reducing the number of constituent + routes that must be advertised, summary routes for IGPs, etc. + + This model expresses locally generated routes as generically as + possible, avoiding configuration of protocol-specific attributes + at the time of route creation. This is primarily to avoid + assumptions about how underlying router implementations handle + route attributes in various routing table data structures they + maintain. Hence, the definition of locally generated routes + essentially creates 'bare' routes that do not have any protocol- + specific attributes. + + When protocol-specific attributes must be attached to a route + (e.g., communities on a locally defined route meant to be + advertised via BGP), the attributes should be attached via a + protocol-specific policy after importing the route into the + protocol for distribution (again via routing policy)."; + + oc-ext:openconfig-version "1.0.1"; + + revision "2017-05-15" { + description + "Update to resolve style guide non-compliance."; + reference "1.0.1"; + } + + revision "2016-05-11" { + description + "OpenConfig public release"; + reference "1.0.0"; + } + + + // identity statements + + identity LOCAL_DEFINED_NEXT_HOP { + description + "A base identity type of local defined next-hops"; + } + + identity DROP { + base LOCAL_DEFINED_NEXT_HOP; + description + "Discard traffic for the corresponding destination"; + } + + identity LOCAL_LINK { + base LOCAL_DEFINED_NEXT_HOP; + description + "Treat traffic towards addresses within the specified + next-hop prefix as though they are connected to a local + link. When the LOCAL_LINK next-hop type is specified, + an interface must also be specified such that + the local system can determine which link to trigger + link-layer address discovery against"; + } + + // typedef statements + + typedef local-defined-next-hop { + type identityref { + base LOCAL_DEFINED_NEXT_HOP; + } + description + "Pre-defined next-hop designation for locally generated + routes"; + } + + // grouping statements + + grouping local-generic-settings { + description + "Generic options that can be set on local routes When + they are defined"; + + leaf set-tag { + type oc-pt:tag-type; + description + "Set a generic tag value on the route. This tag can be + used for filtering routes that are distributed to other + routing protocols."; + } + } + + grouping local-static-config { + description + "Configuration data for static routes."; + + leaf prefix { + type inet:ip-prefix; + description + "Destination prefix for the static route, either IPv4 or + IPv6."; + } + + uses local-generic-settings; + } + + grouping local-static-state { + description + "Operational state data for static routes"; + } + + + grouping local-static-nexthop-config { + description + "Configuration parameters related to each next-hop entry + specified for a static route"; + + leaf index { + type string; + description + "An user-specified identifier utilised to uniquely reference + the next-hop entry in the next-hop list. The value of this + index has no semantic meaning other than for referencing + the entry."; + } + + leaf next-hop { + type union { + type inet:ip-address; + type local-defined-next-hop; + } + description + "The next-hop that is to be used for the static route + - this may be specified as an IP address, an interface + or a pre-defined next-hop type - for instance, DROP or + LOCAL_LINK. When this leaf is not set, and the interface-ref + value is specified for the next-hop, then the system should + treat the prefix as though it is directly connected to the + interface."; + } + + leaf metric { + type uint32; + description + "A metric which is utilised to specify the preference of + the next-hop entry when it is injected into the RIB. The + lower the metric, the more preferable the prefix is. When + this value is not specified the metric is inherited from + the default metric utilised for static routes within the + network instance that the static routes are being + instantiated. When multiple next-hops are specified for a + static route, the metric is utilised to determine which of + the next-hops is to be installed in the RIB. When multiple + next-hops have the same metric (be it specified, or simply + the default) then these next-hops should all be installed + in the RIB"; + } + + leaf recurse { + type boolean; + default false; + description + "Determines whether the next-hop should be allowed to + be looked up recursively - i.e., via a RIB entry which has + been installed by a routing protocol, or another static route + - rather than needing to be connected directly to an + interface of the local system within the current network + instance. When the interface reference specified within the + next-hop entry is set (i.e., is not null) then forwarding is + restricted to being via the interface specified - and + recursion is hence disabled."; + } + } + + grouping local-static-nexthop-state { + description + "Operational state parameters relating to a next-hop entry + for a static route"; + } + + + grouping local-static-top { + description + "Top-level grouping for the list of static route definitions"; + + container static-routes { + description + "Enclosing container for the list of static routes"; + + list static { + key "prefix"; + description + "List of locally configured static routes"; + + leaf prefix { + type leafref { + path "../config/prefix"; + } + description + "Reference to the destination prefix list key."; + } + + container config { + description + "Configuration data for static routes"; + + uses local-static-config; + } + + container state { + + config false; + + description + "Operational state data for static routes"; + + uses local-static-config; + uses local-static-state; + } + + container next-hops { + description + "Configuration and state parameters relating to the + next-hops that are to be utilised for the static + route being specified"; + + list next-hop { + key "index"; + + description + "A list of next-hops to be utilised for the static + route being specified."; + + leaf index { + type leafref { + path "../config/index"; + } + description + "A reference to the index of the current next-hop. + The index is intended to be a user-specified value + which can be used to reference the next-hop in + question, without any other semantics being + assigned to it."; + } + + container config { + description + "Configuration parameters relating to the next-hop + entry"; + + uses local-static-nexthop-config; + } + + container state { + config false; + description + "Operational state parameters relating to the + next-hop entry"; + + uses local-static-nexthop-config; + uses local-static-nexthop-state; + } + + uses oc-if:interface-ref; + } + } + } + } + } + + grouping local-aggregate-config { + description + "Configuration data for aggregate routes"; + + leaf prefix { + type inet:ip-prefix; + description + "Aggregate prefix to be advertised"; + } + + leaf discard { + type boolean; + default false; + description + "When true, install the aggregate route with a discard + next-hop -- traffic destined to the aggregate will be + discarded with no ICMP message generated. When false, + traffic destined to an aggregate address when no + constituent routes are present will generate an ICMP + unreachable message."; + } + + uses local-generic-settings; + + } + + grouping local-aggregate-state { + description + "Operational state data for local aggregate advertisement + definitions"; + } + + grouping local-aggregate-top { + description + "Top-level grouping for local aggregates"; + + container local-aggregates { + description + "Enclosing container for locally-defined aggregate + routes"; + + list aggregate { + key "prefix"; + description + "List of aggregates"; + + leaf prefix { + type leafref { + path "../config/prefix"; + } + description + "Reference to the configured prefix for this aggregate"; + } + + container config { + description + "Configuration data for aggregate advertisements"; + + uses local-aggregate-config; + } + + container state { + + config false; + + description + "Operational state data for aggregate + advertisements"; + + uses local-aggregate-config; + uses local-aggregate-state; + } + } + } + } + + grouping local-routes-config { + description + "Configuration data for locally defined routes"; + } + + grouping local-routes-state { + description + "Operational state data for locally defined routes"; + } + + grouping local-routes-top { + description + "Top-level grouping for local routes"; + + container local-routes { + description + "Top-level container for local routes"; + + container config { + description + "Configuration data for locally defined routes"; + + uses local-routes-config; + } + + container state { + + config false; + + description + "Operational state data for locally defined routes"; + + uses local-routes-config; + uses local-routes-state; + } + + uses local-static-top; + uses local-aggregate-top; + } + } + + uses local-routes-top; + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-messages.yang b/vendor/cisco/nx/9.3-14/openconfig-messages.yang new file mode 100644 index 000000000..894704479 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-messages.yang @@ -0,0 +1,221 @@ +module openconfig-messages { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/messages"; + + prefix "oc-messages"; + + // import some basic types + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-system-logging { prefix "oc-log"; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state data + related to Syslog messages that a device may generate. + + These messages are historically obtained through the Syslog + transport, however this module allows for obtaining them through + an alternative transport, such as a Subscribe operation over an + RPC. + + This module does not usurp traditional syslog servers, which may + still be configured through the + /yang/system/openconfig-system.yang model, rather it provies the + Operator with an alternative method of consuming messages."; + + oc-ext:openconfig-version "0.0.1"; + + revision "2018-08-13" { + description + "Initial draft."; + reference "0.0.1"; + } + + // identity statements + + identity DEBUG_SERVICE { + description + "Base identity for debug services. Identities within this base + identity are to be augmented in by vendors."; + } + + // grouping statements + + grouping messages-config { + description + "Configuration data for defining Syslog message severity."; + + leaf severity { + type oc-log:syslog-severity; + description + "Specifies that only messages of the given severity (or + greater severity) are sent over the RPC. + + This is analogous to differentiating which severity is to be + sent to legacy Syslog servers, as opposed to local buffer or + files."; + } + } + + grouping messages-state { + description + "Operational state data for Syslog messages."; + + container message { + oc-ext:telemetry-atomic; + config false; + description + "Syslog messages the client is Subscribing to. This is all + messages currently configured to be sent according to + syslog-severity."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + + // Decide if it is OK to include ALL in this leaf. + leaf msg { + type string; + description + "Message payload. If other leafs within this container not + supported, this leaf MAY include the entire message, + inclding pri, procid, app-name etc.."; + } + + leaf priority { + type uint8; + description + "The Priority value (PRIVAL) represents both the + Facility and Severity."; + reference + "IETF RFC 5424, Section 6.2.1"; + } + + leaf app-name { + type string; + description + "The APP-NAME field SHOULD identify the device or + application that originated the message."; + reference + "IETF RFC 5424, Section 6.2.5."; + } + + leaf procid { + type string; + description + "PROCID is a value that is included in the message, having + no interoperable meaning, except that a change in the value + indicates there has been a discontinuity in syslog + reporting."; + reference + "IETF RFC 5424, Section 6.2.6."; + } + + leaf msgid { + type string; + description + "The MSGID SHOULD identify the type of message. For + example, a firewall might use the MSGID 'TCPIN' for + incoming TCP traffic and the MSGID 'TCPOUT' for outgoing + TCP traffic."; + reference + "IETF RFC 5424, Section 6.2.7."; + } + } + } + + grouping debug-messages-config { + description + "Configuration data for enabling debug messages."; + + leaf service { + type identityref { + base DEBUG_SERVICE; + } + description + "Enumeration of all services which can have debugging enabled. + Vendors are to augment this base identity with their platform + or OS specific debug options."; + } + + leaf enabled { + type boolean; + default false; + description + "Enable and disable debugging."; + } + } + + grouping debug-messages-top { + description + "Configuration data for enabling Syslog debug messages."; + + container debug-entries { + description + "Enclosing container for list of debugs to enable."; + + list debug-service { + key "service"; + description + "List of debugging entries."; + + leaf service { + type leafref { + path "../config/service"; + } + description + "Reference to the debug-enable service key."; + } + + container config { + description + "Configuration data for debug service entries."; + + uses debug-messages-config; + } + + container state { + config false; + description + "Operational state data for enabled debugs."; + uses debug-messages-config; + } + } + } + } + + grouping messages-top { + description + "Top-level grouping for Syslog messages."; + + container messages { + description + "Top-level container for Syslog messages."; + + container config { + description + "Configuration data for Syslog messages."; + + uses messages-config; + } + + container state { + config false; + description + "Operational state data for a Syslog messages."; + + uses messages-config; + uses messages-state; + } + uses debug-messages-top; + } + } + uses messages-top; +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-mpls-igp.yang b/vendor/cisco/nx/9.3-14/openconfig-mpls-igp.yang new file mode 100644 index 000000000..9409138a5 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-mpls-igp.yang @@ -0,0 +1,131 @@ +submodule openconfig-mpls-igp { + + yang-version "1"; + + belongs-to "openconfig-mpls" { + prefix "oc-mpls"; + } + + // import some basic types + import openconfig-mpls-ldp { prefix oc-ldp; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Configuration generic configuration parameters for IGP-congruent + LSPs"; + + oc-ext:openconfig-version "3.0.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.0.1"; + } + + revision "2018-07-02" { + description + "Add new RSVP-TE statistics, remove associated-rsvp-session + leaf. Remove use of date-and-time."; + reference "3.0.0"; + } + + revision "2018-06-16" { + description + "Included attributes for base LDP configuration."; + reference "2.6.0"; + } + + revision "2018-06-13" { + description + "Add ttl-propagation to global MPLS config"; + reference "2.5.0"; + } + + revision "2018-06-05" { + description + "Fixed bugs in when statements on RSVP-TE attributes"; + reference "2.4.2"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "2.4.1"; + } + + revision "2017-06-21" { + description + "Add TC bits typedef."; + reference "2.4.0"; + } + + revision "2017-03-22" { + description + "Add RSVP calculated-absolute-subscription-bw"; + reference "2.3.0"; + } + + revision "2017-01-26" { + description + "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; + reference "2.2.0"; + } + + revision "2016-12-15" { + description + "Add additional MPLS parameters"; + reference "2.1.0"; + } + + revision "2016-09-01" { + description + "Revisions based on implementation feedback"; + reference "2.0.0"; + } + + revision "2016-08-08" { + description + "Public release of MPLS models"; + reference "1.0.1"; + } + + // grouping statements + + grouping igp-lsp-common { + description + "common definitions for IGP-congruent LSPs"; + + } + + + grouping igp-lsp-setup { + description + "signaling protocol definitions for IGP-based LSPs"; + + container path-setup-protocol { + description + "select and configure the signaling method for + the LSP"; + + // uses path-setup-common; + uses oc-ldp:igp-lsp-ldp-setup; + } + } + + + // data definition statements + + // augment statements + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-mpls-ldp.yang b/vendor/cisco/nx/9.3-14/openconfig-mpls-ldp.yang new file mode 100644 index 000000000..baa6ed2a8 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-mpls-ldp.yang @@ -0,0 +1,890 @@ +module openconfig-mpls-ldp { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/ldp"; + + prefix "oc-ldp"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + import openconfig-inet-types { prefix oc-inet; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-yang-types { prefix oc-yang; } + import openconfig-types { prefix oc-types; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Configuration of Label Distribution Protocol global and LSP- + specific parameters for IGP-congruent LSPs. + + This model reuses data items defined in the IETF YANG model for + LDP described by draft-ietf-mpls-ldp-yang-04, YANG Data Model for + MPLS LDP, following an alternate structure. + + Portions of this code were derived from draft-ietf-mpls-ldp-yang-04. + Please reproduce this note if possible. + + IETF code is subject to the following copyright and license: + Copyright (c) IETF Trust and the persons identified as authors of + the code. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, is permitted pursuant to, and subject to the license + terms contained in, the Simplified BSD License set forth in + Section 4.c of the IETF Trust's Legal Provisions Relating + to IETF Documents (http://trustee.ietf.org/license-info)."; + + oc-ext:openconfig-version "3.0.2"; + + revision "2019-07-09" { + description + "Remove units for timeticks64 leaves, since the type + specifies the units."; + reference "3.0.2"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.0.1"; + } + + revision "2018-07-02" { + description + "Add new RSVP-TE statistics, remove associated-rsvp-session + leaf. Remove use of date-and-time."; + reference "3.0.0"; + } + + revision "2018-06-16" { + description + "Included attributes for base LDP configuration."; + reference "2.6.0"; + } + + revision "2018-06-13" { + description + "Add ttl-propagation to global MPLS config"; + reference "2.5.0"; + } + + revision "2018-06-05" { + description + "Fixed bugs in when statements on RSVP-TE attributes"; + reference "2.4.2"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "2.4.1"; + } + + revision "2017-06-21" { + description + "Add TC bits typedef."; + reference "2.4.0"; + } + + revision "2017-03-22" { + description + "Add RSVP calculated-absolute-subscription-bw"; + reference "2.3.0"; + } + + revision "2017-01-26" { + description + "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; + reference "2.2.0"; + } + + revision "2016-12-15" { + description + "Add additional MPLS parameters"; + reference "2.1.0"; + } + + revision "2016-09-01" { + description + "Revisions based on implementation feedback"; + reference "2.0.0"; + } + + revision "2016-08-08" { + description + "Public release of MPLS models"; + reference "1.0.1"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // typedef statements + + typedef mpls-ldp-adjacency-type { + type enumeration { + enum LINK { + description + "Link LDP adjacency"; + } + enum TARGETED { + description + "Targeted LDP adjacency"; + } + } + description + "enumerated type for specifying LDP adjacencies"; + } + + typedef mpls-ldp-afi { + type enumeration { + enum IPV4 { + description + "IPv4 AFI for LDP adjancencies"; + } + enum IPV6 { + description + "IPv6 AFI for LDP adjancencies"; + } + } + description + "enumerated type for specifying LDP AFIs"; + } + + // grouping statements + + grouping ldp-global { + description + "Global LDP signaling configuration"; + + container ldp { + description + "LDP global signaling configuration"; + + container global { + description + "Platform wide LDP configuration and state"; + + uses mpls-ldp-global; + uses mpls-ldp-graceful-restart; + uses mpls-ldp-authentication-top; + } + + uses mpls-ldp-interface-attributes-top; + uses mpls-ldp-targeted-top; + uses mpls-ldp-neighbors-top; + + } + } + + grouping mpls-ldp-authentication-top { + description + "Grouping containing LDP authentication attributes"; + + container authentication { + description + "Global LDP authentication"; + + container config { + description + "Configuration of LDP authentication attributes"; + uses mpls-ldp-authentication-config; + } + + container state { + config false; + description + "LDP authentication state."; + uses mpls-ldp-authentication-config; + } + } + } + + grouping mpls-ldp-neighbors-top { + description + "Global LDP neighbor attributes"; + + container neighbors { + description + "State and configuration LDP neighbors attributes"; + + list neighbor { + key "lsr-id label-space-id"; + + description + "List of LDP neighbors and their attributes."; + + leaf lsr-id { + type leafref { + path "../config/lsr-id"; + } + description + "Neighbor label switch router identifier."; + } + + leaf label-space-id { + type leafref { + path "../config/label-space-id"; + } + description + "Label space ID of the neighbor."; + } + + container config { + description + "Neighbor configuration attributes."; + uses mpls-ldp-neighbor-config; + } + + container state { + config false; + description + "Neighbor state attributes."; + uses mpls-ldp-neighbor-config; + } + + container hello-adjacencies { + config false; + description "Top container for hello adjacencies + for a given LDP neighbor."; + + list hello-adjacency { + key "remote-address local-address"; + config false; + description + "List of hello adjacencies for a given LDP + neighbor."; + + leaf remote-address { + config false; + description + "Within the LDP adjacency, this attribute + shows the neighbor address."; + type leafref { + path "../state/remote-address"; + } + } + + leaf local-address { + config false; + description + "Within the LDP adjacency, this attribute + shows the local address."; + type leafref { + path "../state/local-address"; + } + } + + container state { + description + "State information for a particular LDP + hello adjacency."; + uses mpls-ldp-adjacency-state; + } + + uses oc-if:interface-ref-state; + + container hello-holdtime { + + description + "Specifies the time the sending LSR will + maintain its record of Hellos from the + receiving LSR"; + + container state { + description + "State attributes related to the + hello-holdtime."; + config false; + uses mpls-ldp-hello-holdtime-state; + } + } + + } + } + + uses mpls-ldp-authentication-top; + + } + } + } + + grouping mpls-ldp-neighbor-config { + description + "Global configuration for LDP neighbors."; + + leaf lsr-id { + type oc-inet:ip-address; + description + "Neighbor label switch router identifier."; + } + + leaf label-space-id { + type uint16; + description + "Label space ID of the neighbor."; + } + + } + + grouping mpls-ldp-adjacency-state { + + description + "Set of LDP neighbor related state attributes."; + + leaf remote-address { + description + "Within the LDP adjacency, this attribute + shows the neighbor address."; + type oc-inet:ip-address; + } + + leaf local-address { + description + "Within the LDP adjacency, this attribute + shows the local address."; + type oc-inet:ip-address; + } + + leaf adjacency-type { + description + "This attributes defines if the LDP + adjacency is from a direct link or from + targeted discovery."; + type oc-ldp:mpls-ldp-adjacency-type; + } + + leaf last-clear { + type oc-types:timeticks64; + description + "Timestamp of the last time the interface counters + were cleared expressed relative to the Unix Epoch + (January 1, 1970 00:00:00 UTC)."; + } + + leaf hello-received { + type oc-yang:counter64; + description + "Number of Hello messaged received by the device"; + } + + leaf hello-dropped { + type oc-yang:counter64; + description + "Number of Hello messaged dropped by the device"; + } + + } + + grouping mpls-ldp-hello-holdtime-state { + description + "Grouping containing the state attributes + for hello holdtime."; + + leaf adjacent { + description + "Hello holdtime attribute learned from the + LDP neighbor"; + type uint16; + } + + leaf negotiated { + description + "Hello holdtime attribute negotiated between + the LDP neighbor and the local router."; + type uint16; + } + + leaf hello-expiration { + description + "Expiration time for the hello holdtime."; + type oc-types:timeticks64; + } + + leaf next-hello { + description + "Time when the next LDP hello will be sent to + the adjacent neighbor."; + type oc-types:timeticks64; + } + + } + + grouping mpls-ldp-global { + description + "Global LDP attributes"; + + container config { + description + "Global LDP configuration attributes."; + uses mpls-ldp-global-config; + } + + container state { + config false; + description + "Global LDP state information."; + uses mpls-ldp-global-config; + } + } + + grouping mpls-ldp-global-config { + description + "Grouping containing platform wide LDP information"; + + leaf lsr-id { + type oc-inet:ip-address; + description + "Global label switch router identifier + configuration."; + reference "RFC5036 LDP Specification"; + } + + } + + grouping mpls-ldp-interface-attributes-top { + description + "Top-level structure grouping for interface + attributes"; + + container interface-attributes { + description + "Container including attributes for LDP-enabled + interfaces"; + + container config { + description + "Configuration of per-interface LDP parameters"; + uses mpls-ldp-hello-timers-top-config; + } + + container state { + config false; + description + "Per-interface LDP protocol and state information"; + uses mpls-ldp-hello-timers-top-config; + } + + container interfaces { + description + "Container aggregating all interfaces and their + LDP-specific attributes."; + + list interface { + key "interface-id"; + description + "list of per-interface LDP configurations"; + + leaf interface-id { + type leafref { + path "../config/interface-id"; + } + description + "reference to the interface-id data"; + } + + container config { + description + "Configuration of per-interface LDP parameters"; + uses mpls-ldp-interfaces-config; + uses mpls-ldp-hello-timers-top-config; + } + + container state { + config false; + description + "Per-interface LDP protocol and state information"; + + uses mpls-ldp-interfaces-config; + uses mpls-ldp-hello-timers-top-config; + + container counters { + config false; + description + "Interface specific LDP statistics and counters"; + } + } + + uses oc-if:interface-ref; + uses mpls-ldp-address-families-ldp-top; + + } + } + } + } + + grouping mpls-ldp-address-families-ldp-top { + description + "Grouping containing the state and configuration + attributes for adress families."; + + container address-families { + description + "Top container comprising the adress families + attributes"; + list address-family { + key "afi-name"; + description + "List for attributes related to address-families for LDP."; + + leaf afi-name { + type leafref { + path "../config/afi-name"; + } + description + "Adress-family name atttibute (IPv4, IPv6)."; + } + + container config { + description + "Configuration attributes related to address-families + for LDP."; + uses mpls-ldp-address-family-config; + uses admin-config; + } + + container state { + description + "State attributes related to address-families for LDP."; + config false; + uses mpls-ldp-address-family-config; + uses admin-config; + } + } + } + } + + grouping mpls-ldp-hello-timers-top-config { + + description + "Grouping containing interface-related attributes + that can be configured for LDP."; + + leaf hello-holdtime { + type uint16; + description + "Defines the time for which a neighbor adjacency will + be kept by the router while it waits for a new link + Hello message."; + reference "RFC5036 LDP Specification"; + } + + leaf hello-interval { + type uint16; + description + "Defines the interval for sending Hello messages on + each link LDP adjacency."; + } + + } + + grouping mpls-ldp-targeted-top { + + description + "Grouping containing attributes for targeted LDP"; + + container targeted { + description + "Top container for targeted LDP state and configuration + attributes."; + + container config { + description + "Configuration attributes related to targeted LDP."; + uses mpls-ldp-targeted-attributes-top-config; + } + + container state { + config false; + description + "State attributes related to targeted LDP."; + uses mpls-ldp-targeted-attributes-top-config; + } + + uses mpls-ldp-address-targeted-ldp-top; + } + } + + grouping mpls-ldp-address-targeted-ldp-top { + description + "Grouping containing address attributes for targeted LDP."; + + container address-families { + description + "Global container for IPv4 and IPv6 attributes for LDP."; + + list address-family { + key "afi-name"; + description + "List of address families for targeted LDP + configuration"; + + leaf afi-name { + type leafref { + path "../config/afi-name"; + } + description + "Adress-family name atttibute (IPv4, IPv6)."; + } + + container config { + description + "Address-family configuration for targeted LDP"; + uses mpls-ldp-address-family-config; + } + + container state { + config false; + description + "Address-family state for targeted LDP"; + uses mpls-ldp-address-family-config; + } + + container targets { + description + "Container aggregating all targeted sessions and + their LDP-specific attributes."; + + list target { + key "remote-address"; + + description + "List of LDP targets configuration"; + + leaf remote-address { + type leafref { + path "../config/remote-address"; + } + description + "Neighbor address of the targeted LDP session"; + } + + container config { + + description + "Configuration parameters of a targeted LDP + adjacency"; + + leaf remote-address { + type oc-inet:ip-address; + description + "Configuration of neighbor address of the + targeted LDP adjacency"; + } + + leaf local-address { + type oc-inet:ip-address; + description + "Local IP address of the LDP adjacency"; + } + + uses admin-config; + uses mpls-ldp-hello-timers-top-config; + } + + container state { + config false; + description + "State attributes of a targeted LDP adjacency"; + + leaf remote-address { + config false; + type oc-inet:ip-address; + description + "Neighbor address of the targeted LDP adjacency"; + } + + leaf local-address { + config false; + type oc-inet:ip-address; + description + "Local IP address of the LDP adjacency"; + } + + uses admin-config; + uses mpls-ldp-hello-timers-top-config; + } + } + } + } + } + } + + grouping mpls-ldp-address-family-config { + description + "Grouping containing adress-family name atttibute"; + + leaf afi-name { + description + "Adress-family name atttibute (IPv4, IPv6)."; + type oc-ldp:mpls-ldp-afi; + } + + } + + grouping mpls-ldp-targeted-attributes-top-config { + + description + "Grouping containing targeted LDP configuration + attributes."; + + uses mpls-ldp-hello-timers-top-config; + + leaf hello-accept { + type boolean; + description + "Enables or disables the acceptance of targeted LDP + hello messages."; + reference "RFC5036 LDP Specification"; + } + + } + + grouping mpls-ldp-interfaces-config { + description + "LDP configuration information relevant to an interface"; + + leaf interface-id { + type oc-if:interface-id; + description + "Identifier for the interface"; + } + } + + grouping mpls-ldp-graceful-restart { + description + "Attributes relating to LDP Graceful-Restart"; + + container graceful-restart { + description + "Top container for LDP graceful-restart attributes"; + + container config { + description + "LDP graceful-restart configuration attributes."; + uses mpls-ldp-graceful-restart-config; + } + + container state { + config false; + description + "LDP graceful-restart state attributes."; + uses mpls-ldp-graceful-restart-config; + } + } + } + + grouping mpls-ldp-graceful-restart-config { + description + "Configuration parameters relating to LDP Graceful-Restart"; + + uses admin-config; + + leaf reconnect-time { + type uint16; + description + "Interval for which the remote LDP peers + will wait for the local node to reconnect after a + failure"; + reference "RFC3478 Graceful Restart Mechanism for Label + Distribution Protocol"; + } + + leaf recovery-time { + type uint16; + description + "Interval used to specify the time for the remote + peer to maintain the MPLS forwarding state after + the local node has succesfully reconnected"; + reference "RFC3478 Graceful Restart Mechanism for Label + Distribution Protocol"; + } + + leaf forwarding-holdtime { + type uint16; + description + "Time that defines the interval for keeping the + node in recovery mode."; + reference "RFC3478 Graceful Restart Mechanism for Label + Distribution Protocol"; + } + + leaf helper-enable { + type boolean; + description + "Enables the graceful restart helper for LDP."; + } + } + + grouping igp-tunnel-ldp { + description + "common defintiions for LDP-signaled LSP tunnel + types"; + } + + grouping igp-lsp-ldp-setup { + description + "grouping for LDP setup attributes"; + + container ldp { + description + "LDP signaling setup for IGP-congruent LSPs"; + uses igp-tunnel-ldp; + } + } + + grouping mpls-ldp-authentication-config { + description + "LDP authentication parameters container."; + + leaf enable { + type boolean; + default false; + description + "Enables LDP authentication on the node."; + } + + leaf authentication-key { + type oc-types:routing-password; + description + "authenticate LDP signaling + messages"; + reference + "RFC1321 The MD5 Message-Digest Algorithm + RFC5036 LDP Specification"; + } + } + + grouping admin-config { + description + "Re-usable grouping to enable or disable a particular LDP feature."; + + leaf enabled { + type boolean; + default false; + description + "When set to true, the functionality within which this leaf is + defined is enabled, when set to false it is explicitly disabled."; + } + } + + // data definition statements + + // augment statements + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-mpls-rsvp.yang b/vendor/cisco/nx/9.3-14/openconfig-mpls-rsvp.yang new file mode 100644 index 000000000..d0f7f7b74 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-mpls-rsvp.yang @@ -0,0 +1,1457 @@ +module openconfig-mpls-rsvp { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/rsvp"; + + prefix "oc-rsvp"; + + // import some basic types + import openconfig-inet-types { prefix inet; } + import openconfig-mpls-types { prefix oc-mplst; } + import openconfig-yang-types { prefix yang; } + import openconfig-types { prefix oc-types; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-interfaces { prefix oc-if; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Configuration for RSVP-TE signaling, including global protocol + parameters and LSP-specific configuration for constrained-path + LSPs"; + + oc-ext:openconfig-version "3.0.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.0.1"; + } + + revision "2018-07-02" { + description + "Add new RSVP-TE statistics, remove associated-rsvp-session + leaf. Remove use of date-and-time."; + reference "3.0.0"; + } + + revision "2018-06-16" { + description + "Included attributes for base LDP configuration."; + reference "2.6.0"; + } + + revision "2018-06-13" { + description + "Add ttl-propagation to global MPLS config"; + reference "2.5.0"; + } + + revision "2018-06-05" { + description + "Fixed bugs in when statements on RSVP-TE attributes"; + reference "2.4.2"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "2.4.1"; + } + + revision "2017-06-21" { + description + "Add TC bits typedef."; + reference "2.4.0"; + } + + revision "2017-03-22" { + description + "Add RSVP calculated-absolute-subscription-bw"; + reference "2.3.0"; + } + + revision "2017-01-26" { + description + "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; + reference "2.2.0"; + } + + revision "2016-12-15" { + description + "Add additional MPLS parameters"; + reference "2.1.0"; + } + + revision "2016-09-01" { + description + "Revisions based on implementation feedback"; + reference "2.0.0"; + } + + revision "2016-08-08" { + description + "Public release of MPLS models"; + reference "1.0.1"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // grouping statements + + grouping mpls-rsvp-soft-preemption-config { + description + "Configuration for MPLS soft preemption"; + leaf enable { + type boolean; + default false; + description + "Enables soft preemption on a node."; + } + + leaf soft-preemption-timeout { + type uint16 { + range 0..max; + } + default 30; + description + "Timeout value for soft preemption to revert + to hard preemption. The default timeout for + soft-preemption is 30 seconds - after which + the local system reverts to hard pre-emption."; + reference "RFC5712 MPLS-TE soft preemption"; + } + } + + grouping mpls-rsvp-soft-preemption { + description + "Top level group for MPLS soft preemption"; + container soft-preemption { + description + "Protocol options relating to RSVP + soft preemption"; + container config { + description + "Configuration parameters relating to RSVP + soft preemption support"; + uses mpls-rsvp-soft-preemption-config; + } + container state { + config false; + description + "State parameters relating to RSVP + soft preemption support"; + uses mpls-rsvp-soft-preemption-config; + } + } + } + + grouping mpls-rsvp-hellos-config { + description + "RSVP protocol options configuration."; + + leaf hello-interval { + type uint16 { + range 1000..60000; + } + units milliseconds; + default 9000; + description + "set the interval in ms between RSVP hello + messages"; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for + LSP Tunnels. + RFC 5495: Description of the Resource + Reservation Protocol - Traffic-Engineered + (RSVP-TE) Graceful Restart Procedures"; + } + + leaf refresh-reduction { + type boolean; + default true; + description + "enables all RSVP refresh reduction message + bundling, RSVP message ID, reliable message delivery + and summary refresh"; + reference + "RFC 2961 RSVP Refresh Overhead Reduction + Extensions"; + } + } + + grouping mpls-rsvp-hellos { + description + "Top level grouping for RSVP hellos parameters"; + // TODO: confirm that the described semantics are supported + // on various implementations. Finer grain configuration + // will be vendor-specific + + container hellos { + description + "Top level container for RSVP hello parameters"; + + container config { + description + "Configuration parameters relating to RSVP + hellos"; + uses mpls-rsvp-hellos-config; + } + container state { + config false; + description + "State information associated with RSVP hellos"; + uses mpls-rsvp-hellos-config; + } + } + } + + grouping mpls-rsvp-subscription-config { + description + "RSVP subscription configuration"; + + leaf subscription { + type oc-types:percentage; + description + "percentage of the interface bandwidth that + RSVP can reserve"; + } + } + + grouping mpls-rsvp-subscription-state { + description + "Operational state parameters relating to the + bandwidth subscription on an interface"; + + leaf calculated-absolute-subscription-bw { + type uint64; + units "kbps"; + description + "The calculated absolute value of the bandwidth + which is reservable to RSVP-TE on the interface + prior to any adjustments that may be made from + external sources."; + } + } + + grouping mpls-rsvp-subscription { + description + "Top level group for RSVP subscription options"; + + container subscription { + description + "Bandwidth percentage reservable by RSVP + on an interface"; + + container config { + description + "Configuration parameters relating to RSVP + subscription options"; + uses mpls-rsvp-subscription-config; + } + + container state { + config false; + description + "State parameters relating to RSVP + subscription options"; + uses mpls-rsvp-subscription-config; + uses mpls-rsvp-subscription-state; + } + } + } + + grouping mpls-rsvp-graceful-restart-config { + description + "Configuration parameters relating to RSVP Graceful-Restart"; + + leaf enable { + type boolean; + default false; + description + "Enables graceful restart on the node."; + } + + leaf restart-time { + type uint32; + description + "Graceful restart time (seconds)."; + reference + "RFC 5495: Description of the Resource + Reservation Protocol - Traffic-Engineered + (RSVP-TE) Graceful Restart Procedures"; + } + leaf recovery-time { + type uint32; + description + "RSVP state recovery time"; + } + } + + grouping mpls-rsvp-graceful-restart { + description + "Top level group for RSVP graceful-restart + parameters"; + + container graceful-restart { + description + "Operational state and configuration parameters relating to + graceful-restart for RSVP"; + + container config { + description + "Configuration parameters relating to + graceful-restart"; + uses mpls-rsvp-graceful-restart-config; + } + + container state { + config false; + description + "State information associated with + RSVP graceful-restart"; + uses mpls-rsvp-graceful-restart-config; + } + } + } + + grouping mpls-rsvp-authentication-config { + description + "RSVP authentication parameters container."; + + leaf enable { + type boolean; + default false; + description + "Enables RSVP authentication on the node."; + } + + leaf authentication-key { + type string { + // Juniper supports 1..16 while + // Cisco has a much bigger range, up to 60. + length "1..32"; + } + description + "authenticate RSVP signaling + messages"; + reference + "RFC 2747: RSVP Cryptographic Authentication"; + } + } + + grouping mpls-rsvp-authentication { + description + "Top level group for RSVP authentication, + as per RFC2747"; + + container authentication { + description + "Configuration and state parameters relating to RSVP + authentication as per RFC2747"; + + container config { + description + "Configuration parameters relating + to authentication"; + uses mpls-rsvp-authentication-config; + } + + container state { + config false; + description + "State information associated + with authentication"; + uses mpls-rsvp-authentication-config; + } + } + } + + grouping mpls-rsvp-protection-config { + description + "RSVP facility (link/node) protection configuration"; + + leaf link-protection-style-requested { + type identityref { + base oc-mplst:PROTECTION_TYPE; + } + default oc-mplst:LINK_NODE_PROTECTION_REQUESTED; + description + "Style of mpls frr protection desired: + link, link-node, or unprotected"; + } + + leaf bypass-optimize-interval { + type uint16; + units seconds; + description + "interval between periodic optimization + of the bypass LSPs"; + // note: this is interface specific on juniper + // on iox, this is global. need to resolve. + } + // to be completed, things like enabling link protection, + // optimization times, etc. + } + + grouping mpls-rsvp-link-protection { + description + "Top level group for RSVP protection"; + container protection { + description + "link-protection (NHOP) related configuration"; + + container config { + description + "Configuration for link-protection"; + uses mpls-rsvp-protection-config; + } + + container state { + config false; + description + "State for link-protection"; + uses mpls-rsvp-protection-config; + } + } + } + + grouping mpls-rsvp-statistics { + description + "Top level grouping for RSVP protocol state"; + + uses mpls-rsvp-protocol-state; + } + + grouping rsvp-global { + description + "Global RSVP protocol configuration"; + container rsvp-te { + description + "RSVP-TE global signaling protocol configuration"; + + uses mpls-rsvp-session-state; + + container neighbors { + description + "Configuration and state for RSVP neighbors connecting + to the device"; + + list neighbor { + key "address"; + + config false; + + description + "List of RSVP neighbors of the local system"; + + leaf address { + type leafref { + path "../state/address"; + } + description + "Reference to the address of the RSVP neighbor"; + } + + container state { + config false; + description + "Operational state parameters relating to the + RSVP neighbor"; + uses mpls-rsvp-neighbor-state; + } + } + } + + container global { + description + "Platform wide RSVP configuration and state"; + uses mpls-rsvp-graceful-restart; + uses mpls-rsvp-soft-preemption; + uses mpls-rsvp-hellos; + + container state { + config false; + description + "Platform wide RSVP state, including counters"; + // TODO - reconcile global and per-interface + // protocol-related statistics + + container counters { + config false; + description + "Platform wide RSVP statistics and counters"; + uses mpls-rsvp-global-protocol-state; + uses mpls-rsvp-statistics; + + container errors { + description + "Error counters associated with the global RSVP-TE + instance."; + uses mpls-rsvp-error-counters; + } + } + } + } + + container interface-attributes { + description + "Attributes relating to RSVP-TE enabled interfaces"; + + list interface { + key "interface-id"; + description + "list of per-interface RSVP configurations"; + + leaf interface-id { + type leafref { + path "../config/interface-id"; + } + description + "reference to the interface-id data"; + } + + + container config { + description + "Configuration of per-interface RSVP parameters"; + uses mpls-rsvp-interfaces-config; + } + + container state { + config false; + description + "Per-interface RSVP protocol and state information"; + + uses mpls-rsvp-interfaces-state; + uses mpls-rsvp-interfaces-config; + + container counters { + config false; + description + "Interface specific RSVP statistics and counters"; + uses mpls-rsvp-protocol-state; + uses mpls-rsvp-rate-limited-messages-state; + + container errors { + description + "Interface specific RSVP error counters"; + uses mpls-rsvp-error-counters; + } + } + } + + uses oc-if:interface-ref; + uses mpls-rsvp-interface-reservations; + uses mpls-rsvp-hellos; + uses mpls-rsvp-authentication; + uses mpls-rsvp-subscription; + uses mpls-rsvp-link-protection; + } + } + } + } + + grouping rsvp-p2p-tunnel-attributes-config { + description + "properties of RSVP point-to-point paths"; + + leaf source { + when "../signaling-protocol = 'PATH_SETUP_RSVP'" { + description + "When the signaling protocol is RSVP-TE "; + } + type inet:ip-address; + description + "RSVP-TE tunnel source address"; + } + + leaf soft-preemption { + when "../signaling-protocol = 'PATH_SETUP_RSVP'" { + description + "When the signaling protocol is RSVP-TE "; + } + type boolean; + default false; + description + "Enables RSVP soft-preemption on this LSP"; + } + + uses rsvp-priorities-tunnel-config; + } + + grouping rsvp-priorities-tunnel-config { + description + "Configuration paramters related to RSVP-TE priorities for + an LSP tunnel"; + + leaf setup-priority { + when "../signaling-protocol = 'PATH_SETUP_RSVP'" { + description + "When the signaling protocol is RSVP-TE "; + } + type uint8 { + range 0..7; + } + default 7; + description + "RSVP-TE preemption priority during LSP setup, lower is + higher priority; default 7 indicates that LSP will not + preempt established LSPs during setup"; + reference "RFC 3209 - RSVP-TE: Extensions to RSVP for + LSP Tunnels"; + } + + leaf hold-priority { + when "../signaling-protocol = 'PATH_SETUP_RSVP'" { + description + "When the signaling protocol is RSVP-TE "; + } + type uint8 { + range 0..7; + } + default 0; + description + "preemption priority once the LSP is established, + lower is higher priority; default 0 indicates other LSPs + will not preempt the LSPs once established"; + reference "RFC 3209 - RSVP-TE: Extensions to RSVP for + LSP Tunnels"; + } + } + + grouping rsvp-priorities-path-config { + description + "Configuration paramters related to RSVP-TE priorities on + a primary/secondary path associated with an LSP."; + + leaf setup-priority { + when "../../../../../" + + "config/signaling-protocol = 'PATH_SETUP_RSVP'" { + description + "When the signaling protocol is RSVP-TE "; + } + type uint8 { + range 0..7; + } + default 7; + description + "RSVP-TE preemption priority during LSP setup, lower is + higher priority; default 7 indicates that LSP will not + preempt established LSPs during setup"; + reference "RFC 3209 - RSVP-TE: Extensions to RSVP for + LSP Tunnels"; + } + + leaf hold-priority { + when "../../../../../" + + "config/signaling-protocol = 'PATH_SETUP_RSVP'" { + description + "When the signaling protocol is RSVP-TE "; + } + type uint8 { + range 0..7; + } + default 0; + description + "preemption priority once the LSP is established, + lower is higher priority; default 0 indicates other LSPs + will not preempt the LSPs once established"; + reference "RFC 3209 - RSVP-TE: Extensions to RSVP for + LSP Tunnels"; + } + } + + grouping rsvp-p2p-path-attributes-config { + description + "properties of RSPP point-to-point paths"; + + uses rsvp-priorities-path-config; + + leaf retry-timer { + when "../../../../../" + + "config/signaling-protocol = 'PATH_SETUP_RSVP'" { + description + "When the signaling protocol is RSVP-TE "; + } + type uint16 { + range 1..600; + } + units seconds; + description + "sets the time between attempts to establish the + LSP"; + } + } + + grouping mpls-rsvp-neighbor-state { + description + "State information for RSVP neighbors"; + + leaf address { + type inet:ip-address; + description + "Address of RSVP neighbor"; + } + + leaf detected-interface { + type string; + description + "Interface where RSVP neighbor was detected"; + } + + leaf neighbor-status { + type enumeration { + enum UP { + description + "RSVP hello messages are detected from the neighbor"; + } + enum DOWN { + description + "RSVP neighbor not detected as up, due to a + communication failure or IGP notification + the neighbor is unavailable"; + } + } + description + "Enumuration of possible RSVP neighbor states"; + } + + leaf refresh-reduction { + type boolean; + description + "Suppport of neighbor for RSVP refresh reduction"; + reference + "RFC 2961 RSVP Refresh Overhead Reduction + Extensions"; + } + + } + + grouping mpls-rsvp-session-state { + description + "State information for RSVP TE sessions"; + + container sessions { + description + "Enclosing container for sessions"; + + list session { + key "local-index"; + config false; + + description + "List of RSVP sessions"; + + leaf local-index { + type leafref { + path "../state/local-index"; + } + description + "Reference to the local index for the RSVP + session"; + } + + uses mpls-rsvp-record-route-object-top; + uses mpls-rsvp-explicit-route-object-top; + + container state { + description + "Operational state parameters relating to the + RSVP session"; + + leaf local-index { + type uint64; + description + "The index used to identify the RSVP session + on the local network element. This index is + generated by the device and is unique only + to the local network element."; + } + + leaf source-address { + type inet:ip-address; + description + "Origin address of RSVP session"; + } + + leaf destination-address { + type inet:ip-address; + description + "Destination address of RSVP session"; + } + + leaf tunnel-id { + type uint16; + description + "The tunnel ID is an identifier used in the + RSVP session, which remains constant over + the life of the tunnel."; + reference "RFC 3209"; + } + + leaf lsp-id { + type uint16; + description + "The LSP ID distinguishes between two LSPs + originated from the same headend, and is + commonly used to distinguish RSVP sessions + during make before break operations."; + reference "RFC 3209"; + } + + leaf session-name { + type string; + description + "The signaled name of this RSVP session."; + } + + leaf status { + type enumeration { + enum UP { + description + "RSVP session is up"; + } + enum DOWN { + description + "RSVP session is down"; + } + } + description + "Enumeration of RSVP session states"; + } + + leaf type { + type identityref { + base oc-mplst:LSP_ROLE; + } + description + "The type/role of the RSVP session, signifing + the session's role on the current device, such as + a transit session vs. an ingress session."; + } + + leaf protection-requested { + type identityref { + base oc-mplst:PROTECTION_TYPE; + } + description + "The type of protection requested for the RSVP session"; + } + + leaf label-in { + type oc-mplst:mpls-label; + description + "Incoming MPLS label associated with this RSVP session"; + } + + leaf label-out { + type oc-mplst:mpls-label; + description + "Outgoing MPLS label associated with this RSVP session"; + } + + container sender-tspec { + description + "Operational state statistics relating to the SENDER_TSPEC + received for the RSVP session"; + + leaf rate { + type oc-types:ieeefloat32; + units "Bps"; + description + "The rate at which the head-end device generates traffic, + expressed in bytes per second."; + reference + "RFC2210: RSVP with INTSERV"; + } + + leaf size { + type oc-types:ieeefloat32; + units "bytes per second"; + description + "The size of the token bucket that is used to determine + the rate at which the head-end device generates traffic, + expressed in bytes per second."; + reference + "RFC2210: RSVP with INTSERV"; + } + + leaf peak-data-rate { + type union { + type oc-types:ieeefloat32; + type enumeration { + enum INFINITY { + description + "The head-end device has no maximum data rate."; + } + } + } + units "bytes per second"; + description + "The maximum traffic generation rate that the head-end + device sends traffic at."; + reference + "RFC2210: RSVP with INTSERV"; + } + } + } + } + } + } //rsvp-session-state + + grouping mpls-rsvp-interfaces-config { + description + "RSVP configuration information relevant to an interface"; + + leaf interface-id { + type oc-if:interface-id; + description + "Identifier for the interface"; + } + } + + grouping mpls-rsvp-interfaces-state { + description + "RSVP state information relevant to an interface"; + + leaf max-link-bandwidth { + type oc-mplst:bandwidth-kbps; + description + "The maximum link bandwidth expressed in kilobits + per second. This value should be the same (other than + the units) as the value that is advertised into the + IGP traffic engineering database."; + } + } + + grouping mpls-rsvp-interface-reservations { + description + "Operational state related to interface bandwidth + reservations"; + + container bandwidth-reservations { + description + "Enclosing container for bandwidth reservation"; + list bandwidth-reservation { + key "priority"; + config false; + description + "Available and reserved bandwidth by priority on + the interface."; + + leaf priority { + type leafref { + path "../state/priority"; + } + description "Reference to the RSVP priority level"; + } + + container state { + description + "Operational state parameters relating to a + bandwidth reservation at a certain priority"; + + leaf priority { + type union { + type uint8 { + range 0..7; + } + type enumeration { + enum ALL { + description + "The ALL keyword represents the overall + state of the interface - i.e., the union + of all of the priority levels"; + } + } + } + description + "RSVP priority level for LSPs traversing the interface"; + } + + leaf available-bandwidth { + type oc-mplst:bandwidth-mbps; + description + "Bandwidth currently available with the priority level, + or for the entire interface when the priority is set to + ALL"; + } + + leaf reserved-bandwidth { + type oc-mplst:bandwidth-mbps; + description + "Bandwidth currently reserved within the priority level, + or the sum of all priority levels when the keyword is set + to ALL"; + } + + leaf active-reservations-count { + type yang:gauge64; + description + "Number of active RSVP reservations in the associated + priority, or the sum of all reservations when the priority + level is set to ALL"; + } + + leaf highwater-mark { + type oc-mplst:bandwidth-mbps; + description + "Maximum bandwidth reserved on the interface within the + priority, or across all priorities in the case that the + priority level is set to ALL"; + } + } + } + } + } + + grouping mpls-rsvp-global-protocol-state { + description + "RSVP protocol statistics which may not apply + on an interface, but are significant globally."; + + leaf path-timeouts { + type yang:counter64; + description + "The number of Path State Blocks (PSBs) that + have been timed out by the local system."; + } + + leaf reservation-timeouts { + type yang:counter64; + description + "The number of Reservation State Blocks (RSBs) that + have been timed out by the local system."; + } + + uses mpls-rsvp-rate-limited-messages-state; + } + + grouping mpls-rsvp-rate-limited-messages-state { + description + "Common grouping for rate limit messages"; + + leaf rate-limited-messages { + type yang:counter64; + description + "RSVP messages dropped due to rate limiting"; + } + } + + grouping mpls-rsvp-protocol-state { + description + "RSVP protocol statistics and message counters"; + + leaf in-path-messages { + type yang:counter64; + description + "Number of received RSVP Path messages"; + } + + leaf in-path-error-messages { + type yang:counter64; + description + "Number of received RSVP Path Error messages"; + } + + leaf in-path-tear-messages { + type yang:counter64; + description + "Number of received RSVP Path Tear messages"; + } + + leaf in-reservation-messages { + type yang:counter64; + description + "Number of received RSVP Resv messages"; + } + + leaf in-reservation-error-messages { + type yang:counter64; + description + "Number of received RSVP Resv Error messages"; + } + + leaf in-reservation-tear-messages { + type yang:counter64; + description + "Number of received RSVP Resv Tear messages"; + } + + leaf in-hello-messages { + type yang:counter64; + description + "Number of received RSVP hello messages"; + } + + leaf in-srefresh-messages { + type yang:counter64; + description + "Number of received RSVP summary refresh messages"; + } + + leaf in-ack-messages { + type yang:counter64; + description + "Number of received RSVP refresh reduction ack + messages"; + } + + leaf out-path-messages { + type yang:counter64; + description + "Number of sent RSVP PATH messages"; + } + + leaf out-path-error-messages { + type yang:counter64; + description + "Number of sent RSVP Path Error messages"; + } + + leaf out-path-tear-messages { + type yang:counter64; + description + "Number of sent RSVP Path Tear messages"; + } + + leaf out-reservation-messages { + type yang:counter64; + description + "Number of sent RSVP Resv messages"; + } + + leaf out-reservation-error-messages { + type yang:counter64; + description + "Number of sent RSVP Resv Error messages"; + } + + leaf out-reservation-tear-messages { + type yang:counter64; + description + "Number of sent RSVP Resv Tear messages"; + } + + leaf out-hello-messages { + type yang:counter64; + description + "Number of sent RSVP hello messages"; + } + + leaf out-srefresh-messages { + type yang:counter64; + description + "Number of sent RSVP summary refresh messages"; + } + + leaf out-ack-messages { + type yang:counter64; + description + "Number of sent RSVP refresh reduction ack messages"; + } + } + + grouping mpls-rsvp-record-route-object-top { + description + "Top-level structure grouping for list of record route + objects."; + + container record-route-objects { + description + "Enclosing container for MPLS RRO objects associated with the + traffic engineered tunnel."; + + list record-route-object { + key "index"; + config false; + + description + "Read-only list of record route objects associated with the + traffic engineered tunnel. Each entry in the list + may contain a hop IP address, MPLS label allocated + at the hop, and the flags associated with the entry."; + + leaf index { + type leafref { + path "../state/index"; + } + description + "Reference to the index of the record route object. + The index is used to indicate the ordering of hops in + the path."; + } + + container state { + config false; + + description + "Information related to RRO objects. The hop, label, and + optional flags are present for each entry in the list."; + + uses mpls-rsvp-record-route-object-state; + } + } + } + } + + grouping mpls-rsvp-record-route-object-state { + description + "Grouping to hold information relating to record route + objects relevant to a traffic engineering LSP."; + + leaf index { + type uint8; + description + "Index of object in the list. Used for ordering."; + } + + leaf address { + type inet:ip-address; + description + "IP router hop for RRO entry"; + } + + leaf reported-label { + type oc-mplst:mpls-label; + description + "Label reported for RRO hop"; + } + + leaf reported-flags { + type uint8; + description + "Subobject flags for MPLS label"; + } + } + + grouping mpls-rsvp-explicit-route-object-top { + description + "Top-level structure for explicit-route objects."; + + container explicit-route-objects { + description + "Enclosing container for MPLS ERO objects associated + with the traffic engineered tunnel."; + + list explicit-route-object { + key "index"; + + config false; + + description + "Read-only list of explicit route objects associated with the + traffic-engineered tunnel. Each entry in the list contains + a hop IP address, and the MPLS label allocated at the hop."; + + leaf index { + type leafref { + path "../state/index"; + } + description + "Reference to the index of the entry in the explicit route + object. The index is used to indicate the ordering of hops + in the path."; + } + + container state { + config false; + description + "Information related to the ERO index."; + uses mpls-rsvp-explicit-route-object-state; + } + } + } + } + + grouping mpls-rsvp-explicit-route-object-state { + description + "Grouping defining information related to an individual hop + of an ERO."; + + leaf index { + type uint64; + description + "Index of the entry in the ERO. Entries are ordered in + ascending order from the source to destination of the + LSP."; + } + + leaf loose { + type boolean; + description + "When set to true, indicates that the hop of the ERO is + a loose hop within the explicit route. If unset, indicates + that the hop must explicitly traverse the entity specified + in the ERO hop as the next-entity."; + } + + leaf type { + type enumeration { + enum IPV4 { + description + "The hop represents an IPv4 prefix."; + reference "RFC3209"; + } + enum IPV6 { + description + "The hop represents an IPv6 prefix."; + reference "RFC3209"; + } + enum ASN { + description + "The hop represents an autonomous system number."; + reference "RFC3209"; + } + enum ASN4 { + description + "The hop represents a 4-byte autonomous system number."; + } + enum LABEL { + description + "The hop represents an MPLS label."; + reference "RFC3473"; + } + enum UNNUMBERED_INTERFACE { + description + "The hop represents an unnumbered interface."; + reference "RFC3477"; + } + } + description + "The type of hop indicated by the ERO entry."; + } + + leaf ip-prefix { + type inet:ip-prefix; + description + "The IPv4 or IPv6 prefix indicated by the ERO. Specified + only when the ERO hop is an IPv4 or IPv6 prefix."; + } + + leaf asn { + type inet:as-number; + description + "The autonomous system number indicated by the ERO. Specified + only when the ERO hop is an 2 or 4-byte AS number."; + } + + leaf label { + type oc-mplst:mpls-label; + description + "The MPLS label specified in the ERO hop. Specified only when + the hop is an MPLS label."; + } + + leaf interface-id { + type uint32; + description + "The interface ID for an unnumbered interface. Specified only + when the ERO hop is a unnumbered interface."; + } + reference + "RFC3477 - Signalling Unnumbered Links in Resource + ReSerVation Protocol - Traffic Engineering (RSVP-TE)"; + + } + + grouping mpls-rsvp-error-counters { + description + "Grouping containing definitions of leaves relating to + errors in RSVP-TE. This grouping can be used in different + contexts - e.g., per-RSVP-TE protocol instance, or per- + interface such that the errors represented should + correspond to the number of errors that have occurred for + the context in which the grouping is used."; + + leaf authentication-fail { + type yang:counter64; + description + "The number of packets received that have failed RSVP-TE + authentication checks in the specified context."; + } + + leaf bad-checksum { + type yang:counter64; + description + "The number of packets received that have an incorrect RSVP-TE + checksum in the context."; + } + + leaf bad-packet-format { + type yang:counter64; + description + "The number of packets received that were dropped due to being + badly formed in the context."; + } + + leaf bad-packet-length { + type yang:counter64; + description + "The number of packets received that were dropped due to having + an invalid length specified in the context."; + } + + leaf out-of-order { + type yang:counter64; + description + "The number of messages received out of order in the context."; + } + + leaf received-nack { + type yang:counter64; + description + "The number of NACK RESV messages received in the context."; + } + + leaf transmit-failure { + type yang:counter64; + description + "The total number of packets dropped on transmit in the context."; + } + + leaf transmit-queue-full { + type yang:counter64; + description + "The number of packets dropped due to the transmit queue being + full in the context."; + } + + leaf unknown-ack { + type yang:counter64; + description + "The number of packets received containing an ACK for an unknown + message ID in the context."; + } + + leaf unknown-nack { + type yang:counter64; + description + "The number of packets received containing a NACK for an unknown + message ID in the context."; + } + } + + + + // data definition statements + + // augment statements + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-mpls-sr.yang b/vendor/cisco/nx/9.3-14/openconfig-mpls-sr.yang new file mode 100644 index 000000000..8fc670f98 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-mpls-sr.yang @@ -0,0 +1,149 @@ +module openconfig-mpls-sr { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/mpls-sr"; + + prefix "oc-mpls-sr"; + + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Configuration for MPLS with segment routing-based LSPs, + including global parameters, and LSP-specific configuration for + both constrained-path and IGP-congruent LSPs"; + + oc-ext:openconfig-version "3.0.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.0.1"; + } + + revision "2018-07-02" { + description + "Add new RSVP-TE statistics, remove associated-rsvp-session + leaf. Remove use of date-and-time."; + reference "3.0.0"; + } + + revision "2018-06-16" { + description + "Included attributes for base LDP configuration."; + reference "2.6.0"; + } + + revision "2018-06-13" { + description + "Add ttl-propagation to global MPLS config"; + reference "2.5.0"; + } + + revision "2018-06-05" { + description + "Fixed bugs in when statements on RSVP-TE attributes"; + reference "2.4.2"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "2.4.1"; + } + + revision "2017-06-21" { + description + "Add TC bits typedef."; + reference "2.4.0"; + } + + revision "2017-03-22" { + description + "Add RSVP calculated-absolute-subscription-bw"; + reference "2.3.0"; + } + + revision "2017-01-26" { + description + "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; + reference "2.2.0"; + } + + revision "2016-12-15" { + description + "Add additional MPLS parameters"; + reference "2.1.0"; + } + + revision "2016-09-01" { + description + "Revisions based on implementation feedback"; + reference "2.0.0"; + } + + revision "2016-08-08" { + description + "Public release of MPLS models"; + reference "1.0.1"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + grouping sr-path-attributes-config { + description + "Configuration parameters relating to SR-TE LSPs"; + + leaf sid-selection-mode { + type enumeration { + enum ADJ_SID_ONLY { + description + "The SR-TE tunnel should only use adjacency SIDs + to build the SID stack to be pushed for the LSP"; + } + enum MIXED_MODE { + description + "The SR-TE tunnel can use a mix of adjacency + and prefix SIDs to build the SID stack to be pushed + to the LSP"; + } + } + default MIXED_MODE; + description + "The restrictions placed on the SIDs to be selected by the + calculation method for the explicit path when it is + instantiated for a SR-TE LSP"; + } + + leaf sid-protection-required { + type boolean; + default "false"; + description + "When this value is set to true, only SIDs that are + protected are to be selected by the calculating method + when the explicit path is instantiated by a SR-TE LSP."; + } + } + + // data definition statements + + // augment statements + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-mpls-static.yang b/vendor/cisco/nx/9.3-14/openconfig-mpls-static.yang new file mode 100644 index 000000000..f3d051297 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-mpls-static.yang @@ -0,0 +1,318 @@ +submodule openconfig-mpls-static { + + yang-version "1"; + + belongs-to "openconfig-mpls" { + prefix "mpls"; + } + + // import some basic types + import openconfig-mpls-types {prefix oc-mplst; } + import openconfig-inet-types { prefix inet; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Defines static LSP configuration"; + + + oc-ext:openconfig-version "3.0.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.0.1"; + } + + revision "2018-07-02" { + description + "Add new RSVP-TE statistics, remove associated-rsvp-session + leaf. Remove use of date-and-time."; + reference "3.0.0"; + } + + revision "2018-06-16" { + description + "Included attributes for base LDP configuration."; + reference "2.6.0"; + } + + revision "2018-06-13" { + description + "Add ttl-propagation to global MPLS config"; + reference "2.5.0"; + } + + revision "2018-06-05" { + description + "Fixed bugs in when statements on RSVP-TE attributes"; + reference "2.4.2"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "2.4.1"; + } + + revision "2017-06-21" { + description + "Add TC bits typedef."; + reference "2.4.0"; + } + + revision "2017-03-22" { + description + "Add RSVP calculated-absolute-subscription-bw"; + reference "2.3.0"; + } + + revision "2017-01-26" { + description + "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; + reference "2.2.0"; + } + + revision "2016-12-15" { + description + "Add additional MPLS parameters"; + reference "2.1.0"; + } + + revision "2016-09-01" { + description + "Revisions based on implementation feedback"; + reference "2.0.0"; + } + + revision "2016-08-08" { + description + "Public release of MPLS models"; + reference "1.0.1"; + } + + // grouping statements + + grouping static-lsp-common-config { + description + "common definitions for static LSPs"; + + leaf next-hop { + type inet:ip-address; + description + "next hop IP address for the LSP"; + } + + leaf incoming-label { + type oc-mplst:mpls-label; + description + "label value on the incoming packet"; + } + + leaf push-label { + type oc-mplst:mpls-label; + description + "label value to push at the current hop for the + LSP"; + } + } + + grouping static-lsp-ingress-config { + description + "Configuration data for ingress LSPs"; + + uses static-lsp-common-config; + } + + grouping static-lsp-ingress-state { + description + "Operational state data for ingress LSPs"; + } + + grouping static-lsp-ingress-top { + description + "Top-level grouping for ingress LSP data"; + + container ingress { + description + "Static LSPs for which the router is an + ingress node"; + + container config { + description + "Configuration data for ingress LSPs"; + + uses static-lsp-ingress-config; + } + + container state { + + config false; + + description + "Operational state data for ingress LSPs"; + + uses static-lsp-ingress-config; + uses static-lsp-ingress-state; + } + } + } + + grouping static-lsp-transit-config { + description + "Configuration data for transit LSPs"; + + uses static-lsp-common-config; + } + + grouping static-lsp-transit-state { + description + "Operational state data for transit LSPs"; + } + + grouping static-lsp-transit-top { + description + "Top-level grouping for transit LSP data"; + + container transit { + description + "Static LSPs for which the router is an + transit node"; + + container config { + description + "Configuration data for transit LSPs"; + + uses static-lsp-transit-config; + } + + container state { + + config false; + + description + "Operational state data for transit LSPs"; + + uses static-lsp-transit-config; + uses static-lsp-transit-state; + } + } + } + + grouping static-lsp-egress-config { + description + "Configuration data for egress LSPs"; + + uses static-lsp-common-config; + } + + grouping static-lsp-egress-state { + description + "Operational state data for egress LSPs"; + } + + grouping static-lsp-egress-top { + description + "Top-level grouping for egress LSP data"; + + container egress { + description + "Static LSPs for which the router is an + egress node"; + + container config { + description + "Configuration data for egress LSPs"; + + uses static-lsp-egress-config; + } + + container state { + + config false; + + description + "Operational state data for egress LSPs"; + + uses static-lsp-egress-config; + uses static-lsp-egress-state; + } + } + } + + grouping static-lsp-config { + description + "Configuration data for static LSPs"; + + leaf name { + type string; + description + "name to identify the LSP"; + } + } + + grouping static-lsp-state { + description + "Operational state data for static LSPs"; + + } + + grouping static-lsp-top { + description + "grouping for top level list of static LSPs"; + + + list static-lsp { + key "name"; + description + "list of defined static LSPs"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference the name list key"; + } + + container config { + description + "Configuration data for the static lsp"; + + uses static-lsp-config; + } + + container state { + config false; + + description + "Operational state data for the static lsp"; + + uses static-lsp-config; + uses static-lsp-state; + + } + + // TODO: separation into ingress, transit, egress may help + // to figure out what exactly is configured, but need to + // consider whether implementations can support the + // separation + uses static-lsp-ingress-top; + uses static-lsp-transit-top; + uses static-lsp-egress-top; + } + } + + // data definition statements + + // augment statements + + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-mpls-te.yang b/vendor/cisco/nx/9.3-14/openconfig-mpls-te.yang new file mode 100644 index 000000000..4a9953e3e --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-mpls-te.yang @@ -0,0 +1,1386 @@ +submodule openconfig-mpls-te { + + yang-version "1"; + + belongs-to "openconfig-mpls" { + prefix "oc-mpls"; + } + + + // import some basic types + import openconfig-inet-types { prefix inet; } + import openconfig-mpls-rsvp { prefix oc-rsvp; } + import openconfig-mpls-sr { prefix oc-sr; } + import openconfig-mpls-types {prefix oc-mplst; } + import openconfig-types { prefix oc-types; } + import openconfig-yang-types { prefix yang; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Configuration related to constrained-path LSPs and traffic + engineering. These definitions are not specific to a particular + signaling protocol or mechanism (see related submodules for + signaling protocol-specific configuration)."; + + oc-ext:openconfig-version "3.0.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.0.1"; + } + + revision "2018-07-02" { + description + "Add new RSVP-TE statistics, remove associated-rsvp-session + leaf. Remove use of date-and-time."; + reference "3.0.0"; + } + + revision "2018-06-16" { + description + "Included attributes for base LDP configuration."; + reference "2.6.0"; + } + + revision "2018-06-13" { + description + "Add ttl-propagation to global MPLS config"; + reference "2.5.0"; + } + + revision "2018-06-05" { + description + "Fixed bugs in when statements on RSVP-TE attributes"; + reference "2.4.2"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "2.4.1"; + } + + revision "2017-06-21" { + description + "Add TC bits typedef."; + reference "2.4.0"; + } + + revision "2017-03-22" { + description + "Add RSVP calculated-absolute-subscription-bw"; + reference "2.3.0"; + } + + revision "2017-01-26" { + description + "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; + reference "2.2.0"; + } + + revision "2016-12-15" { + description + "Add additional MPLS parameters"; + reference "2.1.0"; + } + + revision "2016-09-01" { + description + "Revisions based on implementation feedback"; + reference "2.0.0"; + } + + revision "2016-08-08" { + description + "Public release of MPLS models"; + reference "1.0.1"; + } + + // typedef statements + + typedef te-bandwidth-type { + type enumeration { + enum SPECIFIED { + description + "Bandwidth is explicitly specified"; + } + enum AUTO { + description + "Bandwidth is automatically computed"; + } + } + description + "enumerated type for specifying whether bandwidth is + explicitly specified or automatically computed"; + } + + typedef mpls-srlg-flooding-type { + type enumeration { + enum FLOODED_SRLG { + description + "SRLG is flooded in the IGP"; + } + enum STATIC_SRLG { + description + "SRLG is not flooded, the members are + statically configured"; + } + } + description + "Enumerated bype for specifying how the SRLG is flooded"; + } + + typedef mpls-hop-type { + type enumeration { + enum LOOSE { + description + "loose hop in an explicit path"; + } + enum STRICT { + description + "strict hop in an explicit path"; + } + } + description + "enumerated type for specifying loose or strict + paths"; + } + + typedef te-metric-type { + type union { + type enumeration { + enum IGP { + description + "set the LSP metric to track the underlying + IGP metric"; + } + } + type uint32; + } + description + "union type for setting the LSP TE metric to a + static value, or to track the IGP metric"; + } + + typedef cspf-tie-breaking { + type enumeration { + enum RANDOM { + description + "CSPF calculation selects a random path among + multiple equal-cost paths to the destination"; + } + enum LEAST_FILL { + description + "CSPF calculation selects the path with greatest + available bandwidth"; + } + enum MOST_FILL { + description + "CSPF calculation selects the path with the least + available bandwidth"; + } + } + default RANDOM; + description + "type to indicate the CSPF selection policy when + multiple equal cost paths are available"; + } + + + // grouping statements + + grouping te-tunnel-reoptimize-config { + description + "Definition for reoptimize timer configuration"; + + leaf reoptimize-timer { + type uint16; + units seconds; + description + "frequency of reoptimization of + a traffic engineered LSP"; + } + } + + grouping te-lsp-auto-bandwidth-config { + description + "Configuration parameters related to autobandwidth"; + + leaf enabled { + type boolean; + default false; + description + "enables mpls auto-bandwidth on the + lsp"; + } + + leaf min-bw { + type oc-mplst:bandwidth-kbps; + description + "set the minimum bandwidth in Kbps for an + auto-bandwidth LSP"; + } + + leaf max-bw { + type oc-mplst:bandwidth-kbps; + description + "set the maximum bandwidth in Kbps for an + auto-bandwidth LSP"; + } + + leaf adjust-interval { + type uint32; + description + "time in seconds between adjustments to + LSP bandwidth"; + } + + leaf adjust-threshold { + type oc-types:percentage; + description + "percentage difference between the LSP's + specified bandwidth and its current bandwidth + allocation -- if the difference is greater than the + specified percentage, auto-bandwidth adjustment is + triggered"; + } + } + + grouping te-lsp-auto-bandwidth-state { + description + "Operational state parameters relating to auto-bandwidth"; + + leaf interval-high-bw { + type oc-mplst:bandwidth-kbps; + description + "The maximum measured bandwidth during the current + auto-bandwidth adjust interval expressed in kilobits + per second."; + } + } + + grouping te-lsp-overflow-config { + description + "configuration for mpls lsp bandwidth + overflow adjustment"; + + leaf enabled { + type boolean; + default false; + description + "enables mpls lsp bandwidth overflow + adjustment on the lsp"; + } + + leaf overflow-threshold { + type oc-types:percentage; + description + "bandwidth percentage change to trigger + an overflow event"; + + } + + leaf trigger-event-count { + type uint16; + description + "number of consecutive overflow sample + events needed to trigger an overflow adjustment"; + } + } + + grouping te-lsp-underflow-config { + description + "configuration for mpls lsp bandwidth + underflow adjustment"; + + leaf enabled { + type boolean; + default false; + description + "enables bandwidth underflow + adjustment on the lsp"; + } + + leaf underflow-threshold { + type oc-types:percentage; + description + "bandwidth percentage change to trigger + and underflow event"; + } + + leaf trigger-event-count { + type uint16; + description + "number of consecutive underflow sample + events needed to trigger an underflow adjustment"; + } + } + + grouping te-path-placement-constraints-config { + description + "Configuration data for link affinities"; + + leaf-list exclude-group { + type leafref { + path "../../../../../../../../../../te-global-attributes" + + "/mpls-admin-groups/admin-group/admin-group-name"; + } + description + "list of references to named admin-groups to exclude in + path calculation."; + } + + leaf-list include-all-group { + type leafref { + path "../../../../../../../../../../te-global-attributes" + + "/mpls-admin-groups/admin-group/admin-group-name"; + } + description + "list of references to named admin-groups of which all must + be included"; + } + + leaf-list include-any-group { + type leafref { + path "../../../../../../../../../../te-global-attributes" + + "/mpls-admin-groups/admin-group/admin-group-name"; + } + description + "list of references to named admin-groups of which one must + be included"; + } + } + + grouping te-path-placement-constraints-state { + description + "Operational state data for link affinities"; + //TODO: currently a placeholder + } + + grouping te-path-placement-constraints-top { + description + "Top-level grouping "; + + container admin-groups { + description + "Top-level container for include/exclude constraints for + link affinities"; + + container config { + description + "Configuration data "; + + uses te-path-placement-constraints-config; + } + + container state { + config false; + + description + "Operational state data "; + + uses te-path-placement-constraints-config; + uses te-path-placement-constraints-state; + } + } + } + + grouping te-tunnel-protection-config { + description + "Configuration parameters related to LSP + protection"; + leaf protection-style-requested { + type identityref { + base oc-mplst:PROTECTION_TYPE; + } + default oc-mplst:UNPROTECTED; + description + "style of mpls frr protection desired: can be + link, link-node or unprotected."; + } + } + + grouping explicit-route-subobject-config { + description + "The explicit route subobject grouping"; + + leaf address { + type inet:ip-address; + description + "router hop for the LSP path"; + } + + leaf hop-type { + type mpls-hop-type; + description + "strict or loose hop"; + } + + leaf index { + type uint8 { + range "0..255"; + } + description + "Index of this explicit route object to express + the order of hops in the path"; + } + + } + + grouping named-explicit-path-config { + description + "Configuration parameters relating to a named + explicit path"; + + leaf name { + type string; + description + "A string name that uniquely identifies an explicit + path"; + } + } + + // Explicit paths config somewhat following the IETF model + grouping explicit-paths-top { + description + "Top level global explicit path configuration + grouping"; + + container named-explicit-paths { + description + "Enclosing container for the named explicit paths"; + list named-explicit-path { + key "name"; + description + "A list of explicit paths"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "A string name that uniquely identifies + an explicit path"; + } + + container config { + description + "Configuration parameters relating to named explicit + paths"; + uses named-explicit-path-config; + uses oc-sr:sr-path-attributes-config; + } + + container state { + config false; + description + "Operational state parameters relating to the named + explicit paths"; + uses named-explicit-path-config; + uses oc-sr:sr-path-attributes-config; + } + + container explicit-route-objects { + description + "Enclosing container for EROs"; + + list explicit-route-object { + key "index"; + description + "List of explicit route objects"; + + leaf index { + type leafref { + path "../config/index"; + } + + description + "Index of this explicit route object, + to express the order of hops in path"; + } + + container config { + description + "Configuration parameters relating to an explicit + route"; + uses explicit-route-subobject-config; + } + + + container state { + config false; + description + "State parameters relating to an explicit route"; + uses explicit-route-subobject-config; + } + } + } + } + } + } + + grouping mpls-te-srlg-config { + description + "Configuration of various attributes associated + with the SRLG"; + + leaf name { + type string; + description + "SRLG group identifier"; + } + + leaf value { + type uint32; + description + "group ID for the SRLG"; + } + + leaf cost { + type uint32; + description + "The cost of the SRLG to the computation + algorithm"; + } + + leaf flooding-type { + type mpls-srlg-flooding-type; + default FLOODED_SRLG; + description + "The type of SRLG, either flooded in the IGP or + statically configured"; + } + } + + grouping mpls-te-srlg-members-config { + description + "Configuration of the membership of the SRLG"; + + leaf from-address { + type inet:ip-address; + description + "IP address of the a-side of the SRLG link"; + } + + leaf to-address { + type inet:ip-address; + description + "IP address of the z-side of the SRLG link"; + } + } + + grouping mpls-te-srlg-top { + description + "Top level grouping for MPLS shared + risk link groups."; + + container srlgs { + description + "Shared risk link groups attributes"; + list srlg { + key "name"; + description + "List of shared risk link groups"; + + leaf name { + type leafref { + path "../config/name"; + // Requires YANG 1.1 + //require-instance true; + } + description + "The SRLG group identifier"; + } + + container config { + description + "Configuration parameters related to the SRLG"; + uses mpls-te-srlg-config; + } + + container state { + config false; + description + "State parameters related to the SRLG"; + uses mpls-te-srlg-config; + } + + container static-srlg-members { + when "../config/flooding-type = 'STATIC_SRLG'" { + description + "Include this container for static + SRLG specific configuration"; + } + description + "SRLG members for static (not flooded) SRLGs "; + + list members-list { + key "from-address"; + description + "List of SRLG members, which are expressed + as IP address endpoints of links contained in the + SRLG"; + + leaf from-address { + type leafref { + path "../config/from-address"; + // Requires YANG 1.1 + //require-instance true; + } + description + "The from address of the link in the SRLG"; + } + + container config { + description + "Configuration parameters relating to the + SRLG members"; + uses mpls-te-srlg-members-config; + } + + container state { + config false; + description + "State parameters relating to the SRLG + members"; + uses mpls-te-srlg-members-config; + } + } + } + } + } + } + + grouping te-global-tunnel-config { + description + "Configuration parameters relevant to a single + traffic engineered tunnel."; + + leaf name { + type string; + description + "The tunnel name"; + } + + leaf type { + type identityref { + base oc-mplst:TUNNEL_TYPE; + } + description + "Tunnel type, p2p or p2mp"; + } + + leaf signaling-protocol { + type identityref { + base oc-mplst:PATH_SETUP_PROTOCOL; + } + description + "Signaling protocol used to set up this tunnel"; + } + + leaf description { + type string; + description + "optional text description for the tunnel"; + } + + leaf admin-status { + type identityref { + base oc-mplst:TUNNEL_ADMIN_STATUS; + } + default oc-mplst:ADMIN_UP; + description + "TE tunnel administrative state."; + } + + leaf preference { + type uint8 { + range "1..255"; + } + description + "Specifies a preference for this tunnel. + A lower number signifies a better preference"; + } + + leaf metric-type { + type identityref { + base oc-mplst:LSP_METRIC_TYPE; + } + default oc-mplst:LSP_METRIC_INHERITED; + description + "The type of metric specification that should be used to set + the LSP(s) metric"; + } + + leaf metric { + type int32; + description + "The value of the metric that should be specified. The value + supplied in this leaf is used in conjunction with the metric + type to determine the value of the metric used by the system. + Where the metric-type is set to LSP_METRIC_ABSOLUTE - the + value of this leaf is used directly; where it is set to + LSP_METRIC_RELATIVE, the relevant (positive or negative) + offset is used to formulate the metric; where metric-type + is LSP_METRIC_INHERITED, the value of this leaf is not + utilised"; + } + + leaf shortcut-eligible { + type boolean; + default "true"; + description + "Whether this LSP is considered to be eligible for us as a + shortcut in the IGP. In the case that this leaf is set to + true, the IGP SPF calculation uses the metric specified to + determine whether traffic should be carried over this LSP"; + } + + leaf protection-style-requested { + type identityref { + base oc-mplst:PROTECTION_TYPE; + } + default oc-mplst:UNPROTECTED; + description + "style of mpls frr protection desired: can be + link, link-node or unprotected."; + } + + uses te-tunnel-reoptimize-config; + uses oc-rsvp:rsvp-p2p-tunnel-attributes-config; + + } + + grouping tunnel-p2p-attributes-config { + description + "Configuration related to p2p LSPs"; + leaf destination { + type inet:ip-address; + description + "P2P tunnel destination address"; + } + } + + grouping p2p-path-state { + description + "Operational state parameters for p2p paths"; + + leaf-list associated-rsvp-sessions { + type leafref { + path "../../../../../../../../../signaling-protocols/" + + "rsvp-te/sessions/session/local-index"; + } + description + "If the signalling protocol specified for this path is + RSVP-TE, this leaf-list provides a reference to the associated + sessions within the RSVP-TE protocol sessions list, such + that details of the signaling can be retrieved. More than + one session may exist during re-signalling such as + make-before-break."; + } + + leaf spf-metric { + type uint64; + description + "The IGP metric of the shortest path to the LSP destination. + This value is used to compare the current metric of the + constrained path to the shortest path that is available in + the network topology."; + } + + leaf cspf-metric { + type uint64; + description + "The IGP metric of the path currently used by the LSP. + This value is used to represent the metric of the path + used by the LSP following the execution of the CSPF + algorithm and signalling of the LSP."; + } + } + + grouping p2p-path-config { + description + "Configuration parameters for p2p paths"; + + leaf name { + type string; + description + "Path name"; + } + + leaf path-computation-method { + type identityref { + base oc-mplst:PATH_COMPUTATION_METHOD; + } + default oc-mplst:LOCALLY_COMPUTED; + description + "The method used for computing the path, either + locally computed, queried from a server or not + computed at all (explicitly configured)."; + } + + leaf use-cspf { + when "../path-computation-method = 'LOCALLY_COMPUTED'" { + description + "The use of cspf when the path-computation method is + local computation"; + } + type boolean; + description + "Flag to enable CSPF for locally computed LSPs"; + } + + leaf cspf-tiebreaker { + when "../path-computation-method = 'LOCALLY_COMPUTED'" { + description + "The cspf tiebreaking method when the path is + locally computed"; + } + type cspf-tie-breaking; + description + "Determine the tie-breaking method to choose between + equally desirable paths during CSFP computation"; + } + + + leaf path-computation-server { + when "../path-computation-method = 'EXTERNALLY_QUERIED'" { + description + "The path-computation server when the path is + externally queried"; + } + type inet:ip-address; + description + "Address of the external path computation + server"; + } + + leaf explicit-path-name { + when "../path-computation-method = 'EXPLICITLY_DEFINED'" { + description + "The name of the explicitly defined path used"; + } + + type leafref { + path "../../../../../../../" + + "named-explicit-paths/named-explicit-path/" + + "config/name"; + // Requires YANG 1.1 + //require-instance true; + } + description + "reference to a defined path"; + } + + leaf preference { + type uint8 { + range "1..255"; + } + description + "Specifies a preference for this path. The lower the + number higher the preference"; + } + + uses oc-rsvp:rsvp-p2p-path-attributes-config; + } + + + grouping te-tunnel-p2p-top { + description + "Top level grouping for p2p configuration"; + + container p2p-tunnel-attributes { + when "../config/type = 'P2P'" { + description + "Include this container for LSPs of type P2P"; + } + description + "Parameters related to LSPs of type P2P"; + + container config { + description + "Configuration parameters for P2P LSPs"; + uses tunnel-p2p-attributes-config; + } + + container state { + config false; + description + "State parameters for P2P LSPs"; + uses tunnel-p2p-attributes-config; + } + + uses p2p-primary-paths-top; + uses p2p-secondary-paths-top; + } + } + + + grouping te-tunnel-state { + description + "Counters and statistical data relevent to a single + tunnel."; + + leaf oper-status { + type identityref { + base oc-mplst:LSP_OPER_STATUS; + } + description + "The operational status of the TE tunnel"; + } + + leaf role { + type identityref { + base oc-mplst:LSP_ROLE; + } + description + "The lsp role at the current node, whether it is headend, + transit or tailend."; + } + + leaf auto-generated { + type boolean; + description + "If the LSP was auto-generated by the system this leaf + should be set to true. Examples of auto-generated LSPs + are dynamically created backup LSPs to meet a FRR + policy."; + } + + container counters { + description + "State data for MPLS label switched paths. This state + data is specific to a single label switched path."; + + leaf bytes { + type yang:counter64; + description + "Number of bytes that have been forwarded over the + label switched path."; + } + + leaf packets { + type yang:counter64; + description + "Number of pacets that have been forwarded over the + label switched path."; + } + + leaf path-changes { + type yang:counter64; + description + "Number of path changes for the label switched path"; + } + + leaf state-changes { + type yang:counter64; + description + "Number of state changes for the label switched path"; + } + + leaf online-time { + type oc-types:timeticks64; + description + "Indication of the time the label switched path + transitioned to an Oper Up or in-service state. + + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + } + + leaf current-path-time { + type oc-types:timeticks64; + description + "Indicates the time the LSP switched onto its + current path. The value is reset upon a LSP path + change. + + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + + } + + leaf next-reoptimization-time { + type oc-types:timeticks64; + description + "Indicates the next scheduled time the LSP + will be reoptimized. + + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + + } + } + } + + grouping te-tunnel-bandwidth-config { + description + "Configuration parameters related to bandwidth for a tunnel"; + + leaf specification-type { + type te-bandwidth-type; + default SPECIFIED; + description + "The method used for settign the bandwidth, either explicitly + specified or configured"; + } + + leaf set-bandwidth { + when "../specification-type = 'SPECIFIED'" { + description + "The bandwidth value when bandwidth is explicitly + specified"; + } + type oc-mplst:bandwidth-kbps; + description + "set bandwidth explicitly, e.g., using + offline calculation"; + } + } + + grouping te-tunnel-bandwidth-state { + description + "Operational state parameters relating to bandwidth for a tunnel"; + + leaf signaled-bandwidth { + type oc-mplst:bandwidth-kbps; + description + "The currently signaled bandwidth of the LSP. In the case where + the bandwidth is specified explicitly, then this will match the + value of the set-bandwidth leaf; in cases where the bandwidth is + dynamically computed by the system, the current value of the + bandwidth should be reflected."; + } + } + + grouping te-tunnel-bandwidth-top { + description + "Top level grouping for specifying bandwidth for a tunnel"; + + container bandwidth { + description + "Bandwidth configuration for TE LSPs"; + + container config { + description + "Configuration parameters related to bandwidth on TE + tunnels:"; + uses te-tunnel-bandwidth-config; + } + + container state { + config false; + description + "State parameters related to bandwidth + configuration of TE tunnels"; + uses te-tunnel-bandwidth-config; + uses te-tunnel-bandwidth-state; + } + + container auto-bandwidth { + when "../config/specification-type = 'AUTO'" { + description + "Include this container for auto bandwidth + specific configuration"; + } + description + "Parameters related to auto-bandwidth"; + + container config { + description + "Configuration parameters relating to MPLS + auto-bandwidth on the tunnel."; + uses te-lsp-auto-bandwidth-config; + } + + container state { + config false; + description + "State parameters relating to MPLS + auto-bandwidth on the tunnel."; + uses te-lsp-auto-bandwidth-config; + uses te-lsp-auto-bandwidth-state; + } + + container overflow { + description + "configuration of MPLS overflow bandwidth + adjustement for the LSP"; + + container config { + description + "Config information for MPLS overflow bandwidth + adjustment"; + uses te-lsp-overflow-config; + } + + container state { + config false; + description + "Config information for MPLS overflow bandwidth + adjustment"; + uses te-lsp-overflow-config; + } + } + + container underflow { + description + "configuration of MPLS underflow bandwidth + adjustement for the LSP"; + + container config { + description + "Config information for MPLS underflow bandwidth + adjustment"; + uses te-lsp-underflow-config; + } + + container state { + config false; + description + "State information for MPLS underflow bandwidth + adjustment"; + uses te-lsp-underflow-config; + } + } + } + } + } + + grouping p2p-path-candidate-secondary-path-config { + description + "Configuration parameters relating to a secondary path which + is a candidate for a particular primary path"; + + leaf secondary-path { + type leafref { + path "../../../../../../p2p-secondary-paths/" + + "p2p-secondary-path/config/name"; + } + description + "A reference to the secondary path that should be utilised + when the containing primary path option is in use"; + } + + leaf priority { + type uint16; + description + "The priority of the specified secondary path option. Higher + priority options are less preferable - such that a secondary + path reference with a priority of 0 is the most preferred"; + } + } + + grouping p2p-path-candidate-secondary-path-state { + description + "Operational state parameters relating to a secondary path + which is a candidate for a particular primary path"; + + leaf active { + type boolean; + description + "Indicates the current active path option that has + been selected of the candidate secondary paths"; + } + } + + grouping p2p-primary-paths-top { + description + "Top level grouping for p2p primary paths"; + + container p2p-primary-path { + description + "Primary paths associated with the LSP"; + + list p2p-primary-path { + key "name"; + description + "List of p2p primary paths for a tunnel"; + + leaf name { + type leafref { + path "../config/name"; + // Requires YANG 1.1 + //require-instance true; + } + description + "Path name"; + } + + container config { + description + "Configuration parameters related to paths"; + uses p2p-path-config; + } + + container state { + config false; + description + "State parameters related to paths"; + uses p2p-path-config; + uses p2p-path-state; + } + + container candidate-secondary-paths { + description + "The set of candidate secondary paths which may be used + for this primary path. When secondary paths are specified + in the list the path of the secondary LSP in use must be + restricted to those path options referenced. The + priority of the secondary paths is specified within the + list. Higher priority values are less preferred - that is + to say that a path with priority 0 is the most preferred + path. In the case that the list is empty, any secondary + path option may be utilised when the current primary path + is in use."; + + list candidate-secondary-path { + key "secondary-path"; + + description + "List of secondary paths which may be utilised when the + current primary path is in use"; + + leaf secondary-path { + type leafref { + path "../config/secondary-path"; + } + description + "A reference to the secondary path option reference + which acts as the key of the candidate-secondary-path + list"; + } + + container config { + description + "Configuration parameters relating to the candidate + secondary path"; + + uses p2p-path-candidate-secondary-path-config; + } + + container state { + config false; + description + "Operational state parameters relating to the candidate + secondary path"; + + uses p2p-path-candidate-secondary-path-config; + uses p2p-path-candidate-secondary-path-state; + } + } + } + + uses te-path-placement-constraints-top; + + } + } + } + + grouping p2p-secondary-paths-top { + description + "Top level grouping for p2p secondary paths"; + + container p2p-secondary-paths { + description + "Secondary paths for the LSP"; + + list p2p-secondary-path { + key "name"; + description + "List of p2p primary paths for a tunnel"; + + leaf name { + type leafref { + path "../config/name"; + // Requires YANG 1.1 + //require-instance true; + } + description + "Path name"; + } + + container config { + description + "Configuration parameters related to paths"; + uses p2p-path-config; + } + + container state { + config false; + description + "State parameters related to paths"; + uses p2p-path-config; + uses p2p-path-state; + } + + uses te-path-placement-constraints-top; + } + } + } + + grouping te-tunnels-top { + description + "Top level grouping for TE tunnels"; + + container tunnels { + description + "Enclosing container for tunnels"; + list tunnel { + key "name"; + description + "List of TE tunnels. This list contains only the LSPs that the + current device originates (i.e., for which it is the head-end). + Where the signaling protocol utilised for an LSP allows a mid-point + or tail device to be aware of the LSP (e.g., RSVP-TE), then the + associated sessions are maintained per protocol"; + + leaf name { + type leafref { + path "../config/name"; + // Requires YANG 1.1 + //require-instance true; + } + description + "The tunnel name"; + } + + container config { + description + "Configuration parameters related to TE tunnels:"; + uses te-global-tunnel-config; + } + + container state { + config false; + description + "State parameters related to TE tunnels"; + uses te-global-tunnel-config; + uses te-tunnel-state; + + } + + uses te-tunnel-bandwidth-top; + uses te-tunnel-p2p-top; + // TODO - add the p2mp configuration + } + } + } + +// data definition statements + +// augment statements + +// rpc statements + +// notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-mpls-types.yang b/vendor/cisco/nx/9.3-14/openconfig-mpls-types.yang new file mode 100644 index 000000000..e743a7206 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-mpls-types.yang @@ -0,0 +1,459 @@ +module openconfig-mpls-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/mpls-types"; + + prefix "oc-mpls-types"; + + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "General types for MPLS / TE data model"; + + oc-ext:openconfig-version "3.1.0"; + + revision "2019-03-26" { + description + "Add Pseudowire encapsulation."; + reference "3.1.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.0.1"; + } + + revision "2018-07-02" { + description + "Add new RSVP-TE statistics, remove associated-rsvp-session + leaf. Remove use of date-and-time."; + reference "3.0.0"; + } + + revision "2018-06-16" { + description + "Included attributes for base LDP configuration."; + reference "2.6.0"; + } + + revision "2018-06-13" { + description + "Add ttl-propagation to global MPLS config"; + reference "2.5.0"; + } + + revision "2018-06-05" { + description + "Fixed bugs in when statements on RSVP-TE attributes"; + reference "2.4.2"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "2.4.1"; + } + + revision "2017-06-21" { + description + "Add TC bits typedef."; + reference "2.4.0"; + } + + revision "2017-03-22" { + description + "Add RSVP calculated-absolute-subscription-bw"; + reference "2.3.0"; + } + + revision "2017-01-26" { + description + "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; + reference "2.2.0"; + } + + revision "2016-12-15" { + description + "Add additional MPLS parameters"; + reference "2.1.0"; + } + + revision "2016-09-01" { + description + "Revisions based on implementation feedback"; + reference "2.0.0"; + } + + revision "2016-08-08" { + description + "Public release of MPLS models"; + reference "1.0.1"; + } + + // identity statements + + identity PATH_COMPUTATION_METHOD { + description + "base identity for supported path computation + mechanisms"; + } + + identity LOCALLY_COMPUTED { + base PATH_COMPUTATION_METHOD; + description + "indicates a constrained-path LSP in which the + path is computed by the local LER"; + } + + identity EXTERNALLY_QUERIED { + base PATH_COMPUTATION_METHOD; + description + "Constrained-path LSP in which the path is + obtained by querying an external source, such as a PCE server. + In the case that an LSP is defined to be externally queried, it may + also have associated explicit definitions (which are provided to the + external source to aid computation); and the path that is returned by + the external source is not required to provide a wholly resolved + path back to the originating system - that is to say, some local + computation may also be required"; + } + + identity EXPLICITLY_DEFINED { + base PATH_COMPUTATION_METHOD; + description + "constrained-path LSP in which the path is + explicitly specified as a collection of strict or/and loose + hops"; + } + + + // using identities rather than enum types to simplify adding new + // signaling protocols as they are introduced and supported + identity PATH_SETUP_PROTOCOL { + description + "base identity for supported MPLS signaling + protocols"; + } + + identity PATH_SETUP_RSVP { + base PATH_SETUP_PROTOCOL; + description + "RSVP-TE signaling protocol"; + } + + identity PATH_SETUP_SR { + base PATH_SETUP_PROTOCOL; + description + "Segment routing"; + } + + identity PATH_SETUP_LDP { + base PATH_SETUP_PROTOCOL; + description + "LDP - RFC 5036"; + } + + + identity PROTECTION_TYPE { + description + "base identity for protection type"; + } + + identity UNPROTECTED { + base PROTECTION_TYPE; + description + "no protection is desired"; + } + + identity LINK_PROTECTION_REQUIRED { + base PROTECTION_TYPE; + description + "link protection is desired"; + } + + identity LINK_NODE_PROTECTION_REQUESTED { + base PROTECTION_TYPE; + description + "node and link protection are both desired"; + } + + identity LSP_ROLE { + description + "Base identity for describing the role of + label switched path at the current node"; + } + + identity INGRESS { + base LSP_ROLE; + description + "Label switched path is an ingress (headend) + LSP"; + } + + identity EGRESS { + base LSP_ROLE; + description + "Label switched path is an egress (tailend) + LSP"; + } + + identity TRANSIT { + base LSP_ROLE; + description + "Label switched path is a transit LSP"; + } + + + identity TUNNEL_TYPE { + description + "Base identity from which specific tunnel types are + derived."; + } + + identity P2P { + base TUNNEL_TYPE; + description + "TE point-to-point tunnel type."; + } + + identity P2MP { + base TUNNEL_TYPE; + description + "TE point-to-multipoint tunnel type."; + } + + + identity LSP_OPER_STATUS { + description + "Base identity for LSP operational status"; + } + + identity DOWN { + base LSP_OPER_STATUS; + description + "LSP is operationally down or out of service"; + } + + identity UP { + base LSP_OPER_STATUS; + description + "LSP is operationally active and available + for traffic."; + } + + identity TUNNEL_ADMIN_STATUS { + description + "Base identity for tunnel administrative status"; + } + + identity ADMIN_DOWN { + base TUNNEL_ADMIN_STATUS; + description + "LSP is administratively down"; + } + + identity ADMIN_UP { + base TUNNEL_ADMIN_STATUS; + description + "LSP is administratively up"; + } + + identity NULL_LABEL_TYPE { + description + "Base identity from which specific null-label types are + derived."; + } + + identity EXPLICIT { + base NULL_LABEL_TYPE; + description + "Explicit null label is used."; + } + + identity IMPLICIT { + base NULL_LABEL_TYPE; + description + "Implicit null label is used."; + } + + identity LSP_METRIC_TYPE { + description + "Base identity for types of LSP metric specification"; + } + + identity LSP_METRIC_RELATIVE { + base LSP_METRIC_TYPE; + description + "The metric specified for the LSPs to which this identity refers + is specified as a relative value to the IGP metric cost to the + LSP's tail-end."; + } + + identity LSP_METRIC_ABSOLUTE { + base LSP_METRIC_TYPE; + description + "The metric specified for the LSPs to which this identity refers + is specified as an absolute value"; + } + + identity LSP_METRIC_INHERITED { + base LSP_METRIC_TYPE; + description + "The metric for for the LSPs to which this identity refers is + not specified explicitly - but rather inherited from the IGP + cost directly"; + } + + // Note: The IANA PWE3 Types Registry has several more values than these + identity PSEUDOWIRE_ENCAPSULATION { + description + "Sets the PDU type of the PSEUDOWIRE Example in RFC4448. This value + should be enumerated from the IANA Pseudowire types registry"; + } + + identity PWE_ETHERNET_TAGGED_MODE { + base PSEUDOWIRE_ENCAPSULATION; + description + "Ethernet Tagged Mode RFC4448"; + reference "IANA PWE3 0x0004"; + } + + identity PWE_ETHERNET_RAW_MODE { + base PSEUDOWIRE_ENCAPSULATION; + description + "Ethernet Raw Mode RFC4448"; + reference "IANA PWE3 0x0005"; + } + + // typedef statements + typedef mpls-label { + type union { + type uint32 { + range 16..1048575; + } + type enumeration { + enum IPV4_EXPLICIT_NULL { + value 0; + description + "valid at the bottom of the label stack, + indicates that stack must be popped and packet forwarded + based on IPv4 header"; + } + enum ROUTER_ALERT { + value 1; + description + "allowed anywhere in the label stack except + the bottom, local router delivers packet to the local CPU + when this label is at the top of the stack"; + } + enum IPV6_EXPLICIT_NULL { + value 2; + description + "valid at the bottom of the label stack, + indicates that stack must be popped and packet forwarded + based on IPv6 header"; + } + enum IMPLICIT_NULL { + value 3; + description + "assigned by local LSR but not carried in + packets"; + } + enum ENTROPY_LABEL_INDICATOR { + value 7; + description + "Entropy label indicator, to allow an LSR + to distinguish between entropy label and applicaiton + labels RFC 6790"; + } + enum NO_LABEL { + description + "This value is utilised to indicate that the packet that + is forwarded by the local system does not have an MPLS + header applied to it. Typically, this is used at the + egress of an LSP"; + } + } + } + description + "type for MPLS label value encoding"; + reference "RFC 3032 - MPLS Label Stack Encoding"; + } + + typedef tunnel-type { + type enumeration { + enum P2P { + description + "point-to-point label-switched-path"; + } + enum P2MP { + description + "point-to-multipoint label-switched-path"; + } + enum MP2MP { + description + "multipoint-to-multipoint label-switched-path"; + } + } + description + "defines the tunnel type for the LSP"; + reference + "RFC 6388 - Label Distribution Protocol Extensions for + Point-to-Multipoint and Multipoint-to-Multipoint Label Switched + Paths + RFC 4875 - Extensions to Resource Reservation Protocol + - Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE + Label Switched Paths (LSPs)"; + } + + typedef bandwidth-kbps { + type uint64; + units "Kbps"; + description + "Bandwidth values expressed in kilobits per second"; + } + + typedef bandwidth-mbps { + type uint64; + units "Mbps"; + description + "Bandwidth values expressed in megabits per second"; + } + + typedef bandwidth-gbps { + type uint64; + units "Gbps"; + description + "Bandwidth values expressed in gigabits per second"; + } + + typedef mpls-tc { + type uint8 { + range "0..7"; + } + description + "Values of the MPLS Traffic Class (formerly known as + Experimental, EXP) bits"; + } + + // grouping statements + + // data definition statements + + // augment statements + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-mpls.yang b/vendor/cisco/nx/9.3-14/openconfig-mpls.yang new file mode 100644 index 000000000..64c38473b --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-mpls.yang @@ -0,0 +1,769 @@ +module openconfig-mpls { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/mpls"; + + prefix "oc-mpls"; + + + // import some basic types + import openconfig-mpls-types { prefix oc-mplst; } + import openconfig-mpls-rsvp { prefix oc-rsvp; } + import openconfig-mpls-ldp { prefix oc-ldp; } + import openconfig-types { prefix oc-types; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-segment-routing { prefix oc-sr; } + + // include submodules + include openconfig-mpls-te; + include openconfig-mpls-igp; + include openconfig-mpls-static; + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module provides data definitions for configuration of + Multiprotocol Label Switching (MPLS) and associated protocols for + signaling and traffic engineering. + + RFC 3031: Multiprotocol Label Switching Architecture + + The MPLS / TE data model consists of several modules and + submodules as shown below. The top-level MPLS module describes + the overall framework. Three types of LSPs are supported: + + i) traffic-engineered (or constrained-path) + + ii) IGP-congruent (LSPs that follow the IGP path) + + iii) static LSPs which are not signaled + + The structure of each of these LSP configurations is defined in + corresponding submodules. Companion modules define the relevant + configuration and operational data specific to key signaling + protocols used in operational practice. + + + +-------+ + +---------------->| MPLS |<--------------+ + | +-------+ | + | ^ | + | | | + +----+-----+ +--------+-------+ +-----+-----+ + | TE LSPs | | IGP-based LSPs | |static LSPs| + | | | | | | + +----------+ +----------------+ +-----------+ + ^ ^ ^ ^ + | +----------------+ | +--------+ + | | | | + | +------+ +-+---+-+ +--+--+ + +---+ RSVP | |SEGMENT| | LDP | + +------+ |ROUTING| +-----+ + +-------+ + "; + + oc-ext:openconfig-version "3.1.0"; + + revision "2019-03-26" { + description + "Add Pseudowire encapsulation."; + reference "3.1.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.0.1"; + } + + revision "2018-07-02" { + description + "Add new RSVP-TE statistics, remove associated-rsvp-session + leaf. Remove use of date-and-time."; + reference "3.0.0"; + } + + revision "2018-06-16" { + description + "Included attributes for base LDP configuration."; + reference "2.6.0"; + } + + revision "2018-06-13" { + description + "Add ttl-propagation to global MPLS config"; + reference "2.5.0"; + } + + revision "2018-06-05" { + description + "Fixed bugs in when statements on RSVP-TE attributes"; + reference "2.4.2"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "2.4.1"; + } + + revision "2017-06-21" { + description + "Add TC bits typedef."; + reference "2.4.0"; + } + + revision "2017-03-22" { + description + "Add RSVP calculated-absolute-subscription-bw"; + reference "2.3.0"; + } + + revision "2017-01-26" { + description + "Add RSVP Tspec, clarify units for RSVP, remove unused LDP"; + reference "2.2.0"; + } + + revision "2016-12-15" { + description + "Add additional MPLS parameters"; + reference "2.1.0"; + } + + revision "2016-09-01" { + description + "Revisions based on implementation feedback"; + reference "2.0.0"; + } + + revision "2016-08-08" { + description + "Public release of MPLS models"; + reference "1.0.1"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // grouping statements + + grouping mpls-admin-group-config { + description + "configuration data for MPLS link admin groups"; + + leaf admin-group-name { + type string; + description + "name for mpls admin-group"; + } + + leaf bit-position { + type uint32; + description + "bit-position value for mpls admin-group. The value + for the admin group is an integer that represents one + of the bit positions in the admin-group bitmask. Values + between 0 and 31 are interpreted as the original limit + of 32 admin groups. Values >=32 are interpreted as + extended admin group values as per RFC7308."; + } + + } + + grouping mpls-admin-groups-top { + + description + "top-level mpls admin-groups config + and state containers"; + + container mpls-admin-groups { + description + "Top-level container for admin-groups configuration + and state"; + + list admin-group { + key "admin-group-name"; + description + "configuration of value to name mapping + for mpls affinities/admin-groups"; + + leaf admin-group-name { + type leafref { + path "../config/admin-group-name"; + } + description + "name for mpls admin-group"; + } + container config { + description + "Configurable items for admin-groups"; + uses mpls-admin-group-config; + } + + container state { + config false; + description + "Operational state for admin-groups"; + uses mpls-admin-group-config; + } + } + } + } + + grouping mpls-te-igp-flooding-bandwidth-config { + description + "Configurable items for igp flooding bandwidth + threshold configuration."; + leaf threshold-type { + type enumeration { + enum DELTA { + description + "DELTA indicates that the local + system should flood IGP updates when a + change in reserved bandwidth >= the specified + delta occurs on the interface."; + } + enum THRESHOLD_CROSSED { + description + "THRESHOLD-CROSSED indicates that + the local system should trigger an update (and + hence flood) the reserved bandwidth when the + reserved bandwidth changes such that it crosses, + or becomes equal to one of the threshold values."; + } + } + description + "The type of threshold that should be used to specify the + values at which bandwidth is flooded. DELTA indicates that + the local system should flood IGP updates when a change in + reserved bandwidth >= the specified delta occurs on the + interface. Where THRESHOLD_CROSSED is specified, the local + system should trigger an update (and hence flood) the + reserved bandwidth when the reserved bandwidth changes such + that it crosses, or becomes equal to one of the threshold + values"; + } + + leaf delta-percentage { + when "../threshold-type = 'DELTA'" { + description + "The percentage delta can only be specified when the + threshold type is specified to be a percentage delta of + the reserved bandwidth"; + } + type oc-types:percentage; + description + "The percentage of the maximum-reservable-bandwidth + considered as the delta that results in an IGP update + being flooded"; + } + + leaf threshold-specification { + when "../threshold-type = 'THRESHOLD_CROSSED'" { + description + "The selection of whether mirrored or separate threshold + values are to be used requires user specified thresholds to + be set"; + } + type enumeration { + enum MIRRORED_UP_DOWN { + description + "MIRRORED_UP_DOWN indicates that a single set of + threshold values should be used for both increasing + and decreasing bandwidth when determining whether + to trigger updated bandwidth values to be flooded + in the IGP TE extensions."; + } + enum SEPARATE_UP_DOWN { + description + "SEPARATE_UP_DOWN indicates that a separate + threshold values should be used for the increasing + and decreasing bandwidth when determining whether + to trigger updated bandwidth values to be flooded + in the IGP TE extensions."; + } + } + description + "This value specifies whether a single set of threshold + values should be used for both increasing and decreasing + bandwidth when determining whether to trigger updated + bandwidth values to be flooded in the IGP TE extensions. + MIRRORED-UP-DOWN indicates that a single value (or set of + values) should be used for both increasing and decreasing + values, where SEPARATE-UP-DOWN specifies that the increasing + and decreasing values will be separately specified"; + } + + leaf-list up-thresholds { + when "../threshold-type = 'THRESHOLD_CROSSED'" + + "and ../threshold-specification = 'SEPARATE_UP_DOWN'" { + description + "A list of up-thresholds can only be specified when the + bandwidth update is triggered based on crossing a + threshold and separate up and down thresholds are + required"; + } + type oc-types:percentage; + description + "The thresholds (expressed as a percentage of the maximum + reservable bandwidth) at which bandwidth updates are to be + triggered when the bandwidth is increasing."; + } + + leaf-list down-thresholds { + when "../threshold-type = 'THRESHOLD_CROSSED'" + + "and ../threshold-specification = 'SEPARATE_UP_DOWN'" { + description + "A list of down-thresholds can only be specified when the + bandwidth update is triggered based on crossing a + threshold and separate up and down thresholds are + required"; + } + type oc-types:percentage; + description + "The thresholds (expressed as a percentage of the maximum + reservable bandwidth) at which bandwidth updates are to be + triggered when the bandwidth is decreasing."; + } + + leaf-list up-down-thresholds { + when "../threshold-type = 'THRESHOLD_CROSSED'" + + "and ../threshold-specification = 'MIRRORED_UP_DOWN'" { + description + "A list of thresholds corresponding to both increasing + and decreasing bandwidths can be specified only when an + update is triggered based on crossing a threshold, and + the same up and down thresholds are required."; + } + type oc-types:percentage; + description + "The thresholds (expressed as a percentage of the maximum + reservable bandwidth of the interface) at which bandwidth + updates are flooded - used both when the bandwidth is + increasing and decreasing"; + } + } + + + grouping mpls-te-igp-flooding-bandwidth { + description + "Top level group for traffic engineering + database flooding options"; + container igp-flooding-bandwidth { + description + "Interface bandwidth change percentages + that trigger update events into the IGP traffic + engineering database (TED)"; + container config { + description + "Configuration parameters for TED + update threshold "; + uses mpls-te-igp-flooding-bandwidth-config; + } + container state { + config false; + description + "State parameters for TED update threshold "; + uses mpls-te-igp-flooding-bandwidth-config; + } + } + } + + + grouping te-lsp-delay-config { + description + "Group for the timers goerning the delay + in installation and cleanup of TE LSPs"; + + leaf install-delay { + type uint16 { + range 0..3600; + } + units seconds; + description + "delay the use of newly installed te lsp for a + specified amount of time."; + } + + leaf cleanup-delay { + type uint16; + units seconds; + description + "delay the removal of old te lsp for a specified + amount of time"; + } + } + + grouping te-interface-attributes-top { + description + "Top level grouping for attributes + for TE interfaces."; + + list interface { + key "interface-id"; + description + "List of TE interfaces"; + + leaf interface-id { + type leafref { + path "../config/interface-id"; + } + description + "Reference to the interface id list key"; + } + + container config { + description + "Configuration parameters related to TE interfaces:"; + uses te-interface-attributes-config; + } + + container state { + config false; + description + "State parameters related to TE interfaces"; + uses te-interface-attributes-config; + } + + uses oc-if:interface-ref; + + uses mpls-te-igp-flooding-bandwidth; + } + } + + grouping te-interface-attributes-config { + description + "global level definitions for interfaces + on which TE is run"; + + leaf interface-id { + type oc-if:interface-id; + description + "Id of the interface"; + } + + leaf te-metric { + type uint32; + description + "TE specific metric for the link"; + } + + leaf-list srlg-membership { + type leafref { + path "../../../../te-global-attributes/srlgs/srlg/name"; + } + description + "list of references to named shared risk link groups that the + interface belongs to."; + } + + leaf-list admin-group { + type string; + description + "list of admin groups (by name) on the interface"; + } + } + + grouping mpls-te-lsp-timers { + description + "Grouping for traffic engineering timers"; + container te-lsp-timers { + description + "Definition for delays associated with setup + and cleanup of TE LSPs"; + + container config { + description + "Configuration parameters related + to timers for TE LSPs"; + + uses te-lsp-delay-config; + uses te-tunnel-reoptimize-config; + } + + container state { + config false; + description + "State related to timers for TE LSPs"; + + uses te-lsp-delay-config; + uses te-tunnel-reoptimize-config; + } + } + } + + grouping mpls-global-config { + description + "Definition of global MPLS configuration parameters"; + + leaf null-label { + type identityref { + base oc-mplst:NULL_LABEL_TYPE; + } + default oc-mplst:IMPLICIT; + description + "The null-label type used, implicit or explicit"; + } + + leaf ttl-propagation { + type boolean; + default true; + description + "Enables TTL propagation across the MPLS domain. + When ttl-propagation is set to true, the IP TTL + is copied into the MPLS header TTL when pushing + a label to an IP packet. If false, the IP TTL is + not copied into the MPLS header TTL and, therefore, + the IP TTL is not updated in the MPLS domain."; + } + + leaf pw-encapsulation { + type identityref { + base oc-mplst:PSEUDOWIRE_ENCAPSULATION; + } + description + "The PDU type to use with pseudowires."; + } + + } + + grouping mpls-global-top { + description + "Top level grouping for global MPLS configuration "; + + container config { + description + "Top level global MPLS configuration"; + uses mpls-global-config; + } + + container state { + config false; + description + "Top level global MPLS state"; + uses mpls-global-config; + } + } + + grouping mpls-interfaces-top { + description + "Top level grouping for attributes + for MPLS-enabled interfaces."; + container interface-attributes { + description + "Parameters related to MPLS interfaces"; + list interface { + key "interface-id"; + description + "List of TE interfaces"; + + leaf interface-id { + type leafref { + path "../config/interface-id"; + } + description + "Reference to the interface id list key"; + } + + container config { + description + "Configuration parameters related to MPLS interfaces:"; + uses mpls-interface-attributes-config; + } + + container state { + config false; + description + "State parameters related to TE interfaces"; + uses mpls-interface-attributes-config; + } + + uses oc-if:interface-ref; + } + } + } + + grouping mpls-interface-attributes-config { + description + "global level definitions for interfaces + on which MPLS is run"; + + leaf interface-id { + type oc-if:interface-id; + description + "Indentifier for the MPLS interface"; + } + + leaf mpls-enabled { + type boolean; + default false; + description + "Enable MPLS forwarding on this interface"; + } + } + + grouping mpls-label-block-config { + description + "Configuration parameters relating to an MPLS label block."; + + leaf local-id { + type string; + description + "A local identifier for the global label block allocation."; + } + + leaf lower-bound { + type oc-mplst:mpls-label; + description + "Lower bound of the global label block. The block is defined to include + this label."; + } + + leaf upper-bound { + type oc-mplst:mpls-label; + description + "Upper bound for the global label block. The block is defined to include + this label."; + } + } + + grouping mpls-label-blocks-top { + description + "Top-level configuration and operational state parameters corresponding + to reserved label blocks."; + + container reserved-label-blocks { + description + "A range of labels starting with the start-label and up-to and including + the end label that should be allocated as reserved. These labels should + not be utilised by any dynamic label allocation on the local system unless + the allocating protocol is explicitly configured to specify that + allocation of labels should be out of the label block specified."; + + list reserved-label-block { + key "local-id"; + + description + "A range of labels starting with the start-label up to and including + the end label that should be allocated for use by a specific protocol."; + + leaf local-id { + type leafref { + path "../config/local-id"; + } + description + "A reference to a unique local identifier for this label block."; + } + + container config { + description + "Configuration parameters relating to the label block."; + + uses mpls-label-block-config; + } + + container state { + config false; + description + "State parameters relating to the label block."; + + uses mpls-label-block-config; + } + } + } + } + + grouping mpls-top { + description + "Top level grouping for MPLS configuration and state"; + + container mpls { + description + "Anchor point for mpls configuration and operational + data"; + + container global { + // entropy label support, label ranges will be added here. + description + "general mpls configuration applicable to any + type of LSP and signaling protocol - label ranges, + entropy label supportmay be added here"; + uses mpls-global-top; + uses mpls-interfaces-top; + uses mpls-label-blocks-top; + } + + container te-global-attributes { + description + "traffic-engineering global attributes"; + uses mpls-te-srlg-top; + uses mpls-admin-groups-top; + uses mpls-te-lsp-timers; + } + + container te-interface-attributes { + description + "traffic engineering attributes specific + for interfaces"; + uses te-interface-attributes-top; + } + + container signaling-protocols { + description + "top-level signaling protocol configuration"; + + uses oc-rsvp:rsvp-global; + uses oc-ldp:ldp-global; + uses oc-sr:sr-mpls-top; + } + + container lsps { + description + "LSP definitions and configuration"; + + container constrained-path { + description + "traffic-engineered LSPs supporting different + path computation and signaling methods"; + uses explicit-paths-top; + uses te-tunnels-top; + } + + container unconstrained-path { + description + "LSPs that use the IGP-determined path, i.e., non + traffic-engineered, or non constrained-path"; + + uses igp-lsp-common; + uses igp-lsp-setup; + } + + container static-lsps { + description + "statically configured LSPs, without dynamic + signaling"; + + uses static-lsp-top; + } + } + } + } + + // augment statements + + // rpc statements + + // notification statements +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-network-instance-l2.yang b/vendor/cisco/nx/9.3-14/openconfig-network-instance-l2.yang new file mode 100644 index 000000000..0ace32656 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-network-instance-l2.yang @@ -0,0 +1,345 @@ +submodule openconfig-network-instance-l2 { + + belongs-to openconfig-network-instance { + prefix "oc-netinst"; + } + + // import some basic types + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-interfaces { prefix "oc-if"; } + import ietf-yang-types { prefix "yang"; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module contains groupings which specifically relate to + Layer 2 network instance configuration and operational state + parameters."; + + oc-ext:openconfig-version "0.11.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.11.1"; + } + + revision "2018-08-11" { + description + "Add vlan id as additional key in MAC table"; + reference "0.11.0"; + } + + revision "2018-06-22" { + description + "Fix typo in OSPF when statement"; + reference "0.10.2"; + } + + revision "2018-06-05" { + description + "Fix bugs in when statements"; + reference "0.10.1"; + } + + revision "2018-02-19" { + description + "Add PIM and IGMP to network instance"; + reference "0.10.0"; + } + + revision "2017-12-13" { + description + "Fix incorrect constraint on SR and MPLS containers"; + reference "0.9.0"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes"; + reference "0.8.1"; + } + + revision "2017-02-28" { + description + "Add OSPFv2 to network instance"; + reference "0.8.0"; + } + + revision "2017-01-26" { + description + "Add policy forwarding to network instance"; + reference "0.7.0"; + } + + revision "2017-01-13" { + description + "Add AFT to the network instance"; + reference "0.6.0"; + } + + revision "2016-12-15" { + description + "Add segment routing to network instance"; + reference "0.5.0"; + } + + revision "2016-11-10" { + description + "Update model to include IS-IS."; + reference "0.4.1"; + } + + revision "2016-10-12" { + description + "Update table connections"; + reference "0.4.0"; + } + + revision "2016-09-28" { + description + "Change L2 instance to submodule; add MAC table"; + reference "0.3.0"; + } + + revision "2016-08-11" { + description + "Resolve repeated container names in routing protocols"; + reference "0.2.3"; + } + + revision "2016-07-08" { + description + "Updated with refactored routing protocol models"; + reference "0.2.1"; + } + + revision "2016-03-29" { + description + "Initial revision"; + reference "0.2.0"; + } + + revision "2015-11-20" { + description + "Initial revision"; + reference "0.1.0"; + } + + grouping l2ni-instance { + description + "Configuration and operational state parameters relating + to a Layer 2 network instance"; + + container fdb { + description + "Operational state and configuration parameters relating to + the forwarding database of the network instance"; + + container config { + description + "Configuration parameters relating to the FDB"; + uses l2ni-fdb-mac-config; + } + container state { + config false; + description + "Operational state parameters relating to the FDB"; + uses l2ni-fdb-mac-config; + } + + uses l2ni-mac-table-top; + } + } + + grouping l2ni-instance-common-config { + description + "Common configuration options which are specific to Layer 2 + network instances"; + + leaf mtu { + type uint16; + description + "The maximum frame size which should be supported for this + instance for Layer 2 frames"; + } + + } + + grouping l2ni-fdb-mac-config { + description + "Parameters relating to FDB behaviour relating to MAC + addresses"; + + leaf mac-learning { + type boolean; + description + "When this leaf is set to true, MAC learning is enabled for + the network instance, such that MAC addresses are learned + from ingress frames and added to the FDB."; + } + + leaf mac-aging-time { + // Cisco supports one aging time for local and remote, but + // can specify this time is absolute or against inactivity. + // ALU SROS supports different aging times for local and remote + // but does not allow absolute/inactivity specification. + // JNPR supports only a single aging time, and no specification + // of whether inactivity/absolute is used. + // It is easy to augment new options in here for local remote + // and an extra leaf to allow specification of the type of aging + // so this is left as a single value. + type uint16; + units seconds; + description + "The number of seconds of inactivity after which the entry + in the local FDB is timed out."; + } + + leaf maximum-entries { + type uint16; + description + "The maximum number of MAC address entries that should be + accepted into the FDB"; + } + } + + grouping l2ni-encapsulation-config { + description + "Encapsulation related configuration parameters for a L2 + network instance"; + + leaf control-word { + type boolean; + description + "Whether the control-word should be used for the network + instance"; + reference "RFC3985"; + } + } + + grouping l2ni-mac-table-config { + description + "Configuration data for MAC table entries"; + + leaf mac-address { + type yang:mac-address; + description + "MAC address for the dynamic or static MAC table + entry"; + } + + leaf vlan { + //TODO(aashaikh): Consider whether this should just reflect the + //VLAN id or be a union type to also support displaying/setting + //the VLAN by name (i.e., global VLAN configured in the VLAN + // model). + type leafref { + path "../../../../../../vlans/vlan/config/vlan-id"; + } + description + "VLAN on which the MAC address is present. The same MAC + address may be seen on multiple VLANs in some cases."; + } + } + + grouping l2ni-mac-table-state { + description + "Operational state data for MAC table entries"; + + leaf age { + type uint64; + units seconds; + description + "The time in seconds since the MAC address has been in the + table"; + } + + leaf entry-type { + type enumeration { + enum STATIC { + description + "Statically programmed MAC table entry"; + } + enum DYNAMIC { + description + "Dynamically learned MAC table entry"; + } + } + description + "Indicates whether the entry was statically configured, or + dynamically learned."; + } + + } + + grouping l2ni-mac-table-top { + description + "Top-level grouping for MAC table list"; + + + container mac-table { + description + "Table of learned or statically configured MAC addresses and + corresponding VLANs in the bridge domain"; + + container entries { + description + "Enclosing container for list of MAC table entries"; + + list entry { + key "mac-address vlan"; + description + "List of learned MAC addresses"; + + leaf mac-address { + type leafref { + path "../config/mac-address"; + } + description + "Reference to mac-address list key"; + } + + leaf vlan { + type leafref { + path "../config/vlan"; + } + description + "Reference to vlan list key"; + } + + container config { + description + "Configuration data for MAC table entries"; + + uses l2ni-mac-table-config; + } + + container state { + + config false; + + description + "Operational state data for MAC table entries"; + + uses l2ni-mac-table-config; + uses l2ni-mac-table-state; + } + + container interface { + description + "Reference to the base and/or subinterface for the + MAC table entry"; + + uses oc-if:interface-ref; + } + } + } + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-network-instance-l3.yang b/vendor/cisco/nx/9.3-14/openconfig-network-instance-l3.yang new file mode 100644 index 000000000..742f9002f --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-network-instance-l3.yang @@ -0,0 +1,245 @@ +module openconfig-network-instance-l3 { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/network-instance-l3"; + + prefix "oc-ni-l3"; + + // import some basic types + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-types { prefix "octypes"; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module contains groupings which specifically relate to + Layer 3 network instance configuration and operational state + parameters."; + + oc-ext:openconfig-version "0.11.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.11.1"; + } + + revision "2018-08-17" { + description + "Add a route limit for L3 network instances."; + reference "0.11.0"; + } + + revision "2017-12-13" { + description + "Fix incorrect constraint on SR and MPLS containers"; + reference "0.9.0"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes"; + reference "0.8.1"; + } + + revision "2017-02-28" { + description + "Add OSPFv2 to network instance"; + reference "0.8.0"; + } + + revision "2017-01-26" { + description + "Add policy forwarding to network instance"; + reference "0.7.0"; + } + + revision "2017-01-13" { + description + "Add AFT to the network instance"; + reference "0.6.0"; + } + + revision "2016-12-15" { + description + "Add segment routing to network instance"; + reference "0.5.0"; + } + + revision "2016-11-10" { + description + "Update model to include IS-IS."; + reference "0.4.1"; + } + + revision "2016-09-28" { + description + "Change L2 instance to submodule; add MAC table"; + reference "0.3.0"; + } + + revision "2016-08-11" { + description + "Resolve repeated container names in routing protocols"; + reference "0.2.3"; + } + + revision "2016-07-08" { + description + "Updated with refactored routing protocol models"; + reference "0.2.1"; + } + + revision "2016-03-29" { + description + "Initial revision"; + reference "0.2.0"; + } + + revision "2016-03-14" { + description + "Initial revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + grouping l3ni-instance { + description + "Configuration and operational state parameters relevant + to network instances that include a Layer 3 type"; + + } + + grouping l3ni-instance-common-config { + description + "Configuration parameters that are common to L3 network + instances other than the default instance"; + + leaf-list enabled-address-families { + type identityref { + base octypes:ADDRESS_FAMILY; + } + description + "The address families that are to be enabled for this + network instance."; + } + } + + grouping l3ni-route-limit-structural { + description + "Configuration and state for the maximum number of routes + that should be used by routing instance."; + + container route-limits { + description + "Configuration and operational state relating to the + maximum number of routes for the address family that + should be allowed within the Layer 3 network instance. + + When the specified value is reached, no further prefixes + should be installed into the system's RIB from this network + instance unless the warning only leaf is set. In this case, + new routes should still be installed. If a alarm threshold + is specified, then this should be used to generate + alarms via telemetry for the network instance."; + + list route-limit { + key "afi"; + + description + "A route limit applying to a particular address family."; + + leaf afi { + type leafref { + path "../config/afi"; + } + description + "Reference to the address family for which the route + limit is being applied."; + } + + container config { + description + "Configuration options relating to the route limit."; + uses l3ni-route-limit-config; + } + + container state { + config false; + description + "Operational state parameters relating to the route limit."; + uses l3ni-route-limit-config; + uses l3ni-route-limit-state; + } + } + } + } + + grouping l3ni-route-limit-config { + description + "Configuration options relating to the route limit for a network + instance."; + + leaf afi { + type identityref { + base octypes:ADDRESS_FAMILY; + } + description + "The address family for which the route limit applies."; + } + + leaf maximum { + type uint32; + description + "The maximum number of routes for the address family. The + system should not install more than maximum number of + prefixes into the RIB unless the warning-only leaf is specified."; + } + + leaf warning-only { + type boolean; + default false; + description + "When specified, the route limit specified is considered only as + a warning - and routes should continue to be installed into the + RIB over the limit specified in the maximum leaf."; + } + + leaf alarm-threshold { + type uint32; + description + "When specified, an alarm should be generated when the threshold + number of installed routes is reached."; + } + } + + grouping l3ni-route-limit-state { + description + "Operational state relating to the route limit for a network + instance."; + + leaf threshold-exceeded { + type boolean; + description + "This leaf should be set to true in the case that the threshold + number of routes has been exceeded."; + } + + leaf installed-routes { + type uint32; + description + "The current number of routes installed for the address family."; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-network-instance-policy.yang b/vendor/cisco/nx/9.3-14/openconfig-network-instance-policy.yang new file mode 100644 index 000000000..a2897dcbd --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-network-instance-policy.yang @@ -0,0 +1,126 @@ +module openconfig-network-instance-policy { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/network-instance/policy"; + + prefix "oc-ni-pol"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + import openconfig-routing-policy { prefix oc-rpol; } + import openconfig-policy-types { prefix oc-pol-types; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines routing policy statements (conditions and + actions) for the network instance model. These statements are + generally added to the routing policy model."; + + oc-ext:openconfig-version "0.1.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.1.1"; + } + + revision "2017-02-15" { + description + "Initial revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // grouping statements + + grouping protocol-instance-policy-config { + description + "Configuration data for policy matching on protocol instance"; + + leaf protocol-identifier { + type identityref { + base oc-pol-types:INSTALL_PROTOCOL_TYPE; + } + description + "The identifier (protocol type) of the + protocol instance to match on in the local network + instance."; + } + + leaf protocol-name { + type string; + description + "The name of the protocol instance to match + on in the local network instance"; + } + } + + grouping protocol-instance-policy-state { + description + "Operational state data for policy matching on protocol + instance"; + } + + grouping protocol-instance-policy-top { + description + "Top-level grouping for policy matching on protocol instance"; + + container match-protocol-instance { + description + "Top-level container for protocol instance match condition + in policy statements. The protocol instance is referenced + by an identifier and name"; + + container config { + description + "Configuration data for policy matching on protocol + instance"; + + uses protocol-instance-policy-config; + } + + container state { + + config false; + + description + "Operational state data for policy matching on protocol instance"; + + uses protocol-instance-policy-config; + uses protocol-instance-policy-state; + } + } + } + + // data definition statements + + // augment statements + + augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + + "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" + + "oc-rpol:conditions" { + description + "Add match conditions for protocol instances to the routing + policy model."; + + uses protocol-instance-policy-top; + } + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-network-instance-types.yang b/vendor/cisco/nx/9.3-14/openconfig-network-instance-types.yang new file mode 100644 index 000000000..8ab176fa0 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-network-instance-types.yang @@ -0,0 +1,272 @@ +module openconfig-network-instance-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/network-instance-types"; + + prefix "oc-ni-types"; + + import openconfig-extensions { prefix "oc-ext"; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "Types associated with a network instance"; + + oc-ext:openconfig-version "0.8.2"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.8.2"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes"; + reference "0.8.1"; + } + + revision "2017-02-28" { + description + "Add OSPFv2 to network instance"; + reference "0.8.0"; + } + + revision "2017-01-26" { + description + "Add policy forwarding to network instance"; + reference "0.7.0"; + } + + revision "2017-01-13" { + description + "Add AFT to the network instance"; + reference "0.6.0"; + } + + revision "2016-12-15" { + description + "Add segment routing to network instance"; + reference "0.5.0"; + } + + revision "2016-11-10" { + description + "Update model to include IS-IS."; + reference "0.4.1"; + } + + revision "2016-10-12" { + description + "Update table connections"; + reference "0.4.0"; + } + + revision "2016-09-28" { + description + "Change L2 instance to submodule; add MAC table"; + reference "0.3.0"; + } + + revision "2016-08-11" { + description + "Resolve repeated container names in routing protocols"; + reference "0.2.3"; + } + + revision "2016-07-08" { + description + "Updated with refactored routing protocol models"; + reference "0.2.1"; + } + + revision "2016-03-29" { + description + "Initial revision"; + reference "0.2.0"; + } + + revision "2015-10-18" { + description + "Initial revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + identity NETWORK_INSTANCE_TYPE { + description + "A base identity which can be extended to indicate different + types of network instance supported by a device."; + } + + identity DEFAULT_INSTANCE { + base NETWORK_INSTANCE_TYPE; + description + "A special routing instance which acts as the 'default' or + 'global' routing instance for a network device."; + } + + identity L3VRF { + base NETWORK_INSTANCE_TYPE; + description + "A private Layer 3 only routing instance which is formed of + one or more RIBs"; + } + + identity L2VSI { + base NETWORK_INSTANCE_TYPE; + description + "A private Layer 2 only switch instance which is formed of + one or more L2 forwarding tables"; + } + + identity L2P2P { + base NETWORK_INSTANCE_TYPE; + description + "A private Layer 2 only forwarding instance which acts as + a point to point connection between two endpoints"; + } + + identity L2L3 { + base NETWORK_INSTANCE_TYPE; + description + "A private Layer 2 and Layer 2 forwarding instance"; + } + + identity ENDPOINT_TYPE { + description + "Specification of the type of endpoint that is being associated + with a network instance"; + } + + identity LOCAL { + base ENDPOINT_TYPE; + description + "A local interface which is being associated with the endpoint"; + } + + identity REMOTE { + base ENDPOINT_TYPE; + description + "A remote interface which is being associated with the + endpoint"; + } + + identity LABEL_ALLOCATION_MODE { + description + "Base identity to be used to express types of label allocation + strategies to be used within a network instance"; + } + + identity PER_PREFIX { + base LABEL_ALLOCATION_MODE; + description + "A label is to be allocated per prefix entry in the RIB for the + network instance"; + } + + identity PER_NEXTHOP { + base LABEL_ALLOCATION_MODE; + description + "A label is to be allocated per nexthop entry in the RIB for + the network instance"; + } + + identity INSTANCE_LABEL { + base LABEL_ALLOCATION_MODE; + description + "A single label is to be used for the instance"; + } + + identity ENCAPSULATION { + description + "On the wire encapsulations that can be used when + differentiating network instances"; + } + + identity MPLS { + base ENCAPSULATION; + description + "Use MPLS labels to distinguish network instances on the wire"; + } + + identity VXLAN { + base ENCAPSULATION; + description + "Use VXLAN (RFC7348) VNIs to distinguish network instances on + the wire"; + } + + identity SIGNALLING_PROTOCOL { + description + "The signalling protocol that should be used to diseminate + entries within a forwarding instance"; + } + + identity LDP { + base SIGNALLING_PROTOCOL; + description + "Use LDP-based setup for signalling. Where the instance is + a point-to-point service this refers to RFC4447 ('Martini') + setup. Where the service is an L2VSI, or L2L3 instance it + refers to RFC4762 LDP-signalled VPLS instances"; + } + + identity BGP_VPLS { + base SIGNALLING_PROTOCOL; + description + "Use BGP-based signalling and autodiscovery for VPLS instances + as per RFC4761"; + } + + identity BGP_EVPN { + base SIGNALLING_PROTOCOL; + description + "Use BGP-based Ethernet VPN (RFC7432) based signalling for + the network instance"; + } + + // rjs note: + // this should move to openconfig-types when merged + typedef route-distinguisher { + type union { + // type 0: <2-byte administrator>:<4-byte assigned number> + type string { + pattern '^(65[0-5][0-3][0-5]|[1-5][1-5][0-9][0-9][0-9]|' + + '[1-9]?[1-9]?[0-9][0-9]|[1-9]):' + + '(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-5]|' + + '[0-3][0-9]{9}|[1-9][0-9]{1,8}|[1-9])$'; + } + // type 1: :<2-byte assigned number> + 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]):' + + '(65[0-5][0-3][0-5]|[1-5][1-5][0-9][0-9][0-9]|' + + '[1-9]?[1-9]?[0-9][0-9]|[1-9])$'; + } + // type 2: <4-byte as-number>:<2-byte assigned number> + type string { + pattern + '^(4[0-2][0-9][0-4][0-9][0-6][0-7][0-2][0-9][0-5]|' + + '[0-3][0-9]{9}|[1-9][0-9]{1,8}|[1-9]):' + + '(65[0-5][0-3][0-5]|[1-5]{2}[0-9]{3}|' + + '[1-9]{0,2}[0-9][0-9]|[1-9])$'; + } + } + description "A route distinguisher value"; + reference "RFC4364"; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-network-instance.yang b/vendor/cisco/nx/9.3-14/openconfig-network-instance.yang new file mode 100644 index 000000000..f59e235c1 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-network-instance.yang @@ -0,0 +1,1104 @@ +module openconfig-network-instance { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/network-instance"; + + prefix "oc-netinst"; + + // import some basic types + //import ietf-inet-types { prefix inet; } + import ietf-yang-types { prefix "yang"; } + import ietf-inet-types { prefix "inet"; } + import openconfig-network-instance-types { prefix "oc-ni-types"; } + import openconfig-policy-types { prefix "oc-pol-types"; } + import openconfig-routing-policy { prefix "oc-rpol"; } + import openconfig-local-routing { prefix "oc-loc-rt"; } + import openconfig-interfaces { prefix "oc-if"; } + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-network-instance-l3 { prefix "oc-ni-l3"; } + import openconfig-types { prefix "oc-types"; } + import openconfig-bgp { prefix "oc-bgp"; } + import openconfig-mpls { prefix "oc-mpls"; } + import openconfig-vlan { prefix "oc-vlan"; } + import openconfig-ospfv2 { prefix "oc-ospfv2"; } + import openconfig-policy-forwarding { prefix "oc-pf"; } + import openconfig-segment-routing { prefix "oc-sr"; } + import openconfig-isis { prefix "oc-isis"; } + import openconfig-aft { prefix "oc-aft"; } + import openconfig-pim { prefix "oc-pim"; } + import openconfig-igmp { prefix "oc-igmp"; } + + // include submodules + include openconfig-network-instance-l2; + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "An OpenConfig description of a network-instance. This may be + a Layer 3 forwarding construct such as a virtual routing and + forwarding (VRF) instance, or a Layer 2 instance such as a + virtual switch instance (VSI). Mixed Layer 2 and Layer 3 + instances are also supported."; + + oc-ext:openconfig-version "0.11.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.11.1"; + } + + revision "2018-08-11" { + description + "Add vlan id as additional key in MAC table"; + reference "0.11.0"; + } + + revision "2018-06-22" { + description + "Fix typo in OSPF when statement"; + reference "0.10.2"; + } + + revision "2018-06-05" { + description + "Fix bugs in when statements"; + reference "0.10.1"; + } + + revision "2018-02-19" { + description + "Add PIM and IGMP to network instance"; + reference "0.10.0"; + } + + revision "2017-12-13" { + description + "Fix incorrect constraint on SR and MPLS containers"; + reference "0.9.0"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes"; + reference "0.8.1"; + } + + revision "2017-02-28" { + description + "Add OSPFv2 to network instance"; + reference "0.8.0"; + } + + revision "2017-01-26" { + description + "Add policy forwarding to network instance"; + reference "0.7.0"; + } + + revision "2017-01-13" { + description + "Add AFT to the network instance"; + reference "0.6.0"; + } + + revision "2016-12-15" { + description + "Add segment routing to network instance"; + reference "0.5.0"; + } + + revision "2016-11-10" { + description + "Add IS-IS to OpenConfig network instance"; + reference "0.4.1"; + } + + revision "2016-10-12" { + description + "Update table connections"; + reference "0.4.0"; + } + + revision "2016-09-28" { + description + "Change L2 instance to submodule; add MAC table"; + reference "0.3.0"; + } + + revision "2016-08-11" { + description + "Resolve repeated container names in routing protocols"; + reference "0.2.3"; + } + + revision "2016-07-08" { + description + "Updated with refactored routing protocol models"; + reference "0.2.1"; + } + + revision "2016-03-29" { + description + "Initial revision"; + reference "0.2.0"; + } + + revision "2015-10-18" { + description + "Initial revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + typedef network-instance-ref { + type leafref { + path "/network-instances/network-instance/config/name"; + } + description + "A re-usable type that can be referenced within other + modules that references a network instance."; + } + + grouping network-instance-top { + description + "Top-level grouping containing a list of network instances."; + + container network-instances { + description + "The L2, L3, or L2+L3 forwarding instances that are + configured on the local system"; + + list network-instance { + key "name"; + + description + "Network instances configured on the local system"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "A unique name identifying the network instance"; + } + + uses l2ni-instance { + when "config/type = 'L2VSI' or config/type = 'L2P2P'" + + " or config/type = 'L2L3' or config/type = 'DEFAULT_INSTANCE'" { + description + "Layer 2 configuration parameters included when + a network instance is a Layer 2 instance or a + combined L2L3 instance"; + } + } + + container config { + description + "Configuration parameters relating to a network + instance"; + uses network-instance-config; + uses network-instance-type-dependent-config; + } + + + container state { + config false; + description + "Operational state parameters relating to a network + instance"; + uses network-instance-config; + uses network-instance-type-dependent-config; + uses network-instance-state; + } + + container encapsulation { + when "../config/type != 'DEFAULT_INSTANCE'" { + description + "Only allow the encapsulation of the instance to be + set when the instance is not the default instance"; + } + description + "Configuration parameters relating to the encapsulation + used for the network instance"; + + container config { + description + "Configuration parameters relating to the encapsulation + of the network instance"; + + uses encapsulation-config; + + uses l2ni-encapsulation-config { + when "../../config/type = 'L2VSI' or ../../config/type = 'L2P2P' + or ../../config/type = 'L2L3'" { + description + "Only allow L2 encapsulations to be set + when the instance is of a type that supports + L2"; + } + } + } + + container state { + config false; + description + "State parameters relating to the encapsulation of + the network instance"; + uses encapsulation-config; + + uses l2ni-encapsulation-config { + when "../../config/type = 'L2VSI' or ../../config/type = 'L2P2P' + or ../../config/type = 'L2L3'" { + description + "Only allow L2 encapsulations to be set + when the instance is of a type that supports + L2"; + } + } + } + } + + container inter-instance-policies { + description + "Policies dictating how RIB or FIB entries are imported + to and exported from this instance"; + + uses oc-rpol:apply-policy-group; + } + + container table-connections { + description + "Policies dictating how RIB or FIB entries are propagated + between tables"; + + list table-connection { + key "src-protocol dst-protocol address-family"; + + description + "A list of connections between pairs of routing or + forwarding tables, the leaking of entries between + which is specified by the import policy. + + A connection connecting a source table to a destination + table implies that routes that match the policy specified + for the connection are available for the destination + protocol to advertise, or match within its policies."; + + leaf src-protocol { + type leafref { + path "../config/src-protocol"; + } + description + "The name of the protocol associated with the table + which should be utilised as the source of forwarding + or routing information"; + } + + leaf dst-protocol { + type leafref { + path "../config/dst-protocol"; + } + description + "The table to which routing entries should be + exported"; + } + + leaf address-family { + type leafref { + path "../config/address-family"; + } + description + "The address family associated with the connection"; + } + + container config { + description + "Configuration parameters relating to the connection + between tables"; + uses inter-table-policies-config; + } + container state { + config false; + description + "State parameters relating to the connection between + tables"; + uses inter-table-policies-config; + } + } + } + + container interfaces { + description + "The interfaces that are associated with this network + instance"; + + list interface { + key "id"; + unique "config/interface config/subinterface"; + + description + "An interface associated with the network instance"; + + leaf id { + type leafref { + path "../config/id"; + } + description + "A reference to an identifier for this interface which + acts as a key for this list"; + } + + container config { + description + "Configuration parameters relating to the associated + interface"; + uses instance-interfaces-config; + } + + container state { + config false; + description + "Operational state parameters relating to the + associated interface"; + + uses instance-interfaces-config; + uses instance-interfaces-state; + } + } + } + + uses oc-ni-l3:l3ni-route-limit-structural { + when "type = 'L3VRF' or type = 'L2L3'" { + description + "Layer 3 VRF or L2/L3 instances can have route limits + applied. This is not supported for the default instance."; + } + } + + container tables { + description + "The routing tables that are managed by this network + instance"; + + list table { + key "protocol address-family"; + + description + "A network instance manages one or more forwarding or + routing tables. These may reflect a Layer 2 forwarding + information base, a Layer 3 routing table, or an MPLS + LFIB. + + The table populated by a protocol within an instance is + identified by the protocol identifier (e.g., BGP, IS-IS) + and the address family (e.g., IPv4, IPv6) supported by + that protocol. Multiple instances of the same protocol + populate a single table -- such that + a single IS-IS or OSPF IPv4 table exists per network + instance. + + An implementation is expected to create entries within + this list when the relevant protocol context is enabled. + i.e., when a BGP instance is created with IPv4 and IPv6 + address families enabled, the protocol=BGP, + address-family=IPv4 table is created by the system."; + + leaf protocol { + type leafref { + path "../config/protocol"; + } + description + "A reference to the protocol that populates + the table"; + } + + leaf address-family { + type leafref { + path "../config/address-family"; + } + description + "A reference to the address-family that the + table represents"; + } + + container config { + description + "Configuration parameters relating to the + table"; + uses table-config; + } + + container state { + config false; + description + "State parameters related to the table"; + uses table-config; + } + } + } + + container connection-points { + description + "The set of connection points within a forwarding + instance"; + + list connection-point { + key "connection-point-id"; + + description + "A connection point within a Layer 2 network instance. + Each connection-point consists of a set of interfaces + only one of which is active at any one time. Other than + the specification of whether an interface is local + (i.e., exists within this network-instance), or remote, + all configuration and state parameters are common"; + + leaf connection-point-id { + type leafref { + path "../config/connection-point-id"; + } + description + "A locally significant reference for the + connection-point"; + } + + container config { + description + "Configuration parameters relating to a Layer 2 + network instance connection point"; + uses instance-connection-point-config; + } + container state { + config false; + description + "Operational state parameters relating to a Layer 2 + network instance connection point"; + + uses instance-connection-point-config; + uses instance-connection-point-state; + } + + container endpoints { + when "../../../config/type = 'L2P2P' " + + "or ../../../config/type = 'L2VSI'" { + description + "Configuration parameters to associate interfaces + into a common group for use in Layer 2 network + instances"; + } + + description + "The set of endpoints which are grouped within the + connection point"; + + list endpoint { + key "endpoint-id"; + + description + "A list of the endpoints (interfaces or remote + connection points that can be used for this + connection point). The active endpoint is selected + based on the precedence that it is configured + with"; + + leaf endpoint-id { + type leafref { + path "../config/endpoint-id"; + } + description + "A pointer to the configured identifier for the + endpoint"; + } + + container config { + description + "Configuration parameters relating to the + endpoint"; + uses instance-endpoint-config; + } + container state { + config false; + description + "Operational state parameters relating to the + endpoint"; + uses instance-endpoint-config; + uses instance-endpoint-state; + } + + container local { + when "../config/type = 'LOCAL'" { + description + "Only include the local configuration when + the endpoint is specified to be local to + the network element"; + } + + description + "Configuration and operational state parameters + relating to a local interface"; + + container config { + description + "Configuration parameters relating to a local + endpoint"; + uses instance-endpoint-local-config; + } + + container state { + config false; + description + "Operational state parameters relating to a + local endpoint"; + uses instance-endpoint-local-config; + } + } + + container remote { + when "../config/type = 'REMOTE'" { + description + "Only include the remote configuration when + the endpoint is specified to be remote to + the network element"; + } + + description + "Configuration and operational state parameters + relating to a remote interface"; + + container config { + description + "Configuration parameters relating to a remote + endpoint"; + uses instance-endpoint-remote-config; + } + + container state { + config false; + description + "Operational state parameters relating to + a remote endpoint"; + uses instance-endpoint-remote-config; + } + } + } + } + } + } + + uses oc-mpls:mpls-top { + when "config/type = 'DEFAULT_INSTANCE'" { + description + "MPLS configuration is only valid within the default + network instance."; + } + } + + uses oc-sr:sr-top { + when "config/type = 'DEFAULT_INSTANCE'" { + description + "Segment routing configuration is only valid with the default + network instance."; + } + } + + uses oc-vlan:vlan-top; + + uses oc-pf:policy-forwarding-top; + + uses oc-aft:aft-top; + + container protocols { + description + "The routing protocols that are enabled for this + network-instance."; + + list protocol { + key "identifier name"; + + description + "A process (instance) of a routing protocol. Some + systems may not support more than one instance of + a particular routing protocol"; + + leaf identifier { + type leafref { + path "../config/identifier"; + } + description + "The protocol name for the routing or forwarding + protocol to be instantiated"; + } + + leaf name { + type leafref { + path "../config/name"; + } + description + "An operator-assigned identifier for the routing + or forwarding protocol. For some processes this + leaf may be system defined."; + } + + container config { + description + "Configuration parameters relating to the routing + protocol instance"; + + uses protocols-config; + } + + container state { + config false; + description + "State parameters relating to the routing protocol + instance"; + + uses protocols-config; + uses protocols-state; + } + + uses oc-loc-rt:local-static-top { + when "config/identifier = 'STATIC'" { + description + "Include static route parameters only when the + protocol is set to static"; + } + description + "Configuration and state parameters relating to + static routes"; + } + + uses oc-loc-rt:local-aggregate-top { + when "config/identifier = 'LOCAL_AGGREGATE'" { + description + "Include aggregate route parameters only when the + protocol is set to aggregate"; + } + description + "Configuration and state parameters relating to + locally generated aggregate routes"; + } + + uses oc-bgp:bgp-top { + when "config/identifier = 'BGP'" { + description + "Include BGP parameters only when the protocol + is of type BGP"; + } + description + "Configuration and state parameters relating to + Border Gateway Protocol (BGP)"; + } + + uses oc-ospfv2:ospfv2-top { + when "config/identifier = 'OSPF'" { + description + "Include OSPFv2 parameters only when the protocol + is of type OSPFv2"; + } + } + + uses oc-isis:isis-top { + when "config/identifier = 'ISIS'" { + description + "Include IS-IS configuration when the protocol is of type + IS-IS"; + } + description + "Configuration and state parameters relating to Intermediate + System to Intermediate System (IS-IS)."; + } + + uses oc-pim:pim-top { + when "config/identifier = 'PIM'" { + description + "Include PIM configuration when the protocol is of type + PIM"; + } + description + "Configuration and state parameters relating to Protocol + Indepdendent Multicast (PIM)."; + } + + uses oc-igmp:igmp-top { + when "config/identifier = 'IGMP'" { + description + "Include IGMP configuration when the protocol is of type + IGMP"; + } + description + "Configuration and state parameters relating to the Internet + Group Management Protocol (IGMP)."; + } + } + } + } + } + } + + grouping network-instance-type-dependent-config { + description + "Type dependent network instance configuration"; + + uses oc-ni-l3:l3ni-instance-common-config { + when "type = 'L3VRF' or type = 'L2L3'" { + description + "Layer 3 VRF configuration parameters included when a + network instance is a L3VRF or combined L2L3 instance"; + } + } + + uses l2ni-instance-common-config { + when "type = 'L2VSI' or type = 'L2P2P'" + + " or type = 'L2L3'" { + description + "Layer 2 configuration parameters included when + a network instance is a Layer 2 instance or a + combined L2L3 instance"; + } + } + } + + grouping instance-endpoint-config { + description + "Configuration data relating to an forwarding-instance + endpoint"; + + leaf endpoint-id { + type string; + description + "An identifier for the endpoint"; + } + + leaf precedence { + type uint16; + description + "The precedence of the endpoint - the lowest precendence + viable endpoint will be utilised as the active endpoint + within a connection"; + } + + leaf type { + type identityref { + base "oc-ni-types:ENDPOINT_TYPE"; + } + description + "The type of endpoint that is referred to by the current + endpoint"; + } + + } + + grouping instance-endpoint-local-config { + description + "Configuration parameters relating to an endpoint that is local + to the current system"; + + uses oc-if:interface-ref-common; + } + + grouping instance-endpoint-remote-config { + description + "Configuration parameters relating to an endpoint that is + remote from the local system"; + leaf remote-system { + type inet:ip-address; + description + "The IP address of the device which hosts the + remote end-point"; + } + + leaf virtual-circuit-identifier { + type uint32; + description + "The virtual-circuit identifier that identifies the + connection at the remote end-point"; + } + } + + grouping instance-endpoint-state { + description + "Operational state data relating to a forwarding-instance + endpoint"; + leaf active { + type boolean; + description + "When the backup endpoint is active, the value of this + parameter is set to true"; + } + } + + grouping instance-connection-point-config { + description + "Configuration data relating to a forwarding-instance + connection point"; + + leaf connection-point-id { + type string; + description + "An identifier for a connection point"; + } + } + + grouping instance-connection-point-state { + description + "Operational state data relating to a forwarding-instance + connection point"; + } + + grouping table-config { + description + "Config parameters relating to an L2/L2.5/L3 table that exists + within a network instance"; + + leaf protocol { + type leafref { + path "../../../../protocols/protocol/config/identifier"; + } + description + "Reference to the protocol that the table is associated with."; + } + + leaf address-family { + type identityref { + base oc-types:ADDRESS_FAMILY; + } + description + "The address family (IPv4, IPv6) of the table's entries"; + } + } + + grouping instance-interfaces-config { + description + "Configuration parameters related to an interface associated + with the network instance"; + + leaf id { + type string; + description + "A unique identifier for this interface - this is expressed + as a free-text string"; + } + + uses oc-if:interface-ref-common; + + leaf-list associated-address-families { + type identityref { + base oc-types:ADDRESS_FAMILY; + } + description + "The address families on the subinterface which are to be + associated with this network instance. When this leaf-list + is empty and the network instance requires Layer 3 information + the address families for which the network instance is + enabled should be imported. If the value of this leaf-list + is specified then the association MUST only be made for + those address families that are included in the list."; + } + } + + grouping instance-interfaces-state { + description + "Operational state parameters relating to an interface + associated with this network instance"; + } + + grouping inter-table-policies-config { + description + "Configuration entries that relate to how RIB or FIB entries + are propagated between tables within the same network + instance"; + + leaf src-protocol { + type leafref { + // we are at table-connections/table-connection/config/. + path "../../../../tables/table/config/protocol"; + } + description + "The source protocol for the table connection"; + } + + leaf address-family { + type leafref { + // we are at table-connections/table-connection/config/. + path "../../../../tables/" + + "table[protocol=current()/../src-protocol]/" + + "config/address-family"; + } + description + "The address family associated with the connection. This + must be defined for the source protocol. The target + address family is implicitly defined by the address family + specified for the source protocol."; + } + + leaf dst-protocol { + type leafref { + path "../../../../tables/table/config/protocol"; + } + description + "The destination protocol for the table connection"; + } + + uses oc-rpol:apply-policy-import-config; + } + + grouping network-instance-config { + description + "Configuration parameters relating to a top-level network + instance"; + + leaf name { + type string; + description + "An operator-assigned unique name for the forwarding + instance"; + } + + leaf type { + type identityref { + base "oc-ni-types:NETWORK_INSTANCE_TYPE"; + } + description + "The type of network instance. The value of this leaf + indicates the type of forwarding entries that should be + supported by this network instance"; + } + + leaf enabled { + type boolean; + description + "Whether the network instance should be configured to be + active on the network element"; + } + + leaf description { + type string; + description + "A free-form string to be used by the network operator to + describe the function of this network instance"; + } + + leaf router-id { + type yang:dotted-quad; + description + "A identifier for the local network instance - typically + used within associated routing protocols or signalling + routing information in another network instance"; + } + + leaf route-distinguisher { + type oc-ni-types:route-distinguisher; + description + "The route distinguisher that should be used for the local + VRF or VSI instance when it is signalled via BGP."; + } + } + + grouping network-instance-state { + description + "Operational state parameters relating to a network instance"; + } + + grouping protocols-config { + description + "Configuration parameters relating to a generic protocol + instance within a network instance"; + + leaf identifier { + type identityref { + base "oc-pol-types:INSTALL_PROTOCOL_TYPE"; + } + description + "The protocol identifier for the instance"; + } + + leaf name { + type string; + description + "A unique name for the protocol instance"; + } + + leaf enabled { + type boolean; + description + "A boolean value indicating whether the local protocol + instance is enabled."; + } + + leaf default-metric { + type uint32; + description + "The default metric within the RIB for entries that are + installed by this protocol instance. This value may + be overridden by protocol specific configuration options. + The lower the metric specified the more preferable the RIB + entry is to be selected for use within the network instance. + Where multiple entries have the same metric value then these + equal cost paths should be treated according to the specified + ECMP path selection behaviour for the instance"; + } + } + + grouping protocols-state { + description + "Operational state parameters relating to a protocol instance"; + } + + grouping instance-interface-association-config { + description + "Grouping containing leaves that are to be augmented into an + interface or subinterface to include mapping to a network + instance"; + + leaf network-instance { + type leafref { + path "/network-instances/network-instance/name"; + } + description + "The network instance that this interface is associated + with"; + } + } + + grouping encapsulation-config { + description + "Type agnostic configuration parameters relating to the + encapsulation of the network instance"; + + leaf encapsulation-type { + type identityref { + base oc-ni-types:ENCAPSULATION; + } + description + "The on-the-wire encapsulation that should be used when + sending traffic from this network instance"; + } + + // rjs: This is left here as I suspect that this can + // be used in EVPN. Need to validate implementations, otherwise + // move to L3. (TODO) + leaf label-allocation-mode { + type identityref { + base oc-ni-types:LABEL_ALLOCATION_MODE; + } + description + "The label allocation mode to be used for L3 entries + in the network instance"; + } + } + + uses network-instance-top; +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-ospf-policy.yang b/vendor/cisco/nx/9.3-14/openconfig-ospf-policy.yang new file mode 100644 index 000000000..51eb33d6f --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-ospf-policy.yang @@ -0,0 +1,182 @@ +module openconfig-ospf-policy { + yang-version "1"; + + namespace "http://openconfig.net/yang/ospf-policy"; + + prefix "oc-ospf-pol"; + + import openconfig-routing-policy { prefix "oc-rpol"; } + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-ospf-types { prefix "oc-ospf-types"; } + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines extensions to the OpenConfig policy + model to add extensions for OSPF. This module is intended + to be generic for both OSPFv2 and OSPFv3."; + + oc-ext:openconfig-version "0.1.1"; + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "0.1.1"; + } + + revision "2016-08-22" { + description + "Initial revision"; + reference "0.0.1"; + } + + grouping ospf-match-config { + description + "Configuration parameters for OSPF match conditions"; + + leaf area-eq { + type oc-ospf-types:ospf-area-identifier; + description + "Match prefixes which are within a particular OSPF area"; + } + } + + grouping ospf-match-conditions { + description + "Match conditions that are added by OSPF"; + + container ospf-conditions { + description + "Match conditions specific to OSPF"; + + container config { + description + "Configuration parameters relating to OSPF match conditions"; + + uses ospf-match-config; + } + + container state { + config false; + description + "Operational state parameters relating to OSPF match conditions"; + + uses ospf-match-config; + } + } + } + + grouping ospf-actions-config { + description + "Configuration parameters for OSPF policy actions"; + + leaf set-area { + type oc-ospf-types:ospf-area-identifier; + description + "Set the area for the matched route. This action is typically + used when importing prefixes into OSPF, such that a route can + be imported into a specific area within the instance."; + } + } + + grouping ospf-actions-set-metric-config { + description + "Configuration parameters relating to setting the OSPF metric"; + + leaf metric-type { + type enumeration { + enum EXTERNAL_TYPE_1 { + description + "Set the external type 1 metric"; + } + enum EXTERNAL_TYPE_2 { + description + "Set the external type 2 metric"; + } + } + default "EXTERNAL_TYPE_2"; + description + "Specify the type of metric which is to be set by the policy"; + } + + leaf metric { + type oc-ospf-types:ospf-metric; + description + "Set the metric of the routes matching the policy to the value + specified by this leaf."; + } + } + + grouping ospf-actions { + description + "Actions that are added by OSPF to the action framework"; + + container ospf-actions { + description + "Actions specific to OSPF"; + + container config { + description + "Configuration parameters for OSPF actions"; + + uses ospf-actions-config; + } + + container state { + config false; + description + "Operational state parameters for OSPF actions"; + + uses ospf-actions-config; + } + + container set-metric { + description + "Configuration and state parameters relating to manipulating + the OSPF metric"; + + container config { + description + "Configuration parameters relating to setting the OSPF metric"; + uses ospf-actions-set-metric-config; + } + + container state { + config false; + description + "Operational state parameters relating to setting the OSPF + metric"; + + uses ospf-actions-set-metric-config; + } + } + } + } + + // augment the groupings into the routing policy model + + // TODO: discuss whether igp-actions should be used or whether this should + // be removed. + + augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + + "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" + + "oc-rpol:conditions" { + description + "Add OSPF specific match conditions to the routing policy model"; + uses ospf-match-conditions; + } + + augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + + "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" + + "oc-rpol:actions" { + description + "Add OSPF specific actions to the routing policy model"; + uses ospf-actions; + } + +} \ No newline at end of file diff --git a/vendor/cisco/nx/9.3-14/openconfig-ospf-types.yang b/vendor/cisco/nx/9.3-14/openconfig-ospf-types.yang new file mode 100644 index 000000000..caf6eaeca --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-ospf-types.yang @@ -0,0 +1,778 @@ +module openconfig-ospf-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/ospf-types"; + + prefix "oc-ospf-types"; + + // import some basic types + import ietf-yang-types { prefix "yang"; } + import openconfig-extensions { prefix "oc-ext"; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "Type definitions for OSPF"; + + oc-ext:openconfig-version "0.1.1"; + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "0.1.1"; + } + + revision "2017-02-28"{ + description + "Initial public release of OSPFv2"; + reference "0.1.0"; + } + + revision "2016-06-24" { + description + "Initial revision"; + reference "0.0.1"; + } + + // typedefs + typedef ospf-area-identifier { + type union { + type uint32; + type yang:dotted-quad; + } + description + "An identifier for an area with OSPF version 2 or 3. This value + is expressed as either a dotted-quad, or a unsigned 32-bit + number"; + } + + typedef ospf-metric { + type uint16; + description + "A common type that can be utilised to express an OSPF metric"; + } + + typedef sr-sid-type { + type enumeration { + enum LABEL { + description + "When the length of the SR/Label Sub-TLV is specified to be 3, then + the right-most 20-bits represent a label value within the SR/Label + Sub-TLV. When this leaf is set to a value of Label the first-entry + leaf should be interpreted to be an MPLS label."; + } + enum SID { + description + "When the length of the SR/Label Sub-TLV is specified to be 4, then + the value specified in the first-entry leaf should be specified to + be a segment identifier."; + } + } + description + "A common type used to express the type of segment identifier that is + used in LSDB entries relating to segment routing"; + } + + // identities + identity OSPF_LSA_TYPE { + description + "Base identity for an OSPF LSA type. This identity is intended + to be used across both OSPFv2 and OSPFv3. Identity values that + correspond to only one OSPF version are marked as such."; + } + + identity ROUTER_LSA { + base "OSPF_LSA_TYPE"; + description + "Type 1 - ROUTER_LSA. An LSA originated by each router within + the area describing the state and cost of the router's links + in the area."; + reference "RFC2328"; + } + + identity NETWORK_LSA { + base "OSPF_LSA_TYPE"; + description + "Type 2 - NETWORK_LSA. An LSA originated for each broadcast and + non-broadcast multiple access (NBMA) in the area. This LSA is + originated by the designated router."; + reference "RFC2328"; + } + + identity SUMMARY_IP_NETWORK_LSA { + base "OSPF_LSA_TYPE"; + description + "Type 3 - SUMMARY_IP_NETWORK_LSA. An LSA originated by area + border routers describing inter-area destinations. This LSA type + is used when the destination is an IP network"; + reference "RFC2328"; + } + + identity SUMMARY_ASBR_LSA { + base "OSPF_LSA_TYPE"; + description + "Type 4 - SUMMARY_ASBR_LSA. An LSA originated by an area border + router describing inter-area destinations. This LSA type is used + when the destination is an AS boundary router."; + reference "RFC2328"; + } + + identity AS_EXTERNAL_LSA { + base "OSPF_LSA_TYPE"; + description + "Type 5 - AS_EXTERNAL_LSA. This LSA type is used to describe + destinations external to the autonomous system, and is + originated by an AS boundary router (ASBR)."; + reference "RFC2328"; + } + + identity NSSA_AS_EXTERNAL_LSA { + base "OSPF_LSA_TYPE"; + description + "Type 7 - NSSA_AS_EXTERNAL_LSA. This LSA type is used by + systems within a not-so-stubby-area (NSSA) to inject external + prefixes into the LSDB. They are translated to Type 5 LSAs + at an ABR device."; + reference "RFC3101"; + } + + identity OSPFV2_LINK_SCOPE_OPAQUE_LSA { + base "OSPF_LSA_TYPE"; + description + "Type 9 - OSPFV2_LINK_SCOPE_OPAQUE_LSA. This LSA type is used + in OSPFv2 to distribute arbitrary information via the OSPF + protocol. The contents is specific to the application defining + the Opaque Type specified within the LSDB. LSAs with Type 9 have + a scope of the link that they are being transmitted on (and the + associated network or subnetwork)."; + reference "RFC5250"; + } + + identity OSPFV2_AREA_SCOPE_OPAQUE_LSA { + base "OSPF_LSA_TYPE"; + description + "Type 10 - OSPFV2_AREA_SCOPE_OPAQUE_LSA. This LSA type is used + in OSPFv2 to distribute arbitrary information via the OSPF + protocol. The contents is specific to the application defining + the Opaque Type specified within the LSDB. LSAs with Type 10 have + a scope of the area that they are transmitted within."; + reference "RFC5250"; + } + + identity OSPFV2_AS_SCOPE_OPAQUE_LSA { + base "OSPF_LSA_TYPE"; + description + "Type 11 - OSPFV2_AS_SCOPE_OPAQUE_LSA. This LSA type is used + in OSPFv2 to distribute arbitrary information via the OSPF + protocol. The contents is specific to the application defining + the Opaque Type specified within the LSDB. LSAs with Type 11 + have a scope of the autonomous system that they are transmitted + within."; + reference "RFC5250"; + } + + identity ROUTER_LSA_TYPES { + description + "Sub-types of the router LSA"; + } + + identity ROUTER_LSA_P2P { + base "ROUTER_LSA_TYPES"; + description + "The LSA represents a point-to-point connection to another + router"; + } + + identity ROUTER_LSA_TRANSIT_NETWORK { + base "ROUTER_LSA_TYPES"; + description + "The LSA represents a connection to a transit network"; + } + + identity ROUTER_LSA_STUB_NETWORK { + base "ROUTER_LSA_TYPES"; + description + "The LSA represents a connection to a stub network"; + } + + identity ROUTER_LSA_VIRTUAL_LINK { + base "ROUTER_LSA_TYPES"; + description + "The LSA represents a virtual link connection"; + } + + identity OSPF_NEIGHBOR_STATE { + description + "The state of an adjacency between the local system and a remote + device"; + } + + identity DOWN { + base "OSPF_NEIGHBOR_STATE"; + description + "The initial state of a neighbor, indicating that no recent + information has been received from the neighbor."; + reference "RFC2328"; + } + + identity ATTEMPT { + base "OSPF_NEIGHBOR_STATE"; + description + "Utilised for neighbors that are attached to NBMA networks, it + indicates that no information has been recently received from + the neighbor but that Hello packets should be directly sent + to that neighbor."; + reference "RFC2328"; + } + + identity INIT { + base "OSPF_NEIGHBOR_STATE"; + description + "Indicates that a Hello packet has been received from the + neighbor but bi-directional communication has not yet been + established. That is to say that the local Router ID does + not appear in the list of neighbors in the remote system's + Hello packet."; + reference "RFC2328"; + } + + identity TWO_WAY { + base "OSPF_NEIGHBOR_STATE"; + description + "Communication between the local and remote system is + bi-directional such that the local system's Router ID is listed + in the received remote system's Hello packet."; + reference "RFC2328"; + } + + identity EXSTART { + base "OSPF_NEIGHBOR_STATE"; + description + "An adjacency with the remote system is being formed. The local + system is currently transmitting empty database description + packets in order to establish the master/slave relationship for + the adjacency."; + reference "RFC2328"; + } + + identity EXCHANGE { + base "OSPF_NEIGHBOR_STATE"; + description + "The local and remote systems are currently exchanging database + description packets in order to determine which elements of + their local LSDBs are out of date."; + reference "RFC2328"; + } + + identity LOADING { + base "OSPF_NEIGHBOR_STATE"; + description + "The local system is sending Link State Request packets to the + remote system in order to receive the more recently LSAs that + were discovered during the Exchange phase of the procedure + establishing the adjacency."; + reference "RFC2328"; + } + + identity FULL { + base "OSPF_NEIGHBOR_STATE"; + description + "The neighboring routers are fully adjacent such that both + LSDBs are synchronized. The adjacency will appear in Router and + Network LSAs"; + reference "RFC2328"; + } + + identity OSPF_NETWORK_TYPE { + description + "Types of network that OSPF should consider attached to an + interface"; + } + + identity POINT_TO_POINT_NETWORK { + base "OSPF_NETWORK_TYPE"; + description + "A interface that connects two routers."; + reference "RFC2328"; + } + + identity BROADCAST_NETWORK { + base "OSPF_NETWORK_TYPE"; + description + "An interface that supports >2 attached routers which has the + ability to address all connected systems via a single + (broadcast) address."; + } + + identity NON_BROADCAST_NETWORK { + base "OSPF_NETWORK_TYPE"; + description + "An interface that supports >2 attached rotuers which does not + have the ability to address all connected systems with a + broadcast address."; + } + + // rjs TODO: Maybe need p2mp here. + + + identity OSPF_OPAQUE_LSA_TYPE { + description + "This identity is the base used for opaque LSA types. The values + that extend this base are those that are described in the IANA + OSPF Opaque Link-State Advertisements (LSA) Option Types registry"; + } + + identity TRAFFIC_ENGINEERING { + base "OSPF_OPAQUE_LSA_TYPE"; + description + "The Traffic Engineering LSA. This type is used only with area-scope + Opaque LSAs - and is used to describe routers, point-to-point links + and connections to multi-access networks for traffic engineering + purposes."; + reference "RFC3630"; + } + + identity GRACE_LSA { + base "OSPF_OPAQUE_LSA_TYPE"; + description + "Grace LSAs are announced by a system undergoing graceful-restart. + A system that is attempting an OSPF graceful restart announces + Grace-LSAs with a specified grace period, indicating the intention + to have completed an restart within the specified period."; + reference "RFC3623"; + } + + identity ROUTER_INFORMATION { + base "OSPF_OPAQUE_LSA_TYPE"; + description + "The Router Information LSA is used by an OSPFv2 system to announce + optional capabilities of the local system, over and above those that + are included within the OSPF hello message field. The flooding scope + of the LSA can be link-, area-, or AS-wide (i.e., the LSA type can + be 9, 10 or 11)."; + reference "RFC7770"; + } + + identity OSPFV2_EXTENDED_PREFIX { + base "OSPF_OPAQUE_LSA_TYPE"; + description + "The Extended Prefix LSA is used in OSPFv2 to carry a set of attributes + that are to be associated with a prefix that is advertised in OSPF. The + attributes are carried as one or more TLV tuples. The flooding scope + of the LSA can be link-, area-, or AS-wide as specified by the + advertising system. The flooding scope of the LSA may exceed the scope + of the corresponding prefix."; + reference "RFC7684"; + } + + identity OSPFV2_EXTENDED_LINK { + base "OSPF_OPAQUE_LSA_TYPE"; + description + "The Extended Link LSA is used in OSPFv2 to carry a set of attributes + that are to be associated with a link that is advertised in OSPF. The + link attributes are carried as one or more TLV tuples. The flooding + scope of the link LSA is area-local - i.e., it is carried in a Type 10 + opaque LSA."; + reference "RFC7684"; + } + + identity OSPF_TE_LSA_TLV_TYPE { + description + "This identity is the base used for the type field of TLVs that are + included within the Traffic Engineering Opaque LSA."; + } + + identity TE_ROUTER_ADDRESS { + base "OSPF_TE_LSA_TLV_TYPE"; + description + "A stable IP address of the advertising router that is always reachable + if the node has connectivity."; + } + + identity TE_LINK { + base "OSPF_TE_LSA_TLV_TYPE"; + description + "A single link within a traffic engineering topology. A set of sub-TLVs + are carried within this attribute to indicate traffic engineering + characteristics of the link."; + } + + identity TE_ROUTER_IPV6_ADDRESS { + base "OSPF_TE_LSA_TLV_TYPE"; + description + "A stable IPv6 address of the advertising router that is always + reachable if the node has connectivity. This TLV is used only with + OSPFv3"; + reference "RFC5329"; + } + + identity TE_LINK_LOCAL { + base "OSPF_TE_LSA_TLV_TYPE"; + description + "Attributes associated with the local link by the system."; + reference "RFC4203"; + } + + identity TE_NODE_ATTRIBUTE { + base "OSPF_TE_LSA_TLV_TYPE"; + description + "Attributes associted with the local system"; + reference "RFC5786"; + } + + identity TE_OPTICAL_NODE_PROPERTY { + base "OSPF_TE_LSA_TLV_TYPE"; + description + "Attributes associated with the local optical node. A set of sub-TLVs + are carried within this TLV which are used within the GMPLS control + plane when using OSPF"; + } + + identity OSPF_TE_LINK_TLV_TYPE { + description + "This identity is the based used for the type field for sub-TLVs of the + Link TLV of the OSPF Traffic Engineering Opaque LSA"; + } + + identity TE_LINK_TYPE { + base "OSPF_TE_LINK_TLV_TYPE"; + description + "The OSPF-TE Link Type sub-TLV appears exactly once per OSPF-TE Link + and describes the type of the link"; + } + + identity TE_LINK_ID { + base "OSPF_TE_LINK_TLV_TYPE"; + description + "The OSPF-TE Link ID sub-TLV appears exactly once per OSPF-TE link and + identifies the remote end of the link."; + } + + identity TE_LINK_LOCAL_IP { + base "OSPF_TE_LINK_TLV_TYPE"; + description + "The OSPF-TE Local IP specifies a list of the interface addresses of the + local system corresponding to the traffic engineering link."; + } + + identity TE_LINK_REMOTE_IP { + base "OSPF_TE_LINK_TLV_TYPE"; + description + "The OSPF-TE Remote IP specifies a list of IP addresses of the remote + neighbors associated with the traffic engineering link."; + } + + identity TE_LINK_METRIC { + base "OSPF_TE_LINK_TLV_TYPE"; + description + "The OSPF-TE Metric specifies the link metric for traffic engineering + purposes"; + } + + identity TE_LINK_MAXIMUM_BANDWIDTH { + base "OSPF_TE_LINK_TLV_TYPE"; + description + "The OSPF-TE Maximum Bandwidth specifies the maximum bandwidth of the + link that it is associated with."; + } + + identity TE_LINK_MAXIMUM_RESERVABLE_BANDWIDTH { + base "OSPF_TE_LINK_TLV_TYPE"; + description + "The OSPF-TE Maximum Reservable Bandwidth specifies the maximum + bandwidth that may be reserved on the link in bytes per second"; + } + + identity TE_LINK_UNRESERVED_BANDWIDTH { + base "OSPF_TE_LINK_TLV_TYPE"; + description + "The OSPF-TE unreserved bandwidth indicates the amount of bandwidth + at each priority level that is currently not reserved"; + } + + identity TE_LINK_ADMIN_GROUP { + base "OSPF_TE_LINK_TLV_TYPE"; + description + "The OSPF-TE administrative group indicates the administrative group + that the is assigned to the interface"; + } + + identity TE_NODE_ATTRIBUTE_TLV_TYPE { + description + "This identity forms the base for sub-TLVs of the Node Attribute TLV + of the Traffic Engineering LSA"; + } + + identity NODE_IPV4_LOCAL_ADDRESS { + base "TE_NODE_ATTRIBUTE_TLV_TYPE"; + description + "The Node Attribute Sub-TLV contains a list of the IPv4 addresses of + the local system"; + } + + identity NODE_IPV6_LOCAL_ADDRESS { + base "TE_NODE_ATTRIBUTE_TLV_TYPE"; + description + "The Node Attribute Sub-TLV contains a list of the IPv6 addresses of + the local system"; + } + + identity GRACE_LSA_TLV_TYPES { + description + "This identity is used as the base for TLVs within the Grace LSA"; + } + + identity GRACE_PERIOD { + base "GRACE_LSA_TLV_TYPES"; + description + "This sub-TLV describes the period for which adjacencies should be + maintained with the restarting system"; + } + + identity GRACE_RESTART_REASON { + base "GRACE_LSA_TLV_TYPES"; + description + "This sub-TLV describes the reason for the OSPF restart of the system + that is restarting"; + } + + identity GRACE_IP_INTERFACE_ADDRESS { + base "GRACE_LSA_TLV_TYPES"; + description + "This sub-TLV specifies the restarting system's IP address on the + interface via which it is advertising the Grace LSA"; + } + + identity RI_LSA_TLV_TYPES { + description + "This identity is used as the base for the TLVs within the Router + Information LSA"; + reference "RFC7770"; + } + + identity RI_INFORMATIONAL_CAPABILITIES { + base "RI_LSA_TLV_TYPES"; + description + "Informational capabilities of the advertising system"; + reference "RFC7770"; + } + + identity RI_FUNCTIONAL_CAPABILITIES { + base "RI_LSA_TLV_TYPES"; + description + "Functional capabilities of the advertising system"; + reference "RFC7770"; + } + + identity RI_NODE_ADMIN_TAG { + base "RI_LSA_TLV_TYPES"; + description + "Operator-defined administrative tags associated with the advertising + system"; + reference "RFC7777"; + } + + identity RI_SR_SID_LABEL_RANGE { + base "RI_LSA_TLV_TYPES"; + description + "SID or Label ranges for use with segment routing when forwarding to + the advertising system"; + reference "draft-ietf-ospf-segment-routing-extensions"; + } + + identity RI_SR_ALGORITHM { + base "RI_LSA_TLV_TYPES"; + description + "The algorithms that are supported for segment routing by the + advertising system"; + reference "draft-ietf-ospf-segment-routing-extensions"; + } + + // will be shared with IS-IS + identity SR_ALGORITHM { + description + "This identity is used as a base for the algorithms that can be + supported for segment routing and are advertised by a system in the RI + LSA"; + } + + identity SPF { + base "SR_ALGORITHM"; + description + "The standard shortest path algorithm based on link metric, + as used by the OSPF protocol"; + } + + identity STRICT_SPF { + base "SR_ALGORITHM"; + description + "The standard shortest path algorithm based on link metric, with the + requirement that all nodes along the path honor the SPF decision. That + is to say that the SPF decision cannot be altered by local policy at + the node"; + } + + identity OSPF_RI_SR_SID_LABEL_TLV_TYPES { + description + "This identity is used as a base for the sub-TLVs of the Segment + Routing SID/Label Range TLV"; + } + + identity SR_SID_LABEL_TLV { + base "OSPF_RI_SR_SID_LABEL_TLV_TYPES"; + description + "A range of SID/Label values used by the local system"; + reference "draft-ietf-ospf-segment-routing-extensions"; + } + + identity OSPFV2_ROUTER_LINK_TYPE { + description + "OSPFv2 Router Link Types as per the IANA registry defined in + RFC2740"; + } + + identity POINT_TO_POINT_LINK { + base "OSPFV2_ROUTER_LINK_TYPE"; + description + "The link is a point-to-point connection to another router"; + } + + identity TRANSIT_NETWORK_LINK { + base "OSPFV2_ROUTER_LINK_TYPE"; + description + "The link is a connection to a transit network"; + } + + identity STUB_NETWORK_LINK { + base "OSPFV2_ROUTER_LINK_TYPE"; + description + "The link is a connection to a stub network"; + } + + identity VIRTUAL_LINK { + base "OSPFV2_ROUTER_LINK_TYPE"; + description + "The link is a virtual connection to another router"; + } + + identity OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE { + description + "Sub-TLVs of the OSPFv2 Extended Prefix LSA as defined by + RFC7684"; + } + + identity EXTENDED_PREFIX_RANGE { + base "OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE"; + description + "The attributes being described relate to a range of prefixes"; + } + + identity PREFIX_SID { + base "OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE"; + description + "The TLV describes a Segment Routing Prefix Segment Identifier + associated with a prefix"; + } + + identity SID_LABEL_BINDING { + base "OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE"; + description + "The TLV describes a binding of a SID to a path to the prefix, + which may have associated path characteristics"; + } + + identity OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE { + description + "Sub-TLV types carried in the SID/Label Binding Sub-TLV of + the Extended Prefix Sub-TLV"; + } + + identity SID_MPLS_LABEL_BINDING { + base "OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE"; + description + "This sub-TLV indicates a binding between an SR SID and an + MPLS label and must be present in the sub-TLV"; + } + + identity ERO_METRIC { + base "OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE"; + description + "This sub-TLV indicates the cost of the ERO path being + advertised in the SID/Label TLV"; + } + + identity ERO_PATH { + base "OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE"; + description + "This sub-TLV indicates the path associated with an ERO + being advertised in the SID/Label TLV"; + } + + identity OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE { + description + "The types of segment included within an ERO Path described + within the SID/Label binding sub-TLV"; + } + + identity IPV4_SEGMENT { + base "OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE"; + description + "The segment is specified as an IPv4 address"; + } + + identity UNNUMBERED_INTERFACE_SEGMENT { + base "OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE"; + description + "The segment is specified as an unnumbered interface of + a remote system"; + } + + identity OSPFV2_EXTENDED_LINK_SUBTLV_TYPE { + description + "Sub-TLVs of the Extended Link TLV for OSPFv2"; + } + + identity ADJACENCY_SID { + base "OSPFV2_EXTENDED_LINK_SUBTLV_TYPE"; + description + "The extended link sub-TLV indicates an Adjacency SID"; + } + + identity MAX_METRIC_TRIGGER { + description + "Triggers which cause the maximum metric to be set for + entities advertised in OSPF"; + } + + identity MAX_METRIC_ON_SYSTEM_BOOT { + base "MAX_METRIC_TRIGGER"; + description + "Set the maximum metric when the system boots."; + } + + identity MAX_METRIC_INCLUDE { + description + "Entities that may optionally be included when advertising + the maximum metric."; + } + + identity MAX_METRIC_INCLUDE_STUB { + base "MAX_METRIC_INCLUDE"; + description + "Include stub networks when advertising the maximum metric."; + } + + identity MAX_METRIC_INCLUDE_TYPE2_EXTERNAL { + base "MAX_METRIC_INCLUDE"; + description + "Include OSPF Type 2 external routes when advertising + the maximum metric."; + } +} \ No newline at end of file diff --git a/vendor/cisco/nx/9.3-14/openconfig-ospfv2-area-interface.yang b/vendor/cisco/nx/9.3-14/openconfig-ospfv2-area-interface.yang new file mode 100644 index 000000000..cd8836c6e --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-ospfv2-area-interface.yang @@ -0,0 +1,466 @@ +submodule openconfig-ospfv2-area-interface { + + belongs-to openconfig-ospfv2 { + prefix "oc-ospfv2"; + } + + import ietf-yang-types { prefix "yang"; } + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-types { prefix "oc-types"; } + import openconfig-interfaces { prefix "oc-if"; } + import openconfig-ospf-types { prefix "oc-ospf-types"; } + + // include common submodule + include openconfig-ospfv2-common; + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This submodule provides OSPFv2 configuration and operational + state parameters that are specific to the area context"; + + oc-ext:openconfig-version "0.1.1"; + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "0.1.1"; + } + + revision "2017-02-28"{ + description + "Initial public release of OSPFv2"; + reference "0.1.0"; + } + + revision "2016-06-24" { + description + "Initial revision"; + reference "0.0.1"; + } + + grouping ospfv2-area-interface-config { + description + "Configuration parameters for an OSPF interface"; + + leaf id { + type string; + description + "An operator-specified string utilised to uniquely + reference this interface"; + } + + leaf network-type { + type identityref { + base "oc-ospf-types:OSPF_NETWORK_TYPE"; + } + description + "The type of network that OSPFv2 should use for the specified + interface."; + } + + leaf priority { + type uint8; + description + "The local system's priority to become the designated + router"; + } + + leaf multi-area-adjacency-primary { + type boolean; + default true; + description + "When the specified interface is included in more than one + area's configuration, this leaf marks whether the area should + be considered the primary (when the value is true). In the + case that this value is false, the area is considered a + secondary area."; + } + + leaf authentication-type { + type string; + // rjs TODO: discuss with bogdanov@ what the approach for auth + // links should be. + description + "The type of authentication that should be used on this + interface"; + } + + leaf metric { + type oc-ospf-types:ospf-metric; + description + "The metric for the interface"; + } + + leaf passive { + type boolean; + description + "When this leaf is set to true, the interface should be + advertised within the OSPF area but OSPF adjacencies should + not be established over the interface"; + } + + leaf hide-network { + type boolean; + description + "When this leaf is set to true, the network connected to + the interface should be hidden from OSPFv2 advertisements + per the procedure described in RFC6860."; + reference + "RFC6860 - Hiding Transit-Only Networks in OSFF"; + } + } + + grouping ospfv2-area-interface-timers-config { + description + "Configuration parameters relating to per-interface OSPFv2 + timers"; + + leaf dead-interval { + type uint32; + units seconds; + description + "The number of seconds that the local system should let + elapse before declaring a silent router down"; + reference "RFC2328"; + } + + leaf hello-interval { + type uint32; + units seconds; + description + "The number of seconds the local system waits between the + transmission of subsequent Hello packets"; + } + + leaf retransmission-interval { + type uint32; + units seconds; + description + "The number of seconds that the local system waits before + retransmitting an unacknowledged LSA."; + } + } + + grouping ospfv2-area-interface-mpls-config { + description + "Configuration parameters relating to MPLS extensions for OSPF"; + + leaf traffic-engineering-metric { + type uint32; + description + "A link metric that should only be considered for traffic + engineering purposes."; + reference "RFC3630, §2.5.5"; + } + } + + grouping ospfv2-area-interface-neighbor-config { + description + "Configuration parameters relating to an individual neighbor + system on an interface within an OSPF area"; + + leaf router-id { + type yang:dotted-quad; + description + "The router ID of the remote system."; + } + + leaf metric { + type oc-ospf-types:ospf-metric; + description + "The metric that should be considered to the remote neighbor + over this interface. This configuration is only applicable + for multiple-access networks"; + } + } + + grouping ospfv2-area-interface-neighbor-state { + description + "Operational state parameters relating an individual neighbor + system on an interface within an OSPF area"; + + leaf priority { + type uint8; + description + "The remote system's priority to become the designated + router"; + } + + leaf dead-time { + // rjs TODO: discussion with aashaikh@ + hines@ around how this + // value should be represented, usually is a timer that + // continually counts down but this sounds challenging for + // telemetry. + type oc-types:timeticks64; + description + "The time at which this neighbor's adjacency will be + considered dead. This value is expressed as a number of + seconds since the Unix Epoch"; + } + + leaf designated-router { + type yang:dotted-quad; + description + "The designated router for the adjacency. This device + advertises the Network LSA for broadcast and NBMA networks."; + } + + leaf backup-designated-router { + type yang:dotted-quad; + description + "The backup designated router for the adjacency."; + } + + leaf optional-capabilities { + // rjs TODO: should this be anything more than the hex-string + // this is currently what is shown in IOS/JUNOS + type yang:hex-string; + description + "The optional capabilities field received in the Hello + message from the neighbor"; + } + + leaf last-established-time { + type oc-types:timeticks64; + units seconds; + // rjs TODO: check implementations - is FULL considered 'up' + // since the adjacency is probably up since ExStart + description + "The time at which the adjacency was last established with + the neighbor. That is to say the time at which the + adjacency last transitioned into the FULL state. + + This value is expressed as the number of seconds, relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + } + + leaf adjacency-state { + type identityref { + base "oc-ospf-types:OSPF_NEIGHBOR_STATE"; + } + description + "The state of the adjacency with the neighbor."; + } + + leaf state-changes { + type uint32; + description + "The number of transitions out of the FULL state that this + neighbor has been through"; + } + + leaf retranmission-queue-length { + type uint32; + description + "The number of LSAs that are currently in the queue to be + retransmitted to the neighbor"; + } + } + + grouping ospfv2-area-interface-lsa-filter-config { + description + "Configuration options relating to filtering LSAs + on an interface."; + + leaf all { + type boolean; + description + "When this leaf is set to true, all LSAs should be + filtered to the neighbours with whom adjacencies are + formed on the interface."; + } + + // NB: this container can be augmented to add additional + // filtering options which exist in some implementations. + } + + grouping ospfv2-area-interface-mpls-igp-ldp-sync-state { + description + "Operational state parameters relating to MPLS LDP/IGP + synchronization on a per-neighbor basis"; + + leaf synchronized { + type boolean; + description + "When the value of this leaf is set to true, the + LDP neighbors reachable via this interface are considered + to be synchronized, and hence the link is considered + usable by the IGP."; + } + } + + grouping ospfv2-area-interfaces-structure { + description + "Structural grouping for configuration and operational state + parameters that relate to an interface"; + + container interfaces { + description + "Enclosing container for a list of interfaces enabled within + this area"; + + list interface { + key "id"; + + description + "List of interfaces which are enabled within this area"; + + leaf id { + type leafref { + path "../config/id"; + } + description + "A pointer to the identifier for the interface."; + } + + container config { + description + "Configuration parameters for the interface on which + OSPFv2 is enabled"; + + uses ospfv2-area-interface-config; + } + + container state { + config false; + description + "Operational state parameters for the interface on which + OSPFv2 is enabled"; + uses ospfv2-area-interface-config; + } + + uses oc-if:interface-ref; + + container timers { + description + "Timers relating to OSPFv2 on the interface"; + + container config { + description + "Configuration parameters for OSPFv2 timers on the + interface"; + uses ospfv2-area-interface-timers-config; + } + + container state { + config false; + description + "Operational state parameters for OSPFv2 timers on + the interface"; + + uses ospfv2-area-interface-timers-config; + } + } + + container mpls { + description + "Configuration and operational state parameters for + OSPFv2 extensions related to MPLS on the interface."; + + container config { + description + "Configuration parameters for OSPFv2 extensions relating + to MPLS for the interface"; + uses ospfv2-area-interface-mpls-config; + } + + container state { + config false; + description + "Operational state for OSPFv2 extensions relating to + MPLS for the interface"; + uses ospfv2-area-interface-mpls-config; + } + + container igp-ldp-sync { + description + "OSPFv2 parameters relating to LDP/IGP synchronization"; + + container config { + description + "Configuration parameters relating to LDP/IG + synchronization."; + uses ospfv2-common-mpls-igp-ldp-sync-config; + } + + container state { + config false; + description + "Operational state variables relating to LDP/IGP + synchronization"; + uses ospfv2-common-mpls-igp-ldp-sync-config; + uses ospfv2-area-interface-mpls-igp-ldp-sync-state; + } + } + } + + container lsa-filter { + description + "OSPFv2 parameters relating to filtering of LSAs to + neighbors the specified interface."; + + container config { + description + "Configuration parameters relating to filtering LSAs + on the specified interface."; + uses ospfv2-area-interface-lsa-filter-config; + } + + container state { + config false; + description + "Operational state parameters relating to filtering + LSAs on the specified interface"; + uses ospfv2-area-interface-lsa-filter-config; + } + } + + container neighbors { + description + "Enclosing container for the list of neighbors that + an adjacency has been established with on the interface"; + + list neighbor { + key "router-id"; + + description + "A neighbor with which an OSPFv2 adjacency has been + established within this area"; + + leaf router-id { + type leafref { + path "../config/router-id"; + } + description + "Reference to the router ID of the adjacent system"; + } + + container config { + description + "Configuration parameters relating to the adjacent + system"; + uses ospfv2-area-interface-neighbor-config; + } + + container state { + config false; + description + "Operational state parameters relating to the adjacent + system"; + uses ospfv2-area-interface-neighbor-config; + uses ospfv2-area-interface-neighbor-state; + } + } + } + + } + } + } + +} \ No newline at end of file diff --git a/vendor/cisco/nx/9.3-14/openconfig-ospfv2-area.yang b/vendor/cisco/nx/9.3-14/openconfig-ospfv2-area.yang new file mode 100644 index 000000000..a16d98d65 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-ospfv2-area.yang @@ -0,0 +1,163 @@ +submodule openconfig-ospfv2-area { + + belongs-to openconfig-ospfv2 { + prefix "oc-ospfv2"; + } + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-ospf-types { prefix "oc-ospf-types"; } + import ietf-inet-types { prefix "inet"; } + + // include other required submodules + include openconfig-ospfv2-area-interface; + include openconfig-ospfv2-lsdb; + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This submodule provides OSPFv2 configuration and operational + state parameters that are specific to the area context"; + + oc-ext:openconfig-version "0.1.1"; + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "0.1.1"; + } + + revision "2017-02-28"{ + description + "Initial public release of OSPFv2"; + reference "0.1.0"; + } + + revision "2016-06-24" { + description + "Initial revision"; + reference "0.0.1"; + } + + grouping ospfv2-area-config { + description + "Configuration parameters relating to an OSPF area"; + + leaf identifier { + type oc-ospf-types:ospf-area-identifier; + description + "An identifier for the OSPFv2 area - described as either a + 32-bit unsigned integer, or a dotted-quad"; + } + } + + grouping ospfv2-area-mpls-config { + description + "Configuration parameters relating to OSPFv2 extensions for + MPLS"; + + leaf traffic-engineering-enabled { + type boolean; + description + "Specifies whether traffic engineering extensions should be + advertised within the area"; + } + } + + grouping ospfv2-area-virtual-link-config { + description + "Configuration parameters relating to a virtual-link within + the OSPF area"; + + leaf remote-router-id { + type inet:ipv4-address-no-zone; + description + "The router ID of the device which terminates the remote end + of the virtual link"; + } + } + + grouping ospfv2-area-structure { + description + "Structural grouping for configuration and operational state + parameters that relate to an individual area"; + + container config { + description + "Configuration parameters relating to an OSPFv2 area"; + + uses ospfv2-area-config; + } + + container state { + config false; + description + "Operational state parameters relating to an OSPFv2 area"; + uses ospfv2-area-config; + } + + container mpls { + description + "Configuration and operational state parameters for OSPFv2 + extensions relating to MPLS"; + + container config { + description + "Configuration parameters relating to MPLS extensions for + OSPFv2"; + uses ospfv2-area-mpls-config; + } + + container state { + config false; + description + "Operational state parameters relating to MPLS extensions + for OSPFv2"; + uses ospfv2-area-mpls-config; + } + } + + uses ospfv2-lsdb-structure; + uses ospfv2-area-interfaces-structure; + + container virtual-links { + description + "Configuration and state parameters relating to virtual + links from the source area to a remote router"; + + list virtual-link { + key "remote-router-id"; + + description + "Configuration and state parameters relating to a + virtual link"; + + leaf remote-router-id { + type leafref { + path "../config/remote-router-id"; + } + description + "Reference to the remote router ID"; + } + + container config { + description + "Configuration parameters relating to the OSPF virtual link"; + uses ospfv2-area-virtual-link-config; + } + + container state { + config false; + description + "State parameters relating to the OSPF virtual link"; + uses ospfv2-area-virtual-link-config; + uses ospfv2-area-interface-neighbor-state; + } + } + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-ospfv2-common.yang b/vendor/cisco/nx/9.3-14/openconfig-ospfv2-common.yang new file mode 100644 index 000000000..4b6f89e1b --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-ospfv2-common.yang @@ -0,0 +1,85 @@ +submodule openconfig-ospfv2-common { + + belongs-to openconfig-ospfv2 { + prefix "oc-ospfv2"; + } + + import openconfig-extensions { prefix "oc-ext"; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This submodule provides OSPFv2 configuration and operational + state parameters that are shared across multiple contexts"; + + oc-ext:openconfig-version "0.1.1"; + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "0.1.1"; + } + + revision "2017-02-28"{ + description + "Initial public release of OSPFv2"; + reference "0.1.0"; + } + + revision "2016-06-24" { + description + "Initial revision"; + reference "0.0.1"; + } + + grouping ospfv2-common-mpls-igp-ldp-sync-config { + description + "Configuration parameters used for OSPFv2 MPLS/IGP + synchronization"; + + leaf enabled { + type boolean; + description + "When this leaf is set to true, do not utilise this link for + forwarding via the IGP until such time as LDP adjacencies to + the neighbor(s) over the link are established."; + } + + leaf post-session-up-delay { + type uint32; + units milliseconds; + description + "This leaf specifies a delay, expressed in units of milliseconds, + between the LDP session to the IGP neighbor being established, and + it being considered synchronized by the IGP."; + } + } + + grouping ospfv2-common-timers { + description + "Common definition of the type of timers that the OSPFv2 implementation + uses"; + + leaf timer-type { + type enumeration { + enum LINEAR_BACKOFF { + description + "The backoff used by the OSPFv2 implementation is linear, such that + a common delay is added following each event."; + } + enum EXPONENTIAL_BACKOFF { + description + "The backoff used by the OSPFv2 implementation is exponential, such + that the delay added following each event increases."; + } + } + description + "The timer mode that is utilised by the implementation."; + } + } +} \ No newline at end of file diff --git a/vendor/cisco/nx/9.3-14/openconfig-ospfv2-global.yang b/vendor/cisco/nx/9.3-14/openconfig-ospfv2-global.yang new file mode 100644 index 000000000..fa88dbeb6 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-ospfv2-global.yang @@ -0,0 +1,503 @@ +submodule openconfig-ospfv2-global { + + belongs-to openconfig-ospfv2 { + prefix "oc-ospfv2"; + } + + import ietf-yang-types { prefix "yang"; } + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-routing-policy { prefix "oc-rpol"; } + import openconfig-ospf-types { prefix "oc-ospft"; } + + // Include common submodule + include openconfig-ospfv2-common; + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This submodule provides OSPFv2 configuration and operational + state parameters that are global to a particular OSPF instance"; + + oc-ext:openconfig-version "0.1.1"; + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "0.1.1"; + } + + revision "2017-02-28"{ + description + "Initial public release of OSPFv2"; + reference "0.1.0"; + } + + revision "2016-06-24" { + description + "Initial revision"; + reference "0.0.1"; + } + + grouping ospfv2-global-config { + description + "Global configuration for OSPFv2"; + + leaf router-id { + type yang:dotted-quad; + description + "A 32-bit number represented as a dotted quad assigned to + each router running the OSPFv2 protocol. This number should + be unique within the autonomous system"; + reference "rfc2828"; + } + + leaf summary-route-cost-mode { + type enumeration { + enum RFC1583_COMPATIBLE { + description + "Specify that summary routes should assume the cost of + the lowest-cost more-specific route as per the behaviour + specified in RFC1583"; + } + enum RFC2328_COMPATIBLE { + description + "Specify that summary routes should assume the cost of the + highest-cost more-specific route as per the revised + behaviour specified in RFC2328"; + } + } + default "RFC2328_COMPATIBLE"; + description + "Specify how costs for the summary routes should be specified + as per the behaviour in the original OSPF specification + RFC1583, or alternatively whether the revised behaviour + described in RFC2328 should be utilised"; + } + + leaf igp-shortcuts { + type boolean; + description + "When this leaf is set to true, OSPFv2 will route traffic to + a remote system via any LSP to the system that is marked as + shortcut eligible."; + } + + leaf log-adjacency-changes { + type boolean; + description + "When this leaf is set to true, a log message will be + generated when the state of an OSPFv2 neighbour changes."; + } + + leaf hide-transit-only-networks { + type boolean; + description + "When this leaf is set to true, do not advertise prefixes + into OSPFv2 that correspond to transit interfaces, as per + the behaviour discussed in RFC6860."; + reference + "RFC6860 - Hiding Transit-Only Networks in OSPF"; + } + } + + grouping ospfv2-global-spf-timers-config { + description + "Configuration parameters relating to global SPF timer + parameters for OSPFv2"; + + leaf initial-delay { + // rjs TODO: IS-IS model has this as decimal64 - should it be + // that or uint32 msec? + type uint32; + units msec; + description + "The value of this leaf specifies the time between a change + in topology being detected and the first run of the SPF + algorithm."; + } + + leaf maximum-delay { + // rjs TODO: same question as above + type uint32; + units msec; + description + "The value of this leaf specifies the maximum delay between + a topology change being detected and the SPF algorithm + running. This value is used for implementations that support + increasing the wait time between SPF runs."; + } + + // rjs TODO: some questions here around what we should specify: + // JUNOS has rapid-runs and holddown + // Cisco has maximum time between runs, and then a doubling of + // the wait interval up to that maximum. + // ALU has first-wait, second-wait, max-wait + } + + grouping ospfv2-global-lsa-generation-timers-config { + description + "Configuration parameters relating to global LSA generation + parameters for OSPFv2"; + + leaf initial-delay { + type uint32; + units msec; + description + "The value of this leaf specifies the time between the first + time an LSA is generated and advertised and the subsequent + generation of that LSA."; + } + + leaf maximum-delay { + type uint32; + units msec; + description + "The value of this leaf specifies the maximum time between the + generation of an LSA and the subsequent re-generation of that + LSA. This value is used in implementations that support + increasing delay between generation of an LSA"; + } + } + + grouping ospfv2-global-spf-timers-state { + description + "Operational state parameters relating to OSPFv2 global + timers"; + + uses ospfv2-common-timers; + } + + grouping ospfv2-global-lsa-generation-timers-state { + description + "Operational state parameters relating to OSPFv2 global + timers"; + + uses ospfv2-common-timers; + } + + grouping ospfv2-global-graceful-restart-config { + description + "Configuration parameters relating to graceful restart for + OSPFv2"; + + leaf enabled { + type boolean; + description + "When the value of this leaf is set to true, graceful restart + is enabled on the local system. In this case, the system will + use Grace-LSAs to signal that it is restarting to its + neighbors."; + } + + leaf helper-only { + type boolean; + description + "Operate graceful-restart only in helper mode. When this leaf + is set to true, the local system does not use Grace-LSAs to + indicate that it is restarting, but will accept Grace-LSAs + from remote systems, and suppress withdrawl of adjacencies + of the system for the grace period specified"; + } + } + + grouping ospfv2-global-mpls-config { + description + "Configuration parameters for OSPFv2 options which + relate to MPLS"; + + leaf traffic-engineering-extensions { + type boolean; + description + "When this leaf is set to true, use traffic engineering + extensions for OSPF to advertise TE parameters via type 10 + Opaque LSAs"; + } + } + + grouping ospfv2-global-inter-areapp-config { + description + "Configuration parameters for OSPFv2 policies which propagate + prefixes between areas"; + + leaf src-area { + type leafref { + // we are at ospf/global/inter-area-propagation-policies/... + // inter-area-propagation-policy/config/src-area + path "../../../../../areas/area/identifier"; + } + description + "The area from which prefixes are to be exported."; + } + + leaf dst-area { + type leafref { + // we are at ospf/global/inter-area-propagation-policies/... + // inter-area-propagation-policy/config/src-area + path "../../../../../areas/area/identifier"; + } + description + "The destination area to which prefixes are to be imported"; + } + + uses oc-rpol:apply-policy-import-config; + } + + grouping ospfv2-global-max-metric-config { + description + "Configuration paramters relating to setting the OSPFv2 + maximum metric."; + + leaf set { + type boolean; + description + "When this leaf is set to true, all non-stub interfaces of + the local system are advertised with the maximum metric, + such that the router does not act as a transit system, + (similarly to the IS-IS overload functionality)."; + reference + "RFC3137 - OSPF Stub Router Advertisement"; + } + + leaf timeout { + type uint64; + units "seconds"; + description + "The delay, in seconds, after which the advertisement of + entities with the maximum metric should be cleared, and + the system reverts to the default, or configured, metrics."; + } + + leaf-list include { + type identityref { + base "oc-ospft:MAX_METRIC_INCLUDE"; + } + description + "By default, the maximum metric is advertised for all + non-stub interfaces of a device. When identities are + specified within this leaf-list, additional entities + are also advertised with the maximum metric according + to the values within the list."; + } + + leaf-list trigger { + type identityref { + base "oc-ospft:MAX_METRIC_TRIGGER"; + } + description + "By default, the maximum metric is only advertised + when the max-metric/set leaf is specified as true. + In the case that identities are specified within this + list, they provide additional triggers (e.g., system + boot) that may cause the max-metric to be set. In this + case, the system should still honour the timeout specified + by the max-metric/timeout leaf, and clear the max-metric + advertisements after the expiration of this timer."; + } + } + + grouping ospfv2-global-structural { + description + "Top level structural grouping for OSPFv2 global parameters"; + + container global { + description + "Configuration and operational state parameters for settings + that are global to the OSPFv2 instance"; + + container config { + description + "Global configuration parameters for OSPFv2"; + uses ospfv2-global-config; + } + + container state { + config false; + description + "Operational state parameters for OSPFv2"; + uses ospfv2-global-config; + } + + container timers { + description + "Configuration and operational state parameters for OSPFv2 + timers"; + + container spf { + description + "Configuration and operational state parameters relating + to timers governing the operation of SPF runs"; + + container config { + description + "Configuration parameters relating to global OSPFv2 + SPF timers"; + uses ospfv2-global-spf-timers-config; + } + + container state { + config false; + description + "Operational state parameters relating to the global + OSPFv2 SPF timers"; + uses ospfv2-global-spf-timers-config; + uses ospfv2-global-spf-timers-state; + } + } + + container max-metric { + description + "Configuration and operational state parameters relating + to setting the OSPFv2 maximum metric."; + + container config { + description + "Configuration parameters relating to setting the OSPFv2 + maximum metric for a set of advertised entities."; + uses ospfv2-global-max-metric-config; + } + + container state { + config false; + description + "Operational state parameters relating to setting the + OSPFv2 maximum metric for a set of advertised entities."; + uses ospfv2-global-max-metric-config; + } + } + + container lsa-generation { + description + "Configuration and operational state parameters relating + to timers governing the generation of LSAs by the local + system"; + + container config { + description + "Configuration parameters relating to the generation of + LSAs by the local system"; + uses ospfv2-global-lsa-generation-timers-config; + } + + container state { + config false; + description + "Operational state parameters relating to the generation + of LSAs by the local system"; + uses ospfv2-global-lsa-generation-timers-config; + uses ospfv2-global-lsa-generation-timers-state; + } + } + } + + container graceful-restart { + description + "Configuration and operational state parameters for OSPFv2 + graceful restart"; + + container config { + description + "Configuration parameters relating to OSPFv2 graceful + restart"; + uses ospfv2-global-graceful-restart-config; + } + + container state { + config false; + description + "Operational state parameters relating to OSPFv2 graceful + restart"; + uses ospfv2-global-graceful-restart-config; + } + } + + container mpls { + description + "OSPFv2 parameters relating to MPLS"; + + container config { + description + "Configuration parameters relating to MPLS for OSPFv2"; + uses ospfv2-global-mpls-config; + } + + container state { + config false; + description + "Operational state parameters relating to MPLS for + OSPFv2"; + uses ospfv2-global-mpls-config; + } + + container igp-ldp-sync { + description + "OSPFv2 parameters relating to LDP/IGP synchronization"; + + container config { + description + "Configuration parameters relating to LDP/IG + synchronization."; + uses ospfv2-common-mpls-igp-ldp-sync-config; + } + + container state { + config false; + description + "Operational state variables relating to LDP/IGP + synchronization"; + uses ospfv2-common-mpls-igp-ldp-sync-config; + } + } + } + + container inter-area-propagation-policies { + description + "Policies defining how inter-area propagation should be performed + by the OSPF instance"; + + list inter-area-propagation-policy { + key "src-area dst-area"; + description + "A list of connections between pairs of areas - routes are + propagated from the source (src) area to the destination (dst) + area according to the policy specified"; + + leaf src-area { + type leafref { + path "../config/src-area"; + } + description + "Reference to the source area"; + } + + leaf dst-area { + type leafref { + path "../config/dst-area"; + } + description + "Reference to the destination area"; + } + + container config { + description + "Configuration parameters relating to the inter-area + propagation policy"; + uses ospfv2-global-inter-areapp-config; + } + + container state { + config false; + description + "Operational state parameters relating to the inter-area + propagation policy"; + uses ospfv2-global-inter-areapp-config; + } + } + } + } + } +} \ No newline at end of file diff --git a/vendor/cisco/nx/9.3-14/openconfig-ospfv2-lsdb.yang b/vendor/cisco/nx/9.3-14/openconfig-ospfv2-lsdb.yang new file mode 100644 index 000000000..a891adc09 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-ospfv2-lsdb.yang @@ -0,0 +1,2349 @@ +submodule openconfig-ospfv2-lsdb { + + belongs-to openconfig-ospfv2 { + prefix "oc-ospfv2"; + } + + // import some basic types + import ietf-yang-types { prefix "yang"; } + import ietf-inet-types { prefix "inet"; } + import openconfig-types { prefix "oc-types"; } + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-ospf-types { prefix "oc-ospf-types"; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "An OpenConfig model for the Open Shortest Path First (OSPF) + version 2 link-state database (LSDB)"; + + oc-ext:openconfig-version "0.1.1"; + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "0.1.1"; + } + + revision "2017-02-28"{ + description + "Initial public release of OSPFv2"; + reference "0.1.0"; + } + + revision "2016-06-24" { + description + "Initial revision"; + reference "0.0.1"; + } + + grouping ospfv2-lsdb-common-prefix-properties { + description + "Common properties used in the LSDB that relate to IPv4 prefixes"; + + leaf prefix-length { + type uint8 { + range "0..32"; + } + description + "The length of the IPv4 prefix contained in the Extended Prefix LSA"; + } + + leaf address-family { + // TODO: should this be an identity? + type enumeration { + enum IPV4_UNICAST { + value 0; + description + "The prefix contained within the Extended Prefix LSA is an IPv4 + unicast prefix"; + } + } + description + "The address family of the prefix contained in the Extended Prefix + LSA"; + } + } + + grouping ospfv2-lsdb-common-link-specification { + description + "Generic attributes used to identify links within OSPFv2"; + + leaf link-id { + type yang:dotted-quad; + description + "The identifier for the link specified. The value of the link + identifier is dependent upon the type of the LSA. The value is + specified to be, per sub-type: + 1) Neighbouring router's router ID. + 2) IP address of DR. + 3) IP network address. + 4) Neighbouring router router's ID."; + } + + leaf link-data { + type union { + type yang:dotted-quad; + type uint32; + } + description + "The data associated with the link type. The value is + dependent upon the subtype of the LSA. When the connection is + to a stub network it represents the mask; for p2p connections + that are unnumbered it represents the ifIndex value of the + router's interface; for all other connections it represents + the local system's IP address"; + } + + } + + grouping ospfv2-lsdb-common-unknown-tlv { + description + "A generic specification of a TLV to be used when the + value cannot be decoded by the local system"; + + leaf type { + type uint16; + description + "The type value of the unknown TLV"; + } + + leaf length { + type uint16; + description + "The length value of the unknown TLV"; + } + + leaf value { + type binary; + description + "The value portion of the unknwon TLV"; + } + } + + grouping ospfv2-lsdb-common-unknown-tlv-structure { + description + "A generic specification of an unknown TLV"; + + container unknown-tlv { + description + "An unknown TLV within the context. Unknown TLVs are + defined to be the set of TLVs that are not modelled + within the OpenConfig model, or are unknown to the + local system such that it cannot decode their value."; + + container state { + description + "Contents of an unknown TLV within the LSA"; + uses ospfv2-lsdb-common-unknown-tlv; + } + } + } + + grouping ospfv2-lsdb-common-unknown-subtlv-structure { + description + "A generic specification of an unknown TLV"; + + container unknown-subtlv { + description + "An unknown SubTLV within the context. Unknown Sub-TLV + are defined to be the set of SubTLVs that are not modelled + by the OpenConfig schema, or are unknown to the local system + such that it cannot decode their value."; + + container state { + description + "Contents of an unknown TLV within the LSA"; + uses ospfv2-lsdb-common-unknown-tlv; + } + } + } + + grouping ospfv2-lsdb-common-tos-metric { + description + "Common LSDB LSA parameters for type of service and metric"; + + leaf tos { + type uint8; + description + "OSPF encoding of the type of service referred to by this + LSA. Encoding for OSPF TOS are described in RFC2328."; + } + + leaf metric { + type oc-ospf-types:ospf-metric; + description + "The metric value to be used for the TOS specified. This value + represents the cost of use of the link for the specific type + of service."; + } + } + + grouping ospfv2-lsdb-common-sr-sid-spec { + description + "Re-usable specification of a segment routing SID"; + + leaf sid-type { + type oc-ospf-types:sr-sid-type; + description + "The type of the value contained within the sub-TLV"; + } + + leaf sid-value { + type uint32; + description + "The value of the binding included within the sub-TLV. The type of + this binding is indicated by the type leaf."; + } + } + + grouping ospfv2-lsdb-area-state { + description + "Per-area operational state parameters for an OSPFv2 area"; + + leaf identifier { + type oc-ospf-types:ospf-area-identifier; + description + "An identifier for the area, expressed as a dotted quad or + an unsigned 32-bit integer"; + } + } + + grouping ospfv2-lsdb-area-lsa-type-state { + description + "Per-LSA type operational state parameters for an OSPFv2 area"; + + leaf type { + type identityref { + base "oc-ospf-types:OSPF_LSA_TYPE"; + } + description + "The type of LSA being described. The type of the LSA is + expressed as a canonical name."; + } + } + + grouping ospfv2-lsdb-area-lsa-state { + description + "Generic parameters of an OSPFv2 LSA"; + + leaf link-state-id { + type yang:dotted-quad; + description + "The Link State ID for the specified LSA type. The exact + defined value of the Link State ID is dependent on the LSA + type."; + } + + leaf advertising-router { + type yang:dotted-quad; + description + "The router ID of the router that originated the LSA"; + } + + leaf sequence-number { + type int32; + description + "A signed 32-bit integer used to detect old and duplicate + LSAs. The greater the sequence number the more recent the + LSA."; + } + + leaf checksum { + type uint16; + description + "The checksum of the complete contents of the LSA excluding + the age field."; + } + + leaf age { + type uint16; + units seconds; + description + "The time since the LSA's generation in seconds"; + } + } + + grouping ospfv2-lsdb-router-lsa-structure { + description + "Structural grouping for Router LSA contents within the LSDB"; + + container router-lsa { + description + "Contents of the router LSA"; + + container state { + description + "State parameters of the router LSA"; + uses ospfv2-lsdb-router-lsa-state; + } + + uses ospfv2-lsdb-generic-lsa-tos-metric-structure; + } + } + + grouping ospfv2-lsdb-generic-lsa-tos-metric-structure { + description + "Grouping including a generic TOS/metric structure for an + LSA"; + + container types-of-service { + description + "Breakdown of LSA contents specifying multiple + TOS values"; + + list type-of-service { + key "tos"; + description + "Per-type of service parameters for the LSA"; + + leaf tos { + type leafref { + path "../state/tos"; + } + description + "Reference to the type of service identifier which is + specified in the LSA"; + } + + container state { + description + "Per-TOS parameters for the LSA"; + + uses ospfv2-lsdb-generic-lsa-tos-metric-state; + } + } + } + } + + grouping ospfv2-lsdb-network-lsa-structure { + description + "Structural grouping for Network LSA contents within the LSDB"; + + container network-lsa { + description + "Contents of the network LSA"; + + container state { + description + "State parameters of the network LSA"; + uses ospfv2-lsdb-network-lsa-state; + } + } + } + + grouping ospfv2-lsdb-summary-lsa-structure { + description + "Structural grouping for the Summary LSA contents within the + LSDB"; + + container summary-lsa { + description + "Contents of the summary LSA"; + + container state { + description + "State parameters of the summary LSA"; + uses ospfv2-lsdb-summary-lsa-state; + } + + uses ospfv2-lsdb-generic-lsa-tos-metric-structure; + } + } + + grouping ospfv2-lsdb-asexternal-lsa-structure { + description + "Structural grouping for the AS External LSA contents within + the LSDB"; + + container as-external-lsa { + description + "Contents of the AS External LSA"; + + container state { + description + "State parameters for the AS external LSA"; + uses ospfv2-lsdb-asexternal-lsa-state; + } + + container types-of-service { + description + "Breakdown of External LSA contents specifying multiple + TOS values"; + + list type-of-service { + key "tos"; + description + "Per-type of service parameters for the AS External LSA"; + + leaf tos { + type leafref { + path "../state/tos"; + } + description + "Reference to the type of service identifier which is + specified in the AS External LSA"; + } + + container state { + description + "Per-TOS parameters for the LSA"; + + uses ospfv2-lsdb-asexternal-tos-state; + } + } + } + + } + } + + grouping ospfv2-lsdb-nssa-external-lsa-structure { + description + "Structural grouping for the NSSA External LSA contents within + the LSDB"; + + container nssa-external-lsa { + description + "Contents of the NSSA External LSA"; + + container state { + description + "State parameters for the AS external LSA"; + // Type 7 LSAs are are a super-set of Type 5 LSAs so we simply + // include the Type 5 + uses ospfv2-lsdb-asexternal-lsa-state; + uses ospfv2-lsdb-nssa-external-lsa-state; + } + + container types-of-service { + description + "Breakdown of the NSSA External LSA contents specifying multiple + TOS values"; + + list type-of-service { + key "tos"; + description + "Per-type of service parameters for the NSSA external LSA"; + + leaf tos { + type leafref { + path "../state/tos"; + } + description + "Reference to the type of services identifier which is specified + in the NSSA External LSA"; + } + + container state { + description + "Per-TOS parameters for the LSA"; + uses ospfv2-lsdb-asexternal-tos-state; + } + } + } + } + } + + grouping ospfv2-lsdb-opaque-lsa-structure { + description + "Structural grouping for Opaque LSA contents within the LSDB"; + + container opaque-lsa { + description + "Contents of the opaque LSA"; + + container state { + description + "State parameters for the opaque LSA"; + uses ospfv2-lsdb-opaque-lsa-state; + } + + container traffic-engineering { + when "../state/type = 'TRAFFIC_ENGINEERING'" { + description + "Include the traffic-engineering information when + the Opaque LSA being described is a Traffic Engineering + LSA"; + } + description + "Contents of the Traffic Engineering Opaque LSA"; + + container tlvs { + description + "The TLVs contained in the TE Opaque LSA"; + list tlv { + // this is an unkeyed list + description + "The Type-Length-Value tuples included in the TE LSA"; + + container state { + description + "The contents of the TLV tuple within the TE LSA"; + uses ospfv2-lsdb-opaque-lsa-te-tlv-state; + } + + uses ospfv2-lsdb-common-unknown-tlv-structure; + + container router-address { + when "../state/type = 'TE_ROUTER_ADDRESS'" { + description + "Include the router address container only when the type + of the TLV is Router Address"; + } + + description + "Parameters included in the Router Address TLV"; + + container state { + description + "State parameters of the router address TLV"; + uses ospfv2-lsdb-opaque-te-router-address-state; + } + } + + container link { + when "../state/type = 'TE_ROUTER_LINK'" { + description + "Include the link container only when the type of the + TLV describes a traffic engineering link"; + } + + description + "Parameters included in the Link TLV"; + container sub-tlvs { + description + "Sub-TLVs included in the Link TLV"; + + list sub-tlv { + // unkeyed list + description + "The Sub-TLVs included within the Traffic Engineering + LSA's sub-TLV"; + + container state { + description + "State parameters of the Link Sub-TLV"; + + uses ospfv2-lsdb-opaque-te-link-state; + } + + uses ospfv2-lsdb-common-unknown-subtlv-structure; + + container unreserved-bandwidths { + description + "The unreserved link bandwidths for the Traffic + Engineering LSA - utilised when the sub-TLV type + indicates that the sub-TLV describes unreserved + bandwidth"; + + list unreserved-bandwidth { + key "priority"; + + description + "The unreserved bandwidth at each priority level"; + + leaf priority { + type leafref { + path "../state/priority"; + } + description + "A reference to the priority level being described"; + } + + container state { + description + "State parameters relating to the unreserved + bandwidth of the link being described"; + uses ospfv2-lsdb-opaque-te-link-unreserved-bw-state; + } + } + } + + container administrative-groups { + description + "The administrative groups that are set for the + Traffic Engineering LSA - utilised when the sub-TLV type + indicates that the sub-TLV describes administrative + groups"; + + list admin-group { + key "bit-index"; + + description + "The administrative group described within the + sub-TLV"; + + leaf bit-index { + type leafref { + path "../state/bit-index"; + } + description + "A reference to the bit index being described"; + } + + container state { + description + "State parameters relating to the administrative + groups being described for the link"; + uses ospfv2-lsdb-opaque-te-link-admin-group-state; + } + } + } + } + } + } + + container node-attribute { + when "../state/type = 'TE_NODE_ATTRIBUTE'" { + description + "Include the node-attribute container only when the type of + the TLV describes a node attribute"; + } + + description + "Parameters included in the Node Attribute TLV"; + + container sub-tlvs { + description + "Sub-TLVs of the Node Attribute TLV of the Traffic + Engineering LSA"; + + list sub-tlv { + // unkeyed list + description + "List of the Sub-TLVs contained within the Node Attribute + TLV"; + + container state { + description + "State parameters of the Node Attribute TLV sub-TLV"; + uses ospfv2-lsdb-opaque-te-node-attribute-state; + } + + uses ospfv2-lsdb-common-unknown-subtlv-structure; + } + } + } + + // A set of TLVs are omitted here - based on operational + // requirements, these are: + // * link-local + // * ipv6-address (OSPFv3 only) + // * optical-node-property + } + } + } // traffic-engineering + + container grace-lsa { + when "../state/type = 'GRACE_LSA'" { + description + "Include the grace-lsa container when the opaque LSA is specified + to be of that type."; + } + + description + "The Grace LSA is utilised when a remote system is undergoing + graceful restart"; + + container tlvs { + description + "TLVs of the Grace LSA"; + + list tlv { + description + "TLV entry in the Grace LSA, advertised by a system undergoing + graceful restart"; + + // unkeyed list + container state { + description + "Per-TLV state parameters of the Grace LSA"; + uses ospfv2-lsdb-opaque-grace-state; + } + uses ospfv2-lsdb-common-unknown-tlv-structure; + } + } + } // grace LSA + + container router-information { + when "../state/type = 'ROUTER_INFORMATION_LSA'" { + description + "Include the router-information container when the opaque LSA + type is specified to be an RI LSA"; + } + + description + "The router information LSA is utilised to advertise capabilities + of a system to other systems who receive the LSA"; + + container tlvs { + description + "The TLVs included within the Router Information LSA."; + + list tlv { + description + "TLV entry in the Router Information LSA"; + + // unkeyed list + container state { + description + "Per-TLV state parameters of the RI LSA"; + uses ospfv2-lsdb-opaque-ri-state; + } + + uses ospfv2-lsdb-common-unknown-tlv-structure; + + container informational-capabilities { + when "../state/type = 'RI_INFORMATIONAL_CAPABILITIES'" { + description + "Include the informational capabilities specification when + the TLV of the RI LSA is specified to be of this type"; + } + + description + "Information related to the capabilities of the advertising + router within the scope that the opaque RI LSA is being + advertised"; + + container state { + description + "State parameters of the informational capabilitis of the + RI LSA"; + uses ospfv2-lsdb-opaque-ri-informational-state; + } + } + + container node-administrative-tags { + when "../state/type = 'RI_NODE_ADMIN_TAG'" { + description + "Include the node administrative tags specification when + the TLV of the RI LSA is specified to be of this type"; + } + + description + "Per-node administrative tags associated with the local system + specified by the operator"; + + container state { + description + "State parameters of the node administrative tags advertised + in the RI LSA"; + uses ospfv2-lsdb-opaque-ri-admintag-state; + } + } + + container segment-routing-algorithm { + when "../state/type = 'RI_SR_ALGORITHM'" { + description + "Include the segment routing algorithm specific parameters when + the TLV of the RI LSA is specified to be of this type"; + } + + description + "The algorithms supported for Segment Routing by the local system"; + + container state { + description + "State parameters of the Segment Routing algorithm advertised in + the RI LSA"; + uses ospfv2-lsdb-opaque-ri-sralgo-state; + } + } + + container segment-routing-sid-label-range { + when "../state/type = 'RI_SR_SID_LABEL_RANGE'" { + description + "Include the segment routing SID/Label range TLV specific state when + the TLV of the RI LSA is specified to be of this type"; + } + + description + "The Segment Identifier (SID) or label ranges that are supported by + the local system for Segment Routing"; + + container tlvs { + description + "Sub-TLVs of the SID/Label range TLV of the RI LSA"; + + list tlv { + // unkeyed list + description + "Sub-TLVs of the SID/Label range TLV"; + + uses ospfv2-lsdb-common-unknown-tlv-structure; + + container state { + description + "State parameters of the sub-TLVs of the SR/Label range TLV"; + uses ospfv2-lsdb-opaque-ri-srrange-tlv-state; + } + + container sid-label { + description + "Sub-TLV used to advertise the SID or label associated with the + subset of the SRGB being advertised"; + + container state { + description + "State parameters of the SID/Label sub-TLV of the SR/Label + range TLV of the RI LSA"; + uses ospfv2-lsdb-opaque-ri-srrange-sid-label-tlv-state; + } + } + } + } + } + } + } + } // router-information + + container extended-prefix { + when "../state/type = 'OSPFV2_EXTENDED_PREFIX'" { + description + "Include the extended-prefix container when the opaque LSA + type is specified to be an extended prefix LSA"; + } + + description + "An OSPFv2 Extended Prefix Opaque LSA, used to encapsulate + TLV attributes associated with a prefix advertised in OSPF."; + + reference "RFC7684 - OSPFv2 Prefix/Link Attribute Advertisement"; + + container state { + description + "State parameters of the Extended Prefix LSA"; + uses ospfv2-lsdb-extended-prefix-state; + } + + container tlvs { + description + "TLVs contained within the Extended Prefix LSA"; + + list tlv { + // unkeyed list + description + "A TLV contained within the extended prefix LSA"; + + container state { + description + "State parameters relating to the sub-TLV of the extended + prefix LSA"; + uses ospfv2-lsdb-extended-prefix-tlv-state; + } + + container extended-prefix-range { + when "../state/type = 'EXTENDED_PREFIX_RANGE'" { + description + "Include the prefix range sub-TLV when the type of the + sub-TLV is specified as such"; + } + + description + "State parameters relating to the extended prefix range + sub-TLV of the extended prefix LSA"; + + container state { + description + "State parameters relating to the Extended Prefix Range + sub-TLV of the Extended Prefix LSA"; + uses ospfv2-lsdb-extended-prefix-range-state; + } + } + + container prefix-sid { + when "../state/type = 'PREFIX_SID'" { + description + "Include parameters relating to the Prefix SID when the type + of the sub-TLV is indicated as such"; + } + + description + "State parameters relating to the Prefix SID sub-TLV of the + extended prefix LSA"; + + container state { + description + "State parameters relating to the Prefix SID sub-TLV of the + extended prefix LSA"; + uses ospfv2-lsdb-extended-prefix-prefix-sid-state; + } + } // prefix-sid + + container sid-label-binding { + when "../state/type = 'SID_LABEL_BINDING'" { + description + "Include parameters relating to the SID/Label binding sub-TLV + only when the type is indicated as such"; + } + + description + "State parameters relating to the SID/Label binding sub-TLV + of the extended prefix LSA"; + + container state { + description + "State parameters relating to the SID/Label binding sub-TLV + of the extended prefix LSA"; + uses ospfv2-lsdb-extended-prefix-sid-label-binding-state; + } + + container tlvs { + description + "TLVs contained within the SID/Label Binding sub-TLV of the + SID/Label Binding TLV"; + + list tlv { + description + "A TLV contained within the SID/Label Binding sub-TLV"; + + container state { + description + "State parameters relating to the SID/Label Binding + sub-TLV"; + uses ospfv2-lsdb-extended-prefix-sid-label-binding-tlv-state; + } + + container sid-label-binding { + when "../state/type = 'SID_LABEL_BINDING'" { + description + "Include the SID/Label Binding sub-TLV parameters only + when the type is indicated as such"; + } + + description + "Parameters for the SID/Label Binding sub-TLV of the + SID/Label binding TLV"; + + container state { + description + "State parameteres relating to the SID/Label Binding + sub-TLV"; + uses ospfv2-lsdb-extprefix-sid-label-binding-state; + } + } // sid-label-binding + + container ero-metric { + when "../state/type = 'ERO_METRIC'" { + description + "Include the ERO Metric sub-TLV parameters only when + the type is indicated as such"; + } + + description + "Parameters for the ERO Metric Sub-TLV of the SID/Label + binding TLV"; + + container state { + description + "State parameters relating to the ERO Metric Sub-TLV of + the SID/Label binding TLV"; + uses ospfv2-lsdb-extprefix-sid-label-ero-metric-state; + } + } // ero-metric + + container ero-path { + when "../state/type = 'ERO_PATH'" { + description + "Include the ERO Path sub-TLV parameters only when the + type is indicated as such"; + } + + description + "Parameters for the ERO Path Sub-TLV of the SID/Label + binding TLV"; + + container segments { + description + "Segments of the path described within the SID/Label + Binding sub-TLV"; + + list segment { + description + "A segment of the path described within the sub-TLV"; + + container state { + description + "State parameters relating to the path segment + contained within the sub-TLV"; + uses ospfv2-lsdb-extprefix-sid-lbl-ero-path-seg-state; + } + + container ipv4-segment { + when "../state/type = 'IPV4_SEGMENT'" { + description + "Include the IPv4 segment only when the type is + indicated as such"; + } + + description + "Details of the IPv4 segment interface of the ERO"; + + container state { + description + "State parameters of the IPv4 segment of the ERO"; + uses ospfv2-lsdb-extprefix-sid-lbl-ero-ipv4-state; + } + } // ipv4-segment + + container unnumbered-hop { + when "../state/type = 'UNNUMBERED_INTERFACE_SEGMENT'" { + description + "Include the unnumbered segment only when the + type is indicated as such"; + } + + description + "Details of the unnumbered interface segment of the + ERO"; + + container state { + description + "State parameters of the unnumbered interface + segment of the ERO"; + uses ospfv2-lsdb-extprefix-sid-lbl-ero-unnum-state; + } + } // unnumbered-hop + } // tlv + } // tlvs + } + } + } + } // sid-label-binding + + uses ospfv2-lsdb-common-unknown-tlv-structure; + } + } + } // extended-prefix + + container extended-link { + description + "The OSPFv2 Extended Link Opaque LSA, used to encapsulate TLV + attributes associated with a link advertised in OSPF."; + + reference "RFC7684 - OSPFv2 Prefix/Link Attribute Advertisement"; + + container state { + description + "State parameters of the Extended Link LSA"; + uses ospfv2-lsdb-extended-link-state; + } + + container tlvs { + description + "TLVs contained within the Extended Link LSA"; + + list tlv { + description + "List of TLVs within the Extended Link LSA"; + + container state { + description + "State parameters relating to the sub-TLV of the extended link + LSA"; + uses ospfv2-lsdb-extended-link-tlv-state; + } + + uses ospfv2-lsdb-common-unknown-tlv-structure; + + container adjacency-sid { + when "../state/type = 'ADJACENCY_SID'" { + description + "Include the Adjacency SID parameters only when the type of + the sub-TLV is indicated as such"; + } + + description + "Parameters relating to an Adjacency SID sub-TLV of the + extended link LSA"; + + container state { + description + "State parameters relating to an Adjacency SID"; + + uses ospfv2-lsdb-extended-link-adj-sid-state; + } + } + } + } + + } // extended-link + + uses ospfv2-lsdb-common-unknown-tlv-structure; + } + } + + grouping ospfv2-lsdb-generic-lsa-tos-metric-state { + description + "Per-TOS state parameters for the Router LSA"; + + uses ospfv2-lsdb-common-tos-metric; + } + + grouping ospfv2-lsdb-router-lsa-state { + description + "Parameters of the router LSA"; + + leaf type { + type identityref { + base "oc-ospf-types:ROUTER_LSA_TYPES"; + } + description + "The sub-type of the Router LSA."; + } + + uses ospfv2-lsdb-common-link-specification; + + leaf metric { + type oc-ospf-types:ospf-metric; + description + "The cost of utilising the link specified independent of TOS"; + } + + leaf number-links { + type uint16; + description + "The number of links that are described within the LSA"; + } + + leaf number-tos-metrics { + type uint16; + description + "The number of different TOS metrics given for this link, not + including the link metric (which is referred to as TOS 0)."; + } + } + + grouping ospfv2-lsdb-network-lsa-state { + description + "Parameters of the Network LSA"; + + leaf network-mask { + type uint8 { + range "0..32"; + } + description + "The mask of the network described by the Network LSA + represented as a CIDR mask."; + } + + leaf-list attached-router { + type yang:dotted-quad; + description + "A list of the router ID of the routers that are attached to + the network described by the Network LSA"; + } + } + + grouping ospfv2-lsdb-summary-lsa-state { + description + "Parameters of the Summary LSA"; + + leaf network-mask { + type uint8 { + range "0..32"; + } + description + "The mask of the network described by the Summary LSA + represented as a CIDR mask."; + } + } + + grouping ospfv2-lsdb-asexternal-lsa-common-parameters { + description + "Common parameters that are used for OSPFv2 AS External LSAs"; + + leaf forwarding-address { + type inet:ipv4-address-no-zone; + description + "The destination to which traffic for the external prefix + should be advertised. When this value is set to 0.0.0.0 then + traffic should be forwarded to the LSA's originator"; + } + + leaf external-route-tag { + type uint32; + description + "An opaque tag that set by the LSA originator to carry + information relating to the external route"; + } + } + + grouping ospfv2-lsdb-asexternal-lsa-state { + description + "Parameters for the AS External LSA"; + + leaf mask { + type uint8 { + range "0..32"; + } + description + "The subnet mask for the advertised destination"; + } + + leaf metric-type { + type enumeration { + enum "TYPE_1" { + description + "When the metric of a prefix is specified as Type 1 + then it is considered to be expressed in the same units as + the link-state metrics carried in OSPF. That is to say + that the metric advertised is directly compared to the + internal cost"; + } + enum "TYPE_2" { + description + "When the metric of a prefix is specified as Type 2 then + it is considered to be expressed as a cost in addition to + that of the link-state metric to the advertising router. + That is to say that the metric is considered to be the + cost to the advertising router plus the advertised metric + for the external entity"; + } + } + description + "The type of metric included within the AS External LSA."; + } + + leaf metric { + type oc-ospf-types:ospf-metric; + description + "The cost to reach the external network specified. The exact + interpretation of this cost is dependent on the type of + metric specified"; + } + + uses ospfv2-lsdb-asexternal-lsa-common-parameters; + } + + grouping ospfv2-lsdb-asexternal-tos-state { + description + "Per-TOS parameters for the AS External LSA"; + + uses ospfv2-lsdb-asexternal-lsa-common-parameters; + uses ospfv2-lsdb-common-tos-metric; + } + + grouping ospfv2-lsdb-nssa-external-lsa-state { + description + "Operational state parameters specific to the NSSA External + LSA"; + + leaf propagate { + type boolean; + description + "When this bit is set to true, an NSSA border router will + translate a Type 7 LSA (NSSA External) to a Type 5 LSA + (AS External)."; + reference "RFC3101, Section 2.3"; + } + } + + grouping ospfv2-lsdb-opaque-lsa-state { + description + "Operational state parameters specific to an Opaque LSA"; + + leaf scope { + type enumeration { + enum LINK { + description + "The scope of the LSA is the current link. The LSA + is not flooded beyond the local network. This + enumeration denotes a Type 9 LSA."; + } + enum AREA { + description + "The scope of the LSA is the local area. The LSA + is not flooded beyond the area of origin. This + enumeration denotes a Type 10 LSA."; + } + enum AS { + description + "The scope of the LSA is the local autonomous + system (AS). The flooding domain is the same + as a Type 5 LSA - it is not flooded into + stub areas or NSSAs. This enumeration denotes a + Type 11 LSA."; + } + } + description + "The scope of the opaque LSA. The type of the LSA + indicates its scope - the value of this leaf + determines both the flooding domain, and the type + of the LSA."; + } + + leaf type { + type identityref { + base "oc-ospf-types:OSPF_OPAQUE_LSA_TYPE"; + } + description + "The Opaque Type of the LSA. This value is used to + indicate the type of data carried by the opaque LSA"; + } + } + + grouping ospfv2-lsdb-opaque-lsa-te-tlv-state { + description + "The contents of the Traffic Engineering LSA"; + + leaf type { + type identityref { + base "oc-ospf-types:OSPF_TE_LSA_TLV_TYPE"; + } + description + "The type of TLV within the Traffic Engineering LSA"; + } + } + + grouping ospfv2-lsdb-opaque-te-unknown-state { + description + "The contents of the unknown TLV within the Traffic Engineering LSA"; + + uses ospfv2-lsdb-common-unknown-tlv; + } + + grouping ospfv2-lsdb-opaque-te-link-state { + description + "The contents of the sub-TLVs of a Traffic Engineering LSA Link TLV"; + + leaf type { + type union { + type identityref { + base "oc-ospf-types:OSPF_TE_LINK_TLV_TYPE"; + } + type enumeration { + enum UNKNOWN { + description + "The sub-TLV received in the LSA is unknown to the local + system"; + } + } + } + description + "The sub-TLV type specified in the Link TLV. When the value is + known by the local system, a canonical name of the sub-TLV is utilised + - the special UNKNOWN value indicates that the system did not + support the sub-TLV type received in the LSA."; + } + + leaf unknown-type { + when "../type = 'UNKNOWN'" { + description + "Include the unknown type field only when the sub-TLV was not + known to the local system"; + } + + type uint16; + description + "The value of the type field of an unknown sub-TLV"; + } + + leaf unknown-value { + when "../type = 'UNKNOWN'" { + description + "Include the unknown value field only when the sub-TLV was not + known to the local system"; + } + + type binary; + description + "The binary contents of the unknown TLV"; + } + + leaf link-type { + when "../type = 'TE_LINK_TYPE'" { + description + "Include the link-type field only when the sub-TLV type was a TE + link type"; + } + + type enumeration { + enum POINT_TO_POINT { + description + "The link being described by the TE LSA Link sub-TLV is a + point-to-point link to exactly one other system"; + } + enum MULTI_ACCESS { + description + "The link being described by the TE LSA Link sub-TLV is a + multi-access link that supports connectivity to multiple remote + systems"; + } + enum UNKNOWN { + description + "The link type received was unknown to the local system"; + } + } + description + "The type of the link that is being described by the TE LSA Link + sub-TLV"; + } + + leaf link-id { + when "../type = 'TE_LINK_ID'" { + description + "Include the link ID field only when the sub-TLV type was a TE + Link identifier"; + } + + type yang:dotted-quad; + description + "The ID of the remote system. For point-to-point links, this is the + router ID of the neighbor. For multi-access links it is the address + of the designated router."; + } + + leaf-list local-ip-address { + when "../type = 'TE_LINK_LOCAL_IP'" { + description + "Include the local IP address field only when the sub-TLV type was + a local IP address"; + } + + type inet:ipv4-address-no-zone; + description + "The IP address(es) of the local system that correspond to the + specified TE link"; + } + + leaf-list remote-ip-address { + when "../type = 'TE_LINK_REMOTE_IP'" { + description + "Include the remote IP address field only when the sub-TLV type was + a remote IP address"; + } + + type inet:ipv4-address-no-zone; + description + "The IP address(es) of the remote systems that are attached to the + specified TE link"; + } + + leaf metric { + when "../type = 'TE_LINK_METRIC'" { + description + "Include the traffic engineering metric only when the sub-TLV type + is a TE metric"; + } + + type uint32; + description + "The metric of the link that should be used for traffic engineering + purposes. This link may be different than the standard OSPF link + metric."; + } + + leaf maximum-bandwidth { + when "../type = 'TE_LINK_MAXIMUM_BANDWIDTH'" { + description + "Include the traffic engineering metric only when the sub-TLV type + is the maximum bandwidth"; + } + + type oc-types:ieeefloat32; + units "bytes per second"; + description + "The maximum bandwidth of the link. This value reflects the actual + bandwidth of the link expressed asn IEEE 32-bit floating point + number"; + } + + leaf maximum-reservable-bandwidth { + when "../type = 'TE_LINK_MAXIUMUM_RESERVABLE_BANDWIDTH'" { + description + "Include the maximum reservable bandwidth field only when the + sub-TLV type is the maximum reservable bandwidth"; + } + + type oc-types:ieeefloat32; + units "bytes per second"; + description + "The maximum reservable bandwidth for the link. This value represents + the total bandwidth which may be used for traffic engineering + purposes. The value may exceed the maximum-bandwidth value + in cases where the link is oversubscribed. The value is reflected as + a 32-bit IEEE floating-point number"; + } + } + + grouping ospfv2-lsdb-opaque-te-link-unreserved-bw-state { + description + "The per-priority unreserved bandwidth described within the unreserved + bandwidth sub-TLV of the Link TLV of the Traffic Engineering LSA"; + + leaf priority { + type uint8 { + range "0..7"; + } + description + "The priority level being described"; + } + + leaf unreserved-bandwidth { + type oc-types:ieeefloat32; + description + "The unreserved bandwidth for at priority level P, where P is + equal to the priority of the current list entry. The reservable + bandwidth at priority P is equal to the sum of the reservable + bandwidth at all levels 0..P."; + } + } + + grouping ospfv2-lsdb-opaque-te-link-admin-group-state { + description + "Per bit administrative group status"; + + leaf bit-index { + type uint8 { + range "0..31"; + } + description + "The index of the bit within the 32-bit administrative group field + of the Administrative Group sub-TLV of the Traffic Engineering LSA"; + } + + leaf set { + type boolean; + default false; + description + "Whether the bit is set within the administrative group field"; + } + } + + grouping ospfv2-lsdb-opaque-te-node-attribute-state { + description + "State parameters relating to the Traffic Engineering Node Attribute + TLV of the Traffic Engineering LSA"; + + leaf type { + type union { + type identityref { + base "oc-ospf-types:TE_NODE_ATTRIBUTE_TLV_TYPE"; + } + type enumeration { + enum UNKNOWN { + description + "The sub-TLV type received within the TE LSA Node Attribute TLV + was unknown the the local system"; + } + } + } + description + "The type of the sub-TLV of the Node Attribute TLV contained within + the TE LSA. If the local system can interpret the value received the + canonical name of the type is utilised, otherwise the special UNKNOWN + value is used"; + } + + leaf-list local-ipv4-addresses { + when "../type = 'NODE_IPV4_LOCAL_ADDRESS'" { + description + "Include the local IPv4 addresses when the type of the sub-TLV + indicates that this is the contained data"; + } + + type inet:ipv4-prefix; + description + "The local IPv4 addresses of the node expressed in CIDR notation"; + } + + leaf-list local-ipv6-addresses { + when "../type = 'NODE_LOCAL_IPV6_ADDRESS'" { + description + "Include the local IPv6 addresses when the type of the sub-TLV + indicfates that this is the contained data"; + } + + type inet:ipv6-prefix; + description + "The local IPv6 addreses of the node"; + } + } + + grouping ospfv2-lsdb-opaque-te-router-address-state { + description + "The contents of the value field of the Router Address TLV of the + Traffic Engineering LSA."; + + leaf address { + type inet:ipv4-address-no-zone; + description + "A stable IP address of the advertising router, that is always + reachable when the router is connected to the network. Typically this + is a loopback address."; + } + } + + grouping ospfv2-lsdb-opaque-grace-state { + description + "State parameters on a per-TLV basis of the Grace LSA"; + + leaf type { + type identityref { + base "oc-ospf-types:GRACE_LSA_TLV_TYPES"; + } + description + "The type of the sub-TLV received within the Grace LSA"; + } + + leaf period { + when "../type = 'GRACE_PERIOD'" { + description + "Include the period specification when the sub-TLV type is indicated + to be of this type"; + } + + type uint32; + units seconds; + description + "The number of seconds that the router's neighbors should advertise + the local system as fully adjacent regardless of database + synchronization state"; + reference "RFC3623"; + } + + leaf reason { + when "../type = 'GRACE_RESTART_REASON'" { + description + "Include the restart reason when the sub-TLV type specifies this + is included"; + } + + type enumeration { + enum UNKNOWN { + value 0; + description + "The reason for the graceful restart is unknown"; + } + enum SOFTWARE_RESTART { + value 1; + description + "The local system is restarting due to a software component + restart"; + } + enum SOFTWARE_RELOAD_UPGRADE { + value 2; + description + "The local system is restarting due to a software reload or + upgrade"; + } + enum CONTROL_PROCESSOR_SWITCH { + value 3; + description + "The local system is restarting due to a switch to a redundant + control plane element"; + } + } + description + "The reason for the graceful restart event occurring, as advertised + by the restarting system"; + reference "RFC3623"; + } + + leaf ip-interface-address { + when "../type = 'GRACE_IP_INTERFACE_ADDRESS'" { + description + "Include the interface address when the sub-TLV type specifies that + it is included"; + } + + type inet:ipv4-address-no-zone; + description + "The restarting system's IP address on the interface via which the + Grace LSA is being advertised."; + } + } + + grouping ospfv2-lsdb-opaque-ri-state { + description + "State parameters of the Router Information Opaque LSA"; + + leaf type { + type union { + type identityref { + base "oc-ospf-types:RI_LSA_TLV_TYPES"; + } + type enumeration { + enum UNKNOWN { + description + "The TLV received within the RI LSA is unknown"; + } + } + } + description + "The type of sub-TLV of the Router Information opaque LSA"; + } + } + + grouping ospfv2-lsdb-opaque-ri-informational-state { + description + "State parmaeters of the Router Information Informational Capabilities + sub-TLV"; + + leaf graceful-restart-capable { + type boolean; + default false; + description + "When this leaf is set to true, the advertising system is capable of + OSPF graceful restart."; + } + + leaf graceful-restart-helper { + type boolean; + default false; + description + "When this leaf is set to true, the advertising system is capable of + being a helper for OSPF graceful restart"; + } + + leaf stub-router { + type boolean; + default false; + description + "When this leaf is set to true, the advertising system is able to + advertise its status as a stub router"; + reference "RFC6987"; + } + + leaf traffic-engineering { + type boolean; + default false; + description + "When this leaf is set to true, the advertising system supports OSPFv2 + traffic engineering capabilities"; + } + + leaf point-to-point-over-lan { + type boolean; + default false; + description + "When this leaf is set to true, the advertising system supports treating + LAN adjacencies as though they were point to point"; + reference "RFC5309"; + } + + leaf experimental-te { + type boolean; + default false; + description + "When this leaf is set to ture, the advertising system supports the + experimental extensions to OSPF for TE described in RFC4973"; + reference "RFC4973"; + } + } + + grouping ospfv2-lsdb-opaque-ri-admintag-state { + description + "State parameters relating to the administrative tags specified for + a node within the RI LSA"; + + leaf-list administrative-tags { + type uint32; + description + "The set of administrative tags assigned to the local system by + the network operator. The meaning of these tags is opaque to OSPF + - and their interpretation is per-domain specific"; + reference "RFC7777"; + } + } + + grouping ospfv2-lsdb-opaque-ri-unknown-state { + description + "State parameters relating to an unknown TLV within the RI LSA"; + uses ospfv2-lsdb-common-unknown-tlv; + } + + grouping ospfv2-lsdb-opaque-ri-sralgo-state { + description + "State parameters relating to the SR Algorithms TLV of the RI LSA"; + + leaf-list supported-algorithms { + type identityref { + base "oc-ospf-types:SR_ALGORITHM"; + } + description + "A list of the algorithms that are supported for segment routing + by the advertising system"; + } + } + + grouping ospfv2-lsdb-opaque-ri-srrange-tlv-state { + description + "State parameters relating to the SR SID/Label range TLV of the + RI LSA"; + + leaf type { + type union { + type identityref { + base "oc-ospf-types:OSPF_RI_SR_SID_LABEL_TLV_TYPES"; + } + type enumeration { + enum UNKNOWN { + description + "The type of the sub-TLV advertised with the SID/Label range + TLV of the RI LSA is unknown to the receiving system"; + } + } + } + description + "The type of the sub-TLV received by the local system within the + SR SID/Label Range TLV of the RI LSA"; + } + + leaf range-size { + type uint32 { + range "0..16777216"; + } + description + "The number of entries within the range being described within the + SID/Label range TLV"; + } + } + + grouping ospfv2-lsdb-opaque-ri-srrange-sid-label-tlv-state { + description + "State parameters relating to the SR SID/Label sub-TLV of the SR SID/Label + range TLV of the RI LSA"; + + leaf entry-type { + type oc-ospf-types:sr-sid-type; + description + "The type of entry that is contained within the sub-TLV. The range may + be represented as either a range of MPLS labels, or numeric segment + identifiers"; + } + + leaf first-value { + type uint32; + description + "The first value within the SRGB range being specified. The type of the + entry is determined based on the value of the entry type as this value + may represent either a segment identifier or an MPLS label."; + } + } + + grouping ospfv2-lsdb-extended-prefix-state { + description + "State parameters relating to an Extended Prefix LSA"; + + leaf route-type { + type enumeration { + enum UNSPECIFIED { + value 0; + description + "The prefix described in the extended prefix LSA is of an + unspecified type"; + } + enum INTRA_AREA { + value 1; + description + "The prefix described in the extended prefix LSA is an intra-area + prefix for the advertising system"; + } + enum INTER_AREA { + value 3; + description + "The prefix described in the extended prefix LSA is an inter-area + prefix for the advertising system"; + } + enum AS_EXTERNAL { + value 5; + description + "The prefix described in the extended prefix LSA is external to the + autonomous system of the advertising system"; + } + enum NSSA_EXTERNAL { + value 7; + description + "The prefix described in the extended prefix LSA externally + advertised from an NSSA area visibile to the advertising system"; + } + } + description + "The type of prefix that is contained within the Extended Prefix LSA. + The information contained in sub-TLVs of the attribute is applicable + regardless of this value."; + } + + uses ospfv2-lsdb-common-prefix-properties; + + leaf attached { + type boolean; + default false; + description + "If this value is set to true, the prefix being advertised was + generated by an ABR for an inter-area prefix. The value corresponds + to the A-flag of the flags field of the Extended Prefix LSA"; + } + + leaf node { + type boolean; + default false; + description + "If this value is set to true, the prefix being advertised represents + the advertising router. Typically, the prefix within the LSA is + expected to be globally-reachable prefix associated with a loopback + interface"; + } + + leaf prefix { + type inet:ipv4-address-no-zone; + description + "The IPv4 prefix contained within the extended prefix LSA"; + } + } + + grouping ospfv2-lsdb-extended-link-state { + description + "State parameters related to an extended link LSA"; + + leaf link-type { + type identityref { + base "oc-ospf-types:OSPFV2_ROUTER_LINK_TYPE"; + } + description + "The type of link with which extended attributes are associated"; + } + + uses ospfv2-lsdb-common-link-specification; + + } + + grouping ospfv2-lsdb-extended-link-tlv-state { + description + "State parameters relating to a sub-TLV of the extended link LSA"; + + leaf type { + type identityref { + base "oc-ospf-types:OSPFV2_EXTENDED_LINK_SUBTLV_TYPE"; + } + description + "The type of the sub-TLV contained within the extended link TLV"; + } + } + + grouping ospfv2-lsdb-extended-prefix-tlv-state { + description + "State parameters related to a sub-TLV of an Extended Prefix LSA"; + + leaf type { + type identityref { + base "oc-ospf-types:OSPFV2_EXTENDED_PREFIX_SUBTLV_TYPE"; + } + description + "The type of sub-TLV as indicated by the Extended Prefix LSA"; + } + } + + grouping ospfv2-lsdb-extended-prefix-range-state { + description + "Parameters of the Extended Prefix Range SubTLV"; + + uses ospfv2-lsdb-common-prefix-properties; + + leaf range-size { + type uint16; + description + "The number of prefixes that are covered by the advertisement."; + } + + leaf inter-area { + type boolean; + default false; + description + "When this leaf is set to true, then the prefix range is inter-area - + the flag is set by the ABR that advertises the Extended Prefix Range + TLV"; + } + + leaf prefix { + type inet:ipv4-prefix; + description + "The first prefix in the range of prefixes being described by the + extended prefix range sub-TLV"; + } + } + + grouping ospfv2-lsdb-extended-prefix-prefix-sid-state { + description + "Parameters of the Prefix-SID sub-TLV"; + + leaf no-php { + type boolean; + default false; + description + "If this leaf is set the advertising system has indicated that the + prefix SID must not be popped before delivering packets to it"; + } + + leaf mapping-server { + type boolean; + default false; + description + "If this leaf is set the SID was advertised by a Segment Routing + mapping server"; + } + + leaf explicit-null { + type boolean; + default false; + description + "If this leaf is set, the advertising system has requested that the + prefix SID value should be replaced with the explicit null label + value"; + } + + leaf sid-value-type { + type enumeration { + enum ABSOLUTE { + description + "The SID contained in the Prefix-SID sub-TLV is an absolute + value"; + } + enum INDEX { + description + "The SID contained in the Prefix-SID sub-TLV is an index to the + SRGB"; + } + } + description + "Specifies the type of the value specified within the Prefix SID + sub-TLV - in particular, whether the value is an index or an + absolute value. This value corresponds with the V-flag of the Prefix + SID sub-TLV"; + } + + leaf sid-scope { + type enumeration { + enum LOCAL { + description + "The value of the SID is + significant only to the advertising system"; + } + enum GLOBAL { + description + "The value of the SID is globally significant"; + } + } + description + "Specifies the scope of the SID advertisement within the Prefix SID + sub-TLV. The scope of the SID is independent of whether the SID + contained is an index, or an absolute value"; + } + + leaf multi-topology-identifier { + type uint8; + description + "The identifier for the topology to which the Prefix SID relates. The + value of this leaf is a MT-ID as defined in RFC4915"; + } + + leaf algorithm { + type uint8; + description + "The algorithm that computes the path associated with the Prefix SID"; + } + + leaf sid-value { + type uint32; + description + "The value of the Prefix SID. The meaning of this value is dependent + upon the type of SID, and its scope. The value contained is either a + 32-bit value indicating the index of the SID, or a 24-bit label where + the 20 right-most bits are used for encoding the label value"; + } + } + + grouping ospfv2-lsdb-extended-prefix-sid-label-binding-state { + description + "State parameters relating to the extended prefix SID SID/Label binding + sub-TLV"; + + leaf mirroring { + type boolean; + default false; + description + "When set to true, this indicates that the SID/Label Binding sub-TLV + entries contained within this TLV are indicative of a mirroring + context"; + } + + leaf multi-topology-identifier { + type uint8; + description + "The identifier for the topology to which the SID/Label Binding + sub-TLV is associated. The value of this leaf is a MT-ID as defined + in RFC4915"; + } + + leaf weight { + type uint8; + description + "The weight of the advertised binding when used for load-balancing + purposes"; + } + } + + grouping ospfv2-lsdb-extended-prefix-sid-label-binding-tlv-state { + description + "State parameters directly relating to the SID/Label Binding TLV"; + + leaf type { + type identityref { + base + "oc-ospf-types:OSPFV2_EXTENDED_PREFIX_SID_LABEL_BINDING_SUBTLV_TYPE"; + } + description + "The type of sub-TLV that is being contained within the SID/Label + sub-TLV"; + } + } + + grouping ospfv2-lsdb-extprefix-sid-label-binding-state { + description + "State parameters relating to the SID/Label binding sub-TLV of the + SID/Label/Binding TLV"; + + uses ospfv2-lsdb-common-sr-sid-spec; + } + + grouping ospfv2-lsdb-extprefix-sid-label-ero-metric-state { + description + "State parameters relating to the ERO Metric Sub-TLV of the SID/Label + Binding TLV"; + + leaf metric { + type uint32; + description + "The metric representing the aggregate IGP or TE path cost for the + binding included within the SID/Label Binding TLV"; + } + } + + grouping ospfv2-lsdb-extprefix-sid-lbl-ero-path-seg-state { + description + "State parameters relating to the a segment included within the + ERO Path Sub-TLV of the SID/Label Binding TLV"; + + leaf type { + type identityref { + base "oc-ospf-types:OSPFV2_EXTPREFIX_BINDING_ERO_PATH_SEGMENT_TYPE"; + } + description + "The type of the segment being specified as part of the ERO"; + } + + leaf loose { + type boolean; + default false; + description + "If this leaf is set the segment is identifier as a loose path + segment, otherwise the path strictly follows the path specified"; + } + } + + grouping ospfv2-lsdb-extprefix-sid-lbl-ero-ipv4-state { + description + "State parameters relating to an IPv4 address segment included within + the ERO path"; + + leaf address { + type inet:ipv4-address-no-zone; + description + "The IPv4 address of the hop within the ERO"; + } + } + + grouping ospfv2-lsdb-extprefix-sid-lbl-ero-unnum-state { + description + "State parameters relating to an unnumbered hop within the ERO path"; + + leaf router-id { + type inet:ipv4-address-no-zone; + description + "The IPv4 router identtifier of the remote system"; + } + + leaf interface-id { + type uint32; + description + "The identifier assigned to the link by the remote system"; + } + } + + grouping ospfv2-lsdb-extended-link-adj-sid-state { + description + "State parameters relating to the Adjacency SID sub-TLV of the + Extended Link LSA"; + + leaf backup { + type boolean; + default false; + description + "When this flag is set, it indicates that the adjacency SID refers to + an adjacency which is eligible for protection"; + } + + leaf group { + type boolean; + default false; + description + "When this flag is set it indicates that the adjacency SID refers to + a group of adjacencies that have a common value"; + } + + uses ospfv2-lsdb-common-sr-sid-spec; + + leaf weight { + type uint8; + description + "The weight of the Adjacency SID when used for load-balancing"; + } + + leaf multi-topology-identifier { + type uint8; + description + "The multi-topology identifier with which the adjacency SID is + associated"; + } + } + + grouping ospfv2-lsdb-structure { + description + "Structural grouping for per-area LSDB contents"; + + container lsdb { + // Top-level RO, if this were ever to become writeable then + // the state containers lower down need config false added + config false; + description + "The link-state database for the OSPFv2 area"; + + container state { + description + "Operational state parameters relating to the OSPFv2 + area"; + + uses ospfv2-lsdb-area-state; + } + + container lsa-types { + description + "Enclosing container for a list of LSA types that are + in the LSDB for the specified area"; + + list lsa-type { + key "type"; + + description + "List of LSA types in the LSDB for the specified + area"; + + leaf type { + type leafref { + path "../state/type"; + } + description + "A reference for the LSA type being described within + the LSDB"; + } + + container state { + description + "Top-level operational state parameters relating to + an LSA within the area"; + uses ospfv2-lsdb-area-lsa-type-state; + } + + container lsas { + description + "Enclosing container for a list of the LSAs of + the specified type received by the system"; + + list lsa { + key "link-state-id"; + + description + "List of the LSAs of a specified type in the + LSDB for the specified area"; + + leaf link-state-id { + type leafref { + path "../state/link-state-id"; + } + description + "Reference to the Link State ID of the LSA"; + } + + container state { + description + "Operational state parameters relating to all + LSA types"; + uses ospfv2-lsdb-area-lsa-state; + } + + uses ospfv2-lsdb-router-lsa-structure { + when "../../../state/type = 'ROUTER_LSA'" { + description + "Include the router LSA hierarchy solely when + that LSA type is being described"; + } + } + + uses ospfv2-lsdb-network-lsa-structure { + when "../../../state/type = 'NETWORK_LSA'" { + description + "Include the network LSA hierarchy solely when + that LSA type is being described"; + } + } + + uses ospfv2-lsdb-summary-lsa-structure { + // rjs TODO: check this syntax + when "../../../state/type = " + + "'SUMMARY_IP_NETWORK_LSA' or " + + "../../../state/type = 'SUMMARY_ASBR_LSA'" { + description + "Include the summary LSA hierarchy solely when + that LSA type is being described"; + } + } + + uses ospfv2-lsdb-asexternal-lsa-structure { + when "../../../state/type = 'AS_EXTERNAL_LSA'" { + description + "Include the AS external LSA hierarchy solely when + that LSA type is being described"; + } + } + + uses ospfv2-lsdb-nssa-external-lsa-structure { + when "../../../state/type = 'NSSA_AS_EXTERNAL_LSA'" { + description + "Include the NSSA External LSA hierarchy solely + when that LSA type is being described"; + } + } + + uses ospfv2-lsdb-opaque-lsa-structure { + when "../../../state/type = 'OSPFV2_LINK_SCOPE_OPAQUE_LSA' + or ../../../state/type = 'OSPFV2_AREA_SCOPE_OPAQUE_LSA' + or ../../../state/type = 'OSPFV2_AS_SCOPE_OPAQUE_LSA'" { + description + "Include the Opaque LSA structure when type of entry + being described in an opaque LSA"; + } + } + } + } + } + } + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-ospfv2.yang b/vendor/cisco/nx/9.3-14/openconfig-ospfv2.yang new file mode 100644 index 000000000..fbfcc139f --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-ospfv2.yang @@ -0,0 +1,92 @@ +module openconfig-ospfv2 { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/ospfv2"; + + prefix "oc-ospfv2"; + + // import some basic types + //import ietf-inet-types { prefix inet; } + import openconfig-extensions { prefix "oc-ext"; } + + // Include submodules + // Global: All global context groupings; + include openconfig-ospfv2-global; + // Area: Config/opstate for an area + include openconfig-ospfv2-area; + // Area Interface: Config/opstate for an Interface + include openconfig-ospfv2-area-interface; + // LSDB: Operational state model covering the LSDB + include openconfig-ospfv2-lsdb; + // Common: Content included in >1 context + include openconfig-ospfv2-common; + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "An OpenConfig model for Open Shortest Path First (OSPF) + version 2"; + + oc-ext:openconfig-version "0.1.1"; + + revision "2017-08-24" { + description + "Minor formatting fixes."; + reference "0.1.1"; + } + + revision "2017-02-28"{ + description + "Initial public release of OSPFv2"; + reference "0.1.0"; + } + + revision "2016-06-24" { + description + "Initial revision"; + reference "0.0.1"; + } + + grouping ospfv2-top { + description + "Top-level OSPF configuration and operational state"; + + container ospfv2 { + description + "Top-level configuration and operational state for + Open Shortest Path First (OSPF) v2"; + + uses ospfv2-global-structural; + + container areas { + description + "Configuration and operational state relating to an + OSPFv2 area."; + + list area { + key "identifier"; + + description + "The OSPFv2 areas within which the local system exists"; + + leaf identifier { + type leafref { + path "../config/identifier"; + } + description + "A reference to the identifier for the area."; + } + + uses ospfv2-area-structure; + } + } + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-packet-match-types.yang b/vendor/cisco/nx/9.3-14/openconfig-packet-match-types.yang new file mode 100644 index 000000000..1b93d5205 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-packet-match-types.yang @@ -0,0 +1,309 @@ +module openconfig-packet-match-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/packet-match-types"; + + prefix "oc-pkt-match-types"; + + // import some basic types + import openconfig-inet-types { prefix oc-inet; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines common types for use in models requiring + data definitions related to packet matches."; + + oc-ext:openconfig-version "1.0.2"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "1.0.2"; + } + + revision "2018-04-15" { + description + "Corrected description and range for ethertype typedef"; + reference "1.0.1"; + } + + revision "2017-05-26" { + description + "Separated IP matches into AFs"; + reference "1.0.0"; + } + + revision "2016-08-08" { + description + "OpenConfig public release"; + reference "0.2.0"; + } + + revision "2016-04-27" { + description + "Initial revision"; + reference "TBD"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + + // extension statements + + // feature statements + + // identity statements + + + //TODO: should replace this with an official IEEE module + // when available. Only a select number of types are + // defined in this identity. + identity ETHERTYPE { + description + "Base identity for commonly used Ethertype values used + in packet header matches on Ethernet frames. The Ethertype + indicates which protocol is encapsulated in the Ethernet + payload."; + reference + "IEEE 802.3"; + } + + identity ETHERTYPE_IPV4 { + base ETHERTYPE; + description + "IPv4 protocol (0x0800)"; + } + + identity ETHERTYPE_ARP { + base ETHERTYPE; + description + "Address resolution protocol (0x0806)"; + } + + identity ETHERTYPE_VLAN { + base ETHERTYPE; + description + "VLAN-tagged frame (as defined by IEEE 802.1q) (0x8100). Note + that this value is also used to represent Shortest Path + Bridging (IEEE 801.1aq) frames."; + } + + identity ETHERTYPE_IPV6 { + base ETHERTYPE; + description + "IPv6 protocol (0x86DD)"; + } + + identity ETHERTYPE_MPLS { + base ETHERTYPE; + description + "MPLS unicast (0x8847)"; + } + + identity ETHERTYPE_LLDP { + base ETHERTYPE; + description + "Link Layer Discovery Protocol (0x88CC)"; + } + + identity ETHERTYPE_ROCE { + base ETHERTYPE; + description + "RDMA over Converged Ethernet (0x8915)"; + } + + + //TODO: should replace this with an official IANA module when + //available. Only a select set of protocols are defined with + //this identity. + identity IP_PROTOCOL { + description + "Base identity for commonly used IP protocols used in + packet header matches"; + reference + "IANA Assigned Internet Protocol Numbers"; + } + + identity IP_TCP { + base IP_PROTOCOL; + description + "Transmission Control Protocol (6)"; + } + + identity IP_UDP { + base IP_PROTOCOL; + description + "User Datagram Protocol (17)"; + } + + identity IP_ICMP { + base IP_PROTOCOL; + description + "Internet Control Message Protocol (1)"; + } + + identity IP_IGMP { + base IP_PROTOCOL; + description + "Internet Group Membership Protocol (2)"; + } + + identity IP_PIM { + base IP_PROTOCOL; + description + "Protocol Independent Multicast (103)"; + } + + identity IP_RSVP { + base IP_PROTOCOL; + description + "Resource Reservation Protocol (46)"; + } + + identity IP_GRE { + base IP_PROTOCOL; + description + "Generic Routing Encapsulation (47)"; + } + + identity IP_AUTH { + base IP_PROTOCOL; + description + "Authentication header, e.g., for IPSEC (51)"; + } + + identity IP_L2TP { + base IP_PROTOCOL; + description + "Layer Two Tunneling Protocol v.3 (115)"; + } + + + + identity TCP_FLAGS { + description + "Common TCP flags used in packet header matches"; + reference + "IETF RFC 793 - Transmission Control Protocol + IETF RFC 3168 - The Addition of Explicit Congestion + Notification (ECN) to IP"; + } + + identity TCP_SYN { + base TCP_FLAGS; + description + "TCP SYN flag"; + } + + identity TCP_FIN { + base TCP_FLAGS; + description + "TCP FIN flag"; + } + + identity TCP_RST { + base TCP_FLAGS; + description + "TCP RST flag"; + } + + identity TCP_PSH { + base TCP_FLAGS; + description + "TCP push flag"; + } + + identity TCP_ACK { + base TCP_FLAGS; + description + "TCP ACK flag"; + } + + identity TCP_URG { + base TCP_FLAGS; + description + "TCP urgent flag"; + } + + identity TCP_ECE { + base TCP_FLAGS; + description + "TCP ECN-Echo flag. If the SYN flag is set, indicates that + the TCP peer is ECN-capable, otherwise indicates that a + packet with Congestion Experienced flag in the IP header + is set"; + } + + identity TCP_CWR { + base TCP_FLAGS; + description + "TCP Congestion Window Reduced flag"; + } + + // typedef statements + + typedef port-num-range { + type union { + type string { + pattern '^(6[0-5][0-5][0-3][0-5]|[0-5]?[0-9]?[0-9]?[0-9]?' + + '[0-9]?)\.\.(6[0-5][0-5][0-3][0-5]|[0-5]?[0-9]?[0-9]?' + + '[0-9]?[0-9]?)$'; + } + type oc-inet:port-number; + type enumeration { + enum ANY { + description + "Indicates any valid port number (e.g., wildcard)"; + } + } + } + description + "Port numbers may be represented as a single value, + an inclusive range as .., or as ANY to + indicate a wildcard."; + } + + typedef ip-protocol-type { + type union { + type uint8 { + range 0..254; + } + type identityref { + base IP_PROTOCOL; + } + } + description + "The IP protocol number may be expressed as a valid protocol + number (integer) or using a protocol type defined by the + IP_PROTOCOL identity"; + } + + typedef ethertype-type { + type union { + type uint16 { + range 1536..65535; + } + type identityref { + base ETHERTYPE; + } + } + description + "The Ethertype value may be expressed as a 16-bit number in + decimal notation, or using a type defined by the + ETHERTYPE identity"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-packet-match.yang b/vendor/cisco/nx/9.3-14/openconfig-packet-match.yang new file mode 100644 index 000000000..510bc5768 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-packet-match.yang @@ -0,0 +1,371 @@ +module openconfig-packet-match { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/header-fields"; + + prefix "oc-pkt-match"; + + // import some basic types + import openconfig-inet-types { prefix oc-inet; } + import openconfig-yang-types { prefix oc-yang; } + import openconfig-packet-match-types { prefix oc-pkt-match-types; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines data related to packet header fields + used in matching operations, for example in ACLs. When a + field is omitted from a match expression, the effect is a + wildcard ('any') for that field."; + + oc-ext:openconfig-version "1.1.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "1.1.1"; + } + + revision "2017-12-15" { + description + "Add MPLS packet field matches"; + reference "1.1.0"; + } + + revision "2017-05-26" { + description + "Separated IP matches into AFs"; + reference "1.0.0"; + } + + revision "2016-08-08" { + description + "OpenConfig public release"; + reference "0.2.0"; + } + + revision "2016-04-27" { + description + "Initial revision"; + reference "TBD"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + + // Physical Layer fields + // ethernet-header + grouping ethernet-header-config { + description + "Configuration data of fields in Ethernet header."; + + leaf source-mac { + type oc-yang:mac-address; + description + "Source IEEE 802 MAC address."; + } + + leaf source-mac-mask { + type oc-yang:mac-address; + description + "Source IEEE 802 MAC address mask."; + } + + leaf destination-mac { + type oc-yang:mac-address; + description + "Destination IEEE 802 MAC address."; + } + + leaf destination-mac-mask { + type oc-yang:mac-address; + description + "Destination IEEE 802 MAC address mask."; + } + + leaf ethertype { + type oc-pkt-match-types:ethertype-type; + description + "Ethertype field to match in Ethernet packets"; + } + } + + grouping ethernet-header-state { + description + "State information of fields in Ethernet header."; + } + + grouping ethernet-header-top { + description + "Top level container for fields in Ethernet header."; + + container l2 { + description + "Ethernet header fields"; + + container config { + description + "Configuration data"; + uses ethernet-header-config; + } + + container state { + config false; + description + "State Information."; + uses ethernet-header-config; + uses ethernet-header-state; + } + } + } + + grouping mpls-header-top { + description + "Top-level container for fields in an MPLS header."; + + container mpls { + description + "MPLS header fields"; + + container config { + description + "Configuration parameters relating to fields within + the MPLS header."; + uses mpls-header-config; + } + + container state { + config false; + description + "Operational state parameters relating to fields + within the MPLS header"; + uses mpls-header-config; + } + } + } + + grouping mpls-header-config { + description + "Configuration parameters relating to matches within + MPLS header fields."; + + leaf traffic-class { + type uint8 { + range "0..7"; + } + description + "The value of the MPLS traffic class (TC) bits, + formerly known as the EXP bits."; + } + } + + grouping ip-protocol-fields-common-config { + description + "IP protocol fields common to IPv4 and IPv6"; + + leaf dscp { + type oc-inet:dscp; + description + "Value of diffserv codepoint."; + } + + leaf protocol { + type oc-pkt-match-types:ip-protocol-type; + description + "The protocol carried in the IP packet, expressed either + as its IP protocol number, or by a defined identity."; + } + + leaf hop-limit { + type uint8 { + range 0..255; + } + description + "The IP packet's hop limit -- known as TTL (in hops) in + IPv4 packets, and hop limit in IPv6"; + } + } + + // IP Layer + // ip-protocol-fields + grouping ipv4-protocol-fields-config { + description + "Configuration data of IP protocol fields + for IPv4"; + + leaf source-address { + type oc-inet:ipv4-prefix; + description + "Source IPv4 address prefix."; + } + + leaf destination-address { + type oc-inet:ipv4-prefix; + description + "Destination IPv4 address prefix."; + } + + uses ip-protocol-fields-common-config; + + } + + grouping ipv4-protocol-fields-state { + description + "State information of IP header fields for IPv4"; + } + + grouping ipv4-protocol-fields-top { + description + "IP header fields for IPv4"; + + container ipv4 { + description + "Top level container for IPv4 match field data"; + + container config { + description + "Configuration data for IPv4 match fields"; + uses ipv4-protocol-fields-config; + } + + container state { + config false; + description + "State information for IPv4 match fields"; + uses ipv4-protocol-fields-config; + uses ipv4-protocol-fields-state; + } + } + } + + grouping ipv6-protocol-fields-config { + description + "Configuration data for IPv6 match fields"; + + leaf source-address { + type oc-inet:ipv6-prefix; + description + "Source IPv6 address prefix."; + } + + leaf source-flow-label { + type oc-inet:ipv6-flow-label; + description + "Source IPv6 Flow label."; + } + + leaf destination-address { + type oc-inet:ipv6-prefix; + description + "Destination IPv6 address prefix."; + } + + leaf destination-flow-label { + type oc-inet:ipv6-flow-label; + description + "Destination IPv6 Flow label."; + } + + uses ip-protocol-fields-common-config; + } + + grouping ipv6-protocol-fields-state { + description + "Operational state data for IPv6 match fields"; + } + + grouping ipv6-protocol-fields-top { + description + "Top-level grouping for IPv6 match fields"; + + container ipv6 { + description + "Top-level container for IPv6 match field data"; + + container config { + description + "Configuration data for IPv6 match fields"; + + uses ipv6-protocol-fields-config; + } + + container state { + + config false; + + description + "Operational state data for IPv6 match fields"; + + uses ipv6-protocol-fields-config; + uses ipv6-protocol-fields-state; + } + } + } + + // Transport fields + grouping transport-fields-config { + description + "Configuration data of transport-layer packet fields"; + + leaf source-port { + type oc-pkt-match-types:port-num-range; + description + "Source port or range"; + } + + leaf destination-port { + type oc-pkt-match-types:port-num-range; + description + "Destination port or range"; + } + + leaf-list tcp-flags { + type identityref { + base oc-pkt-match-types:TCP_FLAGS; + } + description + "List of TCP flags to match"; + } + } + + grouping transport-fields-state { + description + "State data of transport-fields"; + } + + grouping transport-fields-top { + description + "Destination transport-fields top level grouping"; + + container transport { + description + "Transport fields container"; + + container config { + description + "Configuration data"; + uses transport-fields-config; + } + + container state { + config false; + description + "State data"; + uses transport-fields-config; + uses transport-fields-state; + } + } + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-pf-forwarding-policies.yang b/vendor/cisco/nx/9.3-14/openconfig-pf-forwarding-policies.yang new file mode 100644 index 000000000..48e9b19f5 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-pf-forwarding-policies.yang @@ -0,0 +1,264 @@ +submodule openconfig-pf-forwarding-policies { + belongs-to openconfig-policy-forwarding { + prefix "oc-pf"; + } + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-packet-match { prefix "oc-pmatch"; } + import ietf-yang-types { prefix "yang"; } + import ietf-inet-types { prefix "inet"; } + + include openconfig-pf-path-groups; + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This submodule contains configuration and operational state + relating to the definition of policy-forwarding policies."; + + oc-ext:openconfig-version "0.2.0"; + + revision "2017-06-21" { + description + "Amend policy forwarding model based on ACL changes."; + reference "0.2.0"; + } + + revision "2017-02-28" { + description + "Initial public release of policy forwarding."; + reference "0.1.0"; + } + + revision "2016-11-08" { + description + "Initial revision"; + reference "0.0.1"; + } + + grouping pf-forwarding-policy-structural { + description + "Structural grouping defining forwarding policies under the + policy- forwarding module."; + + container policies { + description + "Forwarding policies defined to enact policy-based forwarding + on the local system."; + + list policy { + key "policy-id"; + + description + "A forwarding policy is defined to have a set of match + criteria, allowing particular fields of a packet's header to + be matched, and a set of forwarding actions which determines + how the local system should forward the packet."; + + leaf policy-id { + type leafref { + path "../config/policy-id"; + } + description + "Reference to the identifier for the forwarding-policy."; + } + + container config { + description + "Configuration options relating to the forwarding + policy."; + uses pf-forwarding-policy-config; + } + + container state { + config false; + description + "Operational state parameters relating to the forwarding + policy."; + uses pf-forwarding-policy-config; + } + + container rules { + description + "The criteria that should be matched for a packet to be + forwarded according to the policy action."; + + list rule { + key "sequence-id"; + + description + "A match rule for the policy. In the case that multiple + criteria are specified within a single "; + + leaf sequence-id { + type leafref { + path "../config/sequence-id"; + } + description + "A unique sequence identifier for the match rule."; + } + + container config { + description + "Configuration parameters relating to the match + rule."; + uses pf-forwarding-policy-rule-config; + } + + container state { + config false; + description + "Operational state parameters relating to the match + rule."; + uses pf-forwarding-policy-rule-config; + uses pf-forwarding-policy-rule-state; + } + + uses oc-pmatch:ethernet-header-top; + uses oc-pmatch:ipv4-protocol-fields-top; + uses oc-pmatch:ipv6-protocol-fields-top; + uses oc-pmatch:transport-fields-top; + + container action { + description + "The forwarding policy action to be applied for + packets matching the rule."; + + container config { + description + "Configuration parameters relating to the forwarding + rule's action."; + uses pf-forwarding-policy-action-config; + } + + container state { + config false; + description + "Operational state parameters relating to the + forwarding rule's action."; + uses pf-forwarding-policy-action-config; + } + + } + } + } + } + } + } + + grouping pf-forwarding-policy-config { + description + "Configuration parameters relating to the forwarding policy."; + + leaf policy-id { + type string; + description + "A unique name identifying the forwarding policy. This name is + used when applying the policy to a particular interface."; + } + } + + grouping pf-forwarding-policy-rule-config { + description + "Configuration parameters relating to a policy rule."; + + leaf sequence-id { + type uint32; + description + "Unique sequence number for the policy rule."; + } + } + + grouping pf-forwarding-policy-rule-state { + description + "Operational state parameters relating to a policy rule."; + + leaf matched-pkts { + type yang:counter64; + description + "Number of packets matched by the rule."; + } + + leaf matched-octets { + type yang:counter64; + description + "Bytes matched by the rule."; + } + } + + grouping pf-forwarding-policy-action-config { + description + "Forwarding policy action configuration parameters."; + + leaf discard { + type boolean; + default false; + description + "When this leaf is set to true, the local system should drop + packets that match the rule."; + } + + leaf decapsulate-gre { + type boolean; + default false; + description + "When this leaf is set to true, the local system should remove + the GRE header from the packet matching the rule. Following + the decapsulation it should subsequently forward the + encapsulated packet according to the relevant lookup (e.g., if + the encapsulated packet is IP, the packet should be routed + according to the IP destination)."; + } + + leaf network-instance { + type leafref { + + // We are at: + // $NIROOT/policy-forwarding/policies/ + // policy/rules/rule/action/config/ + // network-instance + path "../../../../../../../../config/name"; + } + description + "When this leaf is set, packets matching the match criteria + for the forwarding rule should be looked up in the + network-instance that is referenced rather than the + network-instance with which the interface is associated. + Such configuration allows policy-routing into multiple + sub-topologies from a single ingress access interface, or + different send and receive contexts for a particular + interface (sometimes referred to as half-duplex VRF)."; + } + + leaf path-selection-group { + type leafref { + // We are at: + // $NIROOT/policy-forwarding/policies/ + // policy/rules/rule/action/config/to-path-group + path "../../../../../../../path-selection-groups/" + + "path-selection-group/config/group-id"; + } + description + "When path-selection-group is set, packets matching the + match criteria for the forwarding rule should be forwarded + only via one of the paths that is specified within the + referenced path-selection-group. The next-hop of the packet + within the routing context should be used to determine between + multiple paths that are specified within the group."; + } + + leaf next-hop { + type inet:ip-address-no-zone; + description + "When an IP next-hop is specified in the next-hop field, + packets matching the match criteria for the forwarding rule + should be forwarded to the next-hop IP address, bypassing any + lookup on the local system."; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-pf-interfaces.yang b/vendor/cisco/nx/9.3-14/openconfig-pf-interfaces.yang new file mode 100644 index 000000000..41ba545e0 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-pf-interfaces.yang @@ -0,0 +1,121 @@ +submodule openconfig-pf-interfaces { + belongs-to openconfig-policy-forwarding { + prefix "oc-pf"; + } + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-interfaces { prefix "oc-if"; } + + include openconfig-pf-forwarding-policies; + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This submodule contains groupings related to the association + between interfaces and policy forwarding rules."; + + oc-ext:openconfig-version "0.2.0"; + + revision "2017-06-21" { + description + "Amend policy forwarding model based on ACL changes."; + reference "0.2.0"; + } + + revision "2017-02-28" { + description + "Initial public release of policy forwarding."; + reference "0.1.0"; + } + + revision "2016-11-08" { + description + "Initial revision"; + reference "0.0.1"; + } + + + grouping pf-interfaces-structural { + description + "Structural grouping for interface to forwarding policy bindings + within the policy-forwarding model."; + + container interfaces { + description + "Configuration and operational state relating policy + forwarding on interfaces."; + + list interface { + key "interface-id"; + + description + "Configuration and operationals state relating to the + relationship between interfaces and policy-based forwarding + rules."; + + leaf interface-id { + type leafref { + path "../config/interface-id"; + } + description + "A reference to the unique identifier for the interface + being referenced by the policy."; + } + + container config { + description + "Configuration parameters relating to an interface to + policy forwarding rule binding."; + + uses pf-interface-config; + } + + container state { + config false; + description + "Operational state parameters relating to an interface to + policy forwarding rule binding."; + + uses pf-interface-config; + } + + uses oc-if:interface-ref; + } + } + } + + grouping pf-interface-config { + description + "Configuration parameters relating to an interface to policy + forwarding rule binding."; + + leaf interface-id { + type oc-if:interface-id; + description + "A unique identifier for the interface."; + } + + leaf apply-forwarding-policy { + type leafref { + // We are at /network-instances/network-instance/ + // policy-forwarding/interfaces/interface/config/ + // apply-forwarding-policy + path "../../../../policies/policy/" + + "config/policy-id"; + } + description + "The policy to be applied on the interface. Packets ingress on + the referenced interface should be compared to the match + criteria within the specified policy, and in the case that + these criteria are met, the forwarding actions specified + applied. These policies should be applied following quality of + service classification, and ACL actions if such entities are + referenced by the corresponding interface."; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-pf-path-groups.yang b/vendor/cisco/nx/9.3-14/openconfig-pf-path-groups.yang new file mode 100644 index 000000000..d97e8dfc9 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-pf-path-groups.yang @@ -0,0 +1,122 @@ +submodule openconfig-pf-path-groups { + belongs-to openconfig-policy-forwarding { + prefix "oc-pf"; + } + + import openconfig-extensions { prefix "oc-ext"; } + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This submodule contains configuration and operational state + relating to path-selection-groups which are used to group + forwarding entities together to be used as policy forwarding + targets."; + + oc-ext:openconfig-version "0.2.0"; + + revision "2017-06-21" { + description + "Amend policy forwarding model based on ACL changes."; + reference "0.2.0"; + } + + revision "2017-02-28" { + description + "Initial public release of policy forwarding."; + reference "0.1.0"; + } + + revision "2016-11-08" { + description + "Initial revision"; + reference "0.0.1"; + } + + grouping pf-path-groups-structural { + description + "Structural grouping containing the definition of path groups + within the context of policy-based forwarding."; + + container path-selection-groups { + description + "Surrounding container for the path selection groups defined + within the policy forwarding model."; + + list path-selection-group { + key "group-id"; + + leaf group-id { + type leafref { + path "../config/group-id"; + } + description + "Reference to a unique identifier for the path selection + group"; + + } + + description + "A path selection group is a set of forwarding resources, + which are grouped as eligible paths for a particular + policy-based forwarding rule. A policy rule may select a + path-selection-group as the egress for a particular type of + traffic (e.g., DSCP value). The system then utilises its + standard forwarding lookup mechanism to select from the + paths that are specified within the group - for IP packets, + the destination IP address is used such that the packet is + routed to the entity within the path-selection-group that + corresponds to the next-hop for the destination IP address + of the packet; for L2 packets, the selection is based on the + destination MAC address."; + + container config { + description + "Configuration parameters relating to the path selection + group."; + uses pf-path-selection-group-config; + } + + container state { + config false; + description + "Operational state parameters relating to the path + selection group."; + uses pf-path-selection-group-config; + } + } + } + } + + grouping pf-path-selection-group-config { + description + "Configuration parameters relating to a path selection group."; + + leaf group-id { + type string; + description + "A unique name for the path-selection-group"; + } + + leaf-list mpls-lsp { + type leafref { + // We are at /network-instances/network-instance/ + // policy-forwarding/path-selection-groups/ + // path-selection-group/config/mpls-lsp + path "../../../../../mpls/lsps/constrained-path/tunnels/" + + "tunnel/config/name"; + } + description + "A set of MPLS constrained-path LSPs which should be + considered for the policy forwarding next-hop. In order to + select between the LSPs within the path-selection-group, the + system should determine which LSP provides the best path to + the next-hop for the routed packet."; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-pim-types.yang b/vendor/cisco/nx/9.3-14/openconfig-pim-types.yang new file mode 100644 index 000000000..a1fc515cf --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-pim-types.yang @@ -0,0 +1,85 @@ +module openconfig-pim-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/pim/types"; + + prefix "oc-pim-types"; + + // import some basic types + import openconfig-extensions { prefix "oc-ext"; } + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines types related to the PIM protocol model."; + + oc-ext:openconfig-version "0.1.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.1.1"; + } + + revision "2018-02-19" { + description + "Initial revision."; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + identity PIM_MODE { + description + "Base identity for the operating modes of Protocol-Independent + Multicast."; + } + + identity PIM_MODE_SPARSE { + base PIM_MODE; + description + "PIM sparse mode (PIM-SM)."; + reference "RFC7761"; + } + + identity PIM_MODE_DENSE { + base PIM_MODE; + description + "PIM dense mode (PIM-DM)."; + reference "RFC3973"; + } + + // typedef statements + + typedef dr-priority-type { + type uint32; + description + "The port's designated router priority. Larger always preferred. + DR Priority is a 32-bit unsigned number, ranges 0-4294967295."; + reference "RFC7761 4.3.1 page 33"; + } + + typedef pim-interval-type { + type uint8 { + range 1..255; + } + units "seconds"; + description + "Interval at which the router sends the PIM message toward the + upstream RPF neighbor."; + reference "RFC7761 4.5 page 44, 4.3.1 page 29"; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-pim.yang b/vendor/cisco/nx/9.3-14/openconfig-pim.yang new file mode 100644 index 000000000..f5faffe9f --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-pim.yang @@ -0,0 +1,481 @@ +module openconfig-pim { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/pim"; + + prefix "oc-pim"; + + // import some basic types/interfaces + import openconfig-pim-types { prefix oc-pim-types; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-acl { prefix oc-acl; } + import openconfig-types { prefix "oc-types"; } + import openconfig-extensions { prefix "oc-ext"; } + import ietf-inet-types { prefix "inet"; } + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "An OpenConfig model for Protocol Independent Multicast (PIM)."; + + oc-ext:openconfig-version "0.2.0"; + + revision "2019-07-09" { + description + "Reindent to two spaces. + Ensure that timeticks64 is consistently expressed in nanoseconds."; + reference "0.2.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.1.1"; + } + + revision "2018-02-09" { + description + "Initial revision."; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + grouping admin-config { + description + "Re-usable grouping to enable or disable a particular feature."; + + leaf enabled { + type boolean; + default false; + description + "When set to true, the functionality within which this + leaf is defined is enabled, when set to false it is + explicitly disabled."; + } + } + + grouping pim-counters-state { + description + "Counters related to PIM messages."; + + leaf hello-messages { + type uint32; + description + "Number of hello messages received."; + reference "RFC7761 4.9.2 page 108"; + } + + leaf join-prune-messages { + type uint32; + description + "Number of join/prune messages received."; + reference "RFC7761 4.5 page 44"; + } + + leaf bootstrap-messages { + type uint32; + description + "Number of bootstrap router messages received."; + reference "RFC7761 3.7 page 12"; + } + } + + grouping pim-interface-config { + description + "Configuration data for PIM on each interface."; + + uses admin-config; + + leaf interface-id { + type oc-if:interface-id; + description + "Reference to an interface on which PIM is enabled."; + } + + leaf mode { + type identityref { + base oc-pim-types:PIM_MODE; + } + description + "PIM mode to use when delivering multicast traffic via this + interface."; + } + + leaf bsr-border { + type boolean; + default false; + description + "When set to true the device will not send bootstrap router + messages over this interface. By default these are transmitted + over all PIM sparse mode (PIM-SM) enabled interfaces."; + } + + leaf border-router { + type boolean; + default false; + description + "When set to true the interface is set as MBR (multicast border + router) and allows multicast traffic from sources that are + outside of the PIM domain."; + } + + + leaf dr-priority { + type oc-pim-types:dr-priority-type; + description + "The designated router priority of this interface. Larger always + preferred."; + } + + leaf join-prune-interval { + type oc-pim-types:pim-interval-type; + description + "Interval at which the router sends the PIM join/prune messages + toward the upstream RPF neighbor."; + } + + leaf hello-interval { + type oc-pim-types:pim-interval-type; + description + "Interval at which the router sends the PIM hello messages."; + } + + leaf dead-timer { + type uint16 { + range 1..65535; + } + description + "Number of missed hello messages after which a neighbor is + expired."; + } + } + + grouping pim-neighbor-state { + description + "PIM neighbor state."; + + leaf neighbor-address { + type inet:ipv4-address; + description + "IPv4 address of neighbor router."; + } + + leaf dr-address { + type inet:ipv4-address; + description + "IPv4 address of designated router."; + } + + leaf neighbor-established { + type oc-types:timeticks64; + description + "This timestamp indicates the time that the + PIM neighbor adjacency established. It is expressed + relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + + The PIM session uptime can be computed by clients + as the difference between this value and the + current time in UTC."; + } + + leaf neighbor-expires { + type oc-types:timeticks64; + description + "This timestamp indicates the time that the + PIM neighbor adjacency will expire should hello + messages fail to arrive from the neighbor. The value + is expressed relative to the Unix Epoch (Jan 1, 1970 + 00:00:00 UTC)."; + } + + leaf mode { + type identityref { + base oc-pim-types:PIM_MODE; + } + description + "PIM mode in use when delivering multicast traffic + via this neighbor."; + } + } + + grouping pim-neighbors-top { + description + "Details about PIM neighbors."; + + container neighbors { + config false; + description + "Details about PIM neighbors."; + + list neighbor { + key "neighbor-address"; + description + "Details about a specific PIM neighbor."; + + leaf neighbor-address { + type leafref { + path "../state/neighbor-address"; + } + description + "IPv4 address of neighbor router."; + } + + container state { + config false; + description + "Details about a specific PIM neighbor."; + + uses pim-neighbor-state; + } + } + } + } + + grouping pim-interfaces-top { + description + "Configuration and state data for PIM on each interface."; + + container interfaces { + description + "Configuration and state data for PIM on each interface."; + + list interface { + key "interface-id"; + description + "This container defines interface PIM configuration and + state information."; + + leaf interface-id { + type leafref { + path "../config/interface-id"; + } + description + "Reference to an interface on which PIM is enabled."; + } + + container config { + description + "PIM interface configuration."; + + uses pim-interface-config; + } + + container state { + config false; + description + "State information for PIM interfaces."; + + uses pim-interface-config; + container counters { + description + "PIM counters for each interface."; + + uses pim-counters-state; + } + } + + uses pim-neighbors-top; + uses oc-if:interface-ref; + } + } + } + + grouping pim-global-state { + description + "State and session data for PIM on each interface."; + + leaf neighbor-count { + type uint8; + description + "Number of adjacent PIM neighbors."; + } + + container counters { + description + "Global PIM counters."; + + uses pim-counters-state; + } + } + + grouping pim-sources-joined-top { + description + "List of multicast sources joined."; + + container sources-joined { + config false; + description + "List of multicast sources joined."; + + list source { + key "address"; + description + "A multicast source that has been joined."; + + leaf address { + type leafref { + path "../state/address"; + } + description + "Source address of multicast."; + } + + container state { + config false; + description + "State for a multicast source that has been joined."; + + leaf address { + type inet:ipv4-address; + description + "Source address of multicast."; + } + + leaf group { + type inet:ipv4-address; + description + "Multicast address."; + } + + leaf upstream-interface-id { + type oc-if:interface-id; + description + "The upstream interface for this multicast source."; + } + } + } + } + } + + grouping pim-global-ssm-config { + description + "Source specific multicast (SSM) configuration."; + + leaf ssm-ranges { + type leafref { + path "/oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/" + + "oc-acl:config/oc-acl:name"; + } + description + "List of accepted source specific multicast (SSM) address + ranges."; + } + } + + grouping pim-global-rp-addresses-config { + description + "Defines rendezvous points for sparse mode multicast."; + + leaf address { + type inet:ipv4-address; + description + "IPv4 address of rendezvous point."; + } + + leaf multicast-groups { + type string; + // TODO should this be an ACL or prefix-list reference or prefix list? + // Cisco it's an ACL, Juniper it's an inline prefix list + description + "List of multicast groups (multicast IP address ranges) for which + this entry will be used as a rendezvous point. When not + present the default is equivalent to all valid IP multicast + addresses."; + } + } + + grouping pim-global-top { + description + "Top level grouping for global PIM configuration."; + + container ssm { + description + "Source specific multicast (SSM)."; + + container config { + description + "Configuration for source specific multicast (SSM)."; + uses pim-global-ssm-config; + } + container state { + config false; + description + "State for source specific multicast (SSM)."; + uses pim-global-ssm-config; + } + } + + container rendezvous-points { + description + "Defines rendezvous points for sparse mode multicast."; + + list rendezvous-point { + key "address"; + description + "Defines a rendezvous point (RP) for sparse mode multicast."; + + leaf address { + type leafref { + path "../config/address"; + } + description + "IPv4 address of rendezvous point."; + } + + container config { + description + "Rendezvous point configuration."; + uses pim-global-rp-addresses-config; + } + container state { + config false; + description + "Rendezvous point state."; + uses pim-global-rp-addresses-config; + } + } + } + + container state { + config false; + description + "Global PIM state."; + uses pim-global-state; + } + + uses pim-sources-joined-top; + } + + grouping pim-top { + description + "Top-level grouping for PIM."; + + container pim { + description + "Top-level PIM configuration and operational state."; + + container global { + description + "This container defines global PIM configuration and state + information."; + uses pim-global-top; + } + + uses pim-interfaces-top; + } + } + + // data definition statements +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-platform-cpu.yang b/vendor/cisco/nx/9.3-14/openconfig-platform-cpu.yang new file mode 100644 index 000000000..4182c77a9 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-platform-cpu.yang @@ -0,0 +1,72 @@ +module openconfig-platform-cpu { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform/cpu"; + + prefix "oc-cpu"; + + import openconfig-platform { prefix oc-platform; } + import openconfig-types { prefix oc-types; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines data related to FAN components in the + OpenConfig platform model."; + + oc-ext:openconfig-version "0.1.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.1.1"; + } + + revision "2018-01-30" { + description + "Initial revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + grouping component-cpu-utilization { + description + "Per-component CPU statistics"; + + container utilization { + description + "Statistics representing CPU utilization of the + component."; + + container state { + config false; + description + "Operational state variables relating to the utilization + of the CPU."; + + uses oc-types:avg-min-max-instant-stats-pct; + } + } + } + + augment "/oc-platform:components/oc-platform:component/" + + "oc-platform:cpu" { + description + "Adding CPU utilization data to component model"; + + uses component-cpu-utilization; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-platform-ext.yang b/vendor/cisco/nx/9.3-14/openconfig-platform-ext.yang new file mode 100644 index 000000000..2e95427b3 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-platform-ext.yang @@ -0,0 +1,82 @@ +module openconfig-platform-ext { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform/extension"; + + prefix "oc-platform-ext"; + + import openconfig-platform { prefix oc-platform; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines optional extensions to the OpenConfig + platform model."; + + oc-ext:openconfig-version "0.1.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.1.1"; + } + + revision "2018-01-18" { + description + "Initial revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + // typedef statements + + // grouping statements + + + grouping platform-component-ext-state { + description + "Operational state data for platform components"; + + leaf entity-id { + type uint32; + description + "A unique numeric identifier assigned by the system to the + component. This identifier may be used to represent the + corresponding SNMP Entity MIB identifier."; + } + } + + + // data definition statements + + // augment statements + + augment "/oc-platform:components/oc-platform:component/" + + "oc-platform:state" { + description + "Adding extension state data to components"; + + uses platform-component-ext-state; + } + + // rpc statements + + // notification statements + +} + diff --git a/vendor/cisco/nx/9.3-14/openconfig-platform-fan.yang b/vendor/cisco/nx/9.3-14/openconfig-platform-fan.yang new file mode 100644 index 000000000..cd4a381d5 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-platform-fan.yang @@ -0,0 +1,76 @@ +module openconfig-platform-fan { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform/fan"; + + prefix "oc-fan"; + + import openconfig-platform { prefix oc-platform; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines data related to FAN components in the + OpenConfig platform model."; + + oc-ext:openconfig-version "0.1.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.1.1"; + } + + revision "2018-01-18" { + description + "Initial revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + // typedef statements + + // grouping statements + + grouping fan-state { + description + "Operational state data for fan components"; + + leaf speed { + type uint32; + units rpm; + description + "Current (instantaneous) fan speed"; + } + } + + + // data definition statements + + // augment statements + + augment "/oc-platform:components/oc-platform:component/" + + "oc-platform:fan/oc-platform:state" { + description + "Adding fan data to component model"; + + uses fan-state; + } + +} + diff --git a/vendor/cisco/nx/9.3-14/openconfig-platform-linecard.yang b/vendor/cisco/nx/9.3-14/openconfig-platform-linecard.yang new file mode 100644 index 000000000..e9ee046b8 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-platform-linecard.yang @@ -0,0 +1,129 @@ +module openconfig-platform-linecard { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform/linecard"; + + prefix "oc-linecard"; + + import openconfig-platform { prefix oc-platform; } + import openconfig-platform-types { prefix oc-platform-types; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines data related to LINECARD components in + the openconfig-platform model"; + + oc-ext:openconfig-version "0.1.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.1.1"; + } + + revision "2017-08-03" { + description + "Initial revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // extension statements + + // feature statements + + // identity statements + + // typedef statements + + // grouping statements + + grouping linecard-config { + description + "Configuration data for linecard components"; + + leaf power-admin-state { + type oc-platform-types:component-power-type; + default POWER_ENABLED; + description + "Enable or disable power to the linecard"; + } + } + + grouping linecard-state { + description + "Operational state data for linecard components"; + + leaf slot-id { + type string; + description + "Identifier for the slot or chassis position in which the + linecard is installed"; + } + } + + grouping linecard-top { + description + "Top-level grouping for linecard data"; + + container linecard { + description + "Top-level container for linecard data"; + + container config { + description + "Configuration data for linecards"; + + uses linecard-config; + } + + container state { + + config false; + + description + "Operational state data for linecards"; + + uses linecard-config; + uses linecard-state; + } + } + } + + // data definition statements + + // augment statements + + augment "/oc-platform:components/oc-platform:component" { + description + "Adding linecard data to physical inventory"; + + uses linecard-top { + when "current()/oc-platform:state/" + + "oc-platform:type = 'LINECARD'" { + description + "Augment is active when component is of type LINECARD"; + } + } + } + + // rpc statements + + // notification statements + +} + diff --git a/vendor/cisco/nx/9.3-14/openconfig-platform-port.yang b/vendor/cisco/nx/9.3-14/openconfig-platform-port.yang new file mode 100644 index 000000000..4a88bd605 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-platform-port.yang @@ -0,0 +1,166 @@ +module openconfig-platform-port { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform/port"; + + prefix "oc-port"; + + // import some basic types + import openconfig-platform { prefix oc-platform; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-if-ethernet { prefix oc-eth; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines data related to PORT components in the + openconfig-platform model"; + + oc-ext:openconfig-version "0.3.2"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.2"; + } + + revision "2018-11-07" { + description + "Fixed error in when statement path"; + reference "0.3.1"; + } + + revision "2018-01-20" { + description + "Added augmentation for interface-to-port reference"; + reference "0.3.0"; + } + + revision "2017-11-17" { + description + "Corrected augmentation path for port data"; + reference "0.2.0"; + } + + revision "2016-10-24" { + description + "Initial revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // extension statements + + // feature statements + + // identity statements + + // typedef statements + + // grouping statements + + grouping port-breakout-config { + description + "Configuration data for the port breakout mode"; + + leaf num-channels { + type uint8; + description + "Sets the number of channels to 'breakout' on a port + capable of channelization"; + } + + leaf channel-speed { + type identityref { + base oc-eth:ETHERNET_SPEED; + } + description + "Sets the channel speed on each channel -- the + supported values are defined by the + ETHERNET_SPEED identity"; + } + } + + grouping port-breakout-state { + description + "Operational state data for the port breakout mode "; + } + + grouping port-breakout-top { + description + "Top-level grouping for port breakout data"; + + container breakout-mode { + description + "Top-level container for port breakout data"; + + container config { + description + "Configuration data for port breakout"; + + uses port-breakout-config; + } + + container state { + + config false; + + description + "Operational state data for port breakout"; + + uses port-breakout-config; + uses port-breakout-state; + } + } + } + + // data definition statements + + // augment statements + + augment "/oc-platform:components/oc-platform:component/" + + "oc-platform:port" { + description + "Adding port breakout data to physical platform data"; + + uses port-breakout-top { + when "../oc-platform:state/oc-platform:type = 'PORT'" { + description + "This data is valid only for PORT components"; + } + } + } + + augment "/oc-if:interfaces/oc-if:interface/oc-if:state" { + description + "Adds a reference from the base interface to the corresponding + port component in the device inventory."; + + leaf hardware-port { + type leafref { + path "/oc-platform:components/oc-platform:component/" + + "oc-platform:name"; + } + description + "For non-channelized interfaces, references the hardware port + corresponding to the base interface."; + } + } + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-platform-psu.yang b/vendor/cisco/nx/9.3-14/openconfig-platform-psu.yang new file mode 100644 index 000000000..02d6e968a --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-platform-psu.yang @@ -0,0 +1,146 @@ +module openconfig-platform-psu { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform/psu"; + + prefix "oc-platform-psu"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + import openconfig-types { prefix oc-types; } + import openconfig-platform { prefix oc-platform; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines a schema for power supply components in + the OpenConfig platform model."; + + oc-ext:openconfig-version "0.2.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.2.1"; + } + + revision "2018-01-16" { + description + "Changed admin state leaf name"; + reference "0.2.0"; + } + + revision "2017-12-21" { + description + "Initial revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + // typedef statements + + // grouping statements + + grouping psu-config { + description + "Configuration data for power supply components"; + + leaf enabled { + type boolean; + default true; + description + "Adminsitrative control on the on/off state of the power + supply unit."; + } + } + + grouping psu-state { + description + "Operational state data for power supply components"; + + + // TODO(aashaikh): May need to convert some of these to + // interval statistics once decided on which leaves to include. + leaf capacity { + type oc-types:ieeefloat32; + units watts; + description + "Maximum power capacity of the power supply."; + } + + leaf input-current { + type oc-types:ieeefloat32; + units amps; + description + "The input current draw of the power supply."; + } + + leaf input-voltage { + type oc-types:ieeefloat32; + units volts; + description + "Input voltage to the power supply."; + } + + leaf output-current { + type oc-types:ieeefloat32; + units amps; + description + "The output current supplied by the power supply."; + } + + leaf output-voltage { + type oc-types:ieeefloat32; + units volts; + description + "Output voltage supplied by the power supply."; + } + + leaf output-power { + type oc-types:ieeefloat32; + units watts; + description + "Output power supplied by the power supply."; + } + } + + // data definition statements + + // augment statements + + augment "/oc-platform:components/oc-platform:component/" + + "oc-platform:power-supply/oc-platform:config" { + description + "Adds power supply data to component operational state."; + + uses psu-config; + } + + augment "/oc-platform:components/oc-platform:component/" + + "oc-platform:power-supply/oc-platform:state" { + description + "Adds power supply data to component operational state."; + + uses psu-config; + uses psu-state; + } + + + // rpc statements + + // notification statements +} \ No newline at end of file diff --git a/vendor/cisco/nx/9.3-14/openconfig-platform-transceiver.yang b/vendor/cisco/nx/9.3-14/openconfig-platform-transceiver.yang new file mode 100644 index 000000000..a950b3d4f --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-platform-transceiver.yang @@ -0,0 +1,610 @@ +module openconfig-platform-transceiver { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform/transceiver"; + + prefix "oc-transceiver"; + + // import some basic types + import ietf-yang-types { prefix yang; } + import openconfig-platform { prefix oc-platform; } + import openconfig-platform-types { prefix oc-platform-types; } + import openconfig-platform-port { prefix oc-port; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-transport-types { prefix oc-opt-types; } + import openconfig-types { prefix oc-types; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-yang-types { prefix oc-yang; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state data + for transceivers (i.e., pluggable optics). The module should be + used in conjunction with the platform model where other + physical entity data are represented. + + In the platform model, a component of type=TRANSCEIVER is + expected to be a subcomponent of a PORT component. This + module defines a concrete schema for the associated data for + components with type=TRANSCEIVER."; + + oc-ext:openconfig-version "0.7.0"; + + + revision "2018-11-25" { + description + "Add augment for leafref to transceiver component; + Correct paths in physical channels leafref."; + reference "0.7.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.6.1"; + } + + revision "2018-11-16" { + description + "Added transceiver FEC configuration and state"; + reference "0.6.0"; + } + + revision "2018-05-15" { + description + "Remove internal-temp state leaf, since we prefer + the generic /components/component/state/temperature + container for temperature information."; + reference "0.5.0"; + } + + revision "2018-01-22" { + description + "Fixed physical-channel path reference"; + reference "0.4.1"; + } + + revision "2017-09-18" { + description + "Use openconfig-yang-types module"; + reference "0.4.0"; + } + + revision "2017-07-08" { + description + "Adds clarification on aggregate power measurement data"; + reference "0.3.0"; + } + + revision "2016-12-22" { + description + "Adds preconfiguration data and clarified units"; + reference "0.2.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + // typedef statements + + // grouping statements + + grouping optical-power-state { + description + "Reusable leaves related to optical power state -- these + are read-only state values. If avg/min/max statistics are + not supported, the target is expected to just supply the + instant value"; + + container output-power { + description + "The output optical power of a physical channel in units + of 0.01dBm, which may be associated with individual + physical channels, or an aggregate of multiple physical + channels (i.e., for the overall transceiver). For an + aggregate, this may be a measurement from a photodetector + or a a calculation performed on the device by summing up + all of the related individual physical channels. + Values include the instantaneous, average, minimum, and + maximum statistics. If avg/min/max statistics are not + supported, the target is expected to just supply the + instant value"; + + uses oc-types:avg-min-max-instant-stats-precision2-dBm; + } + + container input-power { + description + "The input optical power of a physical channel in units + of 0.01dBm, which may be associated with individual + physical channels, or an aggregate of multiple physical + channels (i.e., for the overall transceiver). For an + aggregate, this may be a measurement from a photodetector + or a a calculation performed on the device by summing up + all of the related individual physical channels. + Values include the instantaneous, average, minimum, and + maximum statistics. If avg/min/max statistics are not + supported, the target is expected to just supply the + instant value"; + + uses oc-types:avg-min-max-instant-stats-precision2-dBm; + } + + container laser-bias-current { + description + "The current applied by the system to the transmit laser to + achieve the output power. The current is expressed in mA + with up to two decimal precision. Values include the + instantaneous, average, minimum, and maximum statistics. + If avg/min/max statistics are not supported, the target is + expected to just supply the instant value"; + + uses oc-types:avg-min-max-instant-stats-precision2-mA; + } + } + + grouping output-optical-frequency { + description + "Reusable leaves related to optical output power -- this is + typically configurable on line side and read-only on the + client-side"; + + leaf output-frequency { + type oc-opt-types:frequency-type; + description + "The frequency in MHz of the individual physical channel + (e.g. ITU C50 - 195.0THz and would be reported as + 195,000,000 MHz in this model). This attribute is not + configurable on most client ports."; + } + } + + + grouping physical-channel-config { + description + "Configuration data for physical client channels"; + + leaf index { + type uint16 { + range 0..max; + } + description + "Index of the physical channnel or lane within a physical + client port"; + } + + leaf description { + type string; + description + "Text description for the client physical channel"; + } + + leaf tx-laser { + type boolean; + description + "Enable (true) or disable (false) the transmit label for the + channel"; + } + + leaf target-output-power { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "Target output optical power level of the optical channel, + expressed in increments of 0.01 dBm (decibel-milliwats)"; + } + } + + grouping physical-channel-state { + description + "Operational state data for client channels."; + + uses output-optical-frequency; + uses optical-power-state; + } + + grouping physical-channel-top { + description + "Top-level grouping for physical client channels"; + + container physical-channels { + description + "Enclosing container for client channels"; + + list channel { + key "index"; + description + "List of client channels, keyed by index within a physical + client port. A physical port with a single channel would + have a single zero-indexed element"; + + leaf index { + type leafref { + path "../config/index"; + } + description + "Reference to the index number of the channel"; + } + + container config { + description + "Configuration data for physical channels"; + + uses physical-channel-config; + } + + container state { + + config false; + + description + "Operational state data for channels"; + + uses physical-channel-config; + uses physical-channel-state; + } + } + } + } + + + grouping port-transceiver-config { + description + "Configuration data for client port transceivers"; + + leaf enabled { + type boolean; + description + "Turns power on / off to the transceiver -- provides a means + to power on/off the transceiver (in the case of SFP, SFP+, + QSFP,...) or enable high-power mode (in the case of CFP, + CFP2, CFP4) and is optionally supported (device can choose to + always enable). True = power on / high power, False = + powered off"; + } + + leaf form-factor-preconf { + type identityref { + base oc-opt-types:TRANSCEIVER_FORM_FACTOR_TYPE; + } + description + "Indicates the type of optical transceiver used on this + port. If the client port is built into the device and not + pluggable, then non-pluggable is the corresponding state. If + a device port supports multiple form factors (e.g. QSFP28 + and QSFP+, then the value of the transceiver installed shall + be reported. If no transceiver is present, then the value of + the highest rate form factor shall be reported + (QSFP28, for example). + + The form factor is included in configuration data to allow + pre-configuring a device with the expected type of + transceiver ahead of deployment. The corresponding state + leaf should reflect the actual transceiver type plugged into + the system."; + } + + leaf ethernet-pmd-preconf { + type identityref { + base oc-opt-types:ETHERNET_PMD_TYPE; + } + description + "The Ethernet PMD is a property of the optical transceiver + used on the port, indicating the type of physical connection. + It is included in configuration data to allow pre-configuring + a port/transceiver with the expected PMD. The actual PMD is + indicated by the ethernet-pmd state leaf."; + } + + leaf fec-mode { + type identityref { + base oc-platform-types:FEC_MODE_TYPE; + } + description + "The FEC mode indicates the mode of operation for the + transceiver's FEC. This defines typical operational modes + and does not aim to specify more granular FEC capabilities."; + } + } + + grouping port-transceiver-state { + description + "Operational state data for client port transceivers"; + + leaf present { + type enumeration { + enum PRESENT { + description + "Transceiver is present on the port"; + } + enum NOT_PRESENT { + description + "Transceiver is not present on the port"; + } + } + description + "Indicates whether a transceiver is present in + the specified client port."; + } + + leaf form-factor { + type identityref { + base oc-opt-types:TRANSCEIVER_FORM_FACTOR_TYPE; + } + description + "Indicates the type of optical transceiver used on this + port. If the client port is built into the device and not + pluggable, then non-pluggable is the corresponding state. If + a device port supports multiple form factors (e.g. QSFP28 + and QSFP+, then the value of the transceiver installed shall + be reported. If no transceiver is present, then the value of + the highest rate form factor shall be reported + (QSFP28, for example)."; + } + + leaf connector-type { + type identityref { + base oc-opt-types:FIBER_CONNECTOR_TYPE; + } + description + "Connector type used on this port"; + } + + leaf vendor { + type string { + length 1..16; + } + description + "Full name of transceiver vendor. 16-octet field that + contains ASCII characters, left-aligned and padded on the + right with ASCII spaces (20h)"; + } + + leaf vendor-part { + type string { + length 1..16; + } + description + "Transceiver vendor's part number. 16-octet field that + contains ASCII characters, left-aligned and padded on the + right with ASCII spaces (20h). If part number is undefined, + all 16 octets = 0h"; + } + + leaf vendor-rev { + type string { + length 1..2; + } + description + "Transceiver vendor's revision number. 2-octet field that + contains ASCII characters, left-aligned and padded on the + right with ASCII spaces (20h)"; + } + + //TODO: these compliance code leaves should be active based on + //the type of port + leaf ethernet-pmd { + type identityref { + base oc-opt-types:ETHERNET_PMD_TYPE; + } + description + "Ethernet PMD (physical medium dependent sublayer) that the + transceiver supports. The SFF/QSFP MSAs have registers for + this and CFP MSA has similar."; + } + + leaf sonet-sdh-compliance-code { + type identityref { + base oc-opt-types:SONET_APPLICATION_CODE; + } + description + "SONET/SDH application code supported by the port"; + } + + leaf otn-compliance-code { + type identityref { + base oc-opt-types:OTN_APPLICATION_CODE; + } + description + "OTN application code supported by the port"; + } + + leaf serial-no { + type string { + length 1..16; + } + description + "Transceiver serial number. 16-octet field that contains + ASCII characters, left-aligned and padded on the right with + ASCII spaces (20h). If part serial number is undefined, all + 16 octets = 0h"; + } + + leaf date-code { + type oc-yang:date-and-time; + description + "Representation of the transceiver date code, typically + stored as YYMMDD. The time portion of the value is + undefined and not intended to be read."; + } + + leaf fault-condition { + type boolean; + description + "Indicates if a fault condition exists in the transceiver"; + } + + leaf fec-status { + type identityref { + base oc-platform-types:FEC_STATUS_TYPE; + } + description + "Operational status of FEC"; + } + + leaf fec-uncorrectable-blocks { + type yang:counter64; + description + "The number of blocks that were uncorrectable by the FEC"; + } + + leaf fec-uncorrectable-words { + type yang:counter64; + description + "The number of words that were uncorrectable by the FEC"; + } + + leaf fec-corrected-bytes { + type yang:counter64; + description + "The number of bytes that were corrected by the FEC"; + } + + leaf fec-corrected-bits { + type yang:counter64; + description + "The number of bits that were corrected by the FEC"; + } + + container pre-fec-ber { + description + "Bit error rate before forward error correction -- computed + value with 18 decimal precision. Note that decimal64 + supports values as small as i x 10^-18 where i is an + integer. Values smaller than this should be reported as 0 + to inidicate error free or near error free performance. + Values include the instantaneous, average, minimum, and + maximum statistics. If avg/min/max statistics are not + supported, the target is expected to just supply the + instant value"; + + uses oc-opt-types:avg-min-max-instant-stats-precision18-ber; + } + + container post-fec-ber { + description + "Bit error rate after forward error correction -- computed + value with 18 decimal precision. Note that decimal64 + supports values as small as i x 10^-18 where i is an + integer. Values smaller than this should be reported as 0 + to inidicate error free or near error free performance. + Values include the instantaneous, average, minimum, and + maximum statistics. If avg/min/max statistics are not + supported, the target is expected to just supply the + instant value"; + + uses oc-opt-types:avg-min-max-instant-stats-precision18-ber; + } + + uses optical-power-state; + } + + grouping port-transceiver-top { + description + "Top-level grouping for client port transceiver data"; + + container transceiver { + description + "Top-level container for client port transceiver data"; + + container config { + description + "Configuration data for client port transceivers"; + + uses port-transceiver-config; + } + + container state { + + config false; + + description + "Operational state data for client port transceivers"; + + uses port-transceiver-config; + uses port-transceiver-state; + } + // physical channels are associated with a transceiver + // component + uses physical-channel-top; + } + } + + // data definition statements + + // augment statements + + augment "/oc-platform:components/oc-platform:component" { + description + "Adding transceiver data to physical inventory"; + + uses port-transceiver-top { + when "current()/oc-platform:state/" + + "oc-platform:type = 'TRANSCEIVER'" { + description + "Augment is active when component is of type TRANSCEIVER"; + } + } + } + + augment "/oc-if:interfaces/oc-if:interface/oc-if:state" { + description + "Adds a reference from an interface to the corresponding + transceiver component."; + + leaf transceiver { + type leafref { + path "/oc-platform:components/" + + "oc-platform:component[oc-platform:name=current()/../oc-port:hardware-port]/" + + "oc-platform:subcomponents/oc-platform:subcomponent/" + + "oc-platform:name"; + } + description + "Provides a reference to the transceiver subcomponent that + corresponds to the physical port component for this interface. + The device must only populate this leaf with a reference to + a component of type TRANSCEIVER."; + } + } + + augment "/oc-if:interfaces/oc-if:interface/oc-if:state" { + description + "Adds a reference from the base interface to its corresponding + physical channels."; + + leaf-list physical-channel { + type leafref { + path "/oc-platform:components/" + + "oc-platform:component[oc-platform:name=current()/../oc-transceiver:transceiver]/" + + "oc-transceiver:transceiver/" + + "oc-transceiver:physical-channels/oc-transceiver:channel/" + + "oc-transceiver:index"; + } + description + "For a channelized interface, list of references to the + physical channels (lanes) corresponding to the interface. + The physical channels are elements of a transceiver component + in the platform model."; + } + } + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-platform-types.yang b/vendor/cisco/nx/9.3-14/openconfig-platform-types.yang new file mode 100644 index 000000000..8dc3ffc1f --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-platform-types.yang @@ -0,0 +1,347 @@ +module openconfig-platform-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform-types"; + + prefix "oc-platform-types"; + + import openconfig-types { prefix oc-types; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines data types (e.g., YANG identities) + to support the OpenConfig component inventory model."; + + oc-ext:openconfig-version "1.0.0"; + + revision "2019-06-03" { + description + "Add OpenConfig component operating system patch type."; + reference "1.0.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.10.1"; + } + + revision "2018-11-16" { + description + "Added FEC_MODE_TYPE and FEC_STATUS_TYPE"; + reference "0.10.0"; + } + + revision "2018-05-05" { + description + "Added min-max-time to + avg-min-max-instant-stats-precision1-celsius, + added new CONTROLLER_CARD identity"; + reference "0.9.0"; + } + + revision "2018-01-16" { + description + "Added new per-component common data; add temp alarm"; + reference "0.8.0"; + } + + revision "2017-12-14" { + description + "Added anchor containers for component data, added new + component types"; + reference "0.7.0"; + } + + revision "2017-08-16" { + description + "Added power state enumerated type"; + reference "0.6.0"; + } + + revision "2016-12-22" { + description + "Added temperature state variable to component"; + reference "0.5.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // grouping statements + + + grouping avg-min-max-instant-stats-precision1-celsius { + description + "Common grouping for recording temperature values in + Celsius with 1 decimal precision. Values include the + instantaneous, average, minimum, and maximum statistics"; + + leaf instant { + type decimal64 { + fraction-digits 1; + } + units celsius; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 1; + } + units celsius; + description + "The arithmetic mean value of the statistic over the + sampling period."; + } + + leaf min { + type decimal64 { + fraction-digits 1; + } + units celsius; + description + "The minimum value of the statistic over the sampling + period"; + } + + leaf max { + type decimal64 { + fraction-digits 1; + } + units celsius; + description + "The maximum value of the statistic over the sampling + period"; + } + + uses oc-types:stat-interval-state; + uses oc-types:min-max-time; + } + + // identity statements + + identity OPENCONFIG_HARDWARE_COMPONENT { + description + "Base identity for hardware related components in a managed + device. Derived identities are partially based on contents + of the IANA Entity MIB."; + reference + "IANA Entity MIB and RFC 6933"; + } + + + identity OPENCONFIG_SOFTWARE_COMPONENT { + description + "Base identity for software-related components in a managed + device"; + } + + // hardware types + + identity CHASSIS { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Chassis component, typically with multiple slots / shelves"; + } + + identity BACKPLANE { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Backplane component for aggregating traffic, typically + contained in a chassis component"; + } + + identity FABRIC { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Interconnect between ingress and egress ports on the + device (e.g., a crossbar switch)."; + } + + identity POWER_SUPPLY { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Component that is supplying power to the device"; + } + + identity FAN { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Cooling fan, or could be some other heat-reduction component"; + } + + identity SENSOR { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Physical sensor, e.g., a temperature sensor in a chassis"; + } + + identity FRU { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Replaceable hardware component that does not have a more + specific defined schema."; + } + + identity LINECARD { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Linecard component, typically inserted into a chassis slot"; + } + + identity CONTROLLER_CARD { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "A type of linecard whose primary role is management or control + rather than data forwarding."; + } + + identity PORT { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Physical port, e.g., for attaching pluggables and networking + cables"; + } + + identity TRANSCEIVER { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Pluggable module present in a port"; + } + + identity CPU { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Processing unit, e.g., a management processor"; + } + + identity STORAGE { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "A storage subsystem on the device (disk, SSD, etc.)"; + } + + identity INTEGRATED_CIRCUIT { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "A special purpose processing unit, typically for traffic + switching/forwarding (e.g., switching ASIC, NPU, forwarding + chip, etc.)"; + } + + identity OPERATING_SYSTEM { + base OPENCONFIG_SOFTWARE_COMPONENT; + description + "Operating system running on a component"; + } + + identity OPERATING_SYSTEM_UPDATE { + base OPENCONFIG_SOFTWARE_COMPONENT; + description + "An operating system update - which should be a subcomponent + of the `OPERATING_SYSTEM` running on a component. An update is + defined to be a set of software changes that are atomically + installed (and uninstalled) together. Multiple updates may be + present for the Operating System. A system should not list all + installed software packages using this type -- but rather + updates that are bundled together as a single installable + item"; + } + + identity COMPONENT_OPER_STATUS { + description + "Current operational status of a platform component"; + } + + identity ACTIVE { + base COMPONENT_OPER_STATUS; + description + "Component is enabled and active (i.e., up)"; + } + + identity INACTIVE { + base COMPONENT_OPER_STATUS; + description + "Component is enabled but inactive (i.e., down)"; + } + + identity DISABLED { + base COMPONENT_OPER_STATUS; + description + "Component is administratively disabled."; + } + + identity FEC_MODE_TYPE { + description + "Base identity for FEC operational modes."; + } + + identity FEC_ENABLED { + base FEC_MODE_TYPE; + description + "FEC is administratively enabled."; + } + + identity FEC_DISABLED { + base FEC_MODE_TYPE; + description + "FEC is administratively disabled."; + } + + identity FEC_AUTO { + base FEC_MODE_TYPE; + description + "System will determine whether to enable or disable + FEC on a transceiver."; + } + + identity FEC_STATUS_TYPE { + description + "Base identity for FEC operational statuses."; + } + + identity FEC_STATUS_LOCKED { + base FEC_STATUS_TYPE; + description + "FEC is operationally locked."; + } + + identity FEC_STATUS_UNLOCKED { + base FEC_STATUS_TYPE; + description + "FEC is operationally unlocked."; + } + + // typedef statements + + typedef component-power-type { + type enumeration { + enum POWER_ENABLED { + description + "Enable power on the component"; + } + enum POWER_DISABLED { + description + "Disable power on the component"; + } + } + description + "A generic type reflecting whether a hardware component + is powered on or off"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-platform.yang b/vendor/cisco/nx/9.3-14/openconfig-platform.yang new file mode 100644 index 000000000..ecf38cd1a --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-platform.yang @@ -0,0 +1,779 @@ +module openconfig-platform { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform"; + + prefix "oc-platform"; + + import openconfig-platform-types { prefix oc-platform-types; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-alarm-types { prefix oc-alarm-types; } + import openconfig-yang-types { prefix oc-yang; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines a data model for representing a system + component inventory, which can include hardware or software + elements arranged in an arbitrary structure. The primary + relationship supported by the model is containment, e.g., + components containing subcomponents. + + It is expected that this model reflects every field replacable + unit on the device at a minimum (i.e., additional information + may be supplied about non-replacable components). + + Every element in the inventory is termed a 'component' with each + component expected to have a unique name and type, and optionally + a unique system-assigned identifier and FRU number. The + uniqueness is guaranteed by the system within the device. + + Components may have properties defined by the system that are + modeled as a list of key-value pairs. These may or may not be + user-configurable. The model provides a flag for the system + to optionally indicate which properties are user configurable. + + Each component also has a list of 'subcomponents' which are + references to other components. Appearance in a list of + subcomponents indicates a containment relationship as described + above. For example, a linecard component may have a list of + references to port components that reside on the linecard. + + This schema is generic to allow devices to express their own + platform-specific structure. It may be augmented by additional + component type-specific schemas that provide a common structure + for well-known component types. In these cases, the system is + expected to populate the common component schema, and may + optionally also represent the component and its properties in the + generic structure. + + The properties for each component may include dynamic values, + e.g., in the 'state' part of the schema. For example, a CPU + component may report its utilization, temperature, or other + physical properties. The intent is to capture all platform- + specific physical data in one location, including inventory + (presence or absence of a component) and state (physical + attributes or status)."; + + oc-ext:openconfig-version "0.12.2"; + + revision "2019-04-16" { + description + "Fix bug in parent path reference"; + reference "0.12.2"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.12.1"; + } + + revision "2018-06-29" { + description + "Added location description for components"; + reference "0.12.0"; + } + + revision "2018-06-03" { + description + "Added parent reference, empty flag and preconfiguration + for components"; + reference "0.11.0"; + } + + revision "2018-04-20" { + description + "Added new per-component state data: mfg-date and removable"; + reference "0.10.0"; + } + + revision "2018-01-30" { + description + "Amended approach for modelling CPU - rather than having + a local CPU utilisation state variable, a component with + a CPU should create a subcomponent of type CPU to report + statistics."; + reference "0.9.0"; + } + + revision "2018-01-16" { + description + "Added new per-component common data; add temp alarm; + moved hardware-port reference to port model"; + reference "0.8.0"; + } + + revision "2017-12-14" { + description + "Added anchor containers for component data, added new + component types"; + reference "0.7.0"; + } + + revision "2017-08-16" { + description + "Added power state enumerated type"; + reference "0.6.0"; + } + + revision "2016-12-22" { + description + "Added temperature state variable to component"; + reference "0.5.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // grouping statements + + + grouping platform-component-properties-config { + description + "System-defined configuration data for component properties"; + + leaf name { + type string; + description + "System-supplied name of the property -- this is typically + non-configurable"; + } + + leaf value { + type union { + type string; + type boolean; + type int64; + type uint64; + type decimal64 { + fraction-digits 2; + } + } + description + "Property values can take on a variety of types. Signed and + unsigned integer types may be provided in smaller sizes, + e.g., int8, uint16, etc."; + } + } + + grouping platform-component-properties-state { + description + "Operational state data for component properties"; + + leaf configurable { + type boolean; + description + "Indication whether the property is user-configurable"; + } + } + + grouping platform-component-properties-top { + description + "Top-level grouping "; + + container properties { + description + "Enclosing container "; + + list property { + key "name"; + description + "List of system properties for the component"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the property name."; + } + + container config { + description + "Configuration data for each property"; + + uses platform-component-properties-config; + } + + container state { + + config false; + + description + "Operational state data for each property"; + + uses platform-component-properties-config; + uses platform-component-properties-state; + } + } + } + } + + grouping platform-subcomponent-ref-config { + description + "Configuration data for subcomponent references"; + + leaf name { + type leafref { + path "../../../../../component/config/name"; + } + description + "Reference to the name of the subcomponent"; + } + } + + grouping platform-subcomponent-ref-state { + description + "Operational state data for subcomponent references"; + + } + + grouping platform-subcomponent-ref-top { + description + "Top-level grouping for list of subcomponent references"; + + container subcomponents { + description + "Enclosing container for subcomponent references"; + + list subcomponent { + key "name"; + description + "List of subcomponent references"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the name list key"; + } + + container config { + description + "Configuration data for the subcomponent"; + + uses platform-subcomponent-ref-config; + } + + container state { + + config false; + + description + "Operational state data for the subcomponent"; + + uses platform-subcomponent-ref-config; + uses platform-subcomponent-ref-state; + } + } + } + } + + grouping platform-component-config { + description + "Configuration data for components"; + + leaf name { + type string; + description + "Device name for the component -- this may not be a + configurable parameter on many implementations. Where + component preconfiguration is supported, for example, + the component name may be configurable."; + } + } + + grouping platform-component-state { + description + "Operational state data for device components."; + + leaf type { + type union { + type identityref { + base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT; + } + type identityref { + base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT; + } + } + description + "Type of component as identified by the system"; + } + + leaf id { + type string; + description + "Unique identifier assigned by the system for the + component"; + } + + leaf location { + type string; + description + "System-supplied description of the location of the + component within the system. This could be a bay position, + slot number, socket location, etc. For component types that + have an explicit slot-id attribute, such as linecards, the + system should populate the more specific slot-id."; + } + + leaf description { + type string; + description + "System-supplied description of the component"; + } + + leaf mfg-name { + type string; + description + "System-supplied identifier for the manufacturer of the + component. This data is particularly useful when a + component manufacturer is different than the overall + device vendor."; + } + + leaf mfg-date { + type oc-yang:date; + description + "System-supplied representation of the component's + manufacturing date."; + } + + leaf hardware-version { + type string; + description + "For hardware components, this is the hardware revision of + the component."; + } + + leaf firmware-version { + type string; + description + "For hardware components, this is the version of associated + firmware that is running on the component, if applicable."; + } + + leaf software-version { + type string; + description + "For software components such as operating system or other + software module, this is the version of the currently + running software."; + } + + leaf serial-no { + type string; + description + "System-assigned serial number of the component."; + } + + leaf part-no { + type string; + description + "System-assigned part number for the component. This should + be present in particular if the component is also an FRU + (field replaceable unit)"; + } + + leaf removable { + type boolean; + description + "If true, this component is removable or is a field + replaceable unit"; + } + + leaf oper-status { + type identityref { + base oc-platform-types:COMPONENT_OPER_STATUS; + } + description + "If applicable, this reports the current operational status + of the component."; + } + + leaf empty { + type boolean; + default false; + description + "The empty leaf may be used by the device to indicate that a + component position exists but is not populated. Using this + flag, it is possible for the management system to learn how + many positions are available (e.g., occupied vs. empty + linecard slots in a chassis)."; + } + + leaf parent { + type leafref { + path "../../../component/config/name"; + } + description + "Reference to the name of the parent component. Note that + this reference must be kept synchronized with the + corresponding subcomponent reference from the parent + component."; + } + } + + grouping platform-component-temp-alarm-state { + description + "Temperature alarm data for platform components"; + + // TODO(aashaikh): consider if these leaves could be in a + // reusable grouping (not temperature-specific); threshold + // may always need to be units specific. + + leaf alarm-status { + type boolean; + description + "A value of true indicates the alarm has been raised or + asserted. The value should be false when the alarm is + cleared."; + } + + leaf alarm-threshold { + type uint32; + description + "The threshold value that was crossed for this alarm."; + } + + leaf alarm-severity { + type identityref { + base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY; + } + description + "The severity of the current alarm."; + } + } + + grouping platform-component-power-state { + description + "Power-related operational state for device components."; + + leaf allocated-power { + type uint32; + units watts; + description + "Power allocated by the system for the component."; + } + + leaf used-power { + type uint32; + units watts; + description + "Actual power used by the component."; + } + } + + grouping platform-component-temp-state { + description + "Temperature state data for device components"; + + container temperature { + description + "Temperature in degrees Celsius of the component. Values include + the instantaneous, average, minimum, and maximum statistics. If + avg/min/max statistics are not supported, the target is expected + to just supply the instant value"; + + uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius; + uses platform-component-temp-alarm-state; + } + } + + grouping platform-component-memory-state { + description + "Per-component memory statistics"; + + container memory { + description + "For components that have associated memory, these values + report information about available and utilized memory."; + + leaf available { + type uint64; + units bytes; + description + "The available memory physically installed, or logically + allocated to the component."; + } + + // TODO(aashaikh): consider if this needs to be a + // min/max/avg statistic + leaf utilized { + type uint64; + units bytes; + description + "The memory currently in use by processes running on + the component, not considering reserved memory that is + not available for use."; + } + } + } + + grouping platform-anchors-top { + description + "This grouping is used to add containers for components that + are common across systems, but do not have a defined schema + within the openconfig-platform module. Containers should be + added to this grouping for components that are expected to + exist in multiple systems, with corresponding modules + augmenting the config/state containers directly."; + + container chassis { + description + "Data for chassis components"; + + container config { + description + "Configuration data for chassis components"; + } + + container state { + config false; + description + "Operational state data for chassis components"; + } + } + +// TODO(aashaikh): linecard container is already defined in +// openconfig-platform-linecard; will move to this module +// in future. + /* + container linecard { + description + "Data for linecard components"; + + container config { + description + "Configuration data for linecard components"; + } + + container state { + config false; + description + "Operational state data for linecard components"; + } + } + */ + + container port { + description + "Data for physical port components"; + + container config { + description + "Configuration data for physical port components"; + } + + container state { + config false; + description + "Operational state data for physical port components"; + } + } + +// TODO(aashaikh): transceiver container is already defined in +// openconfig-platform-transceiver; will move to this module +// in future. + /* + container transceiver { + description + "Data for transceiver components"; + + container config { + description + "Configuration data for transceiver components"; + } + + container state { + config false; + description + "Operational state data for transceiver components"; + } + } + */ + + container power-supply { + description + "Data for power supply components"; + + container config { + description + "Configuration data for power supply components"; + } + + container state { + config false; + description + "Operational state data for power supply components"; + } + } + + container fan { + description + "Data for fan components"; + + container config { + description + "Configuration data for fan components"; + } + + container state { + config false; + description + "Operational state data for fan components"; + } + } + + container fabric { + description + "Data for fabric components"; + + container config { + description + "Configuration data for fabric components"; + } + + container state { + config false; + description + "Operational state data for fabric components"; + } + } + + container storage { + description + "Data for storage components"; + + container config { + description + "Configuration data for storage components"; + } + + container state { + config false; + description + "Operational state data for storage components"; + } + } + + container cpu { + description + "Data for cpu components"; + + container config { + description + "Configuration data for cpu components"; + } + + container state { + config false; + description + "Operational state data for cpu components"; + } + } + + container integrated-circuit { + description + "Data for chip components, such as ASIC, NPUs, etc."; + + container config { + description + "Configuration data for chip components"; + } + + container state { + config false; + description + "Operational state data for chip components"; + } + } + + container backplane { + description + "Data for backplane components"; + + container config { + description + "Configuration data for backplane components"; + } + + container state { + config false; + description + "Operational state data for backplane components"; + } + } + } + + grouping platform-component-top { + description + "Top-level grouping for components in the device inventory"; + + container components { + description + "Enclosing container for the components in the system."; + + list component { + key "name"; + description + "List of components, keyed by component name."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "References the component name"; + } + + container config { + description + "Configuration data for each component"; + + uses platform-component-config; + } + + container state { + + config false; + + description + "Operational state data for each component"; + + uses platform-component-config; + uses platform-component-state; + uses platform-component-temp-state; + uses platform-component-memory-state; + uses platform-component-power-state; + } + + uses platform-component-properties-top; + uses platform-subcomponent-ref-top; + uses platform-anchors-top; + } + } + } + + + // data definition statements + + uses platform-component-top; + + + // augments + + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-policy-forwarding.yang b/vendor/cisco/nx/9.3-14/openconfig-policy-forwarding.yang new file mode 100644 index 000000000..e7597243b --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-policy-forwarding.yang @@ -0,0 +1,129 @@ +module openconfig-policy-forwarding { + yang-version "1"; + + namespace "http://openconfig.net/yang/policy-forwarding"; + + prefix "oc-pf"; + + import openconfig-extensions { prefix "oc-ext"; } + + // Include submodules. + include openconfig-pf-forwarding-policies; + include openconfig-pf-path-groups; + include openconfig-pf-interfaces; + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state data + relating to policy-based forwarding. Policy-based forwarding is + utilised when a system chooses how to forward packets (including + applying data-plane operations such as encapsulation or + decapsulation) based on policies other than destination L2 or L3 + header. Typically, systems may implement: + + - IP policy-based routing, where routing may be done based on the + source plus destination of an IP packet; information within the + L4 header; or some combination of both. + - Encapsulation or decapsulation based on certain policy + information - for example, matching particular IP destinations + and decapsulating GRE headers. + - Class-based selection of egress routes - such as class-based + selection of an egress MPLS path. + + The policies that are defined in this model are applied to a + particular ingress context of a network element (e.g., interface) + and are defined to apply following other interface policy such as + QoS classification and access control lists. + + This module defines: + + - policy-forwarding + | + |--- policies + | |-- policy + | |-- [match criteria] How packets are defined to + | | match policy. + | |-- [forwarding-action] How packets matching should + | be forwarded. + |--- interfaces + | |-- interfaces + | | -- apply-forwarding-policy Forwarding policy to + | used on the interface. + |--- path-selection-groups + |-- path-selection-group A group of forwarding resources + that are grouped for purposes + of next-hop selection. + + A forwarding-policy specifies the match criteria that it intends + to use to determine the packets that it reroutes - this may + consist of a number of criteria, such as DSCP. The action of the + policy results in a forwarding action being applied to matching + packets. For example, decapsulating the packet from a GRE header. + In order to enact the policy based on particular interfaces - the + forwarding-policy is applied to an interface via referencing it + within an 'apply-forwarding-policy' statement associated with an + interface. + + In some cases (e.g., Class-Based Tunnel Selection) the forwarding + action does not resolve to a single egress action, and rather + normal forwarding rules are to be applied but considering a subset + of forwarding resources. In these cases, a path-selection-group + can be created, referencing the subset of forwarding paths that + should be used for the egress selection. In the case that a subset + of MPLS LSPs are eligible for, say, DSCP 46 marked packets, a + path-selection-group is created, referencing the subset of LSPs. + The forwarding action of the corresponding policy is set to + PATH_GROUP and references the configured group of LSPs."; + + oc-ext:openconfig-version "0.2.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.2.1"; + } + + revision "2017-06-21" { + description + "Amend policy forwarding model based on ACL changes."; + reference "0.2.0"; + } + + revision "2017-02-28" { + description + "Initial public release of policy forwarding."; + reference "0.1.0"; + } + + revision "2016-11-08" { + description + "Initial revision."; + reference "0.0.1"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + grouping policy-forwarding-top { + description + "Top-level grouping for Policy Forwarding"; + + container policy-forwarding { + description + "Configuration and operational state relating to policy-forwarding within + a network instance."; + + uses pf-forwarding-policy-structural; + uses pf-interfaces-structural; + uses pf-path-groups-structural; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-policy-types.yang b/vendor/cisco/nx/9.3-14/openconfig-policy-types.yang new file mode 100644 index 000000000..46efef7f4 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-policy-types.yang @@ -0,0 +1,231 @@ +module openconfig-policy-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/policy-types"; + + prefix "oc-pol-types"; + + // import some basic types + import ietf-yang-types { prefix yang; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module contains general data definitions for use in routing + policy. It can be imported by modules that contain protocol- + specific policy conditions and actions."; + + oc-ext:openconfig-version "3.1.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.1.1"; + } + + revision "2018-06-05" { + description + "Add PIM, IGMP to INSTALL_PROTOCOL_TYPES identity"; + reference "3.1.0"; + } + + revision "2017-07-14" { + description + "Replace policy choice node/type with policy-result + enumeration;simplified defined set naming;removed generic + IGP actions; migrate to OpenConfig types; added mode for + prefix sets"; + reference "3.0.0"; + } + + revision "2016-05-12" { + description + "OpenConfig public release"; + reference "2.0.1"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + identity ATTRIBUTE_COMPARISON { + description + "base type for supported comparison operators on route + attributes"; + } + + identity ATTRIBUTE_EQ { + base ATTRIBUTE_COMPARISON; + description "== comparison"; + } + + identity ATTRIBUTE_GE { + base ATTRIBUTE_COMPARISON; + description ">= comparison"; + } + + identity ATTRIBUTE_LE { + base ATTRIBUTE_COMPARISON; + description "<= comparison"; + } + + typedef match-set-options-type { + type enumeration { + enum ANY { + description "match is true if given value matches any member + of the defined set"; + } + enum ALL { + description "match is true if given value matches all + members of the defined set"; + } + enum INVERT { + description "match is true if given value does not match any + member of the defined set"; + } + } + default ANY; + description + "Options that govern the behavior of a match statement. The + default behavior is ANY, i.e., the given value matches any + of the members of the defined set"; + } + + typedef match-set-options-restricted-type { + type enumeration { + enum ANY { + description "match is true if given value matches any member + of the defined set"; + } + enum INVERT { + description "match is true if given value does not match any + member of the defined set"; + } + } + default ANY; + description + "Options that govern the behavior of a match statement. The + default behavior is ANY, i.e., the given value matches any + of the members of the defined set. Note this type is a + restricted version of the match-set-options-type."; + //TODO: restriction on enumerated types is only allowed in + //YANG 1.1. Until then, we will require this additional type + } + + grouping attribute-compare-operators { + description "common definitions for comparison operations in + condition statements"; + + leaf operator { + type identityref { + base ATTRIBUTE_COMPARISON; + } + description + "type of comparison to be performed"; + } + + leaf value { + type uint32; + description + "value to compare with the community count"; + } + } + + typedef tag-type { + type union { + type uint32; + type yang:hex-string; + } + description "type for expressing route tags on a local system, + including IS-IS and OSPF; may be expressed as either decimal or + hexidecimal integer"; + reference + "RFC 2178 OSPF Version 2 + RFC 5130 A Policy Control Mechanism in IS-IS Using + Administrative Tags"; + } + + identity INSTALL_PROTOCOL_TYPE { + description + "Base type for routing protocols, including those which may + install prefixes into the RIB"; + } + + identity BGP { + base INSTALL_PROTOCOL_TYPE; + description + "BGP"; + reference + "RFC 4271"; + } + + identity ISIS { + base INSTALL_PROTOCOL_TYPE; + description + "IS-IS"; + reference + "ISO/IEC 10589"; + } + + identity OSPF { + base INSTALL_PROTOCOL_TYPE; + description + "OSPFv2"; + reference + "RFC 2328"; + } + + identity OSPF3 { + base INSTALL_PROTOCOL_TYPE; + description + "OSPFv3"; + reference + "RFC 5340"; + } + + identity STATIC { + base INSTALL_PROTOCOL_TYPE; + description + "Locally-installed static route"; + } + + identity DIRECTLY_CONNECTED { + base INSTALL_PROTOCOL_TYPE; + description + "A directly connected route"; + } + + identity LOCAL_AGGREGATE { + base INSTALL_PROTOCOL_TYPE; + description + "Locally defined aggregate route"; + } + + identity PIM { + base INSTALL_PROTOCOL_TYPE; + description + "Protocol Independent Multicast"; + reference + "RFC 7761"; + } + + identity IGMP { + base INSTALL_PROTOCOL_TYPE; + description + "Internet Group Management Protocol"; + reference + "RFC 3376"; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-procmon.yang b/vendor/cisco/nx/9.3-14/openconfig-procmon.yang new file mode 100644 index 000000000..10c0551f5 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-procmon.yang @@ -0,0 +1,180 @@ +module openconfig-procmon { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/system/procmon"; + + prefix "oc-proc"; + + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + import openconfig-types { prefix oc-types; } + import openconfig-yang-types { prefix oc-yang; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module provides data definitions for process health + monitoring of one or more processes running on the system."; + + oc-ext:openconfig-version "0.4.0"; + + revision "2019-03-15" { + description + "Update process start time to be an absolute timestamp, + ensure that the units for CPU time are expressed correctly. + Update cpu-usage leaves to commonly use counter64 for consumed + CPU time."; + reference "0.4.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.1"; + } + + revision "2017-09-18" { + description + "Updated to use OpenConfig types modules"; + reference "0.3.0"; + } + + revision "2017-07-06" { + description + "Move to oc-inet types, add IETF attribution, add RADIUS + counters, changed password leaf names to indicate hashed"; + reference "0.2.0"; + } + + revision "2017-01-29" { + description + "Initial public release"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // grouping statements + + grouping procmon-processes-top { + description + "Top level grouping for attributes for processes."; + + container processes { + description + "Parameters related to all monitored processes"; + + list process { + key "pid"; + config false; + description + "List of monitored processes"; + + leaf pid { + type leafref { + path "../state/pid"; + } + description + "Reference to the process pid key"; + } + + container state { + config false; + description + "State parameters related to monitored processes"; + + uses procmon-process-attributes-state; + } + } + } + } + + grouping procmon-process-attributes-state { + description + "Attributes state definitions for a process"; + + leaf pid { + type uint64; + description + "The process pid"; + } + + leaf name { + type string; + description + "The process name"; + } + + leaf-list args { + type string; + description + "Current process command line arguments. Arguments with + a parameter (e.g., --option 10 or -option=10) should be + represented as a single element of the list with the + argument name and parameter together. Flag arguments, i.e., + those without a parameter should also be in their own list + element."; + } + + leaf start-time { + type oc-types:timeticks64; + description + "The time at which this process started, + relative to the UNIX epoch. The system must be + synchronized such that the start-time can be + reported accurately, otherwise it should not be reported."; + } + + leaf cpu-usage-user { + type oc-yang:counter64; + units "nanoseconds"; + description + "CPU time consumed by this process in user mode in + nanoseconds."; + } + + leaf cpu-usage-system { + type oc-yang:counter64; + units "nanoseconds"; + description + "CPU time consumed by this process in kernel mode."; + } + + leaf cpu-utilization { + type oc-types:percentage; + description + "The percentage of CPU that is being used by the process."; + } + + leaf memory-usage { + type uint64; + units "bytes"; + description + "Bytes allocated and still in use by the process"; + } + + leaf memory-utilization { + type oc-types:percentage; + description + "The percentage of RAM that is being used by the process."; + } + } + + // augment statements + + // rpc statements + + // notification statements +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-qos-elements.yang b/vendor/cisco/nx/9.3-14/openconfig-qos-elements.yang new file mode 100644 index 000000000..d089a1e9e --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-qos-elements.yang @@ -0,0 +1,1322 @@ +submodule openconfig-qos-elements { + + belongs-to openconfig-qos { + prefix "oc-qos"; + } + + import openconfig-extensions { prefix oc-ext; } + import openconfig-qos-types { prefix oc-qos-types; } + import openconfig-packet-match { prefix oc-pkt-match; } + import openconfig-platform { prefix oc-platform; } + import openconfig-types { prefix oc-types; } + + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This submodule defines configuration and operational state + data associated with QoS elements. The primary elements of + the model include: + + classifiers: match packets with a specific characteristic + + forwarding groups: logical class of packets that receive + common forwarding treatment + + queues: collection of packets to be scheduled, including + a queue management scheme + + schedulers: sequence of one more elements that schedule + packets for transmission, including policer and shaper + functions"; + + oc-ext:openconfig-version "0.2.3"; + + revision "2019-11-28" { + description + "Fix xpaths in when statements"; + reference "0.2.3"; + } + + revision "2019-08-20" { + description + "Fix typo in classifiers container name"; + reference "0.2.2"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.2.1"; + } + + revision "2016-12-16" { + description + "Fix incorrect interface-ref placement"; + reference "0.2.0"; + } + + revision "2016-06-03" { + description + "Initial revision"; + reference "0.1.0"; + } + + grouping qos-classifier-term-config { + description + "Configuration data for list of match criteria in a QoS + classifier"; + + leaf id { + type string; + description + "Identifier for the match term"; + } + } + + grouping qos-classifier-term-state { + description + "Operational state data for list of match criteria in a QoS + classifier"; + } + + grouping qos-classifier-term-action-config { + description + "Configuration parameters for actions for a classifier term."; + + leaf target-group { + type leafref { + // Current location: + // /qos/classifiers/classifier/terms/term/actions/config/target-group + path "../../../../../../../forwarding-groups/forwarding-group/" + + "config/name"; + } + description + "References the forwarding group or class to which the + matched packets should be assigned"; + } + } + + grouping qos-classifier-terms-top { + description + "Top-level grouping for list of match criteria in a QoS + classifier"; + + container terms { + description + "Enclosing container for ths list of terms"; + + list term { + key "id"; + description + "List of match terms used in the classifier"; + + leaf id { + type leafref { + path "../config/id"; + } + description + "Reference to id list key."; + } + + container config { + description + "Configuration data for list of match criteria in a QoS + classifier"; + + uses qos-classifier-term-config; + } + + container state { + config false; + description + "Operational state data for list of match criteria in a + QoS classifier"; + + uses qos-classifier-term-config; + uses qos-classifier-term-state; + } + + container conditions { + description + "Conditions for the classifier term. Packets must match all of + the criteria specified within the match condition to be considered + matching the term."; + + // TODO(robjs): Consider whether we should have classifiers + // that can match >1 different value of a field, or whether + // this should require different match terms within the + // classifier. + uses oc-pkt-match:ethernet-header-top; + uses oc-pkt-match:ipv4-protocol-fields-top; + uses oc-pkt-match:ipv6-protocol-fields-top; + uses oc-pkt-match:transport-fields-top; + uses oc-pkt-match:mpls-header-top; + } + + container actions { + description + "Actions to be applied for packets matching the specified + classification rules."; + + container config { + description + "Actions to be applied to packets that match the classifier + term."; + + uses qos-classifier-term-action-config; + } + + container state { + config false; + description + "Operational state parameters associated with classifier term + actions"; + + uses qos-classifier-term-action-config; + } + + container remark { + description + "Remark actions to be associated with packets that match the + classifier term. Where a packet matches these criteria, the + specified rewrite actions should be performed."; + + uses qos-common-remark-actions; + } + } + } + } + } + + grouping qos-classifier-config { + description + "Configuration data for classifiers"; + + leaf name { + type string; + description + "User-assigned name of the classifier"; + } + + leaf type { + type enumeration { + enum IPV4 { + description + "Classifier matches and operates + on packets with IPv4 headers."; + } + enum IPV6 { + description + "Classifier matches and operates + on packets with IPv6 headers."; + } + enum MPLS { + description + "Classifier matches and operates + on packets with MPLS headers."; + } + enum ETHERNET { + description + "Classifier matches and operates + on fields within the L2 ETHERNET + headers."; + } + } + description + "Type of classifier."; + } + } + + grouping qos-classifier-state { + description + "Operational state data for classifiers"; + + } + + grouping qos-classifier-top { + description + "Top-level grouping for classifier data"; + + container classifiers { + description + "Enclosing container for QoS classifiers"; + + list classifier { + key "name"; + description + "List of classifier elements"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to list key name"; + } + + container config { + description + "Configuration data for classifers"; + + uses qos-classifier-config; + } + + container state { + config false; + description + "Operational state data for classifiers"; + + uses qos-classifier-config; + uses qos-classifier-state; + } + + uses qos-classifier-terms-top; + } + } + } + + grouping qos-fabric-trace-config { + description + "Configuration data for fabric trace data"; + + leaf source { + type leafref { + path "/oc-platform:components/oc-platform:component" + + "/oc-platform:config/oc-platform:name"; + } + description + "Source component for fabric trace data"; + } + + leaf dest { + type leafref { + path "/oc-platform:components/oc-platform:component" + + "/oc-platform:config/oc-platform:name"; + } + description + "Destination component for fabric trace data"; + } + } + + grouping qos-forwarding-group-config { + description + "Configuration data for forwarding groups"; + + leaf name { + type string; + description + "Name of the forwarding group"; + } + + // TODO(robjs, Simon G): Discuss optionally moving + // this to a high/low priority indicator, if this + // is common across implementations. + leaf fabric-priority { + type uint8; + description + "Set the priority for the forwarding group for + local transmission through the device, e.g., + across a switching fabric. Higher priorities + are considered to be better, such that traffic + with fabric priority 128 is considered to be + higher priority than that with fabric priority + 0."; + } + + leaf output-queue { + type leafref { + path "../../../../queues/queue/config/name"; + } + description + "Queue for packets in this forwarding group."; + } + } + + grouping qos-forwarding-group-state { + description + "Operational state data for forwarding groups"; + } + + grouping qos-forwarding-group-top { + description + "Top-level grouping for forwarding group data"; + + container forwarding-groups { + description + "Enclosing container for list of forwarding groups"; + + list forwarding-group { + key "name"; + description + "List of forwarding groups. Forwarding groups are + logical groups of traffic that will receive common + forwarding treatment."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to name list key"; + } + + container config { + description + "Configuration data for forwarding groups"; + + uses qos-forwarding-group-config; + } + + container state { + config false; + description + "Operational state data for forwarding groups"; + + uses qos-forwarding-group-config; + uses qos-forwarding-group-state; + } + } + } + } + + grouping qos-queue-red-common-config { + description + "Common configuration parameters applicable to RED and + its variants"; + + leaf enable-ecn { + type boolean; + default false; + description + "When set to true, the device should mark packets that are + ECN-capable rather than dropping them. The receiver is + expected to echo the congestion signal back to the sender + so that it may adjust its transmission rate accordingly. + When this leaf is false, the device drops packets according + to the RED/WRED probability, or all packets if the + average queue length is above the max threshold."; + } + } + + grouping qos-queue-red-common-state { + description + "Common operational state data applicable to RED and + its variants"; + + } + + grouping qos-queue-wred-config { + description + "Configuration data for WRED-managed queues"; + + // TODO(robjs, aashaikh): Add configuration for weighted RED + // within this grouping. + } + + grouping qos-queue-wred-state { + description + "Operational state data for WRED-managed queues"; + } + + grouping qos-queue-wred-top { + description + "Top-level grouping for WRED-managed queues"; + + container wred { + description + "Top-level container for WRED data"; + + container config { + description + "Configuration data for WRED"; + + uses qos-queue-wred-config; + } + + container state { + config false; + description + "Operational state data for WRED"; + + uses qos-queue-wred-config; + uses qos-queue-wred-state; + } + } + } + + grouping qos-queue-red-config { + description + "Configuration data for queues managed with RED"; + + leaf minth { + type uint64; + units bytes; + description + "The mininum threshold parameter for a RED-managed queue. + When the average queue length is less than minth, all + packets are admitted to the queue."; + } + + leaf maxth { + type uint64; + units bytes; + description + "The maximum threshold parameter for a RED-managed queue. + When the average queue length exceeds the maxth value, all + packets are dropped (or marked if ECN is enabled)."; + } + } + + grouping qos-queue-red-state { + description + "Operational state data for queues managed with RED"; + } + + grouping qos-queue-red-top { + description + "Top-level grouping for RED queues"; + + container red { + description + "Top-level container for data related to RED-managed + queues"; + + container config { + description + "Configuration data for RED queues"; + + uses qos-queue-red-config; + } + + container state { + config false; + description + "Operational state data for RED queues"; + + uses qos-queue-red-config; + uses qos-queue-red-state; + } + } + } + + + grouping qos-queue-config { + description + "Configuration data for QoS egress queues"; + + leaf name { + type string; + description + "User-defined name of the queue"; + } + + leaf queue-type { + type identityref { + base oc-qos-types:QOS_QUEUE_TYPE; + } + description + "Sets the type of the queue"; + } + } + + grouping qos-queue-state { + description + "Operational state data for egress queues"; + } + + grouping qos-queue-top { + description + "Top-level grouping for queue elements"; + + container queues { + description + "Enclosing container for the list of queues"; + + list queue { + key "name"; + description + "List of defined queues"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the queue name list key."; + } + + container config { + description + "Configuration data for queues"; + + uses qos-queue-config; + } + + container state { + config false; + description + "Operational state data for queues"; + + uses qos-queue-config; + uses qos-queue-state; + } + + uses qos-queue-red-top { + when "./config/queue-type = 'oc-qos-types:RED'" { + description + "RED configuration is valid when the queue-type + is set accordingly."; + } + } + uses qos-queue-wred-top { + when "./config/queue-type = 'oc-qos-types:WRED'" { + description + "WRED configuration is valid when the queue-type + is set accordingly."; + } + } + } + } + } + + grouping qos-scheduler-output-config { + description + "Configuration data for scheduler output operations"; + + leaf output-type { + type enumeration { + enum SCHEDULER { + description + "Scheduler output is a child scheduler, e.g. to + implement hierarchical schedulers."; + } + enum FWD_GROUP { + description + "Scheduler output is a forwarding group, e.g., when + performing ingress scheduling before packets traverse + a fabric to be processed by an egress forwarding + complex."; + } + enum INTERFACE { + description + "Scheduler output is an interface for forwarding."; + } + } + description + "Describes the type of output sink for the scheduler."; + } + + leaf child-scheduler { + // TODO: consider whether both child (output) and parent + // (input) references are needed; consider whether child + // reference should separate in-profile and out-of-profile + type leafref { + // current loc: + // /qos/scheduler-policies/scheduler-policy/schedulers/scheduler/ + // output/config/child-scheduler + path "../../../../../../../scheduler-policies/scheduler-policy/" + + "config/name"; + } + when "../output-type = 'SCHEDULER'" { + description + "The child-scheduler leaf is valid only when + the output type of the scheduler is a child scheduler"; + } + description + "When the scheduler output type is a child scheduler, + this leaf provides a reference to the downstream + scheduler."; + } + + leaf output-fwd-group { + type leafref { + path "../../../../../../../forwarding-groups/forwarding-group" + + "/config/name"; + } + when "../output-type = 'FWD_GROUP'" { + description + "The output-fwd-group leaf is valid only when + the output type of the scheduler is a forwarding group"; + } + description + "When the scheduler output type is a forwarding group, + this leaf provides a reference to the forwarding group."; + } + } + + grouping qos-scheduler-output-state { + description + "Operational state data for scheduler output"; + } + + grouping qos-scheduler-output-top { + description + "Top-level grouping for data related to scheduler output"; + + container output { + description + "Top-level container for scheduler output data"; + + container config { + description + "Configuration data for scheduler output"; + + uses qos-scheduler-output-config; + } + + container state { + config false; + description + "Operational state data for scheduler output"; + + uses qos-scheduler-output-config; + uses qos-scheduler-output-state; + } + } + } + + grouping qos-scheduler-inputs-config { + description + "Configuration data for scheduler input sources"; + + leaf id { + type string; + description + "User-defined identifier for the scheduler input"; + } + + leaf input-type { + type enumeration { + enum QUEUE { + description + "Input is a defined queue."; + } + enum IN_PROFILE { + description + "Input is in-profile traffic from a parent scheduler/ + shaper"; + } + enum OUT_PROFILE { + description + "Input is out-of-profile traffic from a parent + scheduler/shaper"; + } + } + description + "Describes the type of input source for the scheduler"; + } + + leaf queue { + type leafref { + // current loc: /qos/scheduler-policies/scheduler-policy/schedulers/ + // scheduler/inputs/input/config/queue + path "../../../../../../../../queues/queue/name"; + } + when "../input-type = 'QUEUE'" { + description + "The queue leaf is valid only when + the input type of the scheduler is a queue"; + } + description + "Reference to a queue that is an input source for the + scheduler"; + } + + leaf weight { + type uint64; + description + "For priority schedulers, this indicates the priority of + the corresponding input. Higher values indicate higher + priority. For weighted round-robin schedulers, this leaf + indicates the weight of the corresponding input."; + } + } + + grouping qos-scheduler-inputs-state { + description + "Operational state data for scheduler input sources"; + } + + grouping qos-scheduler-inputs-top { + description + "Top-level grouping for defining inputs to a scheduler."; + + container inputs { + description + "Enclosing container "; + + list input { + key "id"; + description + "List of input sources for the scheduler."; + + leaf id { + type leafref { + path "../config/id"; + } + description + "Reference to list key"; + } + + container config { + description + "Configuration data for scheduler input sources"; + + uses qos-scheduler-inputs-config; + } + + container state { + config false; + description + "Operational state data for scheduler input sources"; + + uses qos-scheduler-inputs-config; + uses qos-scheduler-inputs-state; + } + } + } + } + + grouping qos-scheduler-1r2c-config { + description + "Configuration data for 1 rate, 2 color scheduler."; + + leaf cir { + type uint64; + units bps; + description + "Committed information rate for the single-rate token + bucket scheduler. This value represents the rate at which + tokens are added to the bucket."; + } + + leaf cir-pct { + type oc-types:percentage; + description + "Committed information rate for the single-rate token + bucket scheduler. This value represents the rate at which + tokens are added to the bucket. It is expressed as a + percentage of the total bandwidth allocated to the + context in which the scheduler is referenced."; + } + + leaf cir-pct-remaining { + type oc-types:percentage; + description + "Committed information rate for the single-rate token + bucket scheduler. This value represents the rate at which + tokens are added to the bucket. It is expressed as a + percentage of the unallocated bandwidth available in the + context in which the scheduled is referenced."; + } + + leaf bc { + type uint32; + units bytes; + description + "Committed burst size for the single-rate token bucket + scheduler. This value represents the depth of the token + bucket."; + } + + leaf queuing-behavior { + type oc-qos-types:queue-behavior; + description + "The type of scheduler that is being configured."; + } + + // TODO(robjs): Add when statements to these parameters when the + // types of scheduler are agreed through review. + leaf max-queue-depth-bytes { + type uint32; + units bytes; + description + "When the scheduler is specified to be a shaper - the + maximum depth of the queue in bytes is the value + specified by this leaf."; + } + + leaf max-queue-depth-packets { + type uint32; + units packets; + description + "When the scheduler is specified to be a shaper - the + maximum depth of the queue in packets is the value + specified by this leaf."; + } + + leaf max-queue-depth-percent { + type oc-types:percentage; + description + "The queue depth specified as a percentage of the total + available buffer that is avaialble."; + } + } + + grouping qos-scheduler-1r2c-top { + description + "Top-level grouping for 1 rate, 2 color shapers"; + + container one-rate-two-color { + description + "Top-level container for data related to a 1 rate, 2 color + shaper."; + + container config { + description + "Configuration data for 1 rate, 2 color shapers"; + + uses qos-scheduler-1r2c-config; + } + + container state { + config false; + description + "Operational state data for 1 rate, 2 color shapers"; + + uses qos-scheduler-1r2c-config; + } + + container conform-action { + description + "Action to be applied to packets that are scheduled within the + CIR of the one-rate, two-colour scheduler. Packets that receive + a token from the in-CIR bucket are said to be conforming and + have all of the specified actions applied."; + + container config { + description + "Configuration parameters relating to conforming packets for the + 1r2c scheduler."; + + uses qos-common-remark-actions-config; + } + + container state { + config false; + description + "Operational state parameters relating to conforming packets + for the 1r2c scheduler."; + + uses qos-common-remark-actions-config; + } + } + + container exceed-action { + description + "Action to be applied to packets that are scheduled above the CIR + of the one-rate, two-colour shaper. Packets that do not receive a + token from the in-CIR bucket are said to be exceeding, and have + all of the specified actions applied."; + + container config { + description + "Configuration parameters relating to exceeding packets for + the 1r2c scheduler."; + + uses qos-common-remark-actions-config; + uses qos-common-scheduler-actions-config; + } + + container state { + config false; + description + "Operational state parameters relating to exceeding + packets for the 1r2c scheduler."; + + uses qos-common-remark-actions-config; + uses qos-common-scheduler-actions-config; + } + } + } + } + + grouping qos-scheduler-2r3c-config { + description + "Configuration data for 2 rate, 3 color policer"; + + leaf cir { + type uint64; + units bps; + description + "Committed information rate for the dual-rate token + bucket policer. This value represents the rate at which + tokens are added to the primary bucket."; + } + + leaf cir-pct { + type oc-types:percentage; + description + "Committed information rate for the dual-rate token bucket + policer. This value represents the rate at which tokens + are added to the primary bucket. It is expressed as a + percentage of the total bandwidth available within the + context the scheduler is instantiated."; + } + + leaf cir-pct-remaining { + type oc-types:percentage; + description + "Committed information rate for the dual-rate token + bucket policer. This value represents the rate at which + tokens are added to the primary bucket. It is expressed + as a percentage of the remaining bandwidth within the + context the scheduler is instantiated."; + } + + leaf pir { + type uint64; + units bps; + description + "Peak information rate for the dual-rate token bucket + policer. This value represents the rate at which tokens + are added to the secondary bucket."; + } + + leaf pir-pct { + type oc-types:percentage; + description + "Peak information rate for the dual-rate token bucket + policer. This value represents the rate at which tokens + are added to the secondary bucket. The value is expressed + as a percentage of the total bandwidth available in the + context in which the scheduler is instantiated."; + } + + leaf pir-pct-remaining { + type oc-types:percentage; + description + "Peak information rate for the dual-rate token + bucket policer. This value represents the rate at which + tokens are added to the secondary bucket. It is expressed + as a percentage of the remaining bandwidth within the + context the scheduler is instantiated."; + } + + leaf bc { + type uint32; + units bytes; + description + "Committed burst size for the dual-rate token bucket + policer. This value represents the depth of the token + bucket."; + } + + leaf be { + type uint32; + units bytes; + description + "Excess burst size for the dual-rate token bucket policer. + This value represents the depth of the secondary bucket."; + } + } + + grouping qos-scheduler-2r3c-top { + description + "Top-level grouping for 2 rate, 3 color policers.."; + + container two-rate-three-color { + description + "Top-level container for data for a 2 rate, 3 color policer."; + + container config { + description + "Configuration data for 2 rate, 3 color policers."; + + uses qos-scheduler-2r3c-config; + } + + container state { + config false; + description + "Operational state data for 2 rate, 3 color policers."; + + uses qos-scheduler-2r3c-config; + } + + container conform-action { + description + "Action to be applied to the packets that are scheduled + within the CIR of the policer. All packets that receive + a token from this bucket have all actions specified + applied to them"; + + container config { + description + "Configuration parameters for the conform action of a + 2r3c policer."; + uses qos-common-remark-actions-config; + } + + container state { + config false; + description + "Operational state parameters relating to the conform + action of a 2r3c policer."; + uses qos-common-remark-actions-config; + } + } + + container exceed-action { + description + "Action to be applied to the packets that are scheduled + within the PIR of the policer. Packets that receive a + token from within the PIR allocation have all the + specified actions applied to them"; + + container config { + description + "Configuration parameters relating to the action + applied to exceeding packets."; + + uses qos-common-remark-actions-config; + uses qos-common-scheduler-actions-config; + } + + container state { + config false; + description + "Operational state parameters relating to the action + applied to exceeding packets."; + + uses qos-common-remark-actions-config; + uses qos-common-scheduler-actions-config; + } + } + + container violate-action { + description + "Action to be applied to the packets that are scheduled + above the PIR of the policer. Packets that do not receive + a token from either bucket have all specified actions + applied to them."; + + container config { + description + "Configuration parameters relating to the action + applied to violating packets."; + + uses qos-common-remark-actions-config; + uses qos-common-scheduler-actions-config; + } + + container state { + config false; + description + "Operational state parameters relating to the action + applied to violating packets."; + + uses qos-common-remark-actions-config; + uses qos-common-scheduler-actions-config; + } + } + } + } + + grouping qos-scheduler-config { + description + "Configuration data for QoS schedulers"; + + leaf sequence { + type uint32; + description + "Sequence number for the scheduler within the scheduler + policy. Schedulers are processed from lowest sequence + to highest."; + } + + leaf type { + type identityref { + base oc-qos-types:QOS_SCHEDULER_TYPE; + } + description + "Sets the type of scheduler, i.e. the scheduling algorithm + used to serve inputs."; + } + + leaf priority { + type enumeration { + enum STRICT { + description + "This scheduler term is considered as a strict priority + term - such that packets that arrive in the queue are + immediately serviced."; + } + } + description + "Priority of the scheduler within the scheduler policy."; + } + } + + grouping qos-scheduler-state { + description + "Operational state data for QoS schedulers"; + } + + grouping qos-scheduler-policy-config { + description + "Configuration parameters relating to a scheduler policy"; + + leaf name { + type string; + description + "Name for the scheduler policy."; + } + } + + grouping qos-scheduler-top { + description + "Top-level grouping for the set of defined QoS schedulers"; + + container scheduler-policies { + description + "Enclosing container for the list of configured scheduler policies."; + + list scheduler-policy { + key "name"; + + description + "List of scheduler policies. A scheduler policy is a set of schedulers + that are to be applied together. Each scheduler within a scheduler + policy takes an input, and outputs it according to a scheduling + discipline that is specified within it. The schedulers consume + resources according to the specification that is provided - which + may be absolute resource limits, or relative."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the name of the scheduler policy"; + } + + container config { + description + "Configuration parameters relating to a scheduler policy."; + uses qos-scheduler-policy-config; + } + + container state { + config false; + description + "Operational state parameters relating to a scheduler policy."; + uses qos-scheduler-policy-config; + } + + container schedulers { + description + "Schedulers within the scheduler policy."; + + list scheduler { + key "sequence"; + description + "List of defined QoS traffic schedulers."; + + leaf sequence { + type leafref { + path "../config/sequence"; + } + description + "Reference to the list key"; + } + + container config { + description + "Configuration data for QoS schedulers"; + + uses qos-scheduler-config; + } + + container state { + config false; + + description + "Operational state data for QoS schedulers"; + + uses qos-scheduler-config; + uses qos-scheduler-state; + } + + uses qos-scheduler-inputs-top; + uses qos-scheduler-output-top; + uses qos-scheduler-1r2c-top; + uses qos-scheduler-2r3c-top; + } + } + } + } + } + + grouping qos-common-remark-actions { + description + "Common grouping specifying actions related to re-marking + packets"; + + container config { + description + "Configuration parameters relating to remarking packets."; + uses qos-common-remark-actions-config; + } + + container state { + config false; + description + "Operational state parameters relating to remarking packets."; + uses qos-common-remark-actions-config; + } + } + + grouping qos-common-scheduler-actions-config { + description + "Configuration data for common actions of a QoS scheduler."; + + leaf drop { + type boolean; + description + "If set to true, packets within this context are dropped."; + } + } + + grouping qos-common-remark-actions-config { + description + "Configuration data for QoS re-marking actions"; + + leaf set-dscp { + type uint8; + description + "Sets the 6-bit DSCP (differentiated services code point) + value in the IP packet header."; + reference + "RFC 2474 - Definition of the Differentiated Services Field + (DS Field) in the IPv4 and IPv6 Headers"; + } + + leaf set-dot1p { + type uint8; + description + "Sets the 3-bit class-of-service value in the + Ethernet packet header for 802.1Q VLAN-tagged packets, + also known as PCP (priority code point)."; + reference + "IEEE 802.1Q-2014 - IEEE Standard for Local and metropolitan + area networks--Bridges and Bridged Networks"; + } + + leaf set-mpls-tc { + type uint8; + description + "Sets the 3-bit traffic class value (also referred to as EXP + or CoS) in MPLS packets."; + reference + "RFC 3270 - Multi-Protocol Label Switching (MPLS) Support of + Differentiated Services"; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-qos-interfaces.yang b/vendor/cisco/nx/9.3-14/openconfig-qos-interfaces.yang new file mode 100644 index 000000000..821e89620 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-qos-interfaces.yang @@ -0,0 +1,678 @@ +submodule openconfig-qos-interfaces { + + belongs-to openconfig-qos { + prefix "oc-qos"; + } + + // import openconfig-qos-elements { prefix oc-qos; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-yang-types { prefix oc-yang; } + + include openconfig-qos-elements; + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This submodule defines data related to quality-of-service + configuration and operational state associated with + interfaces."; + + oc-ext:openconfig-version "0.2.3"; + + revision "2019-11-28" { + description + "Fix xpaths in when statements"; + reference "0.2.3"; + } + + revision "2019-08-20" { + description + "Fix typo in classifiers container name"; + reference "0.2.2"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.2.1"; + } + + revision "2016-12-16" { + description + "Fix incorrect interface-ref placement"; + reference "0.2.0"; + } + + revision "2016-06-03" { + description + "Initial revision"; + reference "0.1.0"; + } + + grouping qos-interface-classifier-match-config { + description + "Configuration data for match terms in the classifier + associated with an interface"; + + leaf id { + type leafref { + // Current location: + // /qos/interfaces/interface/input/classifiers/classifier/ + // terms/term/config/id + path "../../../../../../../../../classifiers/" + + "classifier[name=current()/../../../../config/name]/" + + "terms/term/config/id"; + + } + description + "Reference to match terms in the classifier"; + } + } + + grouping qos-interface-classifier-match-state { + description + "Operational state data for match terms in the classifier + associated with an interface"; + + leaf matched-packets { + type oc-yang:counter64; + description + "Count of the number of packets matching this classifier + match term on the interface."; + } + + leaf matched-octets { + type oc-yang:counter64; + description + "Count of the number of octets (bytes) matching this + classifier match term on the interface."; + } + + } + + grouping qos-interface-classifier-match-top { + description + "Top-level grouping for match terms in the classifier + associated with an interface"; + + container terms { + description + "Enclosing container for the list of match terms in the + classifier"; + + list term { + key "id"; + description + "List of match terms in the classifier associated with the + interface"; + + leaf id { + type leafref { + path "../config/id"; + } + description + "Reference to match term id list key"; + } + + container config { + description + "Configuration data for match terms in the classifier + associated with an interface"; + + uses qos-interface-classifier-match-config; + } + + container state { + config false; + description + "Operational state data for match terms in the classifier + associated with an interface"; + + uses qos-interface-classifier-match-config; + uses qos-interface-classifier-match-state; + } + } + } + } + + grouping qos-interface-classifier-top { + description + "Top-level grouping for a QoS classifier associated with an + interface"; + + container classifiers { + description + "Classifiers to be applied to the interface."; + + list classifier { + key "type"; + + description + "A list of classifiers that should be applied to the interface"; + + leaf type { + type leafref { + path "../config/type"; + } + description + "Reference to the classifier name."; + } + + container config { + description + "Configuration parameters for the list of classifiers."; + uses qos-interface-classifiers-config; + } + + container state { + config false; + description + "Operational state parameters for the list of classifiers."; + uses qos-interface-classifiers-config; + } + + uses qos-interface-classifier-match-top; + } + } + } + + grouping qos-interface-classifiers-config { + description + "Configuration parameters for the list of classifiers"; + + leaf name { + type leafref { + // current loc: /qos/interfaces/interface/input/classifiers/ + // classifier/config/name + path "../../../../../../../classifiers/classifier/config/name"; + } + description + "Reference to the classifier to be applied to ingress traffic on + the interface"; + } + + leaf type { + type enumeration { + enum IPV4 { + description + "Classifier matches IPv4 packets."; + value 4; + } + enum IPV6 { + description + "Classifier matches IPv6 packets."; + value 6; + } + enum MPLS { + description + "Classifier matches MPLS packets."; + } + } + description + "Type of packets matched by the classifier."; + } + } + + grouping qos-interface-queue-config { + description + "Configuration data for the queue associated with the + interface"; + + leaf name { + // TODO(robjs): Previously we proposed that the queue name here is + // only a queue that has been configured. However, in some cases we + // may want to have queues that have not been configured exist. + //type leafref { + // path "../../../../../../queues/queue/config/name"; + //} + type string; + description + "Reference to the queue associated with this interface. + A queue may be explicitly configured, or implicitly created + by the system based on default queues that are instantiated + by a hardware component, or are assumed to be default on + the system."; + } + } + + grouping qos-interface-queue-state { + description + "Operational state data for the queue associated with the + interface"; + + leaf max-queue-len { + type oc-yang:counter64; + units bytes; + description + "Maximum observed queue length"; + } + + leaf avg-queue-len { + type oc-yang:counter64; + units bytes; + description + "Average observed queue length"; + + } + + leaf transmit-pkts { + type oc-yang:counter64; + description + "Number of packets transmitted by this queue"; + } + + leaf transmit-octets { + type oc-yang:counter64; + description + "Number of octets trasmitted by this queue"; + } + + leaf dropped-pkts { + type oc-yang:counter64; + description + "Number of packets dropped by the queue due to overrun"; + } + } + + grouping qos-interface-queue-top { + description + "Top-level grouping for the queue associated with the + interface"; + + container queues { + description + "Surrounding container for a list of queues that are + instantiated on an interface."; + + list queue { + key "name"; + + description + "Top-level container for the queue associated with this + interface"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the name of the queue + instantiated on the interface."; + } + + container config { + description + "Configuration data for the queue associated with the + interface"; + + uses qos-interface-queue-config; + } + + container state { + config false; + description + "Operational state data for the queue associated with the + interface"; + + uses qos-interface-queue-config; + uses qos-interface-queue-state; + } + } + } + } + + grouping qos-interface-voqs-top { + description + "Structural grouping of virtual-output-queue operational state + for an interface."; + + container virtual-output-queues { + description + "Surrounding container for the list of egress interfaces + for which virtual output queues are instantiated on this + interface."; + + list voq-interface { + key "name"; + + description + "List of egress interfaces for which a virtual output + queue is instantiated at this interface."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Name used to refer to the egress interface."; + } + + container config { + description + "Configuration parameters relating to the interface + for which the VOQs are instantiated."; + uses qos-voqs-config; + } + + container state { + config false; + description + "Operational state parameters relating to the interface + for which the VOQs are instantiated."; + uses qos-voqs-config; + } + + uses qos-interface-queue-top; + } + } + } + + grouping qos-voqs-config { + description + "Configuration parameters relating to an egress interface for which + VOQs are established on an interface."; + + leaf name { + type string; + description + "Name used to refer to the egress interface."; + } + } + + grouping qos-interface-scheduler-policy-config { + description + "Configuration data for schedulers associated with + the interface"; + + leaf name { + type leafref { + // current loc: + // /qos/interfaces/interface/input/schedulers/scheduler/config/name + path "../../../../../../scheduler-policies/scheduler-policy/" + + "config/name"; + } + description + "The scheduler policy to be applied to traffic on this interface."; + } + } + + grouping qos-interface-scheduler-state { + description + "Operational state data for a scheduler within + a scheduler group applied to an interface."; + + leaf sequence { + type leafref { + // current loc: /qos/interfaces/interface/input/scheduler-policy/ + // schedulers/scheduler/state/sequence + path "../../../../../../../../scheduler-policies/" + + "scheduler-policy[name=current()/../../../../config/name]" + + "/schedulers/scheduler/config/sequence"; + } + description + "Reference to the sequence ID of the scheduler within + the current scheduler policy."; + } + + uses qos-scheduler-common-state; + } + + grouping qos-scheduler-common-state { + description + "Common definitions of counters used in schedulers."; + + leaf conforming-pkts { + type oc-yang:counter64; + description + "The number of packets that were considered conforming by + the scheduler."; + } + + leaf conforming-octets { + type oc-yang:counter64; + description + "The number of octets in packets that were considered + conforming by the scheduler."; + } + + leaf exceeding-pkts { + type oc-yang:counter64; + description + "The number of packets that were considered exceeding by + the scheduler."; + } + + leaf exceeding-octets { + type oc-yang:counter64; + description + "The number of octets in packets that were considered + exceeding by the scheduler."; + } + + leaf violating-pkts { + type oc-yang:counter64; + description + "The number of packets that were considered violating by + the policer."; + } + + leaf violating-octets { + type oc-yang:counter64; + description + "The number of octets in packets that were considered + violating by the policer."; + } + } + + grouping qos-interface-scheduler-top { + description + "Top-level grouping "; + + container scheduler-policy { + description + "Scheduler policy associated with the interface."; + + container config { + description + "Configuration parameters relating to a scheduler policy on + an interface."; + uses qos-interface-scheduler-policy-config; + } + + container state { + config false; + description + "Operational state parameters relating to a scheduler policy + on an interface."; + uses qos-interface-scheduler-policy-config; + } + + container schedulers { + config false; + description + "Schedulers within the applied scheduler-policy."; + + list scheduler { + key "sequence"; + description + "List of the schedulers that are part of the scheduler-policy + specified."; + + leaf sequence { + type leafref { + path "../state/sequence"; + } + description + "Reference to the sequence ID for the scheduler."; + } + + container state { + description + "Operational state parameters relating to the scheduler + policy."; + + uses qos-interface-scheduler-state; + } + } + } + } + } + + grouping qos-interfaces-config { + description + "Configuration data for interfaces referenced in the QoS + model"; + + leaf interface-id { + type string; + description + "Identifier for the interface."; + } + } + + grouping qos-interfaces-state { + description + "Operational state data for interfaces referenced in the QoS + model"; + + // definitions per-interface counters for QoS + } + + grouping qos-interface-input-config { + description + "Configuration data for QoS on ingress interface"; + } + + grouping qos-interface-input-state { + description + "Operational state data for QoS on ingress interface"; + } + + grouping qos-interface-input-top { + description + "Top-level grouping for QoS on ingress interface"; + + container input { + description + "Top-level container for QoS data for the ingress + interface"; + + container config { + description + "Configuration data for QoS on ingress interface"; + + uses qos-interface-input-config; + } + + container state { + config false; + description + "Operational state data for QoS on ingress interface"; + + uses qos-interface-input-config; + uses qos-interface-input-state; + } + + uses qos-interface-classifier-top; + uses qos-interface-queue-top; + uses qos-interface-scheduler-top; + uses qos-interface-voqs-top; + } + } + + grouping qos-interface-output-config { + description + "Configuration data for QoS on the egress interface"; + } + + grouping qos-interface-output-state { + description + "Operational state data for QoS on the egress interface"; + } + + grouping qos-interface-output-top { + description + "Top-level grouping for QoS on the egress interface"; + + container output { + description + "Top-level container for QoS data related to the egress + interface"; + + container config { + description + "Configuration data for QoS on the egress interface"; + + uses qos-interface-output-config; + } + + container state { + config false; + description + "Operational state data for QoS on the egress interface"; + + uses qos-interface-output-config; + uses qos-interface-output-state; + } + + uses oc-if:interface-ref; + uses qos-interface-classifier-top; + uses qos-interface-queue-top; + uses qos-interface-scheduler-top; + } + } + + grouping qos-interfaces-top { + description + "Top-level grouping for interfaces referenced in the QoS + model"; + + container interfaces { + description + "Enclosing container for the list of interface references"; + + list interface { + key "interface-id"; + description + "List of interfaces referenced by QoS entities."; + + leaf interface-id { + type leafref { + path "../config/interface-id"; + } + description + "Reference to the interface-id list key"; + } + + container config { + description + "Configuration data "; + + uses qos-interfaces-config; + } + + container state { + config false; + description + "Operational state data "; + + uses qos-interfaces-config; + uses qos-interfaces-state; + } + + uses oc-if:interface-ref; + uses qos-interface-input-top; + uses qos-interface-output-top; + + } + } + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-qos-types.yang b/vendor/cisco/nx/9.3-14/openconfig-qos-types.yang new file mode 100644 index 000000000..c6ebde432 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-qos-types.yang @@ -0,0 +1,159 @@ +module openconfig-qos-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/qos-types"; + + prefix "oc-qos-types"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines types and identities used in OpenConfig + models related to quality-of-service (QoS)"; + + oc-ext:openconfig-version "0.2.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.2.1"; + } + + revision "2016-12-16" { + description + "Fix incorrect interface-ref placement"; + reference "0.2.0"; + } + + revision "2016-08-08" { + description + "Initial revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // extension statements + + // feature statements + + // identity statements + + identity QOS_QUEUE_TYPE { + description + "Base identity for supported queue types, primarily + defined by their drop behavior / strategy"; + } + + identity DROP_TAIL { + base QOS_QUEUE_TYPE; + description + "When the queue is filled to capacity, newly arriving packets + are discarded until there is room in the queue to accept new + traffic. Packets are not differentiated, i.e., all packets + are treated identically."; + } + + identity RED { + base QOS_QUEUE_TYPE; + description + "Queue management based on Random Early Detection (RED). RED + drops packets based on a drop probability that is based on the + average queue length, and settings of mininum and maximum + queue thresholds. On ECN-capable devices, packets may be + marked instead of dropped to signal congestion to the + sender."; + reference + "IETF RFC 2309 - Recommendations on Queue Management and + Congestion Avoidance in the Internet + IETF RFC 7567 - IETF Recommendations Regarding Active Queue + Management"; + } + + identity WRED { + base QOS_QUEUE_TYPE; + description + "Queue management based on a variant of RED in which the packet + drop probability is based on its traffic class."; + } + + identity QOS_SCHEDULER_TYPE { + description + "Base identity to describe supported QoS scheduler types."; + } + + identity ONE_RATE_TWO_COLOR { + base QOS_SCHEDULER_TYPE; + description + "Token bucket scheduler with a single rate (committed information + rate) and two colors (conforming and exceeding). The scheduler + behavior is governed by two parameters, the CIR which + determines the rate of token fill (bps) and the committed + burst size (depth of the token bucket in bytes)."; + } + + identity TWO_RATE_THREE_COLOR { + base QOS_SCHEDULER_TYPE; + description + "Token bucket scheduler with two buckets, one filled at the + committed information rate (CIR) in bps, and the second filled + at the peak information rate (PIR) in bps when the first + bucket is full. The first bucket depth is + the committed burst size (bytes), and the second is the + excess burst size (bytes). Traffic is categorized in three + colors as follows: traffic that falls within the + the CIR is conforming, traffic that is greater than the CIR + but less than the PIR is exceeding, and traffic that is + greater than PIR is violating."; + } + + // typedef statements + + typedef queue-behavior { + type enumeration { + enum SHAPE { + description + "Packets that exceed the CIR should be queued into a + buffer. The depth of the buffer is specified to be + max-queue-depth-bytes or max-queue-depth-packets. + Packets are subsequently scheduled from this queue + to the specified output. Only packets that overflow + the buffer have the exceed action applied to them."; + } + enum POLICE { + description + "Packets that exceed the CIR should be immediately + treated as exceeding the defined rate of the scheduler + and have the exceed action applied to them."; + } + } + description + "Type definition for different queueing behaviours that + are available to a scheduler."; + } + + // grouping statements + + // data definition statements + + // augment statements + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-qos.yang b/vendor/cisco/nx/9.3-14/openconfig-qos.yang new file mode 100644 index 000000000..d051c5a7b --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-qos.yang @@ -0,0 +1,113 @@ +module openconfig-qos { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/qos"; + + prefix "oc-qos"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + + // include submodules + include openconfig-qos-interfaces; + include openconfig-qos-elements; + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state data + related to network quality-of-service."; + + oc-ext:openconfig-version "0.2.3"; + + revision "2019-11-28" { + description + "Fix xpaths in when statements"; + reference "0.2.3"; + } + + revision "2019-08-20" { + description + "Fix typo in classifiers container name"; + reference "0.2.2"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.2.1"; + } + + revision "2016-12-16" { + description + "Fix incorrect interface-ref placement"; + reference "0.2.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // grouping statements + grouping qos-config { + description + "Configuration data for global QoS"; + } + + grouping qos-state { + description + "Operational state data for global QoS"; + } + + grouping qos-top { + description + "Top-level grouping for QoS model"; + + container qos { + description + "Top-level container for QoS data"; + + container config { + description + "Configuration data for global QoS"; + + uses qos-config; + } + + container state { + config false; + description + "Operational state data for global QoS"; + + uses qos-config; + uses qos-state; + } + + uses qos-interfaces-top; + uses qos-classifier-top; + uses qos-forwarding-group-top; + uses qos-queue-top; + uses qos-scheduler-top; + } + } + + // data definition statements + + uses qos-top; + + // augment statements + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-relay-agent.yang b/vendor/cisco/nx/9.3-14/openconfig-relay-agent.yang new file mode 100644 index 000000000..f2f6181aa --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-relay-agent.yang @@ -0,0 +1,825 @@ +module openconfig-relay-agent { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/relay-agent"; + + prefix "oc-relay"; + + // import some basic types + import ietf-inet-types { prefix inet; } + import ietf-yang-types { prefix yang; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module describes a model for configuration and operational + state related to relay agents typically used for DHCP and BOOTP + packets. The supports both DHCP and DHCPv6 and device-wide and + per-interface settings."; + + oc-ext:openconfig-version "0.1.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.1.1"; + } + + revision "2016-05-16" { + description + "Initial public release"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // grouping statements + + grouping agent-information-ipv4-common-config { + description + "Common configuration data for DHCP relay option"; + + leaf enable { + type boolean; + default false; + description + "Enable sending the DHCP option for Relay Agent information + -- option 82."; + reference + "RFC 3046 - DHCP Relay Agent Information Option"; + } + } + + grouping agent-information-ipv4-common-state { + description + "Common operational state data for DHCP relay option"; + + } + + grouping agent-information-ipv4-global-top { + description + "Top-level grouping for agent information data at global level"; + + container agent-information-option { + description + "Top-level container for relay agent information option + data"; + + container config { + description + "Configuration data for the relay agent information + option"; + + uses agent-information-ipv4-common-config; + } + + container state { + + config false; + + description + "Operational state data for agent information at global + level"; + + uses agent-information-ipv4-common-config; + uses agent-information-ipv4-common-state; + } + } + } + + grouping agent-information-ipv4-interface-config { + description + "Configuration data for DCHP relay option on interfaces"; + + leaf circuit-id { + type string; + description + "Encodes an agent-local identifier of the circuit from which + a DHCP client-to-server packet was received. It is intended + for use by agents in relaying DHCP responses back to the + proper circuit. The circuit id is an opaque value"; + reference + "RFC 3046 - DHCP Relay Agent Information Option"; + } + + leaf remote-id { + type string; + description + "Provides a mechanism to identify the remote host end of + the circuit. The remote-id should be thought of as an + opaque value, but must be globally unique."; + reference + "RFC 3046 - DHCP Relay Agent Information Option"; + } + } + + grouping agent-information-ipv4-interface-state { + description + "Operational state data for DHCP relay option on interfaces"; + + leaf sent-circuit-id { + type string; + description + "Reports the circuit-id sent by the system to the DHCP + server."; + } + + leaf sent-remote-id { + type string; + description + "Reports the remote-id value sent by the system to the DHCP + server"; + } + } + + grouping agent-information-ipv4-interface-top { + description + "Top-level grouping for relay agent information option data"; + + container agent-information-option { + description + "Top-level container for relay agent information option + data"; + + container config { + description + "Configuration data for the relay agent information + option"; + + uses agent-information-ipv4-common-config; + uses agent-information-ipv4-interface-config; + } + + container state { + + config false; + + description + "Operational state data "; + + uses agent-information-ipv4-common-config; + uses agent-information-ipv4-interface-config; + uses agent-information-ipv4-common-state; + uses agent-information-ipv4-interface-state; + } + } + } + + grouping agent-options-ipv6-common-config { + description + "Configuration data for DHCPv6 options"; + + leaf enable-interface-id { + type boolean; + default false; + description + "Enables DHCPv6 OPTION_INTERFACE_ID (18) to identify the + interface on which the client message was received."; + reference + "IETF RFC 3315 - Dynamic Host Configuration Protocol for + IPv6 (DHCPv6)"; + } + + leaf enable-remote-id { + type boolean; + default false; + description + "Sets DHCPv6 OPTION_REMOTE_ID (37). This option is the + DHCPv6 equivalent for the IPv4 (DHCPv4) Relay Agent Option's + Remote-ID suboption as specified in RFC 3046. The remote-id + field may be used to encode a user name, remote IP address, + interface/port identifier, etc."; + reference + "IETF RFC 4649 - Dynamic Host Configuration Protocol for + IPv6 (DHCPv6) Relay Agent Remote-ID Option"; + } + } + + grouping agent-options-ipv6-common-state { + description + "Operational state data for DHCPv6 options"; + } + + grouping agent-options-ipv6-interface-config { + description + "Configuration data for DHCPv6 options"; + + leaf interface-id { + type string; + description + "Sets DHCPv6 OPTION_INTERFACE_ID (18) to identify the + interface on which the client message was received."; + reference + "IETF RFC 3315 - Dynamic Host Configuration Protocol for + IPv6 (DHCPv6)"; + } + + leaf remote-id { + type string; + description + "Sets DHCPv6 OPTION_REMOTE_ID (37). This option is the + DHCPv6 equivalent for the IPv4 (DHCPv4) Relay Agent Option's + Remote-ID suboption as specified in RFC 3046. The remote-id + field may be used to encode a user name, remote IP address, + interface/port identifier, etc."; + reference + "IETF RFC 4649 - Dynamic Host Configuration Protocol for + IPv6 (DHCPv6) Relay Agent Remote-ID Option"; + } + } + + grouping agent-options-ipv6-interface-state { + description + "Operational state data for DHCPv6 options"; + + leaf sent-interface-id { + type string; + description + "Reflects the DHCPv6 OPTION_INTERFACE_ID (18) sent to the + server by the system."; + reference + "IETF RFC 3315 - Dynamic Host Configuration Protocol for + IPv6 (DHCPv6)"; + } + + leaf sent-remote-id { + type string; + description + "Reflects the DHCPv6 OPTION_REMOTE_ID (37) sent to the + server by the system."; + reference + "IETF RFC 4649 - Dynamic Host Configuration Protocol for + IPv6 (DHCPv6) Relay Agent Remote-ID Option"; + } + } + + grouping agent-options-ipv6-global-top { + description + "Top-level grouping for DHCPv6 options on interfaces"; + + container options { + description + "Top-level container for DHCPv6 agent options on interfaces"; + + container config { + description + "Configuration data "; + + uses agent-options-ipv6-common-config; + } + + container state { + + config false; + + description + "Operational state data for DHCPv6 agent option on an + interface"; + + uses agent-options-ipv6-common-config; + uses agent-options-ipv6-common-state; + } + } + } + + grouping agent-options-ipv6-interface-top { + description + "Top-level grouping for DHCPv6 options on interfaces"; + + container options { + description + "Top-level container for DHCPv6 agent options on interfaces"; + + container config { + description + "Configuration data "; + + uses agent-options-ipv6-common-config; + uses agent-options-ipv6-interface-config; + } + + container state { + + config false; + + description + "Operational state data for DHCPv6 agent option on an + interface"; + + uses agent-options-ipv6-common-config; + uses agent-options-ipv6-interface-config; + uses agent-options-ipv6-common-state; + uses agent-options-ipv6-interface-state; + } + } + } + + grouping relay-agent-common-config { + description + "Configuration data for global level relay agent options, + common across address families"; + + leaf enable-relay-agent { + type boolean; + default false; + description + "Enables DHCP/BOOTP relay agent on all interfaces"; + } + } + + grouping relay-agent-common-state { + description + "Operational state data for global level relay agent, common + across address families"; + } + + grouping relay-agent-ipv4-config { + description + "Configuration data for DHCPv4 relay agents"; + + uses relay-agent-common-config; + } + + grouping relay-agent-ipv4-state { + description + "Configuration data for DHCPv4 relay agents"; + + uses relay-agent-common-state; + } + + + grouping relay-agent-ipv4-top { + description + "Top-level grouping for global relay agent data"; + + container dhcp { + description + "Top-level container for global relay agent data"; + + container config { + description + "Configuration data for global DHCPv4"; + + uses relay-agent-ipv4-config; + } + + container state { + + config false; + + description + "Operational state data global DHCPv4"; + + uses relay-agent-ipv4-config; + uses relay-agent-ipv4-state; + } + + uses agent-information-ipv4-global-top; + uses relay-agent-ipv4-interfaces-top; + } + } + + grouping relay-agent-ipv6-config { + description + "Configuration data for DHCPv6 relay agents"; + + uses relay-agent-common-config; + } + + grouping relay-agent-ipv6-state { + description + "Configuration data for DHCPv6 relay agents"; + + uses relay-agent-common-state; + } + + grouping relay-agent-ipv6-top { + description + "Top-level grouping for global relay agent data"; + + container dhcpv6 { + description + "Top-level container for global relay agent data"; + + container config { + description + "Configuration data for global DHCPv6"; + + uses relay-agent-ipv6-config; + } + + container state { + + config false; + + description + "Operational state data global DHCPv6"; + + uses relay-agent-ipv6-config; + uses relay-agent-ipv6-state; + } + + uses agent-options-ipv6-global-top; + uses relay-agent-ipv6-interfaces-top; + } + } + + + grouping relay-agent-common-stats { + description + "Common DHCP / BOOTP message statistics for + DHCPv4 and DHCPv6"; + + + leaf total-dropped { + type yang:counter64; + description + "Total number of DHCP packets dropped by the relay agent"; + } + + leaf invalid-opcode { + type yang:counter64; + description + "Number of DHCP packets dropped due to an invalid opcode"; + } + + leaf invalid-options { + type yang:counter64; + description + "Number of DHCP packets dropped due to an invalid option"; + } + } + + grouping relay-agent-ipv4-stats { + description + "DHCPv4 relay agent message statistics"; + + leaf bootrequest-received { + type yang:counter64; + description + "BOOTREQUEST messages received by the relay agent"; + } + + leaf dhcp-decline-received { + type yang:counter64; + description + "DHCP DECLINE messages received by the relay agent"; + } + + leaf dhcp-discover-received { + type yang:counter64; + description + "DHCP DISCOVER messages received by the relay agent"; + } + + leaf dhcp-inform-received { + type yang:counter64; + description + "DHCP INFORM messages received by the relay agent"; + } + + leaf dhcp-release-received { + type yang:counter64; + description + "DHCP RELEASE messages received by the relay agent"; + } + + leaf dhcp-request-received { + type yang:counter64; + description + "DHCP REQUEST messages received by the relay agent"; + } + + leaf bootrequest-sent { + type yang:counter64; + description + "BOOTREQUEST messages forwarded by the relay agent"; + } + + leaf bootreply-sent { + type yang:counter64; + description + "BOOTREPLY messages forwarded by the relay agent"; + } + + leaf dhcp-offer-sent { + type yang:counter64; + description + "DHCP OFFER messages sent by the relay agent"; + } + + leaf dhcp-ack-sent { + type yang:counter64; + description + "DHCP ACK messages sent by the relay agent"; + } + + leaf dhcp-nack-sent { + type yang:counter64; + description + "DHCP NACK messages sent by the relay agent"; + } + } + + grouping relay-agent-ipv6-stats { + description + "DHCPv4 relay agent message statistics"; + + leaf dhcpv6-solicit-received { + type yang:counter64; + description + "Number of DHCPv6 SOLICIT messages received from clients + by the relay agent"; + } + + leaf dhcpv6-decline-received { + type yang:counter64; + description + "Number of DHCPv6 DECLINE messages received from + clients by the relay agent"; + } + + leaf dhcpv6-request-received { + type yang:counter64; + description + "Number of DHCPv6 request messages received from clients + by the relay agent"; + } + + leaf dhcpv6-release-received { + type yang:counter64; + description + "Number of DHCPv6 release messages received from clients + by the relay agent"; + } + + leaf dhcpv6-confirm-received { + type yang:counter64; + description + "Number of DHCPv6 confirm messages received from clients + by the relay agent"; + } + + leaf dhcpv6-rebind-received { + type yang:counter64; + description + "Number of DHCPv6 rebind messages received from clients + by the relay agent"; + } + + leaf dhcpv6-info-request-received { + type yang:counter64; + description + "Number of DHCPv6 information requests messages received from + clients by the relay agent"; + } + + leaf dhcpv6-relay-reply-received { + type yang:counter64; + description + "Number of DHCPv6 relay reply messages received from servers + by the relay agent"; + } + + leaf dhcpv6-adverstise-sent { + type yang:counter64; + description + "Number of DHCPv6 adverstise messages sent to clients by + the relay agent"; + } + + leaf dhcpv6-reply-sent { + type yang:counter64; + description + "Number of DHCPv6 reply messages sent to clients by + the relay agent"; + } + + leaf dhcpv6-reconfigure-sent { + type yang:counter64; + description + "Number of DHCPv6 reconfigure messages sent to clients by + the relay agent"; + } + + leaf dhcpv6-relay-forw-sent { + type yang:counter64; + description + "Number of DHCPv6 relay-forward messages sent to servers + by the relay agent"; + } + + } + + grouping relay-agent-ipv4-interfaces-config { + description + "Configuration data for interfaces enabled for relaying"; + + leaf id { + type oc-if:interface-id; + description + "Name of the interface on which relay agent is active"; + } + + leaf enable { + type boolean; + description + "Enables the relay agent on the referenced interface. + At least one helper address should also be configured + for forwarding requested."; + } + + leaf-list helper-address { + type inet:ip-address; + description + "List of IPv4 or IPv6 addresses of DHCP servers to which the + relay agent should forward DHCPv4 requests. The relay agent is + expected to forward DHCPv4/BOOTP requests to all listed + server addresses when DHCPv4 relaying is enabled globally, or + on the interface."; + } + } + + grouping relay-agent-ipv4-interfaces-state { + description + "Operational state data for interfaces enabled for relaying"; + + container counters { + description + "Counters and statistics for relay agent operation."; + + uses relay-agent-common-stats; + uses relay-agent-ipv4-stats; + } + } + + grouping relay-agent-ipv4-interfaces-top { + description + "Top-level grouping for DHCPv4 relays on interfaces"; + + container interfaces { + description + "Enclosing container for the list of interface references."; + + list interface { + key "id"; + description + "List of interfaces on which the relay agent is + configured."; + + leaf id { + type leafref { + path "../config/id"; + } + description + "Reference to the interface list key"; + } + + container config { + description + "Configuration data for relay agent interfaces."; + + uses relay-agent-ipv4-interfaces-config; + } + + container state { + + config false; + + description + "Operational state data for relay agent interfaces."; + + uses relay-agent-ipv4-interfaces-config; + uses relay-agent-ipv4-interfaces-state; + } + + uses oc-if:interface-ref; + uses agent-information-ipv4-interface-top; + } + } + } + + grouping relay-agent-ipv6-interfaces-config { + description + "Configuration data for interfaces enabled for relaying"; + + leaf id { + type oc-if:interface-id; + description + "Name of the interface on which relay agent is active"; + } + + leaf enable { + type boolean; + description + "Enables the relay agent on the referenced interface. + At least one helper address should also be configured + for forwarding requested."; + } + + leaf-list helper-address { + type inet:ipv6-address; + description + "List of IPv6 addresses of DHCP servers to which the + relay agent should forward DHCPv6 requests. The relay agent + is expected to forward DHCPv4/BOOTP requests to all listed + server addresses when DHCPv6 relaying is enabled globally, or + on the interface."; + } + } + + grouping relay-agent-ipv6-interfaces-state { + description + "Operational state data for interfaces enabled for relaying"; + + container counters { + description + "Counters and statistics for relay agent operation."; + + uses relay-agent-common-stats; + uses relay-agent-ipv6-stats; + } + } + + grouping relay-agent-ipv6-interfaces-top { + description + "Top-level grouping for DHCPv4 relays on interfaces"; + + container interfaces { + description + "Enclosing container for the list of interface references."; + + list interface { + key "id"; + description + "List of interfaces on which the relay agent is + configured."; + + leaf id { + type leafref { + path "../config/id"; + } + description + "Reference to the interface list key"; + } + + container config { + description + "Configuration data for relay agent interfaces."; + + uses relay-agent-ipv6-interfaces-config; + } + + container state { + + config false; + + description + "Operational state data for relay agent interfaces."; + + uses relay-agent-ipv6-interfaces-config; + uses relay-agent-ipv6-interfaces-state; + } + + uses oc-if:interface-ref; + uses agent-options-ipv6-interface-top; + } + } + } + + grouping relay-agent-top { + description + "Top-level container for relay agent configuration and opstate + data."; + + container relay-agent { + description + "Top level container for relay-agent configuration and + operational state data"; + + uses relay-agent-ipv4-top; + uses relay-agent-ipv6-top; + } + } + + // data definition statements + + uses relay-agent-top; + + // augment statements + + +} \ No newline at end of file diff --git a/vendor/cisco/nx/9.3-14/openconfig-routing-policy.yang b/vendor/cisco/nx/9.3-14/openconfig-routing-policy.yang new file mode 100644 index 000000000..28643dc8b --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-routing-policy.yang @@ -0,0 +1,1107 @@ +module openconfig-routing-policy { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/routing-policy"; + + prefix "oc-rpol"; + + // import some basic types + import openconfig-inet-types { prefix oc-inet; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-policy-types { prefix oc-pol-types; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module describes a YANG model for routing policy + configuration. It is a limited subset of all of the policy + configuration parameters available in the variety of vendor + implementations, but supports widely used constructs for managing + how routes are imported, exported, and modified across different + routing protocols. This module is intended to be used in + conjunction with routing protocol configuration models (e.g., + BGP) defined in other modules. + + Route policy expression: + + Policies are expressed as a set of top-level policy definitions, + each of which consists of a sequence of policy statements. Policy + statements consist of simple condition-action tuples. Conditions + may include mutiple match or comparison operations, and similarly + actions may be multitude of changes to route attributes or a + final disposition of accepting or rejecting the route. + + Route policy evaluation: + + Policy definitions are referenced in routing protocol + configurations using import and export configuration statements. + The arguments are members of an ordered list of named policy + definitions which comprise a policy chain, and optionally, an + explicit default policy action (i.e., reject or accept). + + Evaluation of each policy definition proceeds by evaluating its + corresponding individual policy statements in order. When a + condition statement in a policy statement is satisfied, the + corresponding action statement is executed. If the action + statement has either accept-route or reject-route actions, policy + evaluation of the current policy definition stops, and no further + policy definitions in the chain are evaluated. + + If the condition is not satisfied, then evaluation proceeds to + the next policy statement. If none of the policy statement + conditions are satisfied, then evaluation of the current policy + definition stops, and the next policy definition in the chain is + evaluated. When the end of the policy chain is reached, the + default route disposition action is performed (i.e., reject-route + unless an an alternate default action is specified for the + chain). + + Policy 'subroutines' (or nested policies) are supported by + allowing policy statement conditions to reference another policy + definition which applies conditions and actions from the + referenced policy before returning to the calling policy + statement and resuming evaluation. If the called policy + results in an accept-route (either explicit or by default), then + the subroutine returns an effective true value to the calling + policy. Similarly, a reject-route action returns false. If the + subroutine returns true, the calling policy continues to evaluate + the remaining conditions (using a modified route if the + subroutine performed any changes to the route)."; + + oc-ext:openconfig-version "3.1.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.1.1"; + } + + revision "2018-06-05" { + description + "Add PIM, IGMP to INSTALL_PROTOCOL_TYPES identity"; + reference "3.1.0"; + } + + revision "2017-07-14" { + description + "Replace policy choice node/type with policy-result + enumeration;simplified defined set naming;removed generic + IGP actions; migrate to OpenConfig types; added mode for + prefix sets"; + reference "3.0.0"; + } + + revision "2016-05-12" { + description + "OpenConfig public release"; + reference "2.0.1"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // typedef statements + + typedef default-policy-type { + // this typedef retained for name compatibiity with default + // import and export policy + type enumeration { + enum ACCEPT_ROUTE { + description + "Default policy to accept the route"; + } + enum REJECT_ROUTE { + description + "Default policy to reject the route"; + } + } + description + "Type used to specify route disposition in + a policy chain"; + } + + typedef policy-result-type { + type enumeration { + enum ACCEPT_ROUTE { + description "Policy accepts the route"; + } + enum REJECT_ROUTE { + description "Policy rejects the route"; + } + } + description + "Type used to specify route disposition in + a policy chain"; + } + + + // grouping statements + + grouping prefix-set-config { + description + "Configuration data for prefix sets used in policy + definitions."; + + leaf name { + type string; + description + "name / label of the prefix set -- this is used to + reference the set in match conditions"; + } + + leaf mode { + type enumeration { + enum IPV4 { + description + "Prefix set contains IPv4 prefixes only"; + } + enum IPV6 { + description + "Prefix set contains IPv6 prefixes only"; + } + enum MIXED { + description + "Prefix set contains mixed IPv4 and IPv6 prefixes"; + } + } + description + "Indicates the mode of the prefix set, in terms of which + address families (IPv4, IPv6, or both) are present. The + mode provides a hint, but the device must validate that all + prefixes are of the indicated type, and is expected to + reject the configuration if there is a discrepancy. The + MIXED mode may not be supported on devices that require + prefix sets to be of only one address family."; + } + + } + + grouping prefix-set-state { + description + "Operational state data for prefix sets"; + } + + grouping prefix-set-top { + description + "Top-level data definitions for a list of IPv4 or IPv6 + prefixes which are matched as part of a policy"; + + container prefix-sets { + description + "Enclosing container "; + + list prefix-set { + key "name"; + description + "List of the defined prefix sets"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to prefix name list key"; + } + + container config { + description + "Configuration data for prefix sets"; + + uses prefix-set-config; + } + + container state { + + config false; + + description + "Operational state data "; + + uses prefix-set-config; + uses prefix-set-state; + } + + uses prefix-top; + } + } + } + + grouping prefix-config { + description + "Configuration data for a prefix definition"; + + leaf ip-prefix { + type oc-inet:ip-prefix; + mandatory true; + description + "The prefix member in CIDR notation -- while the + prefix may be either IPv4 or IPv6, most + implementations require all members of the prefix set + to be the same address family. Mixing address types in + the same prefix set is likely to cause an error."; + } + + leaf masklength-range { + type string { + pattern '^([0-9]+\.\.[0-9]+)|exact$'; + } + description + "Defines a range for the masklength, or 'exact' if + the prefix has an exact length. + + Example: 10.3.192.0/21 through 10.3.192.0/24 would be + expressed as prefix: 10.3.192.0/21, + masklength-range: 21..24. + + Example: 10.3.192.0/21 would be expressed as + prefix: 10.3.192.0/21, + masklength-range: exact"; + } + } + + grouping prefix-state { + description + "Operational state data for prefix definitions"; + } + + grouping prefix-top { + description + "Top-level grouping for prefixes in a prefix list"; + + container prefixes { + description + "Enclosing container for the list of prefixes in a policy + prefix list"; + + list prefix { + key "ip-prefix masklength-range"; + description + "List of prefixes in the prefix set"; + + leaf ip-prefix { + type leafref { + path "../config/ip-prefix"; + } + description + "Reference to the ip-prefix list key."; + } + + leaf masklength-range { + type leafref { + path "../config/masklength-range"; + } + description + "Reference to the masklength-range list key"; + } + + container config { + description + "Configuration data for prefix definition"; + + uses prefix-config; + } + + container state { + + config false; + + description + "Operational state data for prefix definition"; + + uses prefix-config; + uses prefix-state; + } + } + } + } + + grouping neighbor-set-config { + description + "Configuration data for neighbor set definitions"; + + leaf name { + type string; + description + "name / label of the neighbor set -- this is used to + reference the set in match conditions"; + } + + leaf-list address { + type oc-inet:ip-address; + description + "List of IP addresses in the neighbor set"; + } + } + + grouping neighbor-set-state { + description + "Operational state data for neighbor set definitions"; + } + + grouping neighbor-set-top { + description + "Top-level data definition for a list of IPv4 or IPv6 + neighbors which can be matched in a routing policy"; + + container neighbor-sets { + description + "Enclosing container for the list of neighbor set + definitions"; + + list neighbor-set { + key "name"; + description + "List of defined neighbor sets for use in policies."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the neighbor set name list key."; + } + + container config { + description + "Configuration data for neighbor sets."; + + uses neighbor-set-config; + } + + container state { + + config false; + + description + "Operational state data for neighbor sets."; + + uses neighbor-set-config; + uses neighbor-set-state; + } + } + } + } + + grouping tag-set-config { + description + "Configuration data for tag set definitions."; + + leaf name { + type string; + description + "name / label of the tag set -- this is used to reference + the set in match conditions"; + } + + leaf-list tag-value { + type oc-pol-types:tag-type; + description + "Value of the tag set member"; + } + } + + grouping tag-set-state { + description + "Operational state data for tag set definitions."; + } + + grouping tag-set-top { + description + "Top-level data definitions for a list of tags which can + be matched in policies"; + + container tag-sets { + description + "Enclosing container for the list of tag sets."; + + list tag-set { + key "name"; + description + "List of tag set definitions."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the tag set name list key"; + } + + container config { + description + "Configuration data for tag sets"; + + uses tag-set-config; + } + + container state { + + config false; + + description + "Operational state data for tag sets"; + + uses tag-set-config; + uses tag-set-state; + } + } + } + } + + grouping generic-defined-sets { + description + "Data definitions for pre-defined sets of attributes used in + policy match conditions. These sets are generic and can + be used in matching conditions in different routing + protocols."; + + uses prefix-set-top; + uses neighbor-set-top; + uses tag-set-top; + } + + grouping match-set-options-group { + description + "Grouping containing options relating to how a particular set + should be matched"; + + leaf match-set-options { + type oc-pol-types:match-set-options-type; + description + "Optional parameter that governs the behaviour of the + match operation"; + } + } + + grouping match-set-options-restricted-group { + description + "Grouping for a restricted set of match operation modifiers"; + + leaf match-set-options { + type oc-pol-types:match-set-options-restricted-type; + description + "Optional parameter that governs the behaviour of the + match operation. This leaf only supports matching on ANY + member of the set or inverting the match. Matching on ALL is + not supported"; + } + } + + grouping match-interface-condition-config { + description + "Configuration data for interface match condition"; + + uses oc-if:interface-ref-common; + } + + grouping match-interface-condition-state { + description + "Operational state data for interface match condition"; + } + + grouping match-interface-condition-top { + description + "Top-level grouping for the interface match condition"; + + container match-interface { + description + "Top-level container for interface match conditions"; + + container config { + description + "Configuration data for interface match conditions"; + + uses match-interface-condition-config; + } + + container state { + + config false; + + description + "Operational state data for interface match conditions"; + + uses match-interface-condition-config; + uses match-interface-condition-state; + } + + } + } + + grouping prefix-set-condition-config { + description + "Configuration data for prefix-set conditions"; + + leaf prefix-set { + type leafref { + path "../../../../../../../../defined-sets/" + + "prefix-sets/prefix-set/config/name"; + } + description "References a defined prefix set"; + } + uses match-set-options-restricted-group; + } + + + grouping prefix-set-condition-state { + description + "Operational state data for prefix-set conditions"; + } + + grouping prefix-set-condition-top { + description + "Top-level grouping for prefix-set conditions"; + + container match-prefix-set { + description + "Match a referenced prefix-set according to the logic + defined in the match-set-options leaf"; + + container config { + description + "Configuration data for a prefix-set condition"; + + uses prefix-set-condition-config; + } + + container state { + + config false; + + description + "Operational state data for a prefix-set condition"; + + uses prefix-set-condition-config; + uses prefix-set-condition-state; + } + } + } + + grouping neighbor-set-condition-config { + description + "Configuration data for neighbor-set conditions"; + + leaf neighbor-set { + type leafref { + path "../../../../../../../../defined-sets/neighbor-sets/" + + "neighbor-set/name"; + //TODO: require-instance should be added when it's + //supported in YANG 1.1 + //require-instance true; + } + description "References a defined neighbor set"; + } + + uses match-set-options-restricted-group; + } + + grouping neighbor-set-condition-state { + description + "Operational state data for neighbor-set conditions"; + } + + grouping neighbor-set-condition-top { + description + "Top-level grouping for neighbor-set conditions"; + + container match-neighbor-set { + description + "Match a referenced neighbor set according to the logic + defined in the match-set-options-leaf"; + + container config { + description + "Configuration data "; + + uses neighbor-set-condition-config; + } + + container state { + + config false; + + description + "Operational state data "; + + uses neighbor-set-condition-config; + uses neighbor-set-condition-state; + } + } + } + + grouping tag-set-condition-config { + description + "Configuration data for tag-set condition statements"; + + leaf tag-set { + type leafref { + path "../../../../../../../../defined-sets/tag-sets/tag-set" + + "/name"; + //TODO: require-instance should be added when it's + //supported in YANG 1.1 + //require-instance true; + } + description "References a defined tag set"; + } + uses match-set-options-restricted-group; + } + + grouping tag-set-condition-state { + description + "Operational state data for tag-set condition statements"; + } + + grouping tag-set-condition-top { + description + "Top-level grouping for tag-set conditions"; + + container match-tag-set { + description + "Match a referenced tag set according to the logic defined + in the match-options-set leaf"; + + container config { + description + "Configuration data for tag-set conditions"; + + uses tag-set-condition-config; + } + + container state { + + config false; + + description + "Operational state data tag-set conditions"; + + uses tag-set-condition-config; + uses tag-set-condition-state; + } + } + } + + grouping generic-conditions { + description "Condition statement definitions for checking + membership in a generic defined set"; + + uses match-interface-condition-top; + uses prefix-set-condition-top; + uses neighbor-set-condition-top; + uses tag-set-condition-top; + + } + + grouping generic-actions { + description + "Definitions for common set of policy action statements that + manage the disposition or control flow of the policy"; + + leaf policy-result { + type policy-result-type; + description + "Select the final disposition for the route, either + accept or reject."; + } + } + + + grouping policy-conditions-config { + description + "Configuration data for general policy conditions, i.e., those + not related to match-sets"; + + leaf call-policy { + type leafref { + path "../../../../../../../" + + "oc-rpol:policy-definitions/" + + "oc-rpol:policy-definition/oc-rpol:name"; + //TODO: require-instance should be added when + //it is supported in YANG 1.1 + //require-instance true; + } + description + "Applies the statements from the specified policy + definition and then returns control the current + policy statement. Note that the called policy may + itself call other policies (subject to + implementation limitations). This is intended to + provide a policy 'subroutine' capability. The + called policy should contain an explicit or a + default route disposition that returns an + effective true (accept-route) or false + (reject-route), otherwise the behavior may be + ambiguous and implementation dependent"; + } + + leaf install-protocol-eq { + type identityref { + base oc-pol-types:INSTALL_PROTOCOL_TYPE; + } + description + "Condition to check the protocol / method used to install + the route into the local routing table"; + } + } + + grouping policy-conditions-state { + description + "Operational state data for policy conditions"; + } + + grouping policy-conditions-top { + description + "Top-level grouping for policy conditions"; + + container conditions { + description + "Condition statements for the current policy statement"; + + container config { + description + "Configuration data for policy conditions"; + + uses policy-conditions-config; + } + + container state { + + config false; + + description + "Operational state data for policy conditions"; + + uses policy-conditions-config; + uses policy-conditions-state; + } + uses generic-conditions; + } + } + + grouping policy-statements-config { + description + "Configuration data for policy statements"; + + leaf name { + type string; + description + "name of the policy statement"; + } + } + + grouping policy-statements-state { + description + "Operational state data for policy statements"; + } + + + + grouping policy-actions-config { + description + "Configuration data for policy actions"; + + uses generic-actions; + } + + grouping policy-actions-state { + description + "Operational state data for policy actions"; + } + + grouping policy-actions-top { + description + "Top-level grouping for policy actions"; + + container actions { + description + "Top-level container for policy action statements"; + + container config { + description + "Configuration data for policy actions"; + + uses policy-actions-config; + } + + container state { + + config false; + + description + "Operational state data for policy actions"; + + uses policy-actions-config; + uses policy-actions-state; + } + } + } + + grouping policy-statements-top { + description + "Top-level grouping for the policy statements list"; + + container statements { + description + "Enclosing container for policy statements"; + + list statement { + key "name"; + // TODO: names of policy statements within a policy + // definition should probably be optional, however, YANG + // requires a unique id for lists + ordered-by user; + description + "Policy statements group conditions and actions + within a policy definition. They are evaluated in + the order specified (see the description of policy + evaluation at the top of this module."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to list key"; + } + + container config { + description + "Configuration data for policy statements"; + + uses policy-statements-config; + } + + container state { + + config false; + + description + "Operational state data for policy statements"; + + uses policy-statements-config; + uses policy-statements-state; + } + + uses policy-conditions-top; + uses policy-actions-top; + } + } + } + + grouping defined-sets-top { + description + "Top-level grouping for defined set definitions"; + + container defined-sets { + description + "Predefined sets of attributes used in policy match + statements"; + + uses generic-defined-sets; + } + } + + grouping policy-definitions-config { + description + "Configuration data for policy definitions"; + + leaf name { + type string; + description + "Name of the top-level policy definition -- this name + is used in references to the current policy"; + } + } + + grouping policy-definitions-state { + description + "Operational state data for policy definitions"; + } + + grouping policy-definitions-top { + description + "Top-level grouping for the policy definition list"; + + container policy-definitions { + description + "Enclosing container for the list of top-level policy + definitions"; + + list policy-definition { + key "name"; + description + "List of top-level policy definitions, keyed by unique + name. These policy definitions are expected to be + referenced (by name) in policy chains specified in import + or export configuration statements."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the list key"; + } + + container config { + description + "Configuration data for policy defintions"; + + uses policy-definitions-config; + } + + container state { + + config false; + + description + "Operational state data for policy definitions"; + + uses policy-definitions-config; + uses policy-definitions-state; + } + + uses policy-statements-top; + } + } + } + + grouping routing-policy-top { + description + "Top level container for OpenConfig routing policy"; + + container routing-policy { + description + "Top-level container for all routing policy configuration"; + + + uses defined-sets-top; + + uses policy-definitions-top; + } + } + + grouping apply-policy-import-config { + description + "Configuration data for applying import policies"; + + leaf-list import-policy { + type leafref { + path "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + + "oc-rpol:policy-definition/oc-rpol:name"; + //TODO: require-instance should be added when it's + //supported in YANG 1.1 + //require-instance true; + } + ordered-by user; + description + "list of policy names in sequence to be applied on + receiving a routing update in the current context, e.g., + for the current peer group, neighbor, address family, + etc."; + } + + leaf default-import-policy { + type default-policy-type; + default REJECT_ROUTE; + description + "explicitly set a default policy if no policy definition + in the import policy chain is satisfied."; + } + + } + + grouping apply-policy-export-config { + description + "Configuration data for applying export policies"; + + leaf-list export-policy { + type leafref { + path "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" + + "oc-rpol:policy-definition/oc-rpol:name"; + //TODO: require-instance should be added when it's + //supported in YANG 1.1 + //require-instance true; + } + ordered-by user; + description + "list of policy names in sequence to be applied on + sending a routing update in the current context, e.g., + for the current peer group, neighbor, address family, + etc."; + } + + leaf default-export-policy { + type default-policy-type; + default REJECT_ROUTE; + description + "explicitly set a default policy if no policy definition + in the export policy chain is satisfied."; + } + } + + + grouping apply-policy-config { + description + "Configuration data for routing policies"; + + uses apply-policy-import-config; + uses apply-policy-export-config; + + } + + + + grouping apply-policy-state { + description + "Operational state associated with routing policy"; + + //TODO: identify additional state data beyond the intended + //policy configuration. + } + + grouping apply-policy-group { + description + "Top level container for routing policy applications. This + grouping is intended to be used in routing models where + needed."; + + container apply-policy { + description + "Anchor point for routing policies in the model. + Import and export policies are with respect to the local + routing table, i.e., export (send) and import (receive), + depending on the context."; + + container config { + description + "Policy configuration data."; + + uses apply-policy-config; + } + + container state { + + config false; + description + "Operational state for routing policy"; + + uses apply-policy-config; + uses apply-policy-state; + } + } + } + + uses routing-policy-top; + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-segment-routing.yang b/vendor/cisco/nx/9.3-14/openconfig-segment-routing.yang new file mode 100644 index 000000000..0dbaf64cb --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-segment-routing.yang @@ -0,0 +1,791 @@ +module openconfig-segment-routing { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/sr"; + prefix "oc-sr"; + + // import some basic types + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-mpls-types { prefix "oc-mpls-t"; } + import openconfig-interfaces { prefix "oc-if"; } + import ietf-inet-types { prefix "inet"; } + import ietf-yang-types { prefix "yang"; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Configuration and operational state parameters relating to the + segment routing. This module defines a number of elements which are + instantiated in multiple places throughout the OpenConfig collection + of models. + + Particularly: + - SRGB+LB dataplane instances - directly instantied by SR. + - SRGB+LB dataplane reservations - instantiated within MPLS and future SR + dataplanes. + - SR SID advertisements - instantiated within the relevant IGP. + - SR-specific counters - instantied within the relevant dataplane."; + + oc-ext:openconfig-version "0.0.4"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.0.4"; + } + + revision "2017-01-12" { + description + "Minor compliance fixes."; + reference "0.0.3"; + } + + revision "2016-12-15" { + description + "Updated revision of SR module."; + reference "0.0.2"; + } + + revision "2016-07-28" { + description + "Initial revision of SR module."; + reference "0.0.1"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + typedef sr-dataplane-type { + type enumeration { + enum MPLS { + description + "The entity uses MPLS labels as Segment Identifiers."; + } + enum IPV6 { + description + "The entity uses IPv6 prefixes as Segment Identifiers."; + } + } + description + "Types of data plane that can be used to instantiate a Segment + Routing block of SIDs."; + } + + typedef sr-sid-type { + type union { + type oc-mpls-t:mpls-label; + type inet:ipv6-address-no-zone; + } + description + "The defined value of a segment identifier."; + } + + grouping srgb-config { + description + "Configuration parameters relating to the SRGB."; + + leaf local-id { + type string; + description + "Unique identifier for the segment routing global block on + the local system."; + } + + leaf dataplane-type { + type sr-dataplane-type; + description + "The dataplane being used to instantiate the SRGB. When MPLS is specified + the set of MPLS label blocks that are defined in the mpls-label-blocks + list are used to make up the SRGB. When IPv6 is specified, the set of IPv6 + prefixes specified in the ipv6-prefixes list are used."; + } + + leaf-list mpls-label-blocks { + when "../dataplane-type = 'MPLS'" { + description + "Allow the MPLS label block to be specified only for SRGBs that are + using the MPLS dataplane."; + } + type leafref { + // We are at /network-instances/network-instance/segment-routing/ + // srgbs/srgb/config/mpls-label-blocks + path "../../../../../mpls/global/reserved-label-blocks/" + + "reserved-label-block/config/local-id"; + } + description + "A list of refences to the label blocks that are used to make + up the SRGB."; + } + + leaf-list ipv6-prefixes { + when "../dataplane-type = 'IPV6'" { + description + "Allow IPv6 prefixes to be specified only when the dataplane + realisation of the SRGB is IPv6."; + } + type inet:ipv6-prefix; + description + "A list of IPv6 prefixes which are to be used for segment routing using + the IPv6 dataplane."; + } + } + + grouping srgb-state { + description + "Operational state parameters relating to the SRGB."; + + leaf size { + type uint32; + description + "The total number of SRGB entries that are available within the SRGB."; + } + + leaf used { + type uint32; + description + "The total number of SRGB entries that have already been alocated by + protocols referencing the SRGB."; + } + } + + grouping srlb-config { + description + "Configuration parameters relating to an SRLB."; + + leaf local-id { + type string; + description + "A unique local identifier used for the Segment Routing Local Block. + The identifier is used when referencing the SRLB within other + contexts."; + } + + leaf dataplane-type { + type sr-dataplane-type; + description + "The dataplane that is to be used for the Segment Routing Local Block. + When MPLS is specified, the local block corresponds to a block of MPLS + labels; when IPv6 is specified it corresponds to an IPv6 prefix."; + } + + leaf mpls-label-block { + when "../dataplane-type = 'MPLS'" { + description + "Allow the MPLS label block to be specified only for SRLBs that are + using the MPLS dataplane."; + } + type leafref { + path "../../../../../mpls/global/reserved-label-blocks/" + + "reserved-label-block/config/local-id"; + } + description + "A reference to the MPLS label block that is used to contain the + SIDs of the SRLB."; + } + + leaf ipv6-prefix { + when "../dataplane-type = 'IPV6'" { + description + "Allow IPv6 prefixes to be specified only when the dataplane + realisation of the SRGB is IPv6."; + } + type inet:ipv6-prefix; + description + "The IPv6 prefix that is used for the SRLB."; + } + } + + grouping sr-structural { + description + "Top-level structural grouping defining Segment Routing Global Blocks."; + + container srgbs { + description + "Configuration and operational state parameters relating to the + SRGBs defined for the system."; + + list srgb { + key "local-id"; + + description + "A single definition of an SRGB which may comprise of multiple + sets of dataplane addresses (IPv6 addresses, or MPLS labels)."; + + leaf local-id { + type leafref { + path "../config/local-id"; + } + description + "A reference to the identifier for the SRGB."; + } + + container config { + description + "Configuration parameters relating to the SRGB."; + uses srgb-config; + } + + container state { + config false; + description + "State parameters relating to the SRGB."; + uses srgb-config; + uses srgb-state; + } + } + } + + container srlbs { + description + "Configuration and operational state parameters relating to the + Segment Routing Local Blocks (SRLBs) defined for the system."; + + list srlb { + key "local-id"; + + description + "A definition of a Segment Routing Local Block, defined to be + a set of Segment Identifiers (specified as MPLS labels or + IPv6 addreses) that are defined for local allocation by the + system. A block may optionally be advertised into an IGP."; + + leaf local-id { + type leafref { + path "../config/local-id"; + } + description + "Reference to the local identifier used for the SRLB."; + } + + container config { + description + "Configuration parameters relating to the SRLB."; + uses srlb-config; + } + + container state { + config false; + description + "Operational state parmeters relating to the SRLB."; + uses srlb-config; + } + } + } + } + + grouping sr-mpls-top { + description + "Structural grouping defining SR definition within MPLS."; + + container segment-routing { + description + "MPLS-specific Segment Routing configuration and operational state + parameters"; + + container aggregate-sid-counters { + description + "Per-SID counters aggregated across all interfaces on the local system"; + + list aggregate-sid-counter { + key "mpls-label"; + config false; + + description + "Counters aggregated across all of the interfaces of the local + system corresponding to traffic received or forwarded with a + particular SID"; + + leaf mpls-label { + type leafref { + path "../state/mpls-label"; + } + description + "The MPLS label representing the segment identifier"; + } + + container state { + config false; + description + "State parameters for per-SID statistics"; + uses sr-mpls-sid-counters-state; + uses sr-mpls-common-counters; + } + } + } + + container interfaces { + description + "Interface related Segment Routing parameters."; + + list interface { + key "interface-id"; + + description + "Parameters and MPLS-specific configuration relating to Segment + Routing on an interface."; + + leaf interface-id { + type leafref { + path "../config/interface-id"; + } + description + "A reference to the ID for the interface for which SR is + configured"; + } + + container config { + description + "MPLS-specific Segment Routing configuration parameters + related to an interface."; + uses sr-mpls-interface-config; + } + + container state { + config false; + description + "MPLS-specific Segment Routing operational state parameters + related to an interface."; + uses sr-mpls-interface-config; + uses sr-mpls-interface-state; + } + + container sid-counters { + description + "Per-SID statistics for MPLS"; + + list sid-counter { + key "mpls-label"; + config false; + + description + "Per segment identifier counters for the MPLS dataplane."; + + leaf mpls-label { + type leafref { + path "../state/mpls-label"; + } + description + "The MPLS label representing the segment identifier"; + } + + container state { + config false; + description + "State parameters for per-SID statistics"; + uses sr-mpls-sid-counters-state; + uses sr-mpls-common-counters; + } + + container forwarding-classes { + description + "Per-SID per-forwarding class counters for Segment Routing."; + + list forwarding-class { + key "exp"; + config false; + + description + "SID entries for the forwarding class associated with the + referenced MPLS EXP."; + + leaf exp { + type leafref { + path "../state/exp"; + } + description + "Reference to the value of the EXP bits of the segment + identifier."; + } + + container state { + config false; + description + "Per-SID, per forwarding class counters for Segment Routing + with the MPLS dataplane"; + + uses sr-mpls-interface-sid-fc-state; + uses sr-mpls-common-counters; + } + } + } + } + } + uses oc-if:interface-ref; + } + } + } + } + + grouping sr-mpls-interface-config { + description + "MPLS-specific Segment Routing configuration for an interface"; + + leaf interface-id { + type string; + description + "A unique identifier for the interface."; + } + } + + grouping sr-mpls-interface-state { + description + "MPLS-specific Segment Routing operational state parameters for an + interface"; + + uses sr-mpls-common-counters; + } + + grouping sr-mpls-interface-sid-fc-state { + description + "Per-SID per forwarding class statistics for SR with the MPLS dataplane"; + + leaf exp { + type uint8 { + range "0..7"; + } + description + "The value of the MPLS EXP (experimental) or Traffic Class bits that the + SID statistics relate to. Packets received with a MPLS label value + equal to the SID's MPLS label and EXP bits equal to the this value + should be counted towards the associated ingress statistics. Packets + that are forwarded to the destination MPLS label corresponding to the + SID should be counted towards this value. In the egress direction, where + forwarding follows a SID value that requires PHP at the local node, + packets should still be counted towards the egress counters."; + } + } + + grouping sr-mpls-sid-counters-state { + description + "Per-SID statistics leaves"; + + leaf mpls-label { + type oc-mpls-t:mpls-label; + description + "The MPLS label used for the segment identifier"; + } + } + + grouping sr-mpls-common-counters { + description + "Per segment identifier counters used in the model"; + + leaf in-pkts { + type yang:counter64; + description + "A cumulative counter of the packets received within the context + which have matched a label corresponding to an SR Segment Identifier."; + } + + leaf in-octets { + type yang:counter64; + description + "The cumulative counter of the total bytes received within the context + which have matched a label corresponding to an SR Segment Identifier"; + } + + leaf out-pkts { + type yang:counter64; + description + "A cumulative counter of the total number of packets transmitted by + the local system within the context which have a label imposed that + corresponds to an Segment Identifier."; + } + + leaf out-octets { + type yang:counter64; + description + "A cumulative counter of the total bytes transmitted by the local + system within the context which have a label imported that + corresponds to an SR Segment Identifier."; + } + } + + grouping sr-igp-config { + description + "Configuration parameters relating to segment routing within an + IGP."; + + leaf enabled { + type boolean; + description + "When this leaf is set to true, the segment routing extensions are + utilised within the IGP."; + } + + leaf srgb { + type leafref { + path "../../../../../../../segment-routing/srgbs/srgb/config/local-id"; + } + description + "A reference to the Segment Routing Global Block (SRGB) that is + to be used by this IGP instance."; + } + + leaf srlb { + // Leaf is defined at + // /network-instances/network-instance/protocols/protocol//global/ + // segment-routing/config + type leafref { + path "../../../../../../../segment-routing/srlbs/srlb/config/local-id"; + } + description + "A reference to the Segment Routing Local Block (SRLB) that is to + be advertised by the IGP instance."; + } + } + + grouping sr-igp-top { + description + "Per-instance configuration and state parameters for Segment Routing + in an IGP."; + + container segment-routing { + description + "Configuration and operational state relating to segment routing."; + + container config { + description + "Configuration parameters relating to the configuration of segment + routing for the IGP instance."; + uses sr-igp-config; + } + + container state { + config false; + description + "Operational state parameters relating to segment routing for the + IGP instance."; + uses sr-igp-config; + } + } + } + + grouping sr-igp-interface-prefix-sid-config { + description + "Configuration parameters relating to an IGP prefix SID advertisement"; + + leaf prefix { + type inet:ip-prefix; + description + "The IP prefix for which the IGP prefix SID should be advertised. The + value specified is a local prefix on the interface which is advertised + into the IGP."; + } + + leaf sid-id { + type sr-sid-type; + description + "The Segment Identifier to be used when advertising the IGP Prefix SID."; + } + + leaf label-options { + type enumeration { + enum NO_PHP { + description + "When this value is specified, the penultimate hop must not pop + the Prefix-SID label before forwarding it to the local system."; + } + enum EXPLICIT_NULL { + description + "When set, the penultimate hop must swap the prefix SID for the + relevant explicit null label before forwarding the packet."; + } + } + description + "The options associated with the IGP prefix SID for MPLS. The value + of this leaf specifies the option that the SID should be advertised + into the IGP with."; + } + } + + grouping sr-igp-interface-adjsid-config { + description + "Configuration parameters relating to an Adj-SID on an interface"; + + leaf sid-id { + type union { + type sr-sid-type; + type enumeration { + enum DYNAMIC { + description + "The SID chosen for the Adjacency SID should be dynamically + allocated from the system's dynamic range of Segment + Identifiers. For MPLS, this range should be considered to be + those labels that do not fall within a reserved label block."; + } + } + } + description + "The value of the Adj-SID to be advertised. Where a static SID + identifier is specified, this should be advertised directly by the + system. Where the DYNAMIC value is specified, this should be treated + as a dynamically allocated value. When the MPLS data plane is in use + the dynamic value should not fall within a reserved-label-block."; + } + + leaf protection-eligible { + type boolean; + default true; + description + "Whether the Adj-SID should be considered to be eligible for protection + using IP or MPLS FRR during a network failure. When this value is set to + true, the B-flag of the Adj-SID is set to 1, and the local system should + provide FRR paths for the associated label forwarding entry. When it is + set to false, the local system must not provide FRR for the specified + LFIB entry."; + } + + leaf group { + type boolean; + default false; + description + "When set to true, the Adj-SID is indicated to be part of a group, and + the G flag is set to 1 in the corresponding advertisement in the IGP."; + } + + leaf neighbor { + type inet:ip-address; + description + "The remote system on the interface with which the Adj-SID is + associated."; + } + } + + grouping sr-igp-interface-adjsid-state { + description + "Operational state parameters relating to the adjacency SID for an + interface"; + + leaf allocated-dynamic-local { + type sr-sid-type; + description + "Where an Adjacency SID with a dynamic value is to be allocated by + the system, this leaf reports to the value of the Adj-SID allocated + to this interface."; + } + } + + grouping sr-igp-interface-top { + description + "Per-interface configuration and operational state relating to an + interface within the IGP."; + + container segment-routing { + description + "Configuration and operatioanl state parameters relating to segment + routing for an interface within the IGP."; + + container prefix-sids { + description + "Configuration and operational state parameters relating to + the advertisement of a segment routing IGP-Prefix SID for this + interface."; + + list prefix-sid { + key "prefix"; + + description + "An IGP prefix that should have a segment routing IGP-Prefix SID + allocated to it. The value of the SID is specified by the SID ID, + as an absolute value. If the absolute value falls within the SRGB, + the Global flag should be advertised by the system."; + + leaf prefix { + type leafref { + path "../config/prefix"; + } + description + "Reference to the prefix for which the IGP-Prefix SID is to be + advertised"; + } + + container config { + description + "Configuration parameters for the IGP Prefix SID."; + uses sr-igp-interface-prefix-sid-config; + } + + container state { + config false; + description + "Operational state parameters for the IGP-Prefix SID."; + uses sr-igp-interface-prefix-sid-config; + } + } + } + + container adjacency-sids { + description + "Configuration and operational state parameters relating to + the advertisement of a segment routing adjacency SID for this + interface."; + + list adjacency-sid { + key "neighbor sid-id"; + + description + "An Adjacency SID to be advertised for the specified interface. + The Adj-SID's identifier (the SID ID) must be unique, with flags + specified indicating the parameters that should be set for the SID. + Where a SID value is specified that is allocated from the SRGB, the + global flag must be set by the system."; + + leaf sid-id { + type leafref { + path "../config/sid-id"; + } + description + "Reference to the segment identifier to be used by the local + system."; + } + + leaf neighbor { + type leafref { + path "../config/neighbor"; + } + description + "Reference to the neighbor with which the Adjacency SID is + associated."; + } + + container config { + description + "Configuraton parameters relating to the AdjSID."; + uses sr-igp-interface-adjsid-config; + } + + container state { + config false; + description + "Operational state parameters relating to the AdjSID."; + uses sr-igp-interface-adjsid-config; + uses sr-igp-interface-adjsid-state; + } + } + } + } + } + + grouping sr-top { + description + "Top level grouping for Segment Routing"; + + container segment-routing { + description + "Configuration and operational state parameters relating to + segment routing."; + + uses sr-structural; + } + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-spanning-tree-types.yang b/vendor/cisco/nx/9.3-14/openconfig-spanning-tree-types.yang new file mode 100644 index 000000000..29c92e0e6 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-spanning-tree-types.yang @@ -0,0 +1,249 @@ +module openconfig-spanning-tree-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/spanning-tree/types"; + + prefix "oc-stp-types"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines types related to the + spanning-tree protocol model."; + + oc-ext:openconfig-version "0.3.1"; + + revision "2019-11-28" { + description + "Correct revision statement date for v0.3.0"; + reference "0.3.1"; + } + + revision "2019-07-10" { + description + "Remove the time-since-last-topology-change leaf and + replace it with a timestamp of last topology change."; + reference "0.3.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.2.1"; + } + + revision "2017-07-14" { + description + "Migrated to OpenConfig types; fixed missing applied state + in rapid-pvst"; + reference "0.2.0"; + } + + revision "2016-10-03" { + description + "Initial public revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + identity STP_PROTOCOL { + description + "base identity for support spanning tree protocol"; + } + + identity RSTP { + base STP_PROTOCOL; + description + "Rapid Spanning Tree Protocol"; + reference "IEEE 802.1D 17"; + } + + identity MSTP { + base STP_PROTOCOL; + description + "Multiple Spanning Tree Protocol"; + reference "IEEE 802.1Q 13"; + } + + identity RAPID_PVST { + base STP_PROTOCOL; + description + "Rapid Per Vlan Spanning Tree Protocol"; + } + + identity STP_PORT_STATE { + description + "base identity for the different Spanning Tree Protocol port + states"; + reference + "IEEE 802.1D 7.4 Port States and the active topology"; + } + + identity DISABLED { + base STP_PORT_STATE; + description + "A port that is manually isolated from the network"; + } + + identity LISTENING { + base STP_PORT_STATE; + description + "Processing BPDUs and building active toplogy"; + } + + identity LEARNING { + base STP_PORT_STATE; + description + "Building bridging tables; no forwarding of data"; + } + + identity BLOCKING { + base STP_PORT_STATE; + description + "A port that would cause a loop if it were sending data, + so it is only receiving BPDUs, untill a topology change + removes the possibliity of a loop"; + } + + identity FORWARDING { + base STP_PORT_STATE; + description + "Sending and receiving data, normal operation"; + } + + identity STP_EDGE_PORT { + description + "base identity for the different edge port modes"; + reference + "IEEE 802.1D 17.13.1"; + } + + identity EDGE_ENABLE { + base STP_EDGE_PORT; + description + "Enable edge port for the bridge port"; + } + + identity EDGE_DISABLE { + base STP_EDGE_PORT; + description + "Disable edge port for the bridge port"; + } + + identity EDGE_AUTO { + base STP_EDGE_PORT; + description + "Enable edge port autodetction for the bridge port"; + } + + identity STP_PORT_ROLE { + description + "Base identity for the different Spanning Tree Protocol port + roles"; + reference + "IEEE 802.1D 17.7 Port Role assignments"; + } + + identity ROOT { + base STP_PORT_ROLE; + description + "The port that receives the best BPDU on a bridge is the + root port"; + } + + identity DESIGNATED { + base STP_PORT_ROLE; + description + "A port is designated if it can send the best BPDU on the + segment to which it is connected."; + } + + identity ALTERNATE { + base STP_PORT_ROLE; + description + "An alternate port receives more useful BPDUs from another + bridge and is a port blocked"; + } + + identity BACKUP { + base STP_PORT_ROLE; + description + "A backup port receives more useful BPDUs from the same + bridge it is on and is a port blocked"; + } + + // typedef statements + + typedef stp-bridge-priority-type { + type uint32 { + range 1..611440; + } + description + "The manageable component of the Bridge Identifier"; + reference "IEEE 802.1D 17.13.7 Bridge Identifier Priority"; + } + + typedef stp-port-priority-type { + type uint8 { + range 1..240; + } + description + "The manageable component of the Port Identifier, + also known as the Port Priority"; + reference + "IEEE 802.1D 17.13.10 Port Identifier Priority"; + } + + typedef stp-guard-type { + type enumeration { + enum ROOT { + description + "Enable root guard"; + } + enum LOOP { + description + "Enable loop guard"; + } + enum NONE { + description + "disable guard"; + } + } + description + "Type definition for the different STP guard for the switch port"; + reference "IEEE 802.1D 17.2"; + } + + typedef stp-link-type { + type enumeration { + enum P2P { + description + "Point-to-Point link"; + } + enum SHARED { + description + "Shared link"; + } + } + description + "Type definition for the different link types"; + reference "IEEE 802.1D 17.2"; + } +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-spanning-tree.yang b/vendor/cisco/nx/9.3-14/openconfig-spanning-tree.yang new file mode 100644 index 000000000..e0b5961b4 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-spanning-tree.yang @@ -0,0 +1,842 @@ +module openconfig-spanning-tree { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/spanning-tree"; + + prefix "oc-stp"; + + import openconfig-spanning-tree-types { prefix oc-stp-types; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-types { prefix oc-types; } + import openconfig-vlan-types { prefix oc-vlan-types; } + import openconfig-yang-types { prefix oc-yang; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state data + for the spanning tree protocol."; + + oc-ext:openconfig-version "0.3.1"; + + revision "2019-11-28" { + description + "Correct revision statement date for v0.3.0"; + reference "0.3.1"; + } + + revision "2019-07-10" { + description + "Remove the time-since-last-topology-change leaf and + replace it with a timestamp of last topology change."; + reference "0.3.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.2.1"; + } + + revision "2017-07-14" { + description + "Migrated to OpenConfig types; fixed missing applied state + in rapid-pvst"; + reference "0.2.0"; + } + + revision "2016-10-03" { + description + "Initial public revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + + // grouping statements + + grouping stp-interfaces-state { + description + "Grouping of STP operational data for bridge port"; + + leaf port-num { + type uint16; + description + "The port number of the bridge port"; + reference "RFC4188 BRIDGE-MIB dot1dStpPort"; + } + + leaf role { + type identityref { + base oc-stp-types:STP_PORT_ROLE; + } + description + "The current role of the bridge port"; + reference + "IEEE8021-MSTP-MIB ieee8021MstpPortRole"; + } + + leaf port-state { + type identityref { + base oc-stp-types:STP_PORT_STATE; + } + description + "The current state of the bridge port"; + reference "RFC4188 BRIDGE-MIB dot1dStpPortState"; + } + + leaf designated-root-priority { + type oc-stp-types:stp-bridge-priority-type; + description + "The bridge priority of the bridge recorded as the + root in the configuration BPDUs transmitted by the designated + bridge for the segment to which the port is attached"; + reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedRoot"; + } + + leaf designated-root-address { + type oc-yang:mac-address; + description + "The bridge address of the bridge recorded as the + root in the configuration BPDUs transmitted by the designated + bridge for the segment to which the port is attached"; + reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedRoot"; + } + + leaf designated-cost { + type uint32; + description + "The path cost of the Designated Port of the + segment connected to this port"; + reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedCost"; + } + + leaf designated-bridge-priority { + type oc-stp-types:stp-bridge-priority-type; + description + "The bridge priority of the bridge that this port considers + to be the designated bridge for this port's segment."; + reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedBridge"; + } + + leaf designated-bridge-address { + type oc-yang:mac-address; + description + "The bridge address of the bridge that this port considers + to be the designated bridge for this port's segment."; + reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedBridge"; + } + + leaf designated-port-priority { + type oc-stp-types:stp-port-priority-type; + description + "The Port priority of the port on the Designated + Bridge for this port's segment, two octet string"; + reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedPort"; + } + + leaf designated-port-num { + type uint16; + description + "The Port number of the port on the Designated + Bridge for this port's segment, two octet string"; + reference "RFC4188 BRIDGE-MIB dot1dStpPortDesignatedPort"; + } + + leaf forward-transisitions { + type oc-yang:counter64; + description + "The number of times this port has transitioned + from the Learning state to the Forwarding state"; + reference "RFC4188 BRIDGE-MIB dot1dStpPortForwardTransitions"; + } + + container counters { + description + "The BPDU packet transmition statistics"; + + leaf bpdu-sent { + type oc-yang:counter64; + description + "The number of BPDU packet sent"; + } + + leaf bpdu-received { + type oc-yang:counter64; + description + "The number of BPDU packet received"; + } + } + } + + grouping stp-interfaces-config { + description + "Grouping of STP configuration for bridge port"; + + leaf name { + type oc-if:base-interface-ref; + description + "Reference to the STP ethernet interface"; + } + + leaf cost { + type uint32 { + range 1..200000000; + } + description + "The port's contribution, when it is the Root Port, + to the Root Path Cost for the Bridge"; + reference + "IEEE 802.1D 17.13.11 PortPathCost"; + } + + leaf port-priority { + type oc-stp-types:stp-port-priority-type; + description + "The manageable component of the Port Identifier, + also known as the Port Priority"; + reference + "IEEE 802.1D 17.13.10 Port Identifier Priority"; + } + } + + grouping stp-interfaces-top { + description + "Grouping of STP configuration and operation data for + bridge port"; + + container interfaces { + description + "Enclosing container for the list of interface references"; + + list interface { + key "name"; + description + "List of interfaces on which STP is enable"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the list key"; + } + + container config { + description + "Configuration data for STP on each interface"; + + uses stp-interfaces-config; + } + + container state { + + config false; + + description + "Operational state data for STP on each interface"; + + uses stp-interfaces-config; + uses stp-interfaces-state; + } + } + } + } + + grouping bridge-priority-config { + description + "Grouping for bridge priority"; + + leaf bridge-priority { + type oc-stp-types:stp-bridge-priority-type; + description + "The manageable component of the Bridge Identifier"; + reference + "IEEE 802.1D 17.13.7 Bridge Identifier Priority"; + } + } + + grouping stp-common-state { + description + "Grouping for common STP operation data"; + + leaf bridge-address { + type oc-yang:mac-address; + description + "A unique 48-bit Universally Administered MAC Address + assigned to the bridge"; + reference + "IEEE 802.1D 7.12.5 Unique identification of a bridge"; + } + + leaf designated-root-priority { + type oc-stp-types:stp-bridge-priority-type; + description + "The bridge priority of the root of the spanning + tree, as determined by the Spanning Tree Protocol, + as executed by this node"; + reference + "RFC4188 BRIDGE-MIB dot1dStpDesignatedRoot"; + } + + leaf designated-root-address { + type oc-yang:mac-address; + description + "The bridge address of the root of the spanning + tree, as determined by the Spanning Tree Protocol, + as executed by this node"; + reference + "RFC4188 BRIDGE-MIB dot1dStpDesignatedRoot"; + } + + leaf root-port { + type uint16; + description + "The port number of the port which offers the lowest + cost path from this bridge to the root bridge"; + reference + "RFC4188 BRIDGE-MIB dot1dStpRootPort"; + } + + leaf root-cost { + type uint32; + description + "The cost of the path to the root as seen from this bridge"; + reference + "RFC4188 BRIDGE-MIB dot1dStpRootCost"; + } + + leaf hold-time { + type uint8; + description + "This time value determines the interval length + during which no more than two Configuration bridge + PDUs shall be transmitted by this node"; + reference + "RFC4188 BRIDGE-MIB dot1dStpHoldTime"; + } + + leaf topology-changes { + type oc-yang:counter64; + description + "The total number of topology changes detected by + this bridge since the management entity was last + reset or initialized"; + reference + "RFC4188 BRIDGE-MIB dot1dStpTopChanges"; + } + + leaf last-topology-change { + type oc-types:timeticks64; + description + "The time at which the last topology change was + detected by the bridge entity. The value is + expressed relative to the Unix Epoch (Jan 1, 1970 + 00:00:00 UTC)."; + } + } + + grouping stp-timer-config { + description + "Grouping for common STP parameters"; + + leaf hello-time { + type uint8 { + range 1..10; + } + units "seconds"; + description + "The interval between periodic transmissions of + configuration messages by designated ports"; + reference + "IEEE 802.1D 17.13.6 Bridge Hello Time"; + } + + leaf max-age { + type uint8 { + range 6..40; + } + units "seconds"; + description + "The maximum age of the information transmitted by the + bridge when it is the root bridge"; + reference + "IEEE 802.1D 17.13.8 Bridge Max Age"; + } + + leaf forwarding-delay { + type uint8 { + range 4..30; + } + units "seconds"; + description + "The delay used by STP bridges to transition root and + designated ports to forwarding"; + reference + "IEEE 802.1D 17.13.5 Bridge Forward Delay"; + } + + leaf hold-count { + type uint8 { + range 1..10; + } + default 6; + description + "the maximum number of BPDUs per second that the + switch can send from an interface"; + reference + "IEEE 802.1D 17.13.12 Transmit Hold Count"; + } + } + + grouping stp-rapid-pvst-config { + description + "Configuration parameters relating to rapid PVST"; + + leaf vlan-id { + type oc-vlan-types:vlan-id; + description + "Interface VLAN ID"; + } + } + + grouping stp-rapid-pvst-top { + description + "Top grouping for rapid per vlan spanning tree configuration + and operation data"; + + list vlan { + key "vlan-id"; + description + "List of the vlans"; + + leaf vlan-id { + type leafref { + path "../config/vlan-id"; + } + description + "Reference to the list key"; + } + + container config { + description + "Configuration data for each vlan"; + + uses stp-rapid-pvst-config; + uses stp-timer-config; + uses bridge-priority-config; + } + + container state { + config false; + description + "Operational data for each vlan"; + + uses stp-rapid-pvst-config; + uses stp-timer-config; + uses bridge-priority-config; + uses stp-common-state; + } + + uses stp-interfaces-top; + } + } + + grouping mst-instance-config { + description + "Grouping for mstp instance configuration"; + + leaf mst-id { + type uint16 { + range "1..4094"; + } + description + "In an MSTP Bridge, an MSTID, i.e., a value used to identify + a spanning tree (or MST) instance."; + reference + "IEEE8021-TC-MIB IEEE8021MstIdentifier"; + } + + leaf-list vlan { + type union { + type oc-vlan-types:vlan-id; + type oc-vlan-types:vlan-range; + } + description + "list of vlans mapped to the MST instance"; + } + } + + grouping mst-instance-top { + description + "Top level grouping for mstp instances"; + + list mst-instance { + key "mst-id"; + description + "List of the mstp instances"; + + leaf mst-id { + type leafref { + path "../config/mst-id"; + } + description + "Reference to the list key"; + } + + container config { + description + "Configuration data for MSTP instance"; + + uses mst-instance-config; + uses bridge-priority-config; + } + + container state { + config false; + + description + "Operational data for MSTP instance"; + + uses mst-instance-config; + uses bridge-priority-config; + uses stp-common-state; + } + + uses stp-interfaces-top; + } + } + + grouping mstp-config { + description + "Grouping for MSTP configuration data"; + + leaf name { + type string { + length "1..32"; + } + description + "The Configuration Name in the MST Configuration Identifier"; + reference + "IEEE 802.1Q 13.8 MST Configuration Identifier (MCID)"; + } + + leaf revision { + type uint32; + description + "The Revision Level in the MST Configuration Identifier"; + reference + "IEEE 802.1Q 13.8 MST Configuration Identifier"; + } + + leaf max-hop { + type uint8 { + range 1..255; + } + description + "The max hop determines the number of bridges in an MST + region that a BPDU can traverse before it is discarded"; + reference + "IEEE 802.1Q 13.26.4 BridgeTimes"; + } + + uses stp-timer-config; + } + + grouping mstp-state { + description + "Operational state data for MSTP"; + } + + grouping stp-mstp-top { + description + "Top grouping for MSTP configuration and operation data"; + + container config { + description + "Configuration data for MSTP"; + + uses mstp-config; + } + + container state { + config false; + + description + "Operational data for MSTP"; + + uses mstp-config; + uses mstp-state; + } + + container mst-instances { + description + "Configuration and operation data for MSTP instances"; + + uses mst-instance-top; + } + } + + grouping stp-rstp-top { + description + "Top grouping for RSTP configuration and operation data"; + + container config { + description + "Configuration data for RSTP"; + + uses stp-timer-config; + uses bridge-priority-config; + } + + container state { + config false; + + description + "Operational state data for RSTP"; + + uses stp-timer-config; + uses bridge-priority-config; + uses stp-common-state; + } + + uses stp-interfaces-top; + } + + grouping stp-interface-common-config { + description + "Configuration data for interface specific STP features"; + + leaf name { + type oc-if:base-interface-ref; + description + "Reference to the STP Ethernet interface"; + } + + leaf edge-port { + type identityref { + base oc-stp-types:STP_EDGE_PORT; + } + description + "Configure the edge port state"; + } + + leaf link-type { + type oc-stp-types:stp-link-type; + description + "specifies the interface's link type"; + } + + leaf guard { + type oc-stp-types:stp-guard-type; + description + "Enable root guard or loop guard"; + } + + uses stp-bpdu-config; + + } + + grouping stp-interface-common-state { + description + "Operational state data for STP on interfaces"; + } + + grouping stp-interface-common-top { + description + "Top-level grouping for interface specific STP features"; + + list interface { + key "name"; + description + "List of interfaces on which STP is enable"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the list key"; + } + + container config { + description + "Configuration data for STP on each bridge port"; + + uses stp-interface-common-config; + } + + container state { + + config false; + + description + "Operational state data for STP on each bridge port"; + + uses stp-interface-common-config; + uses stp-interface-common-state; + } + } + } + + grouping stp-bpdu-config { + description + "Grouping for STP BPDU configuration"; + + leaf bpdu-guard { + type boolean; + description + "Enable edge port BPDU guard"; + } + + leaf bpdu-filter { + type boolean; + description + "Enable edge port BPDU filter"; + } + } + + grouping stp-global-config { + description + "Global spanning tree configuration"; + + leaf-list enabled-protocol { + type identityref { + base oc-stp-types:STP_PROTOCOL; + } + description + "List of the spanning tree protocols enabled on the + device"; + } + + leaf bridge-assurance { + type boolean; + description + "Enable bridge assurance to protect against unidirectional + link failure"; + } + + leaf etherchannel-misconfig-guard { + type boolean; + description + "EtherChannel guard detects a misconfigured EtherChannel + when interfaces on the switch are configured as an + EtherChannel while interfaces on the other device are not + or when not all the interfaces on the other device are in + the same EtherChannel."; + } + + leaf bpduguard-timeout-recovery { + type uint8; + units "seconds"; + description + "Amount of time, in seconds, the interface receiving BPDUs + is disabled. Once the timeout expires, the interface is + brought back into service."; + } + + leaf loop-guard { + type boolean; + description + "The loop guard default setting for the bridge"; + } + + uses stp-bpdu-config; + + } + + grouping stp-global-state { + description + "Global operational state for STP"; + } + + grouping stp-global-base { + description + "Grouping for global spanning tree data"; + + container config { + description + "Global spanning tree configuration"; + uses stp-global-config; + } + + container state { + config false; + + description + "Global spanning tree state"; + uses stp-global-config; + uses stp-global-state; + } + } + + grouping stp-top { + description + "Top-level grouping for spanning-tree model"; + + container stp { + description + "Top-level container for spanning tree configuration and + state data"; + + container global { + description + "Global configuration and state data"; + + uses stp-global-base; + } + + container rstp { + + description + "Rapid Spanning-tree protocol configuration and operation + data"; + + uses stp-rstp-top; + } + + container mstp { + description + "Multi Spanning-tree protocol configuration and operation + data"; + + uses stp-mstp-top; + } + + container rapid-pvst { + description + "Rapid per vlan Spanning-tree protocol configuration and + operational data"; + + uses stp-rapid-pvst-top; + } + + container interfaces { + description + "Enclosing container for the list of interface references"; + + uses stp-interface-common-top; + } + } + } + + // data definition statements + + uses stp-top; + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-system-logging.yang b/vendor/cisco/nx/9.3-14/openconfig-system-logging.yang new file mode 100644 index 000000000..1602cb1c6 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-system-logging.yang @@ -0,0 +1,503 @@ +module openconfig-system-logging { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/system/logging"; + + prefix "oc-log"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + import openconfig-inet-types { prefix oc-inet; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state data + for common logging facilities on network systems."; + + oc-ext:openconfig-version "0.3.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.1"; + } + + revision "2017-09-18" { + description + "Updated to use OpenConfig types modules"; + reference "0.3.0"; + } + + revision "2017-07-06" { + description + "Move to oc-inet types, add IETF attribution, add RADIUS + counters, changed password leaf names to indicate hashed"; + reference "0.2.0"; + } + + revision "2017-01-29" { + description + "Initial public release"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // extension statements + + // feature statements + + // identity statements + + identity SYSLOG_FACILITY { + description + "Base identity for Syslog message facilities."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity ALL { + base SYSLOG_FACILITY; + description + "All supported facilities"; + } + + identity KERNEL { + base SYSLOG_FACILITY; + description + "The facility for kernel messages"; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity USER { + base SYSLOG_FACILITY; + description + "The facility for user-level messages."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity MAIL { + base SYSLOG_FACILITY; + description + "The facility for the mail system."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity SYSTEM_DAEMON { + base SYSLOG_FACILITY; + description + "The facility for the system daemons."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity AUTH { + base SYSLOG_FACILITY; + description + "The facility for security/authorization messages."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity SYSLOG { + base SYSLOG_FACILITY; + description + "The facility for messages generated internally by syslogd + facility."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity AUTHPRIV { + base SYSLOG_FACILITY; + description + "The facility for privileged security/authorization messages."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + + identity NTP { + base SYSLOG_FACILITY; + description + "The facility for the NTP subsystem."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity AUDIT { + base SYSLOG_FACILITY; + description + "The facility for log audit messages."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity CONSOLE { + base SYSLOG_FACILITY; + description + "The facility for log alert messages."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity LOCAL0 { + base SYSLOG_FACILITY; + description + "The facility for local use 0 messages."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity LOCAL1 { + base SYSLOG_FACILITY; + description + "The facility for local use 1 messages."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity LOCAL2 { + base SYSLOG_FACILITY; + description + "The facility for local use 2 messages."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity LOCAL3 { + base SYSLOG_FACILITY; + description + "The facility for local use 3 messages."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity LOCAL4 { + base SYSLOG_FACILITY; + description + "The facility for local use 4 messages."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity LOCAL5 { + base SYSLOG_FACILITY; + description + "The facility for local use 5 messages."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity LOCAL6 { + base SYSLOG_FACILITY; + description + "The facility for local use 6 messages."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity LOCAL7 { + base SYSLOG_FACILITY; + description + "The facility for local use 7 messages."; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + identity LOG_DESTINATION_TYPE { + description + "Base identity for destination for logging messages"; + } + + identity DEST_CONSOLE { + base LOG_DESTINATION_TYPE; + description + "Directs log messages to the console"; + } + + identity DEST_BUFFER { + base LOG_DESTINATION_TYPE; + description + "Directs log messages to and in-memory circular buffer"; + } + + identity DEST_FILE { + base LOG_DESTINATION_TYPE; + description + "Directs log messages to a local file"; + } + + identity DEST_REMOTE { + base LOG_DESTINATION_TYPE; + description + "Directs log messages to a remote syslog server"; + } + + // typedef statements + + typedef syslog-severity { + type enumeration { + enum EMERGENCY { + description + "Emergency: system is unusable (0)"; + } + enum ALERT { + description + "Alert: action must be taken immediately (1)"; + } + enum CRITICAL { + description + "Critical: critical conditions (2)"; + } + enum ERROR { + description + "Error: error conditions (3)"; + } + enum WARNING { + description + "Warning: warning conditions (4)"; + } + enum NOTICE { + description + "Notice: normal but significant condition(5)"; + } + enum INFORMATIONAL { + description + "Informational: informational messages (6)"; + } + enum DEBUG { + description + "Debug: debug-level messages (7)"; + } + } + description + "Syslog message severities"; + reference + "IETF RFC 5424 - The Syslog Protocol"; + } + + // grouping statements + + grouping logging-selectors-config { + description + "Configuration data for logging selectors"; + + leaf facility { + type identityref { + base SYSLOG_FACILITY; + } + description + "Specifies the facility, or class of messages to log"; + } + + leaf severity { + type syslog-severity; + description + "Specifies that only messages of the given severity (or + greater severity) for the corresonding facility are logged"; + } + } + + grouping logging-selectors-state { + description + "Operational state data for logging selectors"; + } + + grouping logging-selectors-top { + description + "Top-level grouping for the logging selector list"; + + container selectors { + description + "Enclosing container "; + + list selector { + key "facility severity"; + description + "List of selectors for log messages"; + + leaf facility { + type leafref { + path "../config/facility"; + } + description + "Reference to facility list key"; + } + + leaf severity { + type leafref { + path "../config/severity"; + } + description + "Reference to severity list key"; + } + + container config { + description + "Configuration data "; + + uses logging-selectors-config; + } + + container state { + + config false; + + description + "Operational state data "; + + uses logging-selectors-config; + uses logging-selectors-state; + } + } + } + } + + grouping logging-console-config { + description + "Configuration data for console logging"; + } + + grouping logging-console-state { + description + "Operational state data for console logging"; + } + + grouping logging-console-top { + description + "Top-level grouping for console logging data"; + + container console { + description + "Top-level container for data related to console-based + logging"; + + container config { + description + "Configuration data for console logging"; + + uses logging-console-config; + } + + container state { + + config false; + + description + "Operational state data for console logging"; + + uses logging-console-config; + uses logging-console-state; + } + + uses logging-selectors-top; + } + } + + grouping logging-remote-config { + description + "Configuration data for remote log servers"; + + leaf host { + type oc-inet:host; + description + "IP address or hostname of the remote log server"; + } + + leaf source-address { + type oc-inet:ip-address; + description + "Source IP address for packets to the log server"; + } + + leaf remote-port { + type oc-inet:port-number; + default 514; + description + "Sets the destination port number for syslog UDP messages to + the server. The default for syslog is 514."; + } + } + + grouping logging-remote-state { + description + "Operational state data for remote log servers"; + } + + grouping logging-remote-top { + description + "Top-level grouping for remote log servers"; + + container remote-servers { + description + "Enclosing container for the list of remote log servers"; + + list remote-server { + key "host"; + description + "List of remote log servers"; + + leaf host { + type leafref { + path "../config/host"; + } + description + "Reference to the host list key"; + } + + container config { + description + "Configuration data for remote log servers"; + + uses logging-remote-config; + } + + container state { + + config false; + + description + "Operational state data for remote log servers"; + + uses logging-remote-config; + uses logging-remote-state; + } + uses logging-selectors-top; + } + } + } + + grouping logging-top { + description + "Top-level grouping for logging data"; + + container logging { + description + "Top-level container for data related to logging / syslog"; + + uses logging-console-top; + uses logging-remote-top; + } + } + // data definition statements + + // augment statements + + +} \ No newline at end of file diff --git a/vendor/cisco/nx/9.3-14/openconfig-system-management.yang b/vendor/cisco/nx/9.3-14/openconfig-system-management.yang new file mode 100644 index 000000000..0ba2484f2 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-system-management.yang @@ -0,0 +1,153 @@ +module openconfig-system-management { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/system/management"; + + prefix "oc-sys-mgmt"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + import openconfig-inet-types { prefix oc-inet; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state data + related to management services."; + + oc-ext:openconfig-version "0.2.0"; + + revision "2019-07-10" { + description + "Add gRPC default port and metadata authentication"; + reference "0.2.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.1.2"; + } + + revision "2018-08-28" { + description + "Update description of the ANY enum."; + reference "0.1.1"; + } + + revision "2018-07-26" { + description + "Initial public release"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + // typedef statements + + // grouping statements + + grouping system-grpc-server-config { + description + "Configuration data for the gRPC server"; + + leaf enable { + type boolean; + default true; + description + "Enables the gRPC server. The gRPC server is enabled by + default"; + } + + leaf port { + type oc-inet:port-number; + default 9339; + description + "TCP port on which the gRPC server should listen"; + } + + leaf transport-security { + type boolean; + description + "Enables gRPC transport security (e.g., TLS or SSL)"; + } + + leaf certificate-id { + type string; + description + "The certificate ID to be used for authentication"; + } + + leaf metadata-authentication { + type boolean; + default false; + description + "Enables gRPC METADATA authentication. See + https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-authentication.md#credentials-and-authentication + for more info."; + } + + leaf-list listen-addresses { + type union { + type oc-inet:ip-address; + type enumeration { + enum ANY { + description + "The gRPC daemon should listen on any address + bound to an interface on the system."; + } + } + } + description + "The IP addresses that the gRPC server should listen + on. This may be an IPv4 or an IPv6 address"; + } + } + + grouping system-grpc-server-top { + description + "Top-level grouping for system gRPC server data"; + + container grpc-server { + description + "Top-level container for the gRPC server"; + + container config { + description + "Configuration data for the system gRPC server"; + + uses system-grpc-server-config; + } + + container state { + config false; + + description + "Operational state data for the system gRPC server"; + + uses system-grpc-server-config; + } + } + } + + // data definition statements + + // augment statements + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-system-terminal.yang b/vendor/cisco/nx/9.3-14/openconfig-system-terminal.yang new file mode 100644 index 000000000..b34811c99 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-system-terminal.yang @@ -0,0 +1,249 @@ +module openconfig-system-terminal { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/system/terminal"; + + prefix "oc-sys-term"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state data + related to remote terminal services such as ssh and telnet."; + + oc-ext:openconfig-version "0.3.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.3.1"; + } + + revision "2017-09-18" { + description + "Updated to use OpenConfig types modules"; + reference "0.3.0"; + } + + revision "2017-07-06" { + description + "Move to oc-inet types, add IETF attribution, add RADIUS + counters, changed password leaf names to indicate hashed"; + reference "0.2.0"; + } + + revision "2017-01-29" { + description + "Initial public release"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + // typedef statements + + // grouping statements + + grouping system-terminal-common-config { + description + "Common configuration data for terminal services"; + + leaf timeout { + type uint16; + units seconds; + description + "Set the idle timeout in seconds on terminal connections to + the system for the protocol."; + } + + leaf rate-limit { + type uint16; + units "conn/min"; + description + "Set a limit on the number of connection attempts per + minute to the system for the protocol."; + } + + leaf session-limit { + type uint16; + description + "Set a limit on the number of simultaneous active terminal + sessions to the system for the protocol (e.g., ssh, + telnet, ...) "; + } + } + + grouping system-terminal-common-state { + description + "Common operational state data for terminal services"; + } + + grouping system-terminal-common-top { + description + "Top-level grouping for common terminal service data"; + + container terminal-servers { + description + "Top-level container for terminal services"; + + container config { + description + "Configuration data for terminal services"; + + uses system-terminal-common-config; + } + + container state { + + config false; + + description + "Operational state data "; + + uses system-terminal-common-config; + uses system-terminal-common-state; + } + } + } + + grouping system-ssh-server-config { + description + "Configuration data for system ssh configuration"; + + leaf enable { + type boolean; + default true; + description + "Enables the ssh server. The ssh server is enabled by + default."; + } + + leaf protocol-version { + type enumeration { + enum V2 { + description + "Use SSH v2 only"; + } + enum V1 { + description + "Use SSH v1 only"; + } + enum V1_V2 { + description + "Use either SSH v1 or v2"; + } + } + default V2; + description + "Set the protocol version for SSH connections to the system"; + } + + uses system-terminal-common-config; + } + + grouping system-ssh-server-state { + description + "Operational state data for ssh server"; + } + + grouping system-ssh-server-top { + description + "Top-level grouping for ssh server data"; + + container ssh-server { + description + "Top-level container for ssh server"; + + container config { + description + "Configuration data for the system ssh server"; + + uses system-ssh-server-config; + } + + container state { + + config false; + + description + "Operational state data for the system ssh server"; + + uses system-ssh-server-config; + uses system-ssh-server-state; + } + } + } + + grouping system-telnet-server-config { + description + "Configuration data for telnet server"; + + leaf enable { + type boolean; + default false; + description + "Enables the telnet server. Telnet is disabled by + default"; + } + uses system-terminal-common-config; + + } + + grouping system-telnet-server-state { + description + "Operational state data for telnet server"; + } + + grouping system-telnet-server-top { + description + "Top-level grouping for telnet server "; + + container telnet-server { + description + "Top-level container for telnet terminal servers"; + + container config { + description + "Configuration data for telnet"; + + uses system-telnet-server-config; + } + + container state { + + config false; + + description + "Operational state data for telnet"; + + uses system-telnet-server-config; + uses system-telnet-server-state; + } + } + } + + // data definition statements + + // augment statements + + // rpc statements + + // notification statements + +} \ No newline at end of file diff --git a/vendor/cisco/nx/9.3-14/openconfig-system.yang b/vendor/cisco/nx/9.3-14/openconfig-system.yang new file mode 100644 index 000000000..313ba7e64 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-system.yang @@ -0,0 +1,1004 @@ +module openconfig-system { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/system"; + + prefix "oc-sys"; + + // import some basic types + import openconfig-inet-types { prefix oc-inet; } + import openconfig-yang-types { prefix oc-yang; } + import openconfig-types { prefix oc-types; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-aaa { prefix oc-aaa; } + import openconfig-system-logging { prefix oc-log; } + import openconfig-system-management { prefix oc-sys-mgmt; } + import openconfig-system-terminal { prefix oc-sys-term; } + import openconfig-procmon { prefix oc-proc; } + import openconfig-alarms { prefix oc-alarms; } + import openconfig-messages { prefix oc-messages; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Model for managing system-wide services and functions on + network devices. + + Portions of this code were derived from IETF RFC 7317. + Please reproduce this note if possible. + + IETF code is subject to the following copyright and license: + Copyright (c) IETF Trust and the persons identified as authors of + the code. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, is permitted pursuant to, and subject to the license + terms contained in, the Simplified BSD License set forth in + Section 4.c of the IETF Trust's Legal Provisions Relating + to IETF Documents (http://trustee.ietf.org/license-info)."; + + oc-ext:openconfig-version "0.8.0"; + + revision "2019-03-15" { + description + "Update boot time to be nanoseconds since epoch."; + reference "0.8.0"; + } + + revision "2019-01-29" { + description + "Add messages module to the system model"; + reference "0.7.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.6.1"; + } + + revision "2018-07-17" { + description + "Add gRPC server data"; + reference "0.6.0"; + } + + revision "2018-01-21" { + description + "Add cpu utilization data"; + reference "0.5.0"; + } + + revision "2017-12-15" { + description + "Add alarms to the system model"; + reference "0.4.0"; + } + + revision "2017-09-18" { + description + "Updated to use OpenConfig types modules"; + reference "0.3.0"; + } + + revision "2017-07-06" { + description + "Move to oc-inet types, add IETF attribution, add RADIUS + counters, changed password leaf names to indicate hashed"; + reference "0.2.0"; + } + + revision "2017-01-29" { + description + "Initial public release"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // extension statements + + // feature statements + + // identity statements + + identity NTP_AUTH_TYPE { + description + "Base identity for encryption schemes supported for NTP + authentication keys"; + } + + identity NTP_AUTH_MD5 { + base NTP_AUTH_TYPE; + description + "MD5 encryption method"; + } + + // typedef statements + + typedef timezone-name-type { + type string; + description + "A time zone name as used by the Time Zone Database, + sometimes referred to as the 'Olson Database'. + + The exact set of valid values is an implementation-specific + matter. Client discovery of the exact set of time zone names + for a particular server is out of scope."; + reference + "BCP 175: Procedures for Maintaining the Time Zone Database"; + } + + // grouping statements + + grouping system-clock-config { + description + "Configuration data for system-wide clock configuration"; + + leaf timezone-name { + type timezone-name-type; + description + "The TZ database name to use for the system, such + as 'Europe/Stockholm'."; + reference "IANA Time Zone Database + http://www.iana.org/time-zones"; + } + } + + grouping system-clock-state { + description + "Operational state data for system-wide clock configuration"; + } + + grouping system-clock-top { + description + "Top-level grouping for system-wide clock configuration"; + + container clock { + description + "Top-level container for clock configuration data"; + + container config { + description + "Configuration data for system clock"; + + uses system-clock-config; + } + + container state { + + config false; + + description + "Operational state data for system clock"; + + uses system-clock-config; + uses system-clock-state; + } + } + } + + grouping system-global-config { + description "system-wide configuration parameters"; + + leaf hostname { + type oc-inet:domain-name; + description + "The hostname of the device -- should be a single domain + label, without the domain."; + } + + leaf domain-name { + type oc-inet:domain-name; + description + "Specifies the domain name used to form fully qualified name + for unqualified hostnames."; + } + + leaf login-banner { + type string; + description + "The console login message displayed before the login prompt, + i.e., before a user logs into the system."; + } + + leaf motd-banner { + type string; + description + "The console message displayed after a user logs into the + system. They system may append additional standard + information such as the current system date and time, uptime, + last login timestamp, etc."; + } + } + + grouping system-global-state { + description + "Global operational state data for the system"; + + leaf current-datetime { + type oc-yang:date-and-time; + description + "The current system date and time."; + } + + leaf boot-time { + type oc-types:timeticks64; + units "nanoseconds"; + description + "This timestamp indicates the time that the system was last + restarted. The value is the timestamp in nanoseconds relative + to the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + } + + } + + grouping system-dns-config { + description "DNS / resolver related configuration data"; + + leaf-list search { + type oc-inet:domain-name; + ordered-by user; + description + "An ordered list of domains to search when resolving + a host name."; + } + } + + grouping system-dns-state { + description + "Operational state data for system DNS resolver"; + + } + + grouping system-dns-servers-config { + description + "Configuration data for DNS resolvers"; + + //RFC 7317 includes a single-value choice statement to for + //TCP and UDP transport. This has been removed since it the + //transport protocol is not generally available as an options + //on target devices. It may be added back if and when needed. + + leaf address { + type oc-inet:ip-address; + description + "The address of the DNS server, can be either IPv4 + or IPv6."; + } + + leaf port { + type oc-inet:port-number; + default 53; + description + "The port number of the DNS server."; + } + + //RFC 7317 includes resolver timeout and attempts options. These + //have been omitted as they are not available on many targets. If + //and when they are required, they may be added back in. + } + + grouping system-dns-static-config { + description + "Configuration data for static host entries"; + + leaf hostname { + type string; + description + "Hostname for the static DNS entry"; + } + + leaf-list alias { + type string; + description + "Additional aliases for the hostname"; + } + + leaf-list ipv4-address { + type oc-inet:ipv4-address; + description + "List of IPv4 addressses for the host entry"; + } + + leaf-list ipv6-address { + type oc-inet:ipv6-address; + description + "List of IPv6 addresses for the host entry"; + } + } + + grouping system-dns-static-state { + description + "Operational state data for static host entries"; + } + + grouping system-dns-static-top { + description + "Top-level grouping for static DNS host entries"; + + container host-entries { + description + "Enclosing container for list of static host entries"; + + list host-entry { + key "hostname"; + description + "List of static host entries"; + + leaf hostname { + type leafref { + path "../config/hostname"; + } + description + "Reference to the hostname list key"; + } + + container config { + description + "Configuration data for static host entries"; + + uses system-dns-static-config; + } + + container state { + + config false; + + description + "Operational state data for static host entries"; + + uses system-dns-static-config; + uses system-dns-static-state; + } + } + } + } + + grouping system-dns-servers-state { + description + "Operational state data for DNS resolvers"; + + } + + grouping system-dns-servers-top { + description + "Top-level grouping for the list of DNS resolvers."; + + container servers { + description + "Enclosing container for DNS resolver list"; + + list server { + key "address"; + ordered-by user; + description + "List of the DNS servers that the resolver should query. + + When the resolver is invoked by a calling application, it + sends the query to the first name server in this list. If + no response has been received within 'timeout' seconds, + the resolver continues with the next server in the list. + If no response is received from any server, the resolver + continues with the first server again. When the resolver + has traversed the list 'attempts' times without receiving + any response, it gives up and returns an error to the + calling application. + + Implementations MAY limit the number of entries in this + list."; + + leaf address { + type leafref { + path "../config/address"; + } + description + "References the configured address of the DNS server"; + } + + container config { + description + "Configuration data for each DNS resolver"; + + uses system-dns-servers-config; + } + + container state { + + config false; + + description + "Operational state data for each DNS resolver"; + + uses system-dns-servers-config; + uses system-dns-servers-state; + } + + } + } + } + + grouping system-dns-top { + description + "Top-level grouping for DNS / resolver config and operational + state data"; + + container dns { + description + "Enclosing container for DNS resolver data"; + + container config { + description + "Configuration data for the DNS resolver"; + + uses system-dns-config; + + } + + container state { + + config false; + + description + "Operational state data for the DNS resolver"; + + uses system-dns-config; + uses system-dns-state; + + } + + uses system-dns-servers-top; + uses system-dns-static-top; + } + } + + grouping system-ntp-server-config { + description + "Configuration data for NTP servers"; + + leaf address { + type oc-inet:host; + description + "The address or hostname of the NTP server."; + } + + leaf port { + type oc-inet:port-number; + default 123; + description + "The port number of the NTP server."; + } + + leaf version { + type uint8 { + range 1..4; + } + default 4; + description + "Version number to put in outgoing NTP packets"; + } + + leaf association-type { + type enumeration { + enum SERVER { + description + "Use client association mode. This device + will not provide synchronization to the + configured NTP server."; + } + enum PEER { + description + "Use symmetric active association mode. + This device may provide synchronization + to the configured NTP server."; + } + enum POOL { + description + "Use client association mode with one or + more of the NTP servers found by DNS + resolution of the domain name given by + the 'address' leaf. This device will not + provide synchronization to the servers."; + } + } + default SERVER; + description + "The desired association type for this NTP server."; + } + leaf iburst { + type boolean; + default false; + description + "Indicates whether this server should enable burst + synchronization or not."; + } + leaf prefer { + type boolean; + default false; + description + "Indicates whether this server should be preferred + or not."; + } + } + + grouping system-ntp-server-state { + description + "Operational state data for NTP servers"; + + leaf stratum { + type uint8; + description + "Indicates the level of the server in the NTP hierarchy. As + stratum number increases, the accuracy is degraded. Primary + servers are stratum while a maximum value of 16 indicates + unsynchronized. The values have the following specific + semantics: + + | 0 | unspecified or invalid + | 1 | primary server (e.g., equipped with a GPS receiver) + | 2-15 | secondary server (via NTP) + | 16 | unsynchronized + | 17-255 | reserved"; + reference + "RFC 5905 - Network Time Protocol Version 4: Protocol and + Algorithms Specification"; + } + + leaf root-delay { + type uint32; + // TODO: reconsider units for these values -- the spec defines + // rootdelay and rootdisperson as 2 16-bit integers for seconds + // and fractional seconds, respectively. This gives a + // precision of ~15 us (2^-16). Using milliseconds here based + // on what implementations typically provide and likely lack + // of utility for less than millisecond precision with NTP + // time sync. + units "milliseconds"; + description + "The round-trip delay to the server, in milliseconds."; + reference + "RFC 5905 - Network Time Protocol Version 4: Protocol and + Algorithms Specification"; + } + + leaf root-dispersion { + type uint64; + units "milliseconds"; + description + "Dispersion (epsilon) represents the maximum error inherent + in the measurement"; + reference + "RFC 5905 - Network Time Protocol Version 4: Protocol and + Algorithms Specification"; + } + + leaf offset { + type uint64; + units "milliseconds"; + description + "Estimate of the current time offset from the peer. This is + the time difference between the local and reference clock."; + } + + leaf poll-interval { + type uint32; + units "seconds"; + description + "Polling interval of the peer"; + } + } + + grouping system-ntp-server-top { + description + "Top-level grouping for the list of NTP servers"; + + container servers { + description + "Enclosing container for the list of NTP servers"; + + list server { + key "address"; + description + "List of NTP servers to use for system clock + synchronization. If '/system/ntp/enabled' + is 'true', then the system will attempt to + contact and utilize the specified NTP servers."; + + leaf address { + type leafref { + path "../config/address"; + } + description + "References the configured address or hostname of the + NTP server."; + } + + container config { + description + "Configuration data for an NTP server."; + + uses system-ntp-server-config; + } + + container state { + + config false; + + description + "Operational state data for an NTP server."; + + uses system-ntp-server-config; + uses system-ntp-server-state; + } + + } + } + } + + grouping system-ntp-auth-keys-config { + description + "Configuration data "; + + leaf key-id { + type uint16; + description + "Integer identifier used by the client and server to + designate a secret key. The client and server must use + the same key id."; + } + + leaf key-type { + type identityref { + base NTP_AUTH_TYPE; + } + description + "Encryption type used for the NTP authentication key"; + } + + leaf key-value { + type string; + description + "NTP authentication key value"; + } + } + + grouping system-ntp-auth-keys-state { + description + "Operational state data for NTP auth key data"; + } + + grouping system-ntp-auth-keys-top { + description + "Top-level grouping for NTP auth key data"; + + container ntp-keys { + description + "Enclosing container for list of NTP authentication keys"; + + list ntp-key { + key "key-id"; + description + "List of NTP authentication keys"; + + leaf key-id { + type leafref { + path "../config/key-id"; + } + description + "Reference to auth key-id list key"; + } + + container config { + description + "Configuration data for NTP auth keys"; + + uses system-ntp-auth-keys-config; + } + + container state { + + config false; + + description + "Operational state data for NTP auth keys"; + + uses system-ntp-auth-keys-config; + uses system-ntp-auth-keys-state; + } + } + } + } + + grouping system-ntp-config { + description + "Configuration data for system-wide NTP operation."; + + leaf enabled { + type boolean; + default false; + description + "Enables the NTP protocol and indicates that the system should + attempt to synchronize the system clock with an NTP server + from the servers defined in the 'ntp/server' list."; + } + + leaf ntp-source-address { + type oc-inet:ip-address; + description + "Source address to use on outgoing NTP packets"; + } + + leaf enable-ntp-auth { + type boolean; + default false; + description + "Enable or disable NTP authentication -- when enabled, the + system will only use packets containing a trusted + authentication key to synchronize the time."; + } + } + + grouping system-ntp-state { + description + "Operational state data for system-wide NTP operation."; + + leaf auth-mismatch { + type oc-yang:counter64; + description + "Count of the number of NTP packets received that were not + processed due to authentication mismatch."; + } + } + + grouping system-ntp-top { + description + "Top-level grouping for configuration and state data for NTP"; + + container ntp { + description + "Top-level container for NTP configuration and state"; + + container config { + description + "Configuration data for NTP client."; + + uses system-ntp-config; + } + + container state { + config false; + description + "Operational state data for NTP services."; + + uses system-ntp-config; + uses system-ntp-state; + } + uses system-ntp-auth-keys-top; + uses system-ntp-server-top; + } + } + + grouping system-memory-config { + description + "Configuration data for system memory"; + } + + grouping system-memory-state { + description + "Operational state data for system memory"; + + leaf physical { + type uint64; + units bytes; + // TODO: consider making units in megabytes + description + "Reports the total physical memory available on the + system."; + } + + leaf reserved { + type uint64; + units bytes; + description + "Memory reserved for system use"; + } + } + + grouping system-memory-top { + description + "Top-level grouping for system memory data definitions"; + + container memory { + description + "Top-level container for system memory data"; + + container config { + description + "Configuration data for system memory"; + + uses system-memory-config; + } + + container state { + config false; + description + "Operational state data for system memory"; + + uses system-memory-config; + uses system-memory-state; + } + } + } + + grouping system-cpu-state { + description + "Operational state data for the system CPU(s)"; + + leaf index { + type union { + type enumeration { + enum ALL { + description + "Index value indicating all CPUs in the system"; + } + } + type uint32; + } + description + "The CPU index for each processor core on the system. On a + single-core system, the index should be zero. The ALL + index signifies an aggregation of the CPU utilization + statistics over all cores in the system."; + } + + container total { + description + "Total CPU utilization."; + + uses oc-types:avg-min-max-instant-stats-pct; + } + + container user { + description + "Percentage of CPU time spent running in user space."; + + uses oc-types:avg-min-max-instant-stats-pct; + } + + container kernel { + description + "Percentage of CPU time spent running in kernel space."; + + uses oc-types:avg-min-max-instant-stats-pct; + } + + container nice { + description + "Percentage of CPU time spent running low-priority (niced) + user processes."; + + uses oc-types:avg-min-max-instant-stats-pct; + } + + container idle { + description + "Percentage of CPU time spent idle."; + + uses oc-types:avg-min-max-instant-stats-pct; + } + + container wait { + description + "Percentage of CPU time spent waiting for I/O."; + + uses oc-types:avg-min-max-instant-stats-pct; + } + + container hardware-interrupt { + description + "Percentage of CPU time spent servicing hardware interrupts."; + + uses oc-types:avg-min-max-instant-stats-pct; + } + + container software-interrupt { + description + "Percentage of CPU time spent servicing software interrupts"; + + uses oc-types:avg-min-max-instant-stats-pct; + } + } + + grouping system-cpu-top { + description + "Top-level grouping for system CPU data"; + + container cpus { + config false; + description + "Enclosing container for the list of CPU cores on the + system"; + + list cpu { + key "index"; + description + "List of CPU cores on the system (including logical CPUs + on hyperthreaded systems), keyed by either a numerical + index, or the ALL value for an entry representing the + aggregation across all CPUs."; + + leaf index { + type leafref { + path "../state/index"; + } + description + "Reference to list key"; + } + + container state { + + description + "Operational state data for the system CPU(s)"; + + uses system-cpu-state; + } + } + } + } + + grouping system-top { + description + "Top level system data containers"; + + container system { + description + "Enclosing container for system-related configuration and + operational state data"; + + container config { + description "Global configuration data for the system"; + + uses system-global-config; + + } + + container state { + config false; + description "Global operational state data for the system"; + + uses system-global-config; + uses system-global-state; + } + + uses system-clock-top; + uses system-dns-top; + uses system-ntp-top; + uses oc-sys-mgmt:system-grpc-server-top; + uses oc-sys-term:system-ssh-server-top; + uses oc-sys-term:system-telnet-server-top; + uses oc-log:logging-top; + uses oc-aaa:aaa-top; + uses system-memory-top; + uses system-cpu-top; + uses oc-proc:procmon-processes-top; + uses oc-alarms:alarms-top; + uses oc-messages:messages-top; + } + } + + // data definition statements + + uses system-top; + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-telemetry-types.yang b/vendor/cisco/nx/9.3-14/openconfig-telemetry-types.yang new file mode 100644 index 000000000..66c0bf6b5 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-telemetry-types.yang @@ -0,0 +1,124 @@ +module openconfig-telemetry-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/telemetry-types"; + + prefix "oc-telemetry-types"; + + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines type and identities used by the OpenConfig + telemetry model."; + + oc-ext:openconfig-version "0.4.2"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.4.2"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes"; + reference "0.4.1"; + } + + revision "2017-02-20" { + description + "Fixes for YANG 1.0 compliance, add types module"; + reference "0.4.0"; + } + + revision "2016-04-05" { + description + "OpenConfig public release"; + reference "0.2.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // identity statements + + identity DATA_ENCODING_METHOD { + description + "Base identity for supported encoding for configuration and + operational state data"; + } + + identity ENC_XML { + base DATA_ENCODING_METHOD; + description + "XML encoding"; + } + + identity ENC_JSON_IETF { + base DATA_ENCODING_METHOD; + description + "JSON encoded based on IETF draft standard"; + reference + "draft-ietf-netmod-yang-json"; + } + + identity ENC_PROTO3 { + base DATA_ENCODING_METHOD; + description + "Protocol buffers v3"; + reference + "https://developers.google.com/protocol-buffers/docs/overview"; + } + + identity STREAM_PROTOCOL { + description "Base identity for a telemetry stream protocol"; + } + + identity STREAM_SSH { + base "STREAM_PROTOCOL"; + description + "Telemetry stream is carried over a SSH connection"; + } + + identity STREAM_GRPC { + base "STREAM_PROTOCOL"; + description + "Telemetry stream is carried over via the gRPC framework"; + } + + identity STREAM_JSON_RPC { + base "STREAM_PROTOCOL"; + description + "Telemetry stream is carried via the JSON-RPC framework"; + } + + identity STREAM_THRIFT_RPC { + base "STREAM_PROTOCOL"; + description + "Telemetry stream is carried via the Apache Thrift framework"; + } + + identity STREAM_WEBSOCKET_RPC { + base "STREAM_PROTOCOL"; + description + "Telemetry stream is carried by the WebSocket framework"; + } + + + // typedef statements + + + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-telemetry.yang b/vendor/cisco/nx/9.3-14/openconfig-telemetry.yang new file mode 100644 index 000000000..54ebb989f --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-telemetry.yang @@ -0,0 +1,782 @@ +module openconfig-telemetry { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/telemetry"; + + prefix "oc-telemetry"; + + // import some basic types + import openconfig-inet-types { prefix oc-inet; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-telemetry-types { prefix oc-telemetry-types; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group www.openconfig.net"; + + description + "Data model which creates the configuration for the telemetry + systems and functions on the device."; + + oc-ext:openconfig-version "0.5.1"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.5.1"; + } + + revision "2018-08-17" { + description + "Update telemetry model to comply with the OpenConfig + style for lists and their containers. Remove subscription + exclusions."; + reference "0.5.0"; + } + + revision "2017-08-24" { + description + "Minor formatting fixes"; + reference "0.4.1"; + } + + revision "2017-02-20" { + description + "Fixes for YANG 1.0 compliance, add types module"; + reference "0.4.0"; + } + + revision "2016-04-05" { + description + "OpenConfig public release"; + reference "0.2.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + grouping telemetry-top { + description + "Top level grouping for telemetry configuration and operational + state data"; + + container telemetry-system { + description + "Top level configuration and state for the + device's telemetry system."; + + container sensor-groups { + description + "Top level container for sensor-groups."; + + list sensor-group { + key "sensor-group-id"; + description + "List of telemetry sensory groups on the local + system, where a sensor grouping represents a resuable + grouping of multiple paths and exclude filters."; + + leaf sensor-group-id { + type leafref { + path "../config/sensor-group-id"; + } + description + "Reference to the name or identifier of the + sensor grouping"; + } + + container config { + description + "Configuration parameters relating to the + telemetry sensor grouping"; + uses telemetry-sensor-group-config; + } + + container state { + config false; + description + "State information relating to the telemetry + sensor group"; + uses telemetry-sensor-group-config; + } + + container sensor-paths { + description + "Top level container to hold a set of sensor + paths grouped together"; + + list sensor-path { + key "path"; + description + "List of paths in the model which together + comprise a sensor grouping. Filters for each path + to exclude items are also provided."; + + leaf path { + type leafref { + path "../config/path"; + } + description + "Reference to the path of interest"; + } + + container config { + description + "Configuration parameters to configure a set + of data model paths as a sensor grouping"; + uses telemetry-sensor-path-config; + } + + container state { + config false; + description + "Configuration parameters to configure a set + of data model paths as a sensor grouping"; + uses telemetry-sensor-path-config; + } + } + } + } + } + + container destination-groups { + description + "Top level container for destination group configuration + and state."; + + list destination-group { + key "group-id"; + description + "List of destination-groups. Destination groups allow the + reuse of common telemetry destinations across the + telemetry configuration. An operator references a + set of destinations via the configurable + destination-group-identifier. + + A destination group may contain one or more telemetry + destinations"; + + leaf group-id { + type leafref { + path "../config/group-id"; + } + description + "Unique identifier for the destination group"; + } + + container config { + description + "Top level config container for destination groups"; + leaf group-id { + type string; + description + "Unique identifier for the destination group"; + } + } + + container state { + config false; + description + "Top level state container for destination groups"; + + leaf group-id { + type string; + description + "Unique identifier for destination group"; + } + } + + container destinations { + description + "The destination container lists the destination + information such as IP address and port of the + telemetry messages from the network element."; + list destination { + key "destination-address destination-port"; + description + "List of telemetry stream destinations"; + + leaf destination-address { + type leafref { + path "../config/destination-address"; + } + description + "Reference to the destination address of the + telemetry stream"; + } + + leaf destination-port { + type leafref { + path "../config/destination-port"; + } + description + "Reference to the port number of the stream + destination"; + } + + container config { + description + "Configuration parameters relating to + telemetry destinations"; + uses telemetry-stream-destination-config; + } + + container state { + config false; + description + "State information associated with + telemetry destinations"; + uses telemetry-stream-destination-config; + } + } + } + } + } + + container subscriptions { + description + "This container holds information for both persistent + and dynamic telemetry subscriptions."; + + container persistent-subscriptions { + description + "This container holds information relating to persistent + telemetry subscriptions. A persistent telemetry + subscription is configued locally on the device through + configuration, and is persistent across device restarts or + other redundancy changes."; + + list persistent-subscription { + key "name"; + + description + "List of telemetry subscriptions. A telemetry + subscription consists of a set of collection + destinations, stream attributes, and associated paths to + state information in the model (sensor data)"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the identifier of the subscription + itself. The id will be the handle to refer to the + subscription once created"; + } + + container config { + description + "Config parameters relating to the telemetry + subscriptions on the local device"; + + uses telemetry-subscription-name-config; + uses telemetry-local-source-address-config; + uses telemetry-qos-marking-config; + uses telemetry-stream-protocol-config; + uses telemetry-stream-encoding-config; + } + + container state { + config false; + description + "State parameters relating to the telemetry + subscriptions on the local device"; + + uses telemetry-subscription-name-config; + uses telemetry-subscription-config; + uses telemetry-subscription-state; + uses telemetry-local-source-address-config; + uses telemetry-qos-marking-config; + uses telemetry-stream-protocol-config; + uses telemetry-stream-encoding-config; + } + + container sensor-profiles { + description + "A sensor profile is a set of sensor groups or + individual sensor paths which are associated with a + telemetry subscription. This is the source of the + telemetry data for the subscription to send to the + defined collectors."; + list sensor-profile { + key "sensor-group"; + description + "List of telemetry sensor groups used + in the subscription"; + + leaf sensor-group { + type leafref { + path "../config/sensor-group"; + } + description + "Reference to the telemetry sensor group name"; + } + + container config { + description + "Configuration parameters related to the sensor + profile for a subscription"; + uses telemetry-sensor-profile-config; + } + + container state { + config false; + description + "State information relating to the sensor profile + for a subscription"; + uses telemetry-sensor-profile-config; + } + } + } + + container destination-groups { + description + "A subscription may specify destination addresses. + If the subscription supplies destination addresses, + the network element will be the initiator of the + telemetry streaming, sending it to the destination(s) + specified. + + If the destination set is omitted, the subscription + preconfigures certain elements such as paths and + sample intervals under a specified subscription ID. + In this case, the network element will NOT initiate an + outbound connection for telemetry, but will wait for + an inbound connection from a network management + system. + + It is expected that the network management system + connecting to the network element will reference + the preconfigured subscription ID when initiating + a subscription."; + + list destination-group { + key "group-id"; + description + "Identifier of the previously defined destination + group"; + + leaf group-id { + type leafref { + path "../config/group-id"; + } + description + "The destination group id references a configured + group of destinations for the telemetry stream."; + } + + container config { + description + "Configuration parameters related to telemetry + destinations."; + + leaf group-id { + type leafref { + path "../../../../../../../destination-groups" + + "/destination-group/group-id"; + } + description + "The destination group id references a reusable + group of destination addresses and ports for + the telemetry stream."; + } + } + + container state { + config false; + description + "State information related to telemetry + destinations"; + + leaf group-id { + type leafref { + path "../../../../../../../destination-groups" + + "/destination-group/group-id"; + } + description + "The destination group id references a reusable + group of destination addresses and ports for + the telemetry stream."; + } + } + } + } + } + } + + container dynamic-subscriptions { + description + "This container holds information relating to dynamic + telemetry subscriptions. A dynamic subscription is + typically configured through an RPC channel, and does not + persist across device restarts, or if the RPC channel is + reset or otherwise torn down."; + + + list dynamic-subscription { + key "id"; + + config false; + description + "List representation of telemetry subscriptions that + are configured via an inline RPC, otherwise known + as dynamic telemetry subscriptions."; + + leaf id { + type leafref { + path "../state/id"; + } + + description + "Reference to the identifier of the subscription + itself. The id will be the handle to refer to the + subscription once created"; + } + + container state { + config false; + description + "State information relating to dynamic telemetry + subscriptions."; + + uses telemetry-subscription-config; + uses telemetry-stream-destination-config; + uses telemetry-stream-frequency-config; + uses telemetry-heartbeat-config; + uses telemetry-suppress-redundant-config; + uses telemetry-qos-marking-config; + uses telemetry-stream-protocol-config; + uses telemetry-stream-encoding-config; + } + + container sensor-paths { + description + "Top level container to hold a set of sensor + paths grouped together"; + + list sensor-path { + key "path"; + description + "List of paths in the model which together + comprise a sensor grouping. Filters for each path + to exclude items are also provided."; + + leaf path { + type leafref { + path "../state/path"; + } + description + "Reference to the path of interest"; + } + + container state { + config false; + description + "State information for a dynamic subscription's + paths of interest"; + uses telemetry-sensor-path-config; + } + } + } + } + } + } + } + } + + // identity statements + + // typedef statements + + // grouping statements + + grouping telemetry-sensor-path-config { + description + "Configuration parameters relating to the + grouping of data model paths comprising a + sensor grouping"; + leaf path { + type string; + description + "Path to a section of operational state of interest + (the sensor)."; + } + + leaf exclude-filter { + type string; + description + "Filter to exclude certain values out of the state + values"; + //May not be necessary. Could remove. + } + } + + grouping telemetry-heartbeat-config { + description + "Configuration parameters relating to the + heartbeat of the telemetry subscription"; + leaf heartbeat-interval { + type uint64; + description + "Maximum time interval in seconds that may pass + between updates from a device to a telemetry collector. + If this interval expires, but there is no updated data to + send (such as if suppress_updates has been configured), the + device must send a telemetry message to the collector."; + } + } + + grouping telemetry-suppress-redundant-config { + description + "Configuration parameters relating to suppression of + redundant upstream updates"; + leaf suppress-redundant { + type boolean; + description + "Boolean flag to control suppression of redundant + telemetry updates to the collector platform. If this flag is + set to TRUE, then the collector will only send an update at + the configured interval if a subscribed data value has + changed. Otherwise, the device will not send an update to + the collector until expiration of the heartbeat interval."; + } + } + + grouping telemetry-sensor-profile-config { + description + "Configuration parameters relating to the sensor groups + used in the sensor profile"; + leaf sensor-group { + type leafref { + path "../../../../../../../sensor-groups/sensor-group" + + "/config/sensor-group-id"; + } + description + "Reference to the sensor group which is used in the profile"; + } + uses telemetry-stream-subscription-config; + } + + grouping telemetry-stream-subscription-config { + description + "Configuration used when the sensor is a stream based sensor."; + + uses telemetry-stream-frequency-config; + uses telemetry-heartbeat-config; + uses telemetry-suppress-redundant-config; + + } + + grouping telemetry-qos-marking-config { + description + "Config parameters relating to the quality of service + marking on device generated telemetry packets"; + + leaf originated-qos-marking { + type oc-inet:dscp; + description + "DSCP marking of packets generated by the telemetry + subsystem on the network device."; + } + } + + + grouping telemetry-sensor-group-config { + description + "Config parameters related to the sensor groups + on the device"; + leaf sensor-group-id { + type string; + description + "Name or identifier for the sensor group itself. + Will be referenced by other configuration specifying a + sensor group"; + } + } + + grouping telemetry-subscription-config { + description + "Configuration parameters relating to the telemetry + subscription"; + + leaf id { + type uint64; + description + "System generated identifer of the telemetry + subscription."; + } + } + + grouping telemetry-subscription-name-config { + description + "Configuration parameters relating to the configured + name of the telemetry subscription. The name is a user + configured string value which uniquely identifies the + subscription in the configuration database."; + + leaf name { + type string; + description + "User configured identifier of the telemetry + subscription. This value is used primarily for + subscriptions configured locally on the network + element."; + } + } + + grouping telemetry-subscription-state { + description + "State values for the telemetry subscription"; + //TODO add values + } + + grouping telemetry-stream-protocol-config { + description + "Configuration parameters relating to the + transport protocol carrying telemetry + data."; + + leaf protocol { + type identityref { + base oc-telemetry-types:STREAM_PROTOCOL; + } + description + "Selection of the transport protocol for the telemetry + stream."; + } + } + + grouping telemetry-stream-encoding-config { + description + "Configuration parameters relating to the + encoding of telemetry data to and from the + network element. The encoding method controls + specifically the wire format of the telemetry + data, and also controls which RPC framework + may be in use to exchange telemetry data."; + + leaf encoding { + type identityref { + base oc-telemetry-types:DATA_ENCODING_METHOD; + } + description + "Selection of the specific encoding or RPC framework + for telemetry messages to and from the network element."; + } + } + + grouping telemetry-stream-destination-config { + description + "Configuration parameters for the stream destinations"; + leaf destination-address { + type oc-inet:ip-address; + description + "IP address of the telemetry stream destination"; + } + leaf destination-port { + type uint16; + description + "Protocol (udp or tcp) port number for the telemetry + stream destination"; + } + } + + grouping telemetry-stream-frequency-config { + description + "Config parameters for the frequency of updates to + the collector"; + leaf sample-interval { + type uint64; + description + "Time in milliseconds between the device's sample of a + telemetry data source. For example, setting this to 100 + would require the local device to collect the telemetry + data every 100 milliseconds. There can be latency or jitter + in transmitting the data, but the sample must occur at + the specified interval. + + The timestamp must reflect the actual time when the data + was sampled, not simply the previous sample timestamp + + sample-interval. + + If sample-interval is set to 0, the telemetry sensor + becomes event based. The sensor must then emit data upon + every change of the underlying data source."; + } + } + + grouping telemetry-sensor-specification { + description + "Config related to creating telemetry sensor groups. A sensor + group is a related set of sensor paths and/or filters to + exclude items. A group is assigned a reusable identifer, so + it can be used in multiple telemetry subscriptions."; + list telemetry-sensor-group { + key "telemetry-sensor-group-id"; + description + "List of telemetry sensor groups"; + + leaf telemetry-sensor-group-id { + type string; + description + "The sensor group identifer is a reusable handle which + identifies a single sensor group. It is referenced from + the subscription configuration."; + } + uses telemetry-sensor-paths; + } + } + + grouping telemetry-sensor-paths { + description + "This grouping contains these paths to leaves or containers + in the data model which are the sources of telemetry + information."; + + list telemetry-sensor-paths { + key "telemetry-sensor-path"; + description + "A list of sensor paths and exclude filters which comprise + a sensor grouping"; + + leaf telemetry-sensor-path { + type string; + description + "The sensor path is a path to a portion of operational + state of interest in the data model"; + } + } + } + + + grouping telemetry-local-source-address-config { + description + "Config relating to the local source address for telemetry + messages"; + // TODO: Make this a reference to an interface. + leaf local-source-address { + type oc-inet:ip-address; + description + "The IP address which will be the source of packets from + the device to a telemetry collector destination."; + } + } + + // data definition statements + + uses telemetry-top; + + // augment statements + + // rpc statements + + // notification statements + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-transport-types.yang b/vendor/cisco/nx/9.3-14/openconfig-transport-types.yang new file mode 100644 index 000000000..2486cb462 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-transport-types.yang @@ -0,0 +1,1047 @@ +module openconfig-transport-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/transport-types"; + + prefix "oc-opt-types"; + + import openconfig-platform-types { prefix oc-platform-types; } + import openconfig-extensions { prefix oc-ext; } + import openconfig-types { prefix oc-types; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module contains general type definitions and identities + for optical transport models."; + + oc-ext:openconfig-version "0.9.0"; + + revision "2019-06-27" { + description + "Add FIBER_JUMPER_TYPE identityref."; + reference "0.9.0"; + } + + revision "2019-06-21" { + description + "Generalize and rename optical port type identity"; + reference "0.8.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.7.1"; + } + + revision "2018-10-23" { + description + "Added frame mapping protocols for logical channels assignments + and tributary slot granularity for OTN logical channels"; + reference "0.7.0"; + } + + revision "2018-05-16" { + description + "Added interval,min,max time to interval stats."; + reference "0.6.0"; + } + + revision "2017-08-16" { + description + "Added ODU Cn protocol type"; + reference "0.5.0"; + } + + revision "2016-12-22" { + description + "Fixes and additions for terminal optics model"; + reference "0.4.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // typedef statements + + typedef frequency-type { + type uint64; + units "MHz"; + description + "Type for optical spectrum frequency values"; + } + + typedef admin-state-type { + type enumeration { + enum ENABLED { + description + "Sets the channel admin state to enabled"; + } + enum DISABLED { + description + "Sets the channel admin state to disabled"; + } + enum MAINT { + description + "Sets the channel to maintenance / diagnostic mode"; + } + } + description "Administrative state modes for + logical channels in the transponder model."; + } + + typedef loopback-mode-type { + type enumeration { + enum NONE { + description + "No loopback is applied"; + } + enum FACILITY { + description + "A loopback which directs traffic normally transmitted + on the port back to the device as if received on the same + port from an external source."; + } + enum TERMINAL { + description + "A loopback which directs traffic received from an external + source on the port back out the transmit side of the same + port."; + } + } + default NONE; + description + "Loopback modes for transponder logical channels"; + } + + identity FRAME_MAPPING_PROTOCOL { + description + "Base identity for frame mapping protocols that can be used + when mapping Ethernet, OTN or other client signals to OTN + logical channels."; + } + + identity AMP { + base FRAME_MAPPING_PROTOCOL; + description "Asynchronous Mapping Procedure"; + } + + identity GMP { + base FRAME_MAPPING_PROTOCOL; + description "Generic Mapping Procedure"; + } + + identity BMP { + base FRAME_MAPPING_PROTOCOL; + description "Bit-synchronous Mapping Procedure"; + } + + identity CBR { + base FRAME_MAPPING_PROTOCOL; + description "Constant Bit Rate Mapping Procedure"; + } + + identity GFP_T { + base FRAME_MAPPING_PROTOCOL; + description "Transparent Generic Framing Protocol"; + } + + identity GFP_F { + base FRAME_MAPPING_PROTOCOL; + description "Framed-Mapped Generic Framing Protocol"; + } + + identity TRIBUTARY_SLOT_GRANULARITY { + description + "Base identity for tributary slot granularity for OTN + logical channels."; + } + + identity TRIB_SLOT_1.25G { + base TRIBUTARY_SLOT_GRANULARITY; + description + "The tributary slot with a bandwidth of approximately 1.25 Gb/s + as defined in ITU-T G.709 standard."; + } + + identity TRIB_SLOT_2.5G { + base TRIBUTARY_SLOT_GRANULARITY; + description + "The tributary slot with a bandwidth of approximately 2.5 Gb/s + as defined in ITU-T G.709 standard."; + } + + identity TRIB_SLOT_5G { + base TRIBUTARY_SLOT_GRANULARITY; + description + "The tributary slot with a bandwidth of approximately 5 Gb/s + as defined in ITU-T G.709 standard."; + } + + // grouping statements + + grouping avg-min-max-instant-stats-precision2-ps-nm { + description + "Common grouping for recording picosecond per nanometer + values with 2 decimal precision. Values include the + instantaneous, average, minimum, and maximum statistics. + Statistics are computed and reported based on a moving time + interval (e.g., the last 30s). If supported by the device, + the time interval over which the statistics are computed, and + the times at which the minimum and maximum values occurred, + are also reported."; + + leaf instant { + type decimal64 { + fraction-digits 2; + } + units ps-nm; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 2; + } + units ps-nm; + description + "The arithmetic mean value of the statistic over the + time interval."; + } + + leaf min { + type decimal64 { + fraction-digits 2; + } + units ps-nm; + description + "The minimum value of the statistic over the time interval."; + } + + leaf max { + type decimal64 { + fraction-digits 2; + } + units ps-nm; + description + "The maximum value of the statistic over the time interval."; + } + + uses oc-types:stat-interval-state; + uses oc-types:min-max-time; + } + + grouping avg-min-max-instant-stats-precision2-ps { + description + "Common grouping for recording picosecond values with + 2 decimal precision. Values include the + instantaneous, average, minimum, and maximum statistics. + Statistics are computed and reported based on a moving time + interval (e.g., the last 30s). If supported by the device, + the time interval over which the statistics are computed, and + the times at which the minimum and maximum values occurred, + are also reported."; + + leaf instant { + type decimal64 { + fraction-digits 2; + } + units ps; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 2; + } + units ps; + description + "The arithmetic mean value of the statistic over the + time interval."; + } + + leaf min { + type decimal64 { + fraction-digits 2; + } + units ps; + description + "The minimum value of the statistic over the time interval."; + } + + leaf max { + type decimal64 { + fraction-digits 2; + } + units ps; + description + "The maximum value of the statistic over the time interval."; + } + + uses oc-types:stat-interval-state; + uses oc-types:min-max-time; + } + + grouping avg-min-max-instant-stats-precision2-ps2 { + description + "Common grouping for recording picosecond^2 values with + 2 decimal precision. Values include the + instantaneous, average, minimum, and maximum statistics. + Statistics are computed and reported based on a moving time + interval (e.g., the last 30s). If supported by the device, + the time interval over which the statistics are computed, and + the times at which the minimum and maximum values occurred, + are also reported."; + + leaf instant { + type decimal64 { + fraction-digits 2; + } + units ps^2; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 2; + } + units ps^2; + description + "The arithmetic mean value of the statistic over the + time interval."; + } + + leaf min { + type decimal64 { + fraction-digits 2; + } + units ps^2; + description + "The minimum value of the statistic over the time interval."; + } + + leaf max { + type decimal64 { + fraction-digits 2; + } + units ps^2; + description + "The maximum value of the statistic over the time + interval."; + } + + uses oc-types:stat-interval-state; + uses oc-types:min-max-time; + } + + grouping avg-min-max-instant-stats-precision18-ber { + description + "Common grouping for recording bit error rate (BER) values + with 18 decimal precision. Note that decimal64 supports + values as small as i x 10^-18 where i is an integer. Values + smaller than this should be reported as 0 to inidicate error + free or near error free performance. Values include the + instantaneous, average, minimum, and maximum statistics. + Statistics are computed and reported based on a moving time + interval (e.g., the last 30s). If supported by the device, + the time interval over which the statistics are computed, and + the times at which the minimum and maximum values occurred, + are also reported."; + + leaf instant { + type decimal64 { + fraction-digits 18; + } + units bit-errors-per-second; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 18; + } + units bit-errors-per-second; + description + "The arithmetic mean value of the statistic over the + time interval."; + } + + leaf min { + type decimal64 { + fraction-digits 18; + } + units bit-errors-per-second; + description + "The minimum value of the statistic over the time + interval."; + } + + leaf max { + type decimal64 { + fraction-digits 18; + } + units bit-errors-per-second; + description + "The maximum value of the statistic over the time + interval."; + } + + uses oc-types:stat-interval-state; + uses oc-types:min-max-time; + } + + // identity statements + + identity TRIBUTARY_PROTOCOL_TYPE { + description + "Base identity for protocol framing used by tributary + signals."; + } + + identity PROT_1GE { + base TRIBUTARY_PROTOCOL_TYPE; + description "1G Ethernet protocol"; + } + + identity PROT_OC48 { + base TRIBUTARY_PROTOCOL_TYPE; + description "OC48 protocol"; + } + + identity PROT_STM16 { + base TRIBUTARY_PROTOCOL_TYPE; + description "STM 16 protocol"; + } + + identity PROT_10GE_LAN { + base TRIBUTARY_PROTOCOL_TYPE; + description "10G Ethernet LAN protocol"; + } + + identity PROT_10GE_WAN { + base TRIBUTARY_PROTOCOL_TYPE; + description "10G Ethernet WAN protocol"; + } + + identity PROT_OC192 { + base TRIBUTARY_PROTOCOL_TYPE; + description "OC 192 (9.6GB) port protocol"; + } + + identity PROT_STM64 { + base TRIBUTARY_PROTOCOL_TYPE; + description "STM 64 protocol"; + } + + identity PROT_OTU2 { + base TRIBUTARY_PROTOCOL_TYPE; + description "OTU 2 protocol"; + } + + identity PROT_OTU2E { + base TRIBUTARY_PROTOCOL_TYPE; + description "OTU 2e protocol"; + } + + identity PROT_OTU1E { + base TRIBUTARY_PROTOCOL_TYPE; + description "OTU 1e protocol"; + } + + identity PROT_ODU2 { + base TRIBUTARY_PROTOCOL_TYPE; + description "ODU 2 protocol"; + } + + identity PROT_ODU2E { + base TRIBUTARY_PROTOCOL_TYPE; + description "ODU 2e protocol"; + } + + identity PROT_40GE { + base TRIBUTARY_PROTOCOL_TYPE; + description "40G Ethernet port protocol"; + } + + identity PROT_OC768 { + base TRIBUTARY_PROTOCOL_TYPE; + description "OC 768 protocol"; + } + + identity PROT_STM256 { + base TRIBUTARY_PROTOCOL_TYPE; + description "STM 256 protocol"; + } + + identity PROT_OTU3 { + base TRIBUTARY_PROTOCOL_TYPE; + description "OTU 3 protocol"; + } + + identity PROT_ODU3 { + base TRIBUTARY_PROTOCOL_TYPE; + description "ODU 3 protocol"; + } + + identity PROT_100GE { + base TRIBUTARY_PROTOCOL_TYPE; + description "100G Ethernet protocol"; + } + + identity PROT_100G_MLG { + base TRIBUTARY_PROTOCOL_TYPE; + description "100G MLG protocol"; + } + + identity PROT_OTU4 { + base TRIBUTARY_PROTOCOL_TYPE; + description "OTU4 signal protocol (112G) for transporting + 100GE signal"; + } + + identity PROT_OTUCN { + base TRIBUTARY_PROTOCOL_TYPE; + description "OTU Cn protocol"; + } + + identity PROT_ODUCN { + base TRIBUTARY_PROTOCOL_TYPE; + description "ODU Cn protocol"; + } + + identity PROT_ODU4 { + base TRIBUTARY_PROTOCOL_TYPE; + description "ODU 4 protocol"; + } + + identity TRANSCEIVER_FORM_FACTOR_TYPE { + description + "Base identity for identifying the type of pluggable optic + transceiver (i.e,. form factor) used in a port."; + } + + identity CFP { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "C form-factor pluggable, that can support up to a + 100 Gb/s signal with 10x10G or 4x25G physical channels"; + } + + identity CFP2 { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "1/2 C form-factor pluggable, that can support up to a + 200 Gb/s signal with 10x10G, 4x25G, or 8x25G physical + channels"; + } + + identity CFP2_ACO { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "CFP2 analog coherent optics transceiver, supporting + 100 Gb, 200Gb, and 250 Gb/s signal."; + } + + identity CFP4 { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "1/4 C form-factor pluggable, that can support up to a + 100 Gb/s signal with 10x10G or 4x25G physical channels"; + } + + identity QSFP { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "OriginalQuad Small Form-factor Pluggable transceiver that can + support 4x1G physical channels. Not commonly used."; + } + + identity QSFP_PLUS { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "Quad Small Form-factor Pluggable transceiver that can support + up to 4x10G physical channels."; + } + + identity QSFP28 { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "QSFP pluggable optic with support for up to 4x28G physical + channels"; + } + + identity CPAK { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "Cisco CPAK transceiver supporting 100 Gb/s."; + } + + identity SFP { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "Small form-factor pluggable transceiver supporting up to + 10 Gb/s signal"; + } + + identity SFP_PLUS { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "Enhanced small form-factor pluggable transceiver supporting + up to 16 Gb/s signals, including 10 GbE and OTU2"; + } + + identity XFP { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "10 Gigabit small form factor pluggable transceiver supporting + 10 GbE and OTU2"; + } + + identity X2 { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "10 Gigabit small form factor pluggable transceiver supporting + 10 GbE using a XAUI inerface and 4 data channels."; + } + + identity NON_PLUGGABLE { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "Represents a port that does not require a pluggable optic, + e.g., with on-board optics like COBO"; + } + + identity OTHER { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "Represents a transceiver form factor not otherwise listed"; + } + + identity FIBER_CONNECTOR_TYPE { + description + "Type of optical fiber connector"; + } + + identity SC_CONNECTOR { + base FIBER_CONNECTOR_TYPE; + description + "SC type fiber connector"; + } + + identity LC_CONNECTOR { + base FIBER_CONNECTOR_TYPE; + description + "LC type fiber connector"; + } + + identity MPO_CONNECTOR { + base FIBER_CONNECTOR_TYPE; + description + "MPO (multi-fiber push-on/pull-off) type fiber connector + 1x12 fibers"; + } + + identity ETHERNET_PMD_TYPE { + description + "Ethernet compliance codes (PMD) supported by transceivers"; + } + + identity ETH_10GBASE_LRM { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 10GBASE_LRM"; + } + + identity ETH_10GBASE_LR { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 10GBASE_LR"; + } + + identity ETH_10GBASE_ZR { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 10GBASE_ZR"; + } + + identity ETH_10GBASE_ER { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 10GBASE_ER"; + } + + identity ETH_10GBASE_SR { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 10GBASE_SR"; + } + + identity ETH_40GBASE_CR4 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 40GBASE_CR4"; + } + + identity ETH_40GBASE_SR4 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 40GBASE_SR4"; + } + + identity ETH_40GBASE_LR4 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 40GBASE_LR4"; + } + + identity ETH_40GBASE_ER4 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 40GBASE_ER4"; + } + + identity ETH_40GBASE_PSM4 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 40GBASE_PSM4"; + } + + identity ETH_4X10GBASE_LR { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 4x10GBASE_LR"; + } + + identity ETH_4X10GBASE_SR { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 4x10GBASE_SR"; + } + + identity ETH_100G_AOC { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 100G_AOC"; + } + + identity ETH_100G_ACC { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 100G_ACC"; + } + + identity ETH_100GBASE_SR10 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 100GBASE_SR10"; + } + + identity ETH_100GBASE_SR4 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 100GBASE_SR4"; + } + + identity ETH_100GBASE_LR4 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 100GBASE_LR4"; + } + + identity ETH_100GBASE_ER4 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 100GBASE_ER4"; + } + + identity ETH_100GBASE_CWDM4 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 100GBASE_CWDM4"; + } + + identity ETH_100GBASE_CLR4 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 100GBASE_CLR4"; + } + + identity ETH_100GBASE_PSM4 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 100GBASE_PSM4"; + } + + identity ETH_100GBASE_CR4 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 100GBASE_CR4"; + } + + identity ETH_UNDEFINED { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: undefined"; + } + + identity SONET_APPLICATION_CODE { + description + "Supported SONET/SDH application codes"; + } + + identity VSR2000_3R2 { + base SONET_APPLICATION_CODE; + description + "SONET/SDH application code: VSR2000_3R2"; + } + + identity VSR2000_3R3 { + base SONET_APPLICATION_CODE; + description + "SONET/SDH application code: VSR2000_3R3"; + } + + identity VSR2000_3R5 { + base SONET_APPLICATION_CODE; + description + "SONET/SDH application code: VSR2000_3R5"; + } + + identity SONET_UNDEFINED { + base SONET_APPLICATION_CODE; + description + "SONET/SDH application code: undefined"; + } + + identity OTN_APPLICATION_CODE { + description + "Supported OTN application codes"; + } + + identity P1L1_2D1 { + base OTN_APPLICATION_CODE; + description + "OTN application code: P1L1_2D1"; + } + + identity P1S1_2D2 { + base OTN_APPLICATION_CODE; + description + "OTN application code: P1S1_2D2"; + } + + identity P1L1_2D2 { + base OTN_APPLICATION_CODE; + description + "OTN application code: P1L1_2D2"; + } + + identity OTN_UNDEFINED { + base OTN_APPLICATION_CODE; + description + "OTN application code: undefined"; + } + + identity TRIBUTARY_RATE_CLASS_TYPE { + description + "Rate of tributary signal _- identities will typically reflect + rounded bit rate."; + } + + identity TRIB_RATE_1G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "1G tributary signal rate"; + } + + identity TRIB_RATE_2.5G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2.5G tributary signal rate"; + } + + identity TRIB_RATE_10G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "10G tributary signal rate"; + } + + identity TRIB_RATE_40G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "40G tributary signal rate"; + } + + identity TRIB_RATE_100G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "100G tributary signal rate"; + } + + identity TRIB_RATE_150G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "150G tributary signal rate"; + } + + identity TRIB_RATE_200G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "200G tributary signal rate"; + } + + identity TRIB_RATE_250G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "250G tributary signal rate"; + } + + identity TRIB_RATE_300G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "300G tributary signal rate"; + } + + identity TRIB_RATE_400G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "400G tributary signal rate"; + } + + identity TRIB_RATE_500G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "500G tributary signal rate"; + } + + identity TRIB_RATE_600G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "600G tributary signal rate"; + } + + identity TRIB_RATE_700G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "700G tributary signal rate"; + } + + identity TRIB_RATE_800G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "800G tributary signal rate"; + } + + identity TRIB_RATE_900G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "900G tributary signal rate"; + } + + identity TRIB_RATE_1000G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "1000G tributary signal rate"; + } + + identity TRIB_RATE_1100G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "1100G tributary signal rate"; + } + + identity LOGICAL_ELEMENT_PROTOCOL_TYPE { + description + "Type of protocol framing used on the logical channel or + tributary"; + } + + identity PROT_ETHERNET { + base LOGICAL_ELEMENT_PROTOCOL_TYPE; + description + "Ethernet protocol framing"; + } + + identity PROT_OTN { + base LOGICAL_ELEMENT_PROTOCOL_TYPE; + description + "OTN protocol framing"; + } + + identity OPTICAL_CHANNEL { + base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT; + description + "Optical channels act as carriers for transport traffic + directed over a line system. They are represented as + physical components in the physical inventory model."; + } + + identity FIBER_JUMPER_TYPE { + description + "Types of fiber jumpers used for connecting device ports"; + } + + identity FIBER_JUMPER_SIMPLEX { + base FIBER_JUMPER_TYPE; + description + "Simplex fiber jumper"; + } + + identity FIBER_JUMPER_MULTI_FIBER_STRAND { + base FIBER_JUMPER_TYPE; + description + "One strand of a fiber jumper which contains multiple fibers + within it, such as an MPO based fiber jumper"; + } + + identity OPTICAL_PORT_TYPE { + description + "Type definition for optical transport port types"; + } + + identity INGRESS { + base OPTICAL_PORT_TYPE; + description + "Ingress port, corresponding to a signal entering + a line system device such as an amplifier or wavelength + router."; + } + + identity EGRESS { + base OPTICAL_PORT_TYPE; + description + "Egress port, corresponding to a signal exiting + a line system device such as an amplifier or wavelength + router."; + } + + identity ADD { + base OPTICAL_PORT_TYPE; + description + "Add port, corresponding to a signal injected + at a wavelength router."; + } + + identity DROP { + base OPTICAL_PORT_TYPE; + description + "Drop port, corresponding to a signal dropped + at a wavelength router."; + } + + identity MONITOR { + base OPTICAL_PORT_TYPE; + description + "Monitor port, corresponding to a signal used by an optical + channel monitor. This is used to represent the connection + that a channel monitor port is connected to, typically on a + line system device. This connection may be via physical cable + and faceplate ports or internal to the device"; + } + + identity TERMINAL_CLIENT { + base OPTICAL_PORT_TYPE; + description + "Client-facing port on a terminal optics device (e.g., + transponder or muxponder)."; + } + + identity TERMINAL_LINE { + base OPTICAL_PORT_TYPE; + description + "Line-facing port on a terminal optics device (e.g., + transponder or muxponder)."; + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-types.yang b/vendor/cisco/nx/9.3-14/openconfig-types.yang new file mode 100644 index 000000000..89e32d515 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-types.yang @@ -0,0 +1,471 @@ +module openconfig-types { + yang-version "1"; + + namespace "http://openconfig.net/yang/openconfig-types"; + + prefix "oc-types"; + + // import statements + import openconfig-extensions { prefix oc-ext; } + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module contains a set of general type definitions that + are used across OpenConfig models. It can be imported by modules + that make use of these types."; + + oc-ext:openconfig-version "0.6.0"; + + revision "2019-04-16" { + description + "Clarify definition of timeticks64."; + reference "0.6.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "0.5.1"; + } + + revision "2018-05-05" { + description + "Add grouping of min-max-time and + included them to all stats with min/max/avg"; + reference "0.5.0"; + } + + revision "2018-01-16" { + description + "Add interval to min/max/avg stats; add percentage stat"; + reference "0.4.0"; + } + + revision "2017-08-16" { + description + "Apply fix for ieetfloat32 length parameter"; + reference "0.3.3"; + } + + revision "2017-01-13" { + description + "Add ADDRESS_FAMILY identity"; + reference "0.3.2"; + } + + revision "2016-11-14" { + description + "Correct length of ieeefloat32"; + reference "0.3.1"; + } + + revision "2016-11-11" { + description + "Additional types - ieeefloat32 and routing-password"; + reference "0.3.0"; + } + + revision "2016-05-31" { + description + "OpenConfig public release"; + reference "0.2.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + typedef percentage { + type uint8 { + range "0..100"; + } + description + "Integer indicating a percentage value"; + } + + typedef std-regexp { + type string; + description + "This type definition is a placeholder for a standard + definition of a regular expression that can be utilised in + OpenConfig models. Further discussion is required to + consider the type of regular expressions that are to be + supported. An initial proposal is POSIX compatible."; + } + + typedef timeticks64 { + type uint64; + units "nanoseconds"; + description + "The timeticks64 represents the time, modulo 2^64 in + nanoseconds between two epochs. The leaf using this + type must define the epochs that tests are relative to."; + } + + typedef ieeefloat32 { + type binary { + length "4"; + } + description + "An IEEE 32-bit floating point number. The format of this number + is of the form: + 1-bit sign + 8-bit exponent + 23-bit fraction + The floating point value is calculated using: + (-1)**S * 2**(Exponent-127) * (1+Fraction)"; + } + + typedef routing-password { + type string; + description + "This type is indicative of a password that is used within + a routing protocol which can be returned in plain text to the + NMS by the local system. Such passwords are typically stored + as encrypted strings. Since the encryption used is generally + well known, it is possible to extract the original value from + the string - and hence this format is not considered secure. + Leaves specified with this type should not be modified by + the system, and should be returned to the end-user in plain + text. This type exists to differentiate passwords, which + may be sensitive, from other string leaves. It could, for + example, be used by the NMS to censor this data when + viewed by particular users."; + } + + typedef stat-interval { + type uint64; + units nanoseconds; + description + "A time interval over which a set of statistics is computed. + A common usage is to report the interval over which + avg/min/max stats are computed and reported."; + } + + grouping stat-interval-state { + description + "Reusable leaf definition for stats computation interval"; + + leaf interval { + type oc-types:stat-interval; + description + "If supported by the system, this reports the time interval + over which the min/max/average statistics are computed by + the system."; + } + } + + grouping min-max-time { + description + "Common grouping for recording the absolute time at which + the minimum and maximum values occurred in the statistics"; + + leaf min-time { + type oc-types:timeticks64; + description + "The absolute time at which the minimum value occurred. + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + } + + leaf max-time { + type oc-types:timeticks64; + description + "The absolute time at which the maximum value occurred. + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + } + } + + grouping avg-min-max-stats-precision1 { + description + "Common nodes for recording average, minimum, and + maximum values for a statistic. These values all have + fraction-digits set to 1. Statistics are computed + and reported based on a moving time interval (e.g., the last + 30s). If supported by the device, the time interval over which + the statistics are computed is also reported."; + + leaf avg { + type decimal64 { + fraction-digits 1; + } + description + "The arithmetic mean value of the statistic over the + time interval."; + } + + leaf min { + type decimal64 { + fraction-digits 1; + } + description + "The minimum value of the statistic over the time + interval."; + } + + leaf max { + type decimal64 { + fraction-digits 1; + } + description + "The maximum value of the statitic over the time + interval."; + } + + uses stat-interval-state; + uses min-max-time; + } + + grouping avg-min-max-instant-stats-precision1 { + description + "Common grouping for recording an instantaneous statistic value + in addition to avg-min-max stats"; + + leaf instant { + type decimal64 { + fraction-digits 1; + } + description + "The instantaneous value of the statistic."; + } + + uses avg-min-max-stats-precision1; + } + + grouping avg-min-max-instant-stats-precision2-dB { + description + "Common grouping for recording dB values with 2 decimal + precision. Values include the instantaneous, average, + minimum, and maximum statistics. Statistics are computed + and reported based on a moving time interval (e.g., the last + 30s). If supported by the device, the time interval over which + the statistics are computed, and the times at which the minimum + and maximum values occurred, are also reported."; + + leaf instant { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "The arithmetic mean value of the statistic over the + time interval."; + } + + leaf min { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "The minimum value of the statistic over the time interval."; + } + + leaf max { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "The maximum value of the statistic over the time + interval."; + } + + uses stat-interval-state; + uses min-max-time; + } + + grouping avg-min-max-instant-stats-precision2-dBm { + description + "Common grouping for recording dBm values with 2 decimal + precision. Values include the instantaneous, average, + minimum, and maximum statistics. Statistics are computed + and reported based on a moving time interval (e.g., the last + 30s). If supported by the device, the time interval over which + the statistics are computed, and the times at which the minimum + and maximum values occurred, are also reported."; + + leaf instant { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "The arithmetic mean value of the statistic over the + time interval."; + } + + leaf min { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "The minimum value of the statistic over the time + interval."; + } + + leaf max { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "The maximum value of the statistic over the time interval."; + } + + uses stat-interval-state; + uses min-max-time; + } + + grouping avg-min-max-instant-stats-precision2-mA { + description + "Common grouping for recording mA values with 2 decimal + precision. Values include the instantaneous, average, + minimum, and maximum statistics. Statistics are computed + and reported based on a moving time interval (e.g., the last + 30s). If supported by the device, the time interval over which + the statistics are computed, and the times at which the minimum + and maximum values occurred, are also reported."; + + leaf instant { + type decimal64 { + fraction-digits 2; + } + units mA; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 2; + } + units mA; + description + "The arithmetic mean value of the statistic over the + time interval."; + } + + leaf min { + type decimal64 { + fraction-digits 2; + } + units mA; + description + "The minimum value of the statistic over the time + interval."; + } + + leaf max { + type decimal64 { + fraction-digits 2; + } + units mA; + description + "The maximum value of the statistic over the time + interval."; + } + + uses stat-interval-state; + uses min-max-time; + } + + grouping avg-min-max-instant-stats-pct { + description + "Common grouping for percentage statistics. + Values include the instantaneous, average, + minimum, and maximum statistics. Statistics are computed + and reported based on a moving time interval (e.g., the last + 30s). If supported by the device, the time interval over which + the statistics are computed, and the times at which the minimum + and maximum values occurred, are also reported."; + + leaf instant { + type oc-types:percentage; + description + "The instantaneous percentage value."; + } + + leaf avg { + type oc-types:percentage; + description + "The arithmetic mean value of the percentage measure of the + statistic over the time interval."; + } + + leaf min { + type oc-types:percentage; + description + "The minimum value of the percentage measure of the + statistic over the time interval."; + } + + leaf max { + type oc-types:percentage; + description + "The maximum value of the percentage measure of the + statistic over the time interval."; + } + + uses stat-interval-state; + uses min-max-time; + } + + identity ADDRESS_FAMILY { + description + "A base identity for all address families"; + } + + identity IPV4 { + base ADDRESS_FAMILY; + description + "The IPv4 address family"; + } + + identity IPV6 { + base ADDRESS_FAMILY; + description + "The IPv6 address family"; + } + + identity MPLS { + base ADDRESS_FAMILY; + description + "The MPLS address family"; + } + + identity L2_ETHERNET { + base ADDRESS_FAMILY; + description + "The 802.3 Ethernet address family"; + } + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-vlan-types.yang b/vendor/cisco/nx/9.3-14/openconfig-vlan-types.yang new file mode 100644 index 000000000..6c644fe36 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-vlan-types.yang @@ -0,0 +1,243 @@ +module openconfig-vlan-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/vlan-types"; + + prefix "oc-vlan-types"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module defines configuration and state variables for VLANs, + in addition to VLAN parameters associated with interfaces"; + + oc-ext:openconfig-version "3.1.0"; + + revision "2019-01-31" { + description + "Add TPID_ANY wildcard match and a QinQ list type."; + reference "3.1.0"; + } + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.0.1"; + } + + revision "2018-02-14" { + description + "Fix bug with name of 802.1ad identity."; + reference "3.0.0"; + } + + revision "2017-07-14" { + description + "Move top-level vlan data to network-instance; Update + identities to comply to style guide; fixed pattern + quoting; corrected trunk vlan types; added TPID config to + base interface."; + reference "2.0.0"; + } + + revision "2016-05-26" { + description + "OpenConfig public release"; + reference "1.0.2"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // extension statements + + // feature statements + + // identity statements + + identity TPID_TYPES { + description + "Base identity for TPID values that can be matched or that override + the VLAN ethertype value"; + } + + identity TPID_0X8100 { + base TPID_TYPES; + description + "Default TPID value for 802.1q single-tagged VLANs."; + } + + identity TPID_0X88A8 { + base TPID_TYPES; + description + "TPID value for 802.1ad provider bridging, QinQ or + stacked VLANs."; + } + + identity TPID_0X9100 { + base TPID_TYPES; + description + "Alternate TPID value."; + } + + identity TPID_0X9200 { + base TPID_TYPES; + description + "Alternate TPID value."; + } + + identity TPID_ANY { + base TPID_TYPES; + description + "A wildcard that matches any of the generally used TPID values + for singly- or multiply-tagged VLANs. Equivalent to matching + any of TPID_0X8100, TPID_0X88A8, TPID_0X9100 and TPID_0x9200. + This value is only applicable where the TPID of a packet is + being matched."; + } + + // typedef statements + + // TODO: typedefs should be defined in a vlan-types.yang file. + typedef vlan-id { + type uint16 { + range 1..4094; + } + description + "Type definition representing a single-tagged VLAN"; + } + + typedef vlan-range { + type string { + // range specified as [lower]..[upper] + pattern '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.\.(409[0-4]|' + + '40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|' + + '[1-9])$'; + } + description + "Type definition representing a range of single-tagged + VLANs. A range is specified as x..y where x and y are + valid VLAN IDs (1 <= vlan-id <= 4094). The range is + assumed to be inclusive, such that any VLAN-ID matching + x <= VLAN-ID <= y falls within the range."; + } + + typedef qinq-id { + type string { + pattern + '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.' + + '((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])|\*)$'; + } + description + "Type definition representing a single double-tagged/QinQ VLAN + identifier. The format of a QinQ VLAN-ID is x.y where X is the + 'outer' VLAN identifier, and y is the 'inner' VLAN identifier. + Both x and y must be valid VLAN IDs (1 <= vlan-id <= 4094) + with the exception that y may be equal to a wildcard (*). In + cases where y is set to the wildcard, this represents all inner + VLAN identifiers where the outer VLAN identifier is equal to + x."; + } + + typedef qinq-id-range { + type union { + type string { + // match cases where the range is specified as x..y.z + pattern + '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.\.' + + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.' + + '((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])|\*)$'; + } + type string { + // match cases where the range is specified as x.y..z + pattern + '^(\*|(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9]))\.' + + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])\.\.' + + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '[1-9][0-9]{1,2}|[1-9])$'; + } + } + description + "A type definition representing a range of double-tagged/QinQ + VLAN identifiers. The format of a QinQ VLAN-ID range can be + specified in two formats. Where the range is outer VLAN IDs + the range is specified as x..y.z. In this case outer VLAN + identifiers meeting the criteria x <= outer-vlan-id <= y are + accepted if and only if the inner VLAN-ID is equal to y - or + any inner-tag if the wildcard is specified. Alternatively the + ange can be specified as x.y..z. In this case only VLANs with an + outer-vlan-id qual to x are accepted (x may again be the + wildcard). Inner VLANs are accepted if they meet the inequality + y <= inner-vlan-id <= z."; + } + + typedef vlan-mode-type { + type enumeration { + enum ACCESS { + description "Access mode VLAN interface (No 802.1q header)"; + } + enum TRUNK { + description "Trunk mode VLAN interface"; + } + } + description + "VLAN interface mode (trunk or access)"; + } + + typedef vlan-ref { + type union { + type vlan-id; + type string; + // TODO: string should be changed to leafref to reference + // an existing VLAN. this is not allowed in YANG 1.0 but + // is expected to be in YANG 1.1. + // type leafref { + // path "vlan:vlans/vlan:vlan/vlan:config/vlan:name"; + // } + } + description + "Reference to a VLAN by name or id"; + } + + typedef vlan-stack-action { + type enumeration { + enum PUSH { + description + "Push a VLAN onto the VLAN stack."; + } + enum POP { + description + "Pop a VLAN from the VLAN stack."; + } + enum SWAP { + description + "Swap the VLAN at the top of the VLAN stack."; + } + // TODO: add push-push, pop-pop, push-swap etc + } + description + "Operations that can be performed on a VLAN stack."; + } + + +} diff --git a/vendor/cisco/nx/9.3-14/openconfig-vlan.yang b/vendor/cisco/nx/9.3-14/openconfig-vlan.yang new file mode 100644 index 000000000..1cae82476 --- /dev/null +++ b/vendor/cisco/nx/9.3-14/openconfig-vlan.yang @@ -0,0 +1,449 @@ +module openconfig-vlan { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/vlan"; + + prefix "oc-vlan"; + + // import some basic types + import openconfig-vlan-types { prefix oc-vlan-types; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-if-ethernet { prefix oc-eth; } + import openconfig-if-aggregate { prefix oc-lag; } + import iana-if-type { prefix ift; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module defines configuration and state variables for VLANs, + in addition to VLAN parameters associated with interfaces"; + + oc-ext:openconfig-version "3.0.2"; + + revision "2018-11-21" { + description + "Add OpenConfig module metadata extensions."; + reference "3.0.2"; + } + + revision "2018-06-05" { + description + "Fix bugs in when statements."; + reference "3.0.1"; + } + + revision "2018-02-14" { + description + "Fix bug with name of 802.1ad identity."; + reference "3.0.0"; + } + + revision "2017-07-14" { + description + "Move top-level vlan data to network-instance; Update + identities to comply to style guide; fixed pattern + quoting; corrected trunk vlan types; added TPID config to + base interface."; + reference "2.0.0"; + } + + revision "2016-05-26" { + description + "OpenConfig public release"; + reference "1.0.2"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // grouping statements + + grouping vlan-config { + description "VLAN configuration container."; + + leaf vlan-id { + type oc-vlan-types:vlan-id; + description "Interface VLAN id."; + } + + leaf name { + type string; + description "Interface VLAN name."; + } + + leaf status { + type enumeration { + enum ACTIVE { + description "VLAN is active"; + } + enum SUSPENDED { + description "VLAN is inactive / suspended"; + } + } + default ACTIVE; + description "Admin state of the VLAN"; + } + + } + + grouping vlan-state { + description "State variables for VLANs"; + + // placeholder + + } + + grouping vlan-tpid-config { + description + "TPID configuration for dot1q-enabled interfaces"; + + leaf tpid { + type identityref { + base oc-vlan-types:TPID_TYPES; + } + default oc-vlan-types:TPID_0X8100; + description + "Optionally set the tag protocol identifier field (TPID) that + is accepted on the VLAN"; + } + } + + grouping vlan-tpid-state { + description + "TPID opstate for dot1q-enabled interfaces"; + + // placeholder + + } + + grouping vlan-members-state { + description + "List of interfaces / subinterfaces belonging to the VLAN."; + + container members { + description + "Enclosing container for list of member interfaces"; + + list member { + config false; + description + "List of references to interfaces / subinterfaces + associated with the VLAN."; + + uses oc-if:base-interface-ref-state; + } + } + } + + grouping vlan-switched-config { + description + "VLAN related configuration that is part of the physical + Ethernet interface."; + + leaf interface-mode { + type oc-vlan-types:vlan-mode-type; + description + "Set the interface to access or trunk mode for + VLANs"; + } + + leaf native-vlan { + when "../interface-mode = 'TRUNK'" { + description + "Native VLAN is valid for trunk mode interfaces"; + } + type oc-vlan-types:vlan-id; + description + "Set the native VLAN id for untagged frames arriving on + a trunk interface. Tagged frames sent on an interface + configured with a native VLAN should have their tags + stripped prior to transmission. This configuration is only + valid on a trunk interface."; + } + + leaf access-vlan { + when "../interface-mode = 'ACCESS'" { + description + "Access VLAN assigned to the interfaces"; + } + type oc-vlan-types:vlan-id; + description + "Assign the access vlan to the access port."; + } + + leaf-list trunk-vlans { + when "../interface-mode = 'TRUNK'" { + description + "Allowed VLANs may be specified for trunk mode + interfaces."; + } + type union { + type oc-vlan-types:vlan-id; + type oc-vlan-types:vlan-range; + } + description + "Specify VLANs, or ranges thereof, that the interface may + carry when in trunk mode. If not specified, all VLANs are + allowed on the interface. Ranges are specified in the form + x..y, where x