diff options
Diffstat (limited to 'v3po/api/src')
-rw-r--r-- | v3po/api/src/main/yang/dot1q-types.yang | 237 | ||||
-rw-r--r-- | v3po/api/src/main/yang/ietf-access-control-list.yang | 208 | ||||
-rw-r--r-- | v3po/api/src/main/yang/ietf-acl-context.yang | 67 | ||||
-rw-r--r-- | v3po/api/src/main/yang/ietf-ip.yang | 742 | ||||
-rw-r--r-- | v3po/api/src/main/yang/ietf-packet-fields.yang | 180 | ||||
-rw-r--r-- | v3po/api/src/main/yang/pbb-types.yang | 81 | ||||
-rw-r--r-- | v3po/api/src/main/yang/v3po-context.yang | 29 | ||||
-rw-r--r-- | v3po/api/src/main/yang/v3po.yang | 716 | ||||
-rw-r--r-- | v3po/api/src/main/yang/vpp-acl.yang | 160 | ||||
-rw-r--r-- | v3po/api/src/main/yang/vpp-classifier-context.yang | 68 | ||||
-rw-r--r-- | v3po/api/src/main/yang/vpp-classifier.yang | 215 | ||||
-rw-r--r-- | v3po/api/src/main/yang/vpp-pbb.yang | 32 | ||||
-rw-r--r-- | v3po/api/src/main/yang/vpp-vlan.yang | 443 |
13 files changed, 0 insertions, 3178 deletions
diff --git a/v3po/api/src/main/yang/dot1q-types.yang b/v3po/api/src/main/yang/dot1q-types.yang deleted file mode 100644 index 594b9d6ce..000000000 --- a/v3po/api/src/main/yang/dot1q-types.yang +++ /dev/null @@ -1,237 +0,0 @@ -module dot1q-types { - namespace "urn:ieee:params:xml:ns:yang:dot1q-types"; - prefix dot1q; - - organization - "Cisco Systems, Inc. - Customer Service - - Postal: 170 W Tasman Drive - San Jose, CA 95134 - - Tel: +1 1800 553-NETS - - E-mail: cs-yang@cisco.com"; - - contact - "Robert Wilton - rwilton@cisco.com"; - - description - "This module contains a collection of generally useful YANG types - that are specific to 802.1Q VLANs that can be usefully shared - between multiple models. - - Terms and Acronyms - - 802.1Q: IEEE 802.1Q VLANs - - VLAN (vlan): Virtual Local Area Network - "; - - revision 2015-06-26 { - description "Latest revision, changed namespace"; - - reference "Intended to be standardized IEEE 802.1"; - } - - typedef PCP { - type uint8 { - range "0..7"; - } - description - "Priority Code Point. PCP is a 3-bit field that refers to the - class of service applied to an 802.1Q VLAN tagged frame. The - field specifies a priority value between 0 and 7, these values - can be used by quality of service (QoS) to prioritize - different classes of traffic."; - reference "IEEE 802.1Q (2014)"; - } - - /* - * Defines what it means to be an 802.1Q VLAN Id, where values 0 - * and 4095 are reserved. - */ - typedef dot1q-vlan-id { - type uint16 { - range "1..4094"; - } - description "An 802.1Q VLAN Identifier"; - reference "IEEE 802.1Q (2014)"; - } - - /* - * Defines the supported IEEE 802.1Q types that can be used for - * VLAN tag matching. - */ - identity dot1q-tag-vlan-type { - description "Base identity from which all 802.1Q VLAN tag types - are derived from"; - } - - identity c-vlan { - base dot1q-tag-vlan-type; - description - "An 802.1Q Customer-VLAN tag, normally using the 0x8100 - Ethertype"; - } - - identity s-vlan { - base dot1q-tag-vlan-type; - description - "An 802.1Q Service-VLAN tag, using the 0x88a8 Ethertype - originally introduced in 802.1ad, and incorporated into - 802.1Q (2011)"; - } - - typedef dot1q-tag-type { - type identityref { - base "dot1q-tag-vlan-type"; - } - description "Identifies a specific 802.1Q tag type"; - reference "IEEE 802.1Q (2014)"; - } - - /* - * Defines the type used to represent ranges of VLAN Ids. - * - * Ideally we would model that as a list of VLAN Ids in YANG, but - * the model is easier to use if this is just represented as a - * string. - * - * This type is used to match an ordered list of VLAN Ids, or - * contiguous ranges of VLAN Ids. Valid VLAN Ids must be in the - * range 1 to 4094, and included in the list in non overlapping - * ascending order. - * - * E.g. "1, 10-100, 50, 500-1000" - */ - typedef dot1q-vlan-id-ranges { - type string { - pattern "([0-9]{1,4}(-[0-9]{1,4})?(,[0-9]{1,4}" + - "(-[0-9]{1,4})?)*)"; - } - description "A list of VLAN Ids, or non overlapping VLAN ranges, - in ascending order, between 1 and 4094"; - } - - /* - * A grouping which represents an 802.1Q VLAN tag, matching both - * the tag Ethertype and a single VLAN Id. The PCP and DEI fields - * in the 802.1Q tag are ignored for tag matching purposes. - */ - grouping dot1q-tag { - description "Grouping to allow configuration to identify a single - 802.1Q VLAN tag"; - container dot1q-tag { - description "Identifies an 802.1Q VLAN tag with an explicit - tag-type and a single VLAN Id"; - leaf tag-type { - type dot1q-tag-type; - mandatory true; - description "VLAN tag type"; - } - leaf vlan-id { - type dot1q-vlan-id; - mandatory true; - description "VLAN Id"; - } - } - } - - /* - * A grouping which represents an 802.1Q VLAN tag, matching both - * the tag Ethertype and a single VLAN Id or "any" to match on any - * VLAN Id. The PCP and DEI fields in the 802.1Q tag are ignored - * for tag matching purposes. - */ - grouping dot1q-tag-or-any { - description "Grouping to allow configuration to identify a single - 802.1Q VLAN tag or the 'any' value to match any VLAN - Id not matched by a more specific VLAN Id match"; - container dot1q-tag { - description "Identifies an 802.1Q VLAN tag with an explicit - tag-type and a single VLAN Id, or 'any' VLAN Id"; - leaf tag-type { - type dot1q-tag-type; - mandatory true; - description "VLAN tag type"; - } - leaf vlan-id { - type union { - type dot1q-vlan-id; - type enumeration { - enum "any" { - value 4096; - description - "Matches 'any' VLAN tag in the range 1 to 4094 that - is not matched by a more specific VLAN Id match"; - } - } - } - mandatory true; - description "VLAN Id or any"; - } - } - } - - /* - * A grouping which represents an 802.1Q tag that matches a range - * of VLAN Ids. The PCP and DEI fields in the 802.1Q tag are - * ignored for tag matching purposes. - */ - grouping dot1q-tag-ranges { - description "Grouping to allow configuration to identify an - 802.1Q VLAN tag that matches any VLAN Id within a - set of non overlapping VLAN Id ranges"; - container dot1q-tag { - description "Identifies an 802.1Q VLAN tag with an explicit - tag-type and and a range of VLAN Ids"; - leaf tag-type { - type dot1q-tag-type; - mandatory true; - description "VLAN tag type"; - } - leaf vlan-ids { - type dot1q-vlan-id-ranges; - mandatory true; - description "VLAN Ids"; - } - } - } - - /* - * A grouping which represents an 802.1Q VLAN tag, matching both - * the tag Ethertype and a single VLAN Id, ordered list of ranges, - * or "any" to match on any VLAN Id. The PCP and DEI fields in the - * 802.1Q tag are ignored for tag matching purposes. - */ - grouping dot1q-tag-ranges-or-any { - description "Grouping to allow configuration to identify an - 802.1Q VLAN tag that matches any specific VLAN Id - within a set of non overlapping VLAN Id ranges, or - the 'any' value to match any VLAN Id"; - container dot1q-tag { - description "Identifies an 802.1Q VLAN tag with an explicit - tag-type, an ordered list of VLAN Id ranges, or - 'any' VLAN Id"; - leaf tag-type { - type dot1q-tag-type; - mandatory true; - description "VLAN tag type"; - } - leaf vlan-id { - type union { - type dot1q-vlan-id-ranges; - type enumeration { - enum "any" { - description "Matches 'any' VLAN tag in the range 1 to - 4094"; - } - } - } - mandatory true; - description "VLAN Ids or any"; - } - } - } -}
\ No newline at end of file diff --git a/v3po/api/src/main/yang/ietf-access-control-list.yang b/v3po/api/src/main/yang/ietf-access-control-list.yang deleted file mode 100644 index 3083ee2a0..000000000 --- a/v3po/api/src/main/yang/ietf-access-control-list.yang +++ /dev/null @@ -1,208 +0,0 @@ -module ietf-access-control-list { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-access-control-list"; - prefix acl; - import ietf-yang-types { - prefix yang; - } - import ietf-packet-fields { - prefix packet-fields; - } - organization "IETF NETMOD (NETCONF Data Modeling Language) - Working Group"; - contact - "WG Web: http://tools.ietf.org/wg/netmod/ - WG List: netmod@ietf.org - WG Chair: Juergen Schoenwaelder - j.schoenwaelder@jacobs-university.de - WG Chair: Tom Nadeau - tnadeau@lucidvision.com - Editor: Dean Bogdanovic - ivandean@gmail.com - Editor: Kiran Agrahara Sreenivasa - kkoushik@cisco.com - Editor: Lisa Huang - lyihuang16@gmail.com - Editor: Dana Blair - dblair@cisco.com"; - description - "This YANG module defines a component that describing the - configuration of Access Control Lists (ACLs). - Copyright (c) 2015 IETF Trust and the persons identified as - the document authors. All rights reserved. - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD - License set forth in Section 4.c of the IETF Trust's Legal - Provisions Relating to IETF Documents - (http://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices."; - revision 2016-07-08 { - description - "Base model for Network Access Control List (ACL)."; - reference - "RFC XXXX: Network Access Control List (ACL) - YANG Data Model"; - } - identity acl-base { - description - "Base Access Control List type for all Access Control List type - identifiers."; - } - identity ipv4-acl { - base acl:acl-base; - description - "ACL that primarily matches on fields from the IPv4 header - (e.g. IPv4 destination address) and layer 4 headers (e.g. TCP - destination port). An acl of type ipv4-acl does not contain - matches on fields in the ethernet header or the IPv6 header."; - } - identity ipv6-acl { - base acl:acl-base; - description - "ACL that primarily matches on fields from the IPv6 header - (e.g. IPv6 destination address) and layer 4 headers (e.g. TCP - destination port). An acl of type ipv6-acl does not contain - matches on fields in the ethernet header or the IPv4 header."; - } - identity eth-acl { - base acl:acl-base; - description - "ACL that primarily matches on fields in the ethernet header, - like 10/100/1000baseT or WiFi Access Control List. An acl of - type eth-acl does not contain matches on fields in the IPv4 - header, IPv6 header or layer 4 headers."; - } - typedef acl-type { - type identityref { - base acl:acl-base; - } - description - "This type is used to refer to an Access Control List - (ACL) type"; - } - typedef access-control-list-ref { - type leafref { - path "/access-lists/acl/acl-name"; - } - description - "This type is used by data models that need to reference an - Access Control List"; - } - container access-lists { - description - "This is a top level container for Access Control Lists. - It can have one or more Access Control Lists."; - list acl { - key "acl-type acl-name"; - description - "An Access Control List(ACL) is an ordered list of - Access List Entries (ACE). Each Access Control Entry has a - list of match criteria and a list of actions. - Since there are several kinds of Access Control Lists - implemented with different attributes for - different vendors, this - model accommodates customizing Access Control Lists for - each kind and for each vendor."; - leaf acl-name { - type string; - description - "The name of access-list. A device MAY restrict the length - and value of this name, possibly space and special - characters are not allowed."; - } - leaf acl-type { - type acl-type; - description - "Type of access control list. Indicates the primary intended - type of match criteria (e.g. ethernet, IPv4, IPv6, mixed, etc) - used in the list instance."; - } - container acl-oper-data { - config false; - description - "Overall Access Control List operational data"; - } - container access-list-entries { - description - "The access-list-entries container contains - a list of access-list-entries(ACE)."; - list ace { - key "rule-name"; - ordered-by user; - description - "List of access list entries(ACE)"; - leaf rule-name { - type string; - description - "A unique name identifying this Access List - Entry(ACE)."; - } - container matches { - description - "Definitions for match criteria for this Access List - Entry."; - choice ace-type { - description - "Type of access list entry."; - case ace-ip { - description "IP Access List Entry."; - choice ace-ip-version { - description - "IP version used in this Access List Entry."; - case ace-ipv4 { - uses packet-fields:acl-ipv4-header-fields; - } - case ace-ipv6 { - uses packet-fields:acl-ipv6-header-fields; - } - } - uses packet-fields:acl-ip-header-fields; - } - case ace-eth { - description - "Ethernet Access List entry."; - uses packet-fields:acl-eth-header-fields; - } - } - } - container actions { - description - "Definitions of action criteria for this Access List - Entry."; - choice packet-handling { - default "deny"; - description - "Packet handling action."; - case deny { - leaf deny { - type empty; - description - "Deny action."; - } - } - case permit { - leaf permit { - type empty; - description - "Permit action."; - } - } - } - } - container ace-oper-data { - config false; - description - "Operational data for this Access List Entry."; - leaf match-counter { - type yang:counter64; - description - "Number of matches for this Access List Entry"; - } - } - } - } - } - } -} diff --git a/v3po/api/src/main/yang/ietf-acl-context.yang b/v3po/api/src/main/yang/ietf-acl-context.yang deleted file mode 100644 index 71bfb73e4..000000000 --- a/v3po/api/src/main/yang/ietf-acl-context.yang +++ /dev/null @@ -1,67 +0,0 @@ -module ietf-acl-context { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:vpp:acl:context"; - prefix "nc"; - - description "Context for nat mapping"; - - revision "2016-12-14" { - description "Initial revision."; - } - - import ietf-inet-types { - prefix "inet"; - } - - import naming-context { - prefix "nc"; - } - - import yang-ext { - prefix "ext"; - } - - grouping mapping-entry-context-attributes { - container acl-mapping-entry-context { - list mapping-table { - key "direction"; - - leaf direction { - type enumeration { - enum "ingress"; - enum "egress"; - } - } - - list mapping-entry { - key "index"; - - leaf index { - type int32; - description "interface id"; - } - - leaf ip4_table_id { - type int32; - description "ip4 table id"; - } - - leaf ip6_table_id { - type int32; - description "ip6 table id"; - } - - leaf l2_table_id { - type int32; - description "l2 table id"; - } - } - } - } - } - - augment /nc:contexts { - ext:augment-identifier "acl-mapping-entry-ctx-augmentation"; - uses mapping-entry-context-attributes; - } -}
\ No newline at end of file diff --git a/v3po/api/src/main/yang/ietf-ip.yang b/v3po/api/src/main/yang/ietf-ip.yang deleted file mode 100644 index f6c59edea..000000000 --- a/v3po/api/src/main/yang/ietf-ip.yang +++ /dev/null @@ -1,742 +0,0 @@ -module ietf-ip { - - yang-version 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 (NETCONF Data Modeling Language) Working Group"; - - contact - "WG Web: <http://tools.ietf.org/wg/netmod/> - WG List: <mailto:netmod@ietf.org> - - WG Chair: Thomas Nadeau - <mailto:tnadeau@lucidvision.com> - - WG Chair: Juergen Schoenwaelder - <mailto:j.schoenwaelder@jacobs-university.de> - - Editor: Martin Bjorklund - <mailto:mbj@tail-f.com>"; - - description - "This module contains a collection of YANG definitions for - configuring IP implementations. - - Copyright (c) 2014 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (http://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 7277; see - the RFC itself for full legal notices."; - - revision "2014-06-16" { - description "Initial revision."; - reference - "RFC 7277: A YANG Data Model for IP Management"; - - } - - - 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"; - - } - - typedef ip-address-origin { - type enumeration { - enum "other" { - value 0; - description - "None of the following."; - } - enum "static" { - value 1; - description - "Indicates that the address has been statically - configured - for example, using NETCONF or a Command Line - Interface."; - } - enum "dhcp" { - value 2; - description - "Indicates an address that has been assigned to this - system by a DHCP server."; - } - enum "link-layer" { - value 3; - description - "Indicates an address created by IPv6 stateless - autoconfiguration that embeds a link-layer address in its - interface identifier."; - } - enum "random" { - value 4; - 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" { - value 0; - description - "None of the following."; - } - enum "static" { - value 1; - description - "Indicates that the mapping has been statically - configured - for example, using NETCONF or a Command Line - Interface."; - } - enum "dynamic" { - value 2; - 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."; - } - - augment /if:interfaces/if:interface { - description - "Parameters for configuring IP 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 configured 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."; - } - } // choice subnet - } // list address - - 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 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."; - } - } // list neighbor - } // container ipv4 - - 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 2460: Internet Protocol, Version 6 (IPv6) Specification - Section 5"; - - } - - list address { - key "ip"; - description - "The list of configured 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."; - } - } // list address - - list neighbor { - key "ip"; - description - "A list of mappings from IPv6 addresses to - link-layer addresses. - - Entries in this list are used as static entries in 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."; - } - } // list neighbor - - 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"; - - } - } // container autoconf - } // container ipv6 - } - - augment /if:interfaces-state/if:interface { - description - "Data nodes for the operational state of IP on interfaces."; - container ipv4 { - presence - "Present if IPv4 is enabled on this interface"; - config false; - description - "Interface-specific parameters for the IPv4 address family."; - leaf forwarding { - type boolean; - description - "Indicates whether IPv4 packet forwarding is enabled or - disabled on this interface."; - } - - 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."; - 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 { - 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."; - } - } // choice subnet - - leaf origin { - type ip-address-origin; - description - "The origin of this address."; - } - } // list address - - list neighbor { - key "ip"; - 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; - description - "The IPv4 address of the neighbor node."; - } - - leaf link-layer-address { - type yang:phys-address; - description - "The link-layer address of the neighbor node."; - } - - leaf origin { - type neighbor-origin; - description - "The origin of this neighbor entry."; - } - } // list neighbor - } // container ipv4 - - container ipv6 { - presence - "Present if IPv6 is enabled on this interface"; - config false; - description - "Parameters for the IPv6 address family."; - leaf forwarding { - type boolean; - default 'false'; - 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"; - description - "The size, in octets, of the largest IPv6 packet that the - interface will send and receive."; - reference - "RFC 2460: 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; - description - "The origin of this address."; - } - - leaf status { - type enumeration { - enum "preferred" { - value 0; - description - "This is a valid address that can appear as the - destination or source address of a packet."; - } - enum "deprecated" { - value 1; - 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" { - value 2; - description - "This isn't a valid address, and it shouldn't appear - as the destination or source address of a packet."; - } - enum "inaccessible" { - value 3; - description - "The address is not accessible because the interface - to which this address is assigned is not - operational."; - } - enum "unknown" { - value 4; - description - "The status cannot be determined for some reason."; - } - enum "tentative" { - value 5; - 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" { - value 6; - description - "The address has been determined to be non-unique on - the link and so must not be used."; - } - enum "optimistic" { - value 7; - 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"; - - } - } // list address - - list neighbor { - key "ip"; - 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; - description - "The IPv6 address of the neighbor node."; - } - - leaf link-layer-address { - type yang:phys-address; - description - "The link-layer address of the neighbor node."; - } - - 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 state { - type enumeration { - enum "incomplete" { - value 0; - description - "Address resolution is in progress, and the link-layer - address of the neighbor has not yet been - determined."; - } - enum "reachable" { - value 1; - description - "Roughly speaking, the neighbor is known to have been - reachable recently (within tens of seconds ago)."; - } - enum "stale" { - value 2; - 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" { - value 3; - 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" { - value 4; - 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"; - - } - } // list neighbor - } // container ipv6 - } -} // module ietf-ip diff --git a/v3po/api/src/main/yang/ietf-packet-fields.yang b/v3po/api/src/main/yang/ietf-packet-fields.yang deleted file mode 100644 index 0b1ce5cdd..000000000 --- a/v3po/api/src/main/yang/ietf-packet-fields.yang +++ /dev/null @@ -1,180 +0,0 @@ -module ietf-packet-fields { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-packet-fields"; - prefix packet-fields; - import ietf-inet-types { - prefix inet; - } - import ietf-yang-types { - prefix yang; - } - organization "IETF NETMOD (NETCONF Data Modeling Language) Working - Group"; - contact - "WG Web: http://tools.ietf.org/wg/netmod/ - WG List: netmod@ietf.org - WG Chair: Juergen Schoenwaelder - j.schoenwaelder@jacobs-university.de - WG Chair: Tom Nadeau - tnadeau@lucidvision.com - Editor: Dean Bogdanovic - deanb@juniper.net - Editor: Kiran Agrahara Sreenivasa - kkoushik@cisco.com - Editor: Lisa Huang - lyihuang16@gmail.com - Editor: Dana Blair - dblair@cisco.com"; - description - "This YANG module defines groupings that are used by - ietf-access-control-list YANG module. Their usage is not - limited to ietf-access-control-list and can be - used anywhere as applicable. - Copyright (c) 2015 IETF Trust and the persons identified as - the document authors. All rights reserved. - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD - License set forth in Section 4.c of the IETF Trust's Legal - Provisions Relating to IETF Documents - (http://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC XXXX; see - the RFC itself for full legal notices."; - revision 2016-07-08 { - description - "Initial version of packet fields used by - ietf-access-control-list"; - reference - "RFC XXXX: Network Access Control List (ACL) - YANG Data Model"; - } - grouping acl-transport-header-fields { - description - "Transport header fields"; - container source-port-range { - presence "Enables setting source port range"; - description - "Inclusive range representing source ports to be used. - When only lower-port is present, it represents a single port."; - leaf lower-port { - type inet:port-number; - mandatory true; - description - "Lower boundary for port."; - } - leaf upper-port { - type inet:port-number; - must ". >= ../lower-port" { - error-message - "The upper-port must be greater than or equal to lower-port"; - } - description - "Upper boundary for port . If existing, the upper port - must be greater or equal to lower-port."; - } - } - container destination-port-range { - presence "Enables setting destination port range"; - description - "Inclusive range representing destination ports to be used. When - only lower-port is present, it represents a single port."; - leaf lower-port { - type inet:port-number; - mandatory true; - description - "Lower boundary for port."; - } - leaf upper-port { - type inet:port-number; - must ". >= ../lower-port" { - error-message - "The upper-port must be greater than or equal to lower-port"; - } - - description - "Upper boundary for port. If existing, the upper port must - be greater or equal to lower-port"; - } - } - } - grouping acl-ip-header-fields { - description - "IP header fields common to ipv4 and ipv6"; - leaf dscp { - type inet:dscp; - description - "Value of dscp."; - } - leaf protocol { - type uint8; - description - "Internet Protocol number."; - } - uses acl-transport-header-fields; - } - grouping acl-ipv4-header-fields { - description - "Fields in IPv4 header."; - leaf destination-ipv4-network { - type inet:ipv4-prefix; - description - "Destination IPv4 address prefix."; - } - leaf source-ipv4-network { - type inet:ipv4-prefix; - description - "Source IPv4 address prefix."; - } - } - grouping acl-ipv6-header-fields { - description - "Fields in IPv6 header"; - leaf destination-ipv6-network { - type inet:ipv6-prefix; - description - "Destination IPv6 address prefix."; - } - leaf source-ipv6-network { - type inet:ipv6-prefix; - description - "Source IPv6 address prefix."; - } - leaf flow-label { - type inet:ipv6-flow-label; - description - "IPv6 Flow label."; - } - reference - "RFC 4291: IP Version 6 Addressing Architecture - RFC 4007: IPv6 Scoped Address Architecture - RFC 5952: A Recommendation for IPv6 Address Text Representation"; - } - grouping acl-eth-header-fields { - description - "Fields in Ethernet header."; - leaf destination-mac-address { - type yang:mac-address; - description - "Destination IEEE 802 MAC address."; - } - leaf destination-mac-address-mask { - type yang:mac-address; - description - "Destination IEEE 802 MAC address mask."; - } - leaf source-mac-address { - type yang:mac-address; - description - "Source IEEE 802 MAC address."; - } - leaf source-mac-address-mask { - type yang:mac-address; - description - "Source IEEE 802 MAC address mask."; - } - reference - "IEEE 802: IEEE Standard for Local and Metropolitan Area - Networks: Overview and Architecture."; - } - -}
\ No newline at end of file diff --git a/v3po/api/src/main/yang/pbb-types.yang b/v3po/api/src/main/yang/pbb-types.yang deleted file mode 100644 index 8c3aad41a..000000000 --- a/v3po/api/src/main/yang/pbb-types.yang +++ /dev/null @@ -1,81 +0,0 @@ -module pbb-types { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:pbb-types"; - prefix "pbb-types"; - - description "Common types used for defining Pbb based subinterfaces"; - - revision "2016-12-14" { - description - "Initial revision."; - } - - import ietf-yang-types { - prefix yang; - } - - import ietf-interfaces { - prefix if; - } - - import yang-ext { - prefix "ext"; - } - - typedef operation { - type enumeration { - // NOTE - Does not specify disabled enum value(0), because its used internally to delete/disable rewrite - enum "push-2" { - value 2; - } - - enum "pop-2" { - value 4; - description "Encapsulate/Decapsulate pbb packet according to incoming/outcoming direction"; - } - enum "translate-2-1" { - value 7; - } - } - } - - grouping pbb-rewrite-attributes { - description "Provider Backbone Bridge attributes"; - - leaf destination-address { - type yang:mac-address; - description "backbone destination address"; - } - - leaf source-address { - type yang:mac-address; - description "backbone source address"; - } - - leaf outer-tag { - type uint16; - } - - leaf b-vlan-tag-vlan-id { - type uint16 { - //12 bit range - range "1..4095"; - } - description "backbone vlan id"; - } - - leaf i-tag-isid { - type uint32 { - //24 bit range - range "1..16777215"; - } - description "identifier of the backbone service instance "; - } - - leaf interface-operation { - type operation; - default pop-2; - description "Define operation that will pbb interface perform while processing packets"; - } - } -} diff --git a/v3po/api/src/main/yang/v3po-context.yang b/v3po/api/src/main/yang/v3po-context.yang deleted file mode 100644 index ae35be5dd..000000000 --- a/v3po/api/src/main/yang/v3po-context.yang +++ /dev/null @@ -1,29 +0,0 @@ -module v3po-context { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:v3po:context"; - prefix "v3po-ctx"; - - revision "2016-09-09" { - description - "Initial revision of v3po specific context"; - } - - container disabled-interfaces { - config false; - // context data - - description "Index list of disabled interfaces. VPP does not always delete an interface after deletion. It just - disables it and keeps it there. Honeycomb can hide such interfaces from operational data, and this - is the place to heep track of which interfaces were deleted, but are expected to show up in VPP"; - - list disabled-interface-index { - - key "index"; - - leaf index { - type int32; - } - } - } - -}
\ No newline at end of file diff --git a/v3po/api/src/main/yang/v3po.yang b/v3po/api/src/main/yang/v3po.yang deleted file mode 100644 index 18b68620e..000000000 --- a/v3po/api/src/main/yang/v3po.yang +++ /dev/null @@ -1,716 +0,0 @@ -module v3po { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:v3po"; - prefix "v3po"; - - revision "2016-12-14" { - description - "This revision adds the following new features: - - ingress/egress ACLs support - - moved ACL definitions to vpp-acl module - - updated l2 container constraint (permit IP address on BVI interface) - - added PID of vpp process to vpp-state - - added support for Loopback interfaces"; - } - - revision "2015-01-05" { - description "Initial revision of v3po model"; - } - - import iana-if-type { - prefix "ianaift"; - } - import ietf-interfaces { - prefix "if"; - } - import ietf-yang-types { - prefix "yang"; - } - import ietf-inet-types { - prefix "inet"; - } - import ietf-ip { - prefix "ip"; - } - import yang-ext { - prefix "ext"; - } - import vpp-acl { - prefix "vpp-acl"; - } - - typedef bridge-domain-ref { - type leafref { - path "/vpp/bridge-domains/bridge-domain/name"; - } - description - "This type is used by to reference a bridge domain table"; - } - - typedef bridged-virtual-interface-ref { - type leafref { - path "/if:interfaces/if:interface/l2/bridged-virtual-interface"; - } - description - "This type is used by to reference a bridged virtual interface"; - } - - identity vxlan-tunnel { - base if:interface-type; - } - - identity gre-tunnel { - base if:interface-type; - } - - identity vhost-user { - base if:interface-type; - } - - identity tap { - base if:interface-type; - } - - identity loopback { - base if:interface-type; - } - - identity l2-fib-action { - description "Base identity for l2-fib actions"; - } - - identity l2-fib-forward { - base l2-fib-action; - description - "Forwards packet with configured mac address"; - } - - identity l2-fib-filter { - base l2-fib-action; - description - "Drops packet with configured mac address"; - } - - typedef l2-fib-action { - type identityref { - base "l2-fib-action"; - } - description "Identifies a specific L2 FIB action"; - } - - typedef vxlan-vni { - // FIXME: should be in a vxlan-specific model - description "VNI used in a VXLAN tunnel"; - type uint32 { - range "0..16777215"; - } - } - - typedef vhost-user-role { - type enumeration { - enum "server"; - enum "client"; - } - } - - identity vxlan-gpe-tunnel { - base if:interface-type; - } - - typedef vxlan-gpe-vni { - description "VNI used in a VXLAN-GPE tunnel"; - type uint32 { - range "0..16777215"; - } - } - - typedef vxlan-gpe-next-protocol { - type enumeration { - enum "ipv4" { - value 1; - } - enum "ipv6" { - value 2; - } - enum "ethernet" { - value 3; - } - enum "nsh" { - value 4; - } - } - } - - grouping bridge-domain-attributes { - leaf flood { - type boolean; - default true; - description - "Enable/disable L2 flooding."; - } - leaf forward { - type boolean; - default true; - description - "Enable/disable L2 forwarding."; - } - leaf learn { - type boolean; - default true; - description - "Enable/disable L2 learning."; - } - leaf unknown-unicast-flood { - type boolean; - default true; - } - leaf arp-termination { - type boolean; - default false; - } - - container arp-termination-table { - when "../v3po:arp-termination = 'true'"; - - // TODO(HONEYCOMB-133): add support for read (after VPP-230 is done) - list arp-termination-table-entry { - key "ip-address phys-address"; - leaf ip-address { - // FIXME: change to ip-address-no-zone after https://bugs.opendaylight.org/show_bug.cgi?id=6413 is resolved - type inet:ip-address; - } - leaf phys-address { - type yang:phys-address; - } - } - } - } - - // TODO express constraints for L2 FIB entries in YANG if possible - grouping l2-fib-attributes { - container l2-fib-table { - list l2-fib-entry { - key "phys-address"; - - leaf phys-address { - type yang:phys-address; - } - - leaf outgoing-interface { - type string; - // mandatory true; - // mandatory for forward action - // FIXME VPP's CLI does not require to set iface id for filter action - // VPP's binary api in constrast to CLI does some checks on the iface id value, - // so currently it has to be set for all actions - description - "One of interfaces assigned to the FIB table's bridge-domain."; - } - leaf static-config { - type boolean; - default false; - description - "Static entries cannot be overridden by mac learning."; - } - leaf action { - type l2-fib-action; - mandatory true; - description - "L2 FIB action. For filter action, entry must be configured as static."; - } - leaf bridged-virtual-interface { - when "../action = 'forward'"; - type boolean; - config false; // FIXME setting bvi is currently not supported by VPP's binary api - } - } - } - } - - grouping tap-interface-base-attributes { - leaf tap-name { - type string{ - pattern "[a-zA-Z0-9\-;.+@$#^&*!_()=\[\]]*"; - } - } - } - - grouping tap-interface-config-attributes { - leaf mac { - type yang:phys-address; - mandatory false; - description "Mac address to be set for the tap interface. Random will be used if not configured"; - } - - leaf device-instance { - type uint32; - mandatory false; - description "Custom device instance. Autogenerated will be used if not configured"; - } - } - - grouping loopback-interface-base-attributes { - leaf mac { - type yang:phys-address; - mandatory false; - description "Mac address of the loopback interface"; - } - } - - grouping ethernet-base-attributes { - leaf mtu { - type uint16 { - range "64..9216"; - } - units "octets"; - default 9216; - description - "The size, in octets, of the largest packet that the - hardware interface will send and receive."; - } - } - - grouping ethernet-state-attributes { - leaf manufacturer-description { - type string; - config false; - } - leaf duplex { - type enumeration { - enum "half"; - enum "full"; - } - config false; - } - } - - grouping vhost-user-interface-base-attributes { - leaf socket { - type string { - length 1..255; - } - } - leaf role { - type vhost-user-role; - default "server"; - } - description "vhost-user settings"; - } - - grouping vhost-user-interface-state-attributes { - leaf features { - type uint64; - config false; - } - leaf virtio-net-hdr-size { - type uint32; - config false; - } - leaf num-memory-regions { - type uint32; - config false; - } - leaf connect-error { - type string; - config false; - } - } - - grouping vxlan-base-attributes { - // FIXME: this should be in an vxlan-specific extension - leaf src { - /*mandatory true;*/ - type inet:ip-address; - } - leaf dst { - /*mandatory true;*/ - type inet:ip-address; - } - leaf vni { - /*mandatory true;*/ - type vxlan-vni; - } - leaf encap-vrf-id { - type uint32; - } - } - - grouping gre-base-attributes { - leaf src { - /*mandatory true;*/ - type inet:ip-address; - } - leaf dst { - /*mandatory true;*/ - type inet:ip-address; - } - leaf outer-fib-id { - type uint32; - } - } - - grouping vxlan-gpe-base-attributes { - leaf local { - /*mandatory true;*/ - type inet:ip-address; - } - leaf remote { - /*mandatory true;*/ - type inet:ip-address; - } - leaf vni { - /*mandatory true;*/ - type vxlan-gpe-vni; - } - leaf next-protocol { - type vxlan-gpe-next-protocol; - } - leaf encap-vrf-id { - type uint32; - } - leaf decap-vrf-id { - type uint32; - } - } - - grouping l2-base-attributes { - description - "Parameters for configuring Layer2 features on interfaces."; - - choice interconnection { - case xconnect-based { - leaf xconnect-outgoing-interface { - /* Don't allow selection of this interface */ - must "../../if:name != current()"; - type if:interface-ref; // todo use interface-state-ref for operational data? - description - "L2 xconnect mode"; - } - } - case bridge-based { - leaf bridge-domain { - type bridge-domain-ref; - mandatory true; - description - "Interfaces in a bridge-domain forward packets to other - interfaces in the same bridge-domain based on - destination mac address."; - } - leaf split-horizon-group { - when "../bridge-domain"; - type uint8 { - range "0..255"; - } - default 0; //no split horizon group - description - "Interface's split-horizon group. Interfaces in the same - bridge-domain and split-horizon group can not forward - packets between each other. "; - } - leaf bridged-virtual-interface { - when "../bridge-domain"; - type boolean; - default false; - description - "Interface forward packets in the bridge-domain - associated with the BVI."; - } - } - } - } - - grouping proxy-arp-attributes { - description - "Parameters for configuring Proxy ARP on interfaces."; - - leaf vrf-id { - type uint32; - default 0; - } - leaf low-addr { - type inet:ipv4-address; - } - leaf high-addr { - type inet:ipv4-address; - } - } - - augment /if:interfaces/if:interface { - ext:augment-identifier "vpp-interface-augmentation"; - - // FIXME using ietf-interfaces model for vpp interfaces makes it hard to implement because: - // 1. The link between interface type and this augmentation is unclear - // 2. Only this augmentation with combination of ifc type is trigger to do something for vpp, what if user only configures base interface stuff ? + We need to get leaves defined by ietf-interfaces when we are processing this augment - // 3. The ietf-interfaces model does not define groupings which makes types reuse difficult - - container tap { - when "../if:type = 'v3po:tap'"; - uses tap-interface-base-attributes; - uses tap-interface-config-attributes; - } - - container loopback { - presence "Presence of this container indicates loopback nature of the interface"; - when "../if:type = 'v3po:loopback'"; - uses loopback-interface-base-attributes; - } - - container ethernet { - when "../if:type = 'ianaift:ethernetCsmacd'"; - uses ethernet-base-attributes; - } - - container routing { - // TODO (HONEYCOMB-127): add routing info for oper - leaf ipv4-vrf-id { - type uint32; - } - leaf ipv6-vrf-id { - type uint32; - } - description - "Defines VRF tables used for ipv4 and ipv6 traffic"; - } - - container vhost-user { - when "../if:type = 'v3po:vhost-user'"; - uses vhost-user-interface-base-attributes; - } - - container vxlan { - when "../if:type = 'v3po:vxlan-tunnel'"; - uses vxlan-base-attributes; - } - - container gre { - when "../if:type = 'v3po:gre-tunnel'"; - uses gre-base-attributes; - } - - container l2 { - must "bridged-virtual-interface = 'true' or " + - "(not (../if:ipv4[if:enabled = 'true']/if:address/if:ip) and " + - "not (../if:ipv6[if:enabled = 'true']/if:address/if:ip))"; - - uses l2-base-attributes; - } - - container vxlan-gpe { - when "../if:type = 'v3po:vxlan-gpe-tunnel'"; - - uses vxlan-gpe-base-attributes; - } - - container proxy-arp { - uses proxy-arp-attributes; - } - - container acl { - container ingress { - uses vpp-acl:acl-base-attributes; - } - container egress { - uses vpp-acl:acl-base-attributes; - } - } - - container ietf-acl { - container ingress { - uses vpp-acl:ietf-acl-base-attributes; - } - container egress { - uses vpp-acl:ietf-acl-base-attributes; - } - } - } - - container vpp { - description - "VPP config data"; - - container bridge-domains { - list bridge-domain { - key "name"; - - leaf name { - type string; - } - - uses bridge-domain-attributes; - uses l2-fib-attributes; - - description - "bridge-domain configuration"; - } - } - } - - augment /if:interfaces-state/if:interface { - ext:augment-identifier "vpp-interface-state-augmentation"; - - leaf description { - type string; - } - - container tap { - when "../if:type = 'v3po:tap'"; - uses tap-interface-base-attributes; - } - - container ethernet { - when "../if:type = 'ianaift:ethernetCsmacd'"; - uses ethernet-base-attributes; - uses ethernet-state-attributes; - } - - container vhost-user { - when "../if:type = 'v3po:vhost-user'"; - uses vhost-user-interface-base-attributes; - uses vhost-user-interface-state-attributes; - } - - container vxlan { - when "../if:type = 'v3po:vxlan-tunnel'"; - uses vxlan-base-attributes; - } - container vxlan-gpe { - when "../if:type = 'v3po:vxlan-gpe-tunnel'"; - - uses vxlan-gpe-base-attributes; - } - - container gre { - when "../if:type = 'gre-tunnel'"; - uses gre-base-attributes; - } - - container l2 { - must "bridged-virtual-interface = 'true' or " + - "(not (../if:ipv4[if:enabled = 'true']/if:address/if:ip) and " + - "not (../if:ipv6[if:enabled = 'true']/if:address/if:ip))"; - - uses l2-base-attributes; - } - - container proxy-arp { - uses proxy-arp-attributes; - } - - container acl { - container ingress { - uses vpp-acl:acl-base-attributes; - } - container egress { - uses vpp-acl:acl-base-attributes; - } - } - - container ietf-acl { - container ingress { - uses vpp-acl:ietf-acl-base-attributes; - } - container egress { - uses vpp-acl:ietf-acl-base-attributes; - } - } - } - - augment /if:interfaces-state/if:interface/if:statistics { - ext:augment-identifier "vpp-interface-statistics-augmentation"; - leaf in-errors-no-buf { - type yang:counter64; - } - leaf in-errors-miss { - type yang:counter64; - } - leaf out-discards-fifo-full { - type yang:counter64; - } - } - - container vpp-state { - config false; - - description - "VPP operational data"; - - container bridge-domains { - // FIXME: Should this live in bridge-domain.yang in a modular fashion ? - list bridge-domain { - - key "name"; - leaf name { - type string; - } - - uses bridge-domain-attributes; - uses l2-fib-attributes; - - description - "bridge-domain operational data"; - } - } - - container version { - leaf name { - type string; - } - leaf build-directory { - type string; - } - leaf build-date { - type string; - } - leaf branch { - type string; - } - leaf pid { - type uint32; - description - "PID of the vpp process"; - } - description - "vlib version info"; - } - } - - // VPP Notifications - - typedef interface-status { - type enumeration { - enum up { - value 1; - } - enum down { - value 0; - } - } - } - - typedef interface-name-or-index { - type union { - type string; - type uint32; - } - } - - notification interface-state-change { - leaf name { - type interface-name-or-index; - } - - leaf admin-status { - type interface-status; - } - - leaf oper-status { - type interface-status; - } - } - - notification interface-deleted { - leaf name { - type interface-name-or-index; - } - } -} diff --git a/v3po/api/src/main/yang/vpp-acl.yang b/v3po/api/src/main/yang/vpp-acl.yang deleted file mode 100644 index f0c93f45e..000000000 --- a/v3po/api/src/main/yang/vpp-acl.yang +++ /dev/null @@ -1,160 +0,0 @@ -module vpp-acl { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:vpp:acl"; - prefix "vpp-acl"; - - revision "2016-12-14" { - description - "Initial revision of vpp-acl model."; - } - - import ietf-access-control-list { - prefix "acl"; - } - - import vpp-classifier { - prefix "vpp-classifier"; - } - - import yang-ext { - prefix "ext"; - } - - import ietf-packet-fields { - prefix packet-fields; - } - - identity mixed-acl { - base acl:acl-base; - description - "ACL that can match on any of L2/L3/L4 fields."; - } - - typedef interface-mode { - type enumeration { - enum "l2"; - enum "l3"; - } - } - - grouping acl-base-attributes { - description - "Defines references to classify tables. - At least one table reference should be specified."; - container l2-acl { - leaf classify-table { - type vpp-classifier:classify-table-ref; - description - "An L2 ACL table"; - } - } - container ip4-acl { - leaf classify-table { - type vpp-classifier:classify-table-ref; - description - "An IPv4 ACL table"; - } - } - container ip6-acl { - leaf classify-table { - type vpp-classifier:classify-table-ref; - description - "An IPv6 ACL table"; - } - } - } - - grouping ietf-acl-base-attributes { - description - "Provides limited support for ietf-acl model."; - - container access-lists { - description - "Defines references to ietf-acl lists. - ACLs are translated into classify tables and sessions when assigned to interface. - - In case of L2 interfaces, acls are translated into a chain of classify tables and assigned as L2 table. - In case of L3 interfaces, acls are translated into ip4 and ip6 chains (eth only rules go to both chains, - rest - depending on ip-version). - User ordering is preserved in both cases. - - Assignment update/delete removes all created tables and sessions and repeats process described above. - Update/delete of ACL lists referenced here is not permitted (assignment needs to be removed first). - - Read is supported only for acls that were created and assigned by Honeycomb agent - (corresponding metadata is present). - - Extensions: - - mixing ACEs of different type in one list is permited - - mixing L2/L3/L4 rules in one ACE is permited - - Limitations (due to vpp limitations): - - egress rules are currently ignored (HONEYCOMB-234) - - L4 rules support is limited (every <src,dst> port pair from provided ranges is translated to single classify - session; which can very slow or even crash vpp if ranges are big, see HONEYCOMB-260) - - ace-ip-version needs to be provided for all aces (consequence of posibility to mix ACEs of different types, - and vpp classfier api limitation: common header fields for IP4/IP6 have different offsets) - - L2 rules on L3 interfaces are applied only to IP traffic (vpp classfier limitation) - - vlan tags are supported only for sub-interfaces defined as exact-match"; - - list acl { - key "type name"; - ordered-by user; - - leaf type { - type acl:acl-type; - } - - leaf name { - type acl:access-control-list-ref; - } - } - - leaf default-action { - type enumeration { - enum "deny"; - enum "permit"; - } - default "deny"; - description - "Default action applied to packet that does not match any of rules defined in assigned ACLs. - It is translated to single classify table and applied at the end of assigned chains."; - } - - leaf mode { - type interface-mode; - default l3; - description - "The way ACLs are translated depends on the interface mode. - In case of L2 interfaces (bridge/interconnection) - classify tables are assigned as l2_table using input_acl_set_interface (ether type matching is automatically - added in case of L3 rules). - In case of L3 interfaces, classify tables are assigned as ip4/ip6 tables. - - It is the user responsibility to choose mode that matches target interface. - "; - } - } - } - - augment /acl:access-lists/acl:acl/acl:access-list-entries/acl:ace/acl:matches/acl:ace-type { - ext:augment-identifier "vpp-acl-type-augmentation"; - case ace-ip-and-eth { - description - "Access List entry that can define both ip and eth rules."; - choice ace-ip-version { - description - "IP version used in this Access List Entry."; - mandatory true; - case ace-ipv4 { - uses packet-fields:acl-ipv4-header-fields; - } - case ace-ipv6 { - uses packet-fields:acl-ipv6-header-fields; - } - } - uses packet-fields:acl-ip-header-fields; - uses packet-fields:acl-eth-header-fields; - } - } -}
\ No newline at end of file diff --git a/v3po/api/src/main/yang/vpp-classifier-context.yang b/v3po/api/src/main/yang/vpp-classifier-context.yang deleted file mode 100644 index 01eae862d..000000000 --- a/v3po/api/src/main/yang/vpp-classifier-context.yang +++ /dev/null @@ -1,68 +0,0 @@ -module vpp-classifier-context { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:vpp:classifier"; - prefix "vpp-classifier-context"; - - description - "This module contains vpp classfier metadata definition"; - - revision "2016-09-09" { - description - "Initial revision."; - } - - container vpp-classifier-context { - - config "false"; - - description - "Classify tables and sessions contain relative node indexes. Management agent like Honeycomb, - needs to use node names instead (indexes might change after vpp restart). - VPP does not provide relative index to node name conversion (https://jira.fd.io/browse/VPP-219), - also finding base node that is needed to perform the conversion - is not allways possible (https://jira.fd.io/browse/VPP-220). - - Therefore Honeycomb needs to provide relative node to index mapping. - "; - - list classify-table-context { - key "name"; - unique "index"; - - leaf name { - type string; - description - "Name of the classify table."; - } - - leaf index { - type int32; - description - "Classify table index used by VPP."; - } - - leaf classifier-node-name { - type string; - description - "Name of VPP node the table is defined for."; - } - - list node-context { - key "name"; - unique "index"; - - leaf name { - type string; - description - "Name of vpp node (neighbour of classifier-node-name)"; - } - - leaf index { - type int32; - description - "Inted of the vpp node relative to classifier-node-name"; - } - } - } - } -}
\ No newline at end of file diff --git a/v3po/api/src/main/yang/vpp-classifier.yang b/v3po/api/src/main/yang/vpp-classifier.yang deleted file mode 100644 index ea2788289..000000000 --- a/v3po/api/src/main/yang/vpp-classifier.yang +++ /dev/null @@ -1,215 +0,0 @@ -module vpp-classifier { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:vpp:classifier"; - prefix "vpp-classifier"; - - revision "2016-12-14" { - description - "This revision adds the following new features: - - updates order of union types for opaque-index"; - } - - revision "2015-06-03" { - description - "Initial revision of model for VPP packet classifier. - The model can be used ony to implement ACLs. - Other classify table usages are not supported yet, - see https://jira.fd.io/browse/VPP-203 for details."; - reference - "https://wiki.fd.io/view/VPP/Introduction_To_N-tuple_Classifiers"; - } - - import ietf-yang-types { - prefix "yang"; - } - - typedef classify-table-ref { - type leafref { - path "/vpp-classifier:vpp-classifier/classify-table/name"; - } - description - "This type is used by data models that need to reference - configured classify tables."; - } - - typedef packet-handling-action { - type enumeration { - enum "deny" { - // by VPP convention, first neighbour node (at index 0) is a drop node - value 0; - } - enum "permit" { - value -1; // indicates that the next node not set - } - } - } - - typedef vpp-node-name { - type string; - } - - typedef vpp-node { - type union { - type packet-handling-action; - type vpp-node-name; - } - description - "Defines VPP node reference using packet handling action or relative node name - (if definition in terms of packet handling action is not possible)."; - } - - typedef opaque-index { - type union { - type uint32; - type vpp-node; - } - description - "Defines opaque-index type - metadata that can be attached to session-hit packets. - Vpp nodes can't be referenced by index, because node indexes might change after vpp restart."; - } - - grouping classify-session-attributes { - description - "Defines classify session attributes that are mapped to classify_add_del_session - and classify_session_details messages parameters."; - - leaf hit_next { - type vpp-node; - mandatory true; - description - "Vpp node to which packet will be send when it produces a match."; - } - leaf opaque_index { - type opaque-index; - } - leaf advance { - type int32; - default 0; - description - "Nodes like ip4/6-classify use the parameter to \"consume\" networking layer. - Example: tunnel decapsulation."; - } - } - - grouping classify-table-base-attributes { - description - "Defines classify table attributes that are mapped to classify_add_del_table message parameters."; - - leaf classifier-node { - type vpp-node-name; - description - "Name of VPP node the table is defined for."; - } - leaf nbuckets { - mandatory true; - type uint32; - description - "Used by classifier hashing algorithm. It is not possible to resize the bucket array, - therefore suggested value is approximate number of expected entries."; - } - leaf skip_n_vectors { - type uint32; - default 0; - description - "Number of 16 byte vectors to be skipped before applying mask."; - } - leaf next_table { - type classify-table-ref; - description - "Reference to the next classify table. Required when multiple table chaining is used."; - } - leaf miss_next { - mandatory true; - type vpp-node; - description - "Vpp node to which packet will be send when it falis to produce a match"; - } - leaf mask { - type yang:hex-string; - mandatory true; - description - "Defines match mask (multiple of 16 bytes)"; - } - - list classify-session { - key "match"; - - leaf match { - type yang:hex-string; - description - "Defines actual value to be matched that is - a byte vector, which length is multiple of 16 bytes"; - - must "string-length(match) = string-length(../../mask)" { - error-message - "Match length is not equal to classify table mask length."; - description - "Match length must be equal to classify table mask length."; - } - } - - uses classify-session-attributes; - } - } - - grouping classify-table-config-attributes { - description - "Defines classify table config only attributes (present in classify_add_del_table message - but not in classify_table_info_reply)."; - - // FIXME move to classify-table-base-attributes - // after https://jira.fd.io/browse/VPP-208 is fixed - leaf memory_size { - type uint32; - mandatory true; - description - "Memory size for classify table and its entries."; - } - } - - grouping classify-table-operational-attributes { - description - "Defines classify table operational attributes (present in classify_table_info_reply message - but not in classify_add_del_table)."; - - leaf active_sessions { - type uint32; - config false; - description - "Number of sessions defined for the classify table."; - } - } - - container vpp-classifier { - list classify-table { - key "name"; - - leaf name { - type string; - description - "Hides classify table identifier managed by vpp."; - } - - uses classify-table-base-attributes; - uses classify-table-config-attributes; - } - } - - container vpp-classifier-state { - config false; - - list classify-table { - key "name"; - - leaf name { - type string; - description - "Hides classify table identifier managed by vpp."; - } - - uses classify-table-base-attributes; - uses classify-table-operational-attributes; - } - } - -} diff --git a/v3po/api/src/main/yang/vpp-pbb.yang b/v3po/api/src/main/yang/vpp-pbb.yang deleted file mode 100644 index d3ca160ce..000000000 --- a/v3po/api/src/main/yang/vpp-pbb.yang +++ /dev/null @@ -1,32 +0,0 @@ -module vpp-pbb { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:vpp-pbb"; - prefix "vpp-pbb"; - - revision "2016-12-14" { - description "Initial revision of pbb model"; - } - - import pbb-types { - prefix "pbb-types"; - } - - import yang-ext { - prefix "ext"; - } - - augment /if:interfaces/if:interface { - ext:augment-identifier "pbb-rewrite-interface-augmentation"; - container pbb-rewrite{ - uses pbb-types:pbb-rewrite-attributes; - } - } - - augment /if:interfaces-state/if:interface { - ext:augment-identifier "pbb-rewrite-state-interface-augmentation"; - container pbb-rewrite-state{ - uses pbb-types:pbb-rewrite-attributes; - config false; - } - } -}
\ No newline at end of file diff --git a/v3po/api/src/main/yang/vpp-vlan.yang b/v3po/api/src/main/yang/vpp-vlan.yang deleted file mode 100644 index cd3d320ee..000000000 --- a/v3po/api/src/main/yang/vpp-vlan.yang +++ /dev/null @@ -1,443 +0,0 @@ -module vpp-vlan { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:vpp:vlan"; - prefix "vpp-vlan"; - - revision "2016-12-14" { - description - "This revision adds the following new features: - - ingress/egress ACLs support"; - } - - revision "2015-05-27" { - description - "Initial revision of vlan model for VPP. - Reuses some concepts from draft-wilton-netmod-intf-vlan-yang-02 model."; - } - - import ietf-interfaces { - prefix "if"; - } - import ietf-inet-types { - prefix inet; - } - import ietf-yang-types { - prefix "yang"; - } - import yang-ext { - prefix "ext"; - } - import dot1q-types { - prefix dot1q; - } - import v3po { - prefix v3po; - } - import vpp-acl { - prefix vpp-acl; - } - - typedef sub-interface-status { - type enumeration { - enum "up"; - enum "down"; - } - } - - // todo add 802dot1ad support to dot1q-types.yang - /* - * Defines the supported IEEE 802.1Q types that can be used for - * VLAN tag matching. - */ - identity vlan-type { - description "Base identity from which all VLAN types - are derived from"; - } - - identity 802dot1q { - base vlan-type; - description - "An 802.1Q VLAN type"; - } - - identity 802dot1ad { - base vlan-type; - description - "An 802.1ad VLAN type"; - } - - typedef vlan-type { - type identityref { - base "vlan-type"; - } - description "Identifies a specific VLAN type"; - } - - grouping match-attributes { - choice match-type { - mandatory true; - description "Provides a choice of how the frames may be matched"; - - case default { - description "Default match"; - leaf default { - type empty; - description - "Default match. Matches all traffic not matched to any - other peer sub-interface by a more specific - encapsulation."; - } // leaf default - } // case default - - case untagged { - description "Match untagged Ethernet frames only"; - leaf untagged { - type empty; - description - "Untagged match. Matches all untagged traffic."; - } // leaf untagged - } // case untagged - - case vlan-tagged { - container vlan-tagged { - description "Matches VLAN tagged frames. Vlan tags need to be specified to use this match type"; - - leaf match-exact-tags { - type boolean; - default true; - description - "If set, indicates that all 802.1Q VLAN tags in the - Ethernet frame header must be explicitly matched, i.e. - the EtherType following the matched tags must not be a - 802.1Q tag EtherType. If unset then extra 802.1Q VLAN - tags are allowed."; - } - } // container vlan-tagged - } // case vlan-tagged - } - } - - // TODO VPP does not allow to change subinterface nor delete it (except for tag-rewrite operation) - grouping sub-interface-base-attributes { - leaf vlan-type { - type vlan-type; - default 802dot1q; - } - - container tags { - list tag { - key "index"; - max-elements 2; - - description "The VLAN tags to use by locally sourced traffic"; - - leaf index { - type uint8 { - range "0..1"; - } - - /* - * Only allow a push of an inner tag if an outer tag is also - * being pushed. - */ - must "index != 0 or - count(../../push-tags[index = 0]/index) > 0" { - error-message "An inner tag can only be pushed if an outer - tag is also specified"; - description "Only allow a push of an inner tag if an outer - tag is also being pushed"; - } - description "The index into the tag stack"; - } - - uses dot1q:dot1q-tag-or-any; - - } - } - - container match { - description - "The match used to classify frames to this interface"; - uses match-attributes; - } - - container l2 { - uses v3po:l2-base-attributes; - container rewrite { - uses tag-rewrite; - } - } - - container acl { - container ingress { - uses vpp-acl:acl-base-attributes; - } - container egress { - uses vpp-acl:acl-base-attributes; - } - } - - container ietf-acl { - container ingress { - uses vpp-acl:ietf-acl-base-attributes; - } - container egress { - uses vpp-acl:ietf-acl-base-attributes; - } - } - } - - grouping sub-interface-config-attributes { - leaf enabled { - type boolean; - default "false"; - description - "Contains the configured, desired state of the sub-interface. - To enable sub-interface, the super inerface needs to be enabled"; - } - } - - grouping sub-interface-operational-attributes { - leaf admin-status { - type sub-interface-status; - mandatory true; - } - leaf oper-status { - type sub-interface-status; - mandatory true; - } - leaf if-index { - type int32 { - range "1..2147483647"; - } - mandatory true; - } - leaf phys-address { - type yang:phys-address; - description - "The sub-interface's Media Access Control (MAC) address."; - } - leaf speed { - type yang:gauge64; - units "bits/second"; - } - } - - /* - * Only symetrical rewrite is supported - */ - grouping tag-rewrite { - description "Flexible rewrite"; - - leaf vlan-type { // todo rename to push_dot1q, mandatory(?) with default true - type vlan-type; - default 802dot1q; - } - - leaf pop-tags { - type uint8 { - range 1..2; - } - description "The number of tags to pop (or translate if used in - conjunction with push-tags)"; - } - - list push-tags { - key "index"; - max-elements 2; - description "The number of tags to push (or translate if used - in conjunction with pop-tags)"; - /* - * Server should order by increasing index. - */ - leaf index { - type uint8 { - range 0..1; - } - - /* - * Only allow a push of an inner tag if an outer tag is also - * being pushed. - */ - must "index != 0 or - count(../../push-tags[index = 0]/index) > 0" { - error-message "An inner tag can only be pushed if an outer - tag is also specified"; - description "Only allow a push of an inner tag if an outer - tag is also being pushed"; - } - } - - uses dot1q:dot1q-tag; - } - } - - grouping sub-interface-ip4-attributes { - container ipv4 { - // TODO: add currently unsupported: - // enabled, forwarding, mtu, address/origin(config false), neighbor/origin(config false) - - // TODO: reuse groupings once ietf-ip provides them - - description - "Parameters for the IPv4 address family (based on ietf-ip rev. 2014-06-16)"; - - list address { - key "ip"; - description - "The list of configured 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 { - type yang:dotted-quad; - description - "The subnet specified as a netmask (contiguous)"; - } - } // choice subnet - } // list address - - 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 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."; - } - } // list neighbor - } - } - - grouping sub-interface-ip6-attributes { - container ipv6 { - // TODO: add currently unsupported: - // enabled, forwarding, mtu, neighbor, dup-addr-detect-transmits, autoconf, - // address(config false): origin, status - // neighbor(config false): origin, is-router, state - - // TODO: reuse groupings once ietf-ip provides them - - description - "Parameters for the IPv6 address family (based on ietf-ip rev. 2014-06-16)"; - - list address { - key "ip"; - description - "The list of configured 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."; - } - } // list address - - list neighbor { - key "ip"; - description - "A list of mappings from IPv6 addresses to - link-layer addresses. - - Entries in this list are used as static entries in 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."; - } - } // list neighbor - } - } - - augment /if:interfaces/if:interface { - ext:augment-identifier "subinterface-augmentation"; - - container sub-interfaces { - description "L2 vlan subinterfaces"; - - - list sub-interface { - key "identifier"; - leaf identifier { - type uint32; - } - - uses sub-interface-base-attributes; - uses sub-interface-config-attributes; - uses sub-interface-ip4-attributes; - uses sub-interface-ip6-attributes; - } - } - } - - augment /if:interfaces-state/if:interface { - ext:augment-identifier "subinterface-state-augmentation"; - - container sub-interfaces { - description "L2 vlan subinterfaces"; - - list sub-interface { - key "identifier"; - leaf identifier { - type uint32; - } - - uses sub-interface-base-attributes; - uses sub-interface-operational-attributes; - uses sub-interface-ip4-attributes; - uses sub-interface-ip6-attributes; - } - } - } - -} |