X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=v3po%2Fapi%2Fsrc%2Fmain%2Fyang%2Fv3po.yang;h=43d318643b3047b2d1c4dcdf0e6d5fbdc2df8b3d;hb=HEAD;hp=86a2764b82747687bf02c92119498eb0ec4eb8d1;hpb=a54aa10434f8a1d08c01c015006cdf0077c8f54c;p=honeycomb.git diff --git a/v3po/api/src/main/yang/v3po.yang b/v3po/api/src/main/yang/v3po.yang deleted file mode 100644 index 86a2764b8..000000000 --- a/v3po/api/src/main/yang/v3po.yang +++ /dev/null @@ -1,618 +0,0 @@ -module v3po { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:v3po"; - prefix "v3po"; - - 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"; - } - - 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"; - } - - typedef vlan-type { - type enumeration { - enum 802dot1q; - enum 802dot1ad; - } - } - - // todo remove from v3po - typedef tag-rewrite-operation { - type enumeration { - enum disabled; - enum push-1; - enum push-2; - enum pop-1; - enum pop-2; - enum translate-1-to-1; - enum translate-1-to-2; - enum translate-2-to-1; - enum translate-2-to-2; - } - } - - typedef vlan-tag { - type uint16 { - range "1..4094"; - } - } - - identity vxlan-tunnel { - base if:interface-type; - } - - identity vhost-user { - base if:interface-type; - } - - identity tap { - base if:interface-type; - } - - identity sub-interface { - base if:interface-type; - } - - 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; - enum ipv6; - enum ethernet; - enum nsh; - } - } - - 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; - } - } - - // todo remove from v3po - grouping sub-interface-base-attributes { - leaf identifier { - type uint32; - } - leaf vlan-type { - type vlan-type; - default '802dot1q'; - } - leaf number-of-tags { - type uint8 { - range "0..2"; - } - default 1; - } - leaf outer-id { - type vlan-tag; - } - leaf inner-id { - type vlan-tag; - } - leaf match-any-outer-id { - type empty; - } - leaf match-any-inner-id { - type empty; - } - leaf exact-match { - type empty; - } - leaf default-subif { - type empty; - } - } - - grouping tap-interface-base-attributes { - leaf tap-name { - type string; - } - } - - 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 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 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 vlan-tag-rewrite-attributes { - leaf rewrite-operation { - type tag-rewrite-operation; - default 'disabled'; - } - leaf first-pushed { - type vlan-type; - default '802dot1q'; - } - leaf tag1 { - type vlan-tag; - } - leaf tag2 { - type vlan-tag; - } - } - - 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; - 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; - 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."; - } - } - } - } - - 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 sub-interface { - when "../if:type = 'v3po:sub-interface'"; - leaf super-interface { - type if:interface-ref; - } - uses sub-interface-base-attributes; - } - - container tap { - when "../if:type = 'v3po:tap'"; - uses tap-interface-base-attributes; - uses tap-interface-config-attributes; - } - - container ethernet { - when "../if:type = 'ianaift:ethernetCsmacd'"; - uses ethernet-base-attributes; - } - - container routing { - leaf vrf-id { // todo no routing info for oper, is it possible to get it from the vpp? - type uint32; - default 0; - } - } - - 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 l2 { - must "(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 vlan-tag-rewrite { - uses vlan-tag-rewrite-attributes; - } - } - - container vxlan-gpe { - when "../if:type = 'v3po:vxlan-gpe-tunnel'"; - - uses vxlan-gpe-base-attributes; - } - } - - container vpp { - description - "VPP config data"; - - container bridge-domains { - list bridge-domain { - key "name"; - // TODO: where does this come from? - max-elements 1024; - - leaf name { - type string; - } - - uses bridge-domain-attributes; - - list l2-fib { - key "phys-address"; - - leaf phys-address { - type yang:phys-address; - } - leaf action { - type enumeration { - enum "forward"; - enum "filter"; - } - mandatory true; - } - leaf outgoing-interface { - type if:interface-ref; - } - } - } - } - } - - augment /if:interfaces-state/if:interface { - ext:augment-identifier "vpp-interface-state-augmentation"; - - leaf description { - type string; - } - - container sub-interface { - when "../if:type = 'v3po:sub-interface'"; - leaf super-interface { - type if:interface-state-ref; - } - uses sub-interface-base-attributes; - } - - 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 l2 { - must "(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 vlan-tag-rewrite { - uses vlan-tag-rewrite-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; - - list interface { - key "name"; - - leaf name { - type if:interface-state-ref; - } - - leaf split-horizon-group { - type uint8; - } - - leaf bridged-virtual-interface { - type boolean; - } - } - - list l2-fib { - key "phys-address"; - - leaf phys-address { - type yang:phys-address; - } - leaf static-config { - type boolean; - } - leaf outgoing-interface { - when "../v3po:action = 'forward'"; - type if:interface-state-ref; - } - leaf action { - type enumeration { - enum "forward"; - enum "filter"; - } - mandatory true; - } - leaf bridged-virtual-interface { - when "../v3po:action = 'forward'"; - type boolean; - } - } - 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; - } - description - "vlib version info"; - } - } -}