diff options
Diffstat (limited to 'src/plugins/yang')
14 files changed, 0 insertions, 6159 deletions
diff --git a/src/plugins/yang/ietf/ietf-ip@2018-02-22.yang b/src/plugins/yang/ietf/ietf-ip@2018-02-22.yang deleted file mode 100644 index a270f67..0000000 --- a/src/plugins/yang/ietf/ietf-ip@2018-02-22.yang +++ /dev/null @@ -1,876 +0,0 @@ -module ietf-ip { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-ip"; - prefix ip; - - import ietf-interfaces { - prefix if; - } - import ietf-inet-types { - prefix inet; - } - import ietf-yang-types { - prefix yang; - } - - organization - "IETF NETMOD (Network Modeling) Working Group"; - - contact - "WG Web: <https://datatracker.ietf.org/wg/netmod/> - WG List: <mailto:netmod@ietf.org> - - Editor: Martin Bjorklund - <mailto:mbj@tail-f.com>"; - description - "This module contains a collection of YANG definitions for - managing IP implementations. - - Copyright (c) 2018 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 - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 8344; see - the RFC itself for full legal notices."; - - revision 2018-02-22 { - description - "Updated to support NMDA."; - reference - "RFC 8344: A YANG Data Model for IP Management"; - } - - revision 2014-06-16 { - description - "Initial revision."; - reference - "RFC 7277: A YANG Data Model for IP Management"; - } - - /* - * Features - */ - - feature ipv4-non-contiguous-netmasks { - description - "Indicates support for configuring non-contiguous - subnet masks."; - } - - feature ipv6-privacy-autoconf { - description - "Indicates support for privacy extensions for stateless address - autoconfiguration in IPv6."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6"; - } - - /* - * Typedefs - */ - - 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 the Network Configuration - Protocol (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, a - temporary address as described in RFC 4941, or a - semantically opaque address as described in RFC 7217."; - 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, for example, IPv4 ARP or the IPv6 Neighbor - Discovery protocol."; - } - } - description - "The origin of a neighbor entry."; - } - - /* - * Data nodes - */ - - augment "/if:interfaces/if:interface" { - description - "IP parameters on interfaces. - - If an interface is not capable of running IP, the server - must not allow the client to configure these parameters."; - - container ipv4 { - presence - "Enables IPv4 unless the 'enabled' leaf - (which defaults to 'true') is set to 'false'"; - description - "Parameters for the IPv4 address family."; - - 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 forwarding { - type boolean; - default false; - description - "Controls IPv4 packet forwarding of datagrams received by, - but not addressed to, this interface. IPv4 routers - forward datagrams. IPv4 hosts do not (except those - source-routed via the host)."; - } - - 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"; - } - list address { - key "ip"; - description - "The list of IPv4 addresses on the interface."; - - leaf ip { - type inet:ipv4-address-no-zone; - description - "The IPv4 address on the interface."; - } - choice subnet { - mandatory true; - description - "The subnet can be specified as a prefix length or, - if the server supports non-contiguous netmasks, as - a netmask."; - leaf prefix-length { - type uint8 { - range "0..32"; - } - description - "The length of the subnet prefix."; - } - leaf netmask { - if-feature ipv4-non-contiguous-netmasks; - type yang:dotted-quad; - description - "The subnet specified as a netmask."; - } - } - - leaf origin { - type ip-address-origin; - config false; - description - "The origin of this address."; - } - } - list neighbor { - key "ip"; - description - "A list of mappings from IPv4 addresses to - link-layer addresses. - - Entries in this list in the intended configuration are - used as static entries in the ARP Cache. - - In the operational state, this list represents the ARP - Cache."; - reference - "RFC 826: An Ethernet Address Resolution Protocol"; - - leaf ip { - type inet:ipv4-address-no-zone; - description - "The IPv4 address of the neighbor node."; - } - leaf link-layer-address { - type yang:phys-address; - mandatory true; - description - "The link-layer address of the neighbor node."; - } - leaf origin { - type neighbor-origin; - config false; - description - "The origin of this neighbor entry."; - } - } - } - - container ipv6 { - presence - "Enables IPv6 unless the 'enabled' leaf - (which defaults to 'true') is set to 'false'"; - description - "Parameters for the IPv6 address family."; - - 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 forwarding { - type boolean; - default false; - description - "Controls IPv6 packet forwarding of datagrams received by, - but not addressed to, this interface. IPv6 routers - forward datagrams. IPv6 hosts do not (except those - source-routed via the host)."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - Section 6.2.1, IsRouter"; - } - 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 8200: Internet Protocol, Version 6 (IPv6) - Specification - Section 5"; - } - - list address { - key "ip"; - description - "The list of IPv6 addresses on the interface."; - - leaf ip { - type inet:ipv6-address-no-zone; - description - "The IPv6 address on the interface."; - } - leaf prefix-length { - type uint8 { - range "0..128"; - } - mandatory true; - description - "The length of the subnet prefix."; - } - leaf origin { - type ip-address-origin; - config false; - description - "The origin of this address."; - } - 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."; - } - } - config false; - 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"; - } - } - - list neighbor { - key "ip"; - description - "A list of mappings from IPv6 addresses to - link-layer addresses. - - Entries in this list in the intended configuration are - used as static entries in the Neighbor Cache. - - In the operational state, this list represents the - Neighbor Cache."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)"; - - leaf ip { - type inet:ipv6-address-no-zone; - description - "The IPv6 address of the neighbor node."; - } - leaf link-layer-address { - type yang:phys-address; - mandatory true; - description - "The link-layer address of the neighbor node. - - In the operational state, if the neighbor's 'state' leaf - is 'incomplete', this leaf is not instantiated."; - } - leaf origin { - type neighbor-origin; - config false; - description - "The origin of this neighbor entry."; - } - leaf is-router { - type empty; - config false; - description - "Indicates that the neighbor node acts as a router."; - } - - leaf 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."; - } - } - config false; - description - "The Neighbor Unreachability Detection state of this - entry."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - Section 7.3.2"; - } - } - - 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"; - } - container autoconf { - description - "Parameters to control the autoconfiguration of IPv6 - addresses, as described in RFC 4862."; - reference - "RFC 4862: IPv6 Stateless Address Autoconfiguration"; - - leaf create-global-addresses { - type boolean; - default true; - description - "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 { - if-feature ipv6-privacy-autoconf; - type boolean; - default false; - description - "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 { - if-feature ipv6-privacy-autoconf; - type uint32; - units "seconds"; - default 604800; - description - "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 { - if-feature ipv6-privacy-autoconf; - type uint32; - units "seconds"; - default 86400; - description - "The time period during which the temporary address is - preferred."; - reference - "RFC 4941: Privacy Extensions for Stateless Address - Autoconfiguration in IPv6 - - TEMP_PREFERRED_LIFETIME"; - } - } - } - } - - /* - * Legacy operational state data nodes - */ - - augment "/if:interfaces-state/if:interface" { - status deprecated; - description - "Data nodes for the operational state of IP on interfaces."; - - container ipv4 { - presence - "Present if IPv4 is enabled on this interface"; - config false; - status deprecated; - description - "Interface-specific parameters for the IPv4 address family."; - - leaf forwarding { - type boolean; - status deprecated; - description - "Indicates whether IPv4 packet forwarding is enabled or - disabled on this interface."; - } - leaf mtu { - type uint16 { - range "68..max"; - } - units "octets"; - status deprecated; - description - "The size, in octets, of the largest IPv4 packet that the - interface will send and receive."; - reference - "RFC 791: Internet Protocol"; - } - list address { - key "ip"; - status deprecated; - description - "The list of IPv4 addresses on the interface."; - - leaf ip { - type inet:ipv4-address-no-zone; - status deprecated; - description - "The IPv4 address on the interface."; - } - choice subnet { - status deprecated; - description - "The subnet can be specified as a prefix length or, - if the server supports non-contiguous netmasks, as - a netmask."; - leaf prefix-length { - type uint8 { - range "0..32"; - } - status deprecated; - description - "The length of the subnet prefix."; - } - leaf netmask { - if-feature ipv4-non-contiguous-netmasks; - type yang:dotted-quad; - status deprecated; - description - "The subnet specified as a netmask."; - } - } - leaf origin { - type ip-address-origin; - status deprecated; - description - "The origin of this address."; - } - } - list neighbor { - key "ip"; - status deprecated; - description - "A list of mappings from IPv4 addresses to - link-layer addresses. - - This list represents the ARP Cache."; - reference - "RFC 826: An Ethernet Address Resolution Protocol"; - - leaf ip { - type inet:ipv4-address-no-zone; - status deprecated; - description - "The IPv4 address of the neighbor node."; - } - - leaf link-layer-address { - type yang:phys-address; - status deprecated; - description - "The link-layer address of the neighbor node."; - } - leaf origin { - type neighbor-origin; - status deprecated; - description - "The origin of this neighbor entry."; - } - } - } - - container ipv6 { - presence - "Present if IPv6 is enabled on this interface"; - config false; - status deprecated; - description - "Parameters for the IPv6 address family."; - - leaf forwarding { - type boolean; - default false; - status deprecated; - description - "Indicates whether IPv6 packet forwarding is enabled or - disabled on this interface."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - Section 6.2.1, IsRouter"; - } - leaf mtu { - type uint32 { - range "1280..max"; - } - units "octets"; - status deprecated; - description - "The size, in octets, of the largest IPv6 packet that the - interface will send and receive."; - reference - "RFC 8200: Internet Protocol, Version 6 (IPv6) - Specification - Section 5"; - } - list address { - key "ip"; - status deprecated; - description - "The list of IPv6 addresses on the interface."; - - leaf ip { - type inet:ipv6-address-no-zone; - status deprecated; - description - "The IPv6 address on the interface."; - } - leaf prefix-length { - type uint8 { - range "0..128"; - } - mandatory true; - status deprecated; - description - "The length of the subnet prefix."; - } - leaf origin { - type ip-address-origin; - status deprecated; - description - "The origin of this address."; - } - 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."; - } - } - status deprecated; - 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"; - } - } - - list neighbor { - key "ip"; - status deprecated; - description - "A list of mappings from IPv6 addresses to - link-layer addresses. - - This list represents the Neighbor Cache."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)"; - - leaf ip { - type inet:ipv6-address-no-zone; - status deprecated; - description - "The IPv6 address of the neighbor node."; - } - leaf link-layer-address { - type yang:phys-address; - status deprecated; - description - "The link-layer address of the neighbor node."; - } - leaf origin { - type neighbor-origin; - status deprecated; - description - "The origin of this neighbor entry."; - } - leaf is-router { - type empty; - status deprecated; - description - "Indicates that the neighbor node acts as a router."; - } - leaf 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."; - } - } - status deprecated; - description - "The Neighbor Unreachability Detection state of this - entry."; - reference - "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - Section 7.3.2"; - } - } - } - } -} diff --git a/src/plugins/yang/openconfig/openconfig-acl@2018-11-21.yang b/src/plugins/yang/openconfig/openconfig-acl@2018-11-21.yang deleted file mode 100644 index fe80988..0000000 --- a/src/plugins/yang/openconfig/openconfig-acl@2018-11-21.yang +++ /dev/null @@ -1,847 +0,0 @@ -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.0.2"; - - 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 '<if name>.<subif index>'"; - } - } - - 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/src/plugins/yang/openconfig/openconfig-extensions@2017-04-11.yang b/src/plugins/yang/openconfig/openconfig-extensions@2017-04-11.yang deleted file mode 100644 index f39ecf6..0000000 --- a/src/plugins/yang/openconfig/openconfig-extensions@2017-04-11.yang +++ /dev/null @@ -1,91 +0,0 @@ -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 "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. - Where several modules are used to build up a single block of - functionality, the same module version is specified across each - file that makes up the module. - - 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."; - } -} diff --git a/src/plugins/yang/openconfig/openconfig-if-aggregate@2018-03-23.yang b/src/plugins/yang/openconfig/openconfig-if-aggregate@2018-03-23.yang deleted file mode 100644 index 5aa80bb..0000000 --- a/src/plugins/yang/openconfig/openconfig-if-aggregate@2018-03-23.yang +++ /dev/null @@ -1,223 +0,0 @@ -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-if-types { prefix oc-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.3.1"; - - revision "2018-03-23" { - description - "Fix/cleanup when statements in aggregates model."; - reference "2.3.1"; - } - - revision "2018-01-05" { - description - "Add logical loopback to interface."; - reference "2.3.0"; - } - - revision "2017-12-22" { - description - "Add IPv4 proxy ARP configuration."; - reference "2.2.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"; - } - - // 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 "../../config/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" { - - description "Adds LAG configuration to the interface module"; - - uses aggregation-logical-top { - when "oc-if:state/oc-if:type = 'ift:ieee8023adLag' or " + - "oc-if:state/oc-if:type = 'oc-ift:IF_AGGREGATE'" { - description - "active when the interface is set to type LAG"; - } - } - } - - augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" + - "oc-eth:config" { - 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" { - description - "Adds LAG settings to individual Ethernet interfaces"; - - uses ethernet-if-aggregation-config; - } - - // rpc statements - - // notification statements - -} diff --git a/src/plugins/yang/openconfig/openconfig-if-ethernet@2018-09-04.yang b/src/plugins/yang/openconfig/openconfig-if-ethernet@2018-09-04.yang deleted file mode 100644 index cd6b526..0000000 --- a/src/plugins/yang/openconfig/openconfig-if-ethernet@2018-09-04.yang +++ /dev/null @@ -1,428 +0,0 @@ -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 OpenConfig - model for interface configuration and state."; - - oc-ext:openconfig-version "2.6.1"; - - revision "2018-09-04" { - description - "Remove in-crc-align-errors as it is a duplicate of - in-crc-errors"; - reference "2.6.1"; - } - - revision "2018-08-28" { - description - "Add Ethernet counter in-block-errors"; - reference "2.6.0"; - } - - revision "2018-07-02" { - description - "Add new ethernet counters of in-undersize-frames, - in-crc-align-errors and the distribution container"; - reference "2.5.0"; - } - - revision "2018-04-10" { - description - "Add identities for 2.5 and 5 Gbps."; - reference "2.4.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"; - } - - - // 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_2500MB { - base ETHERNET_SPEED; - description "2.5 Gbps Ethernet"; - } - - identity SPEED_5GB { - base ETHERNET_SPEED; - description "5 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 - "The total number of frames received that were - longer than 1518 octets (excluding framing bits, - but including FCS octets) and were otherwise - well formed."; - } - - leaf in-undersize-frames { - type oc-yang:counter64; - description - "The total number of frames received that were - less than 64 octets long (excluding framing bits, - but including FCS octets) and were otherwise well - formed."; - reference - "RFC 2819: Remote Network Monitoring MIB - - etherStatsUndersizePkts"; - } - - 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 - "The total number of frames received that were less than - 64 octets in length (excluding framing bits but including - FCS octets) and had either a bad Frame Check Sequence - (FCS) with an integral number of octets (FCS Error) or a - bad FCS with a non-integral number of octets (Alignment - Error)."; - } - - 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 - "The total number of frames received that - had a length (excluding framing bits, but - including FCS octets) of between 64 and 1518 - octets, inclusive, but had either a bad - Frame Check Sequence (FCS) with an integral - number of octets (FCS Error) or a bad FCS with - a non-integral number of octets (Alignment Error)"; - reference - "RFC 2819: Remote Network Monitoring MIB - - etherStatsCRCAlignErrors"; - } - - leaf in-block-errors { - type oc-yang:counter64; - description - "The number of received errored blocks. Error detection codes - are capable of detecting whether one or more errors have - occurred in a given sequence of bits - the block. It is - normally not possible to determine the exact number of errored - bits within the block"; - } - - // 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/src/plugins/yang/openconfig/openconfig-if-ip@2018-01-05.yang b/src/plugins/yang/openconfig/openconfig-if-ip@2018-01-05.yang deleted file mode 100644 index a20e21c..0000000 --- a/src/plugins/yang/openconfig/openconfig-if-ip@2018-01-05.yang +++ /dev/null @@ -1,1312 +0,0 @@ -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/src/plugins/yang/openconfig/openconfig-if-types@2018-01-05.yang b/src/plugins/yang/openconfig/openconfig-if-types@2018-01-05.yang deleted file mode 100644 index 3743878..0000000 --- a/src/plugins/yang/openconfig/openconfig-if-types@2018-01-05.yang +++ /dev/null @@ -1,98 +0,0 @@ -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.0"; - - 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"; - } - - - 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/src/plugins/yang/openconfig/openconfig-inet-types@2018-11-21.yang b/src/plugins/yang/openconfig/openconfig-inet-types@2018-11-21.yang deleted file mode 100644 index 7c23d2b..0000000 --- a/src/plugins/yang/openconfig/openconfig-inet-types@2018-11-21.yang +++ /dev/null @@ -1,343 +0,0 @@ -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.2"; - - 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/src/plugins/yang/openconfig/openconfig-local-routing@2017-05-15.yang b/src/plugins/yang/openconfig/openconfig-local-routing@2017-05-15.yang deleted file mode 100644 index 5184fe7..0000000 --- a/src/plugins/yang/openconfig/openconfig-local-routing@2017-05-15.yang +++ /dev/null @@ -1,408 +0,0 @@ -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/src/plugins/yang/openconfig/openconfig-packet-match-types@2018-11-21.yang b/src/plugins/yang/openconfig/openconfig-packet-match-types@2018-11-21.yang deleted file mode 100644 index 1b93d52..0000000 --- a/src/plugins/yang/openconfig/openconfig-packet-match-types@2018-11-21.yang +++ /dev/null @@ -1,309 +0,0 @@ -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 <lower>..<higher>, 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/src/plugins/yang/openconfig/openconfig-packet-match@2018-11-21.yang b/src/plugins/yang/openconfig/openconfig-packet-match@2018-11-21.yang deleted file mode 100644 index 510bc57..0000000 --- a/src/plugins/yang/openconfig/openconfig-packet-match@2018-11-21.yang +++ /dev/null @@ -1,371 +0,0 @@ -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/src/plugins/yang/openconfig/openconfig-policy-types@2018-06-05.yang b/src/plugins/yang/openconfig/openconfig-policy-types@2018-06-05.yang deleted file mode 100644 index ef47f33..0000000 --- a/src/plugins/yang/openconfig/openconfig-policy-types@2018-06-05.yang +++ /dev/null @@ -1,220 +0,0 @@ -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.0"; - - 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"; - } - - // 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/src/plugins/yang/openconfig/openconfig-vlan-types@2018-02-14.yang b/src/plugins/yang/openconfig/openconfig-vlan-types@2018-02-14.yang deleted file mode 100644 index 6d9ab55..0000000 --- a/src/plugins/yang/openconfig/openconfig-vlan-types@2018-02-14.yang +++ /dev/null @@ -1,195 +0,0 @@ -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.0.0"; - - 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"; - } - - // extension statements - - // feature statements - - // identity statements - - identity TPID_TYPES { - description - "Base identity for TPID values that can 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"; - } - - // 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 three 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 iff the inner VLAN-ID is equal to y - or any inner-tag - if the wildcard is specified. Alternatively the range 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"; - } - -} diff --git a/src/plugins/yang/openconfig/openconfig-vlan@2018-06-05.yang b/src/plugins/yang/openconfig/openconfig-vlan@2018-06-05.yang deleted file mode 100644 index 97348c0..0000000 --- a/src/plugins/yang/openconfig/openconfig-vlan@2018-06-05.yang +++ /dev/null @@ -1,438 +0,0 @@ -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.1"; - - 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"; - } - - // 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<y - ranges are assumed to be inclusive (such - that the VLAN range is x <= range <= y."; - } - } - - grouping vlan-switched-state { - description - "VLAN related operational state that is part of Ethernet - interface state data"; - - //TODO: placeholder for operational state related to VLANs - //on the physical interface - } - - grouping vlan-switched-top { - description - "Top-level grouping for VLAN data associated with an - Ethernet interface"; - - container switched-vlan { - description - "Enclosing container for VLAN interface-specific - data on Ethernet interfaces. These are for standard - L2, switched-style VLANs."; - - container config { - description "Configuration parameters for VLANs"; - - uses vlan-switched-config; - } - - container state { - - config false; - description "State variables for VLANs"; - - uses vlan-switched-config; - uses vlan-switched-state; - } - } - } - - grouping vlan-logical-config { - description - "VLAN related configuration that is part of subinterface - (logical interface) configuration. These are generally - L3 VLANs with an id that is local."; - - - leaf vlan-id { - type union { - type oc-vlan-types:vlan-id; - type oc-vlan-types:qinq-id; - } - description - "VLAN id for the subinterface -- specified inline for the - case of a local VLAN. The id is scoped to the - subinterface, and could be repeated on different - subinterfaces."; - } - } - - grouping vlan-logical-state { - description - "VLAN related operational state that is part of logical - interface state data"; - - //TODO: placeholder to add VLAN-specific state variables on - //the subinterface - } - - grouping vlan-top { - description "Top-level grouping for VLAN configuration"; - - container vlans { - description "Container for VLAN configuration and state - variables"; - - list vlan { - key "vlan-id"; - - description "Configured VLANs keyed by id"; - - leaf vlan-id { - type leafref { - path "../config/vlan-id"; - } - description "references the configured vlan-id"; - } - - container config { - description "Configuration parameters for VLANs"; - - uses vlan-config; - } - - container state { - - config false; - description "State variables for VLANs"; - - uses vlan-config; - uses vlan-state; - } - uses vlan-members-state; - } - } - } - - grouping vlan-logical-top { - description - "Top-level grouping for VLAN data associated with a - logical interface or subinterface"; - - container vlan { - description - "Enclosing container for VLAN interface-specific - data on subinterfaces"; - - container config { - description "Configuration parameters for VLANs"; - - uses vlan-logical-config; - } - - container state { - - config false; - description "State variables for VLANs"; - - uses vlan-logical-config; - uses vlan-logical-state; - } - } - } - - grouping vlan-routed-config { - description - "Configuration data for routed vlans (SVI, IRB, etc.)"; - - leaf vlan { - type union { - // TODO: in YANG 1.1, unions support leafref types which - // should be used here to reference a configured VLAN by - // id or name - type uint16; - type string; - } - description - "References the VLAN for which this IP interface - provides routing services -- similar to a switch virtual - interface (SVI), or integrated routing and bridging interface - (IRB) in some implementations."; - } - - } - - grouping vlan-routed-state { - description - "Operational state data for routed vlan interfaces."; - } - - grouping vlan-routed-top { - description - "Top-level grouping for routed vlan logical interfaces"; - - container routed-vlan { - description - "Top-level container for routed vlan interfaces. These - logical interfaces are also known as SVI (switched virtual - interface), IRB (integrated routing and bridging), RVI - (routed VLAN interface)"; - - container config { - description - "Configuration data for routed vlan interfaces"; - - uses vlan-routed-config; - } - - container state { - - config false; - - description - "Operational state data "; - - uses vlan-routed-config; - uses vlan-routed-state; - } - } - } - - // data definition statements - - // augment statements - - augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + - "oc-if:subinterface" { - description - "Adds VLAN settings to individual subinterfaces"; - - uses vlan-logical-top; - } - - augment "/oc-if:interfaces/oc-if:interface/oc-if:config" { - description - "Adds TPID / ethertype setting for the base interface"; - - uses vlan-tpid-config; - } - - augment "/oc-if:interfaces/oc-if:interface/oc-if:state" { - description - "Adds TPID / ethertype opstate for the base interface"; - - uses vlan-tpid-config; - uses vlan-tpid-state; - } - - augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet" { - description - "Adds VLAN settings to individual Ethernet interfaces"; - - uses vlan-switched-top; - } - - augment "/oc-if:interfaces/oc-if:interface/oc-lag:aggregation" { - description "Adds VLAN settings to a LAG interface"; - - uses vlan-switched-top; - } - - augment "/oc-if:interfaces/oc-if:interface" { - description - "Adds configuration and state for routed VLAN interfaces"; - - uses vlan-routed-top { - when "current()/oc-if:config/oc-if:type = 'ift:l3ipvlan'" { - description - "Active when the interface is a logical interface providing - L3 routing for VLANs"; - } - } - } - - - // rpc statements - - // notification statements - -} |