module odl-interface { namespace "urn:opendaylight:vpnservice:interfacemgr"; prefix "odlif"; import ietf-interfaces { prefix if; } import yang-ext { prefix ext; } import iana-if-type { prefix ianaift; } import ietf-inet-types { prefix inet; revision-date "2013-07-15"; } import opendaylight-inventory { prefix inv; revision-date 2013-08-19; } import opendaylight-l2-types { prefix ethertype; revision-date "2013-08-27";} import config { prefix config; revision-date 2013-04-05; } revision "2015-03-31" { description "ODL Interface Manager Module"; } identity odl-interface { status deprecated; base "config:service-type"; config:java-class "org.opendaylight.vpnservice.interfacemgr.interfaces.IInterfaceManager"; } identity stacked-vlan { base if:interface-type; reference "Q-in-Q interface"; } identity mpls { base if:interface-type; reference "MPLS interface"; } /* Tunnel (GRE, VxLAN) logical port */ identity l3tunnel { status deprecated; base if:interface-type; reference "l3 tunnel interface"; } identity tunnel-type-base { description "Base identity for all tunnel-types"; } identity tunnel-type-vxlan { description "Tunnel type for vxlan tunnels"; base tunnel-type-base; } identity tunnel-type-gre { description "Tunnel type for gre tunnels"; base tunnel-type-base; } identity tunnel-type-mpls-over-gre { description "Tunnel type for mpls over gre tunnels"; base tunnel-type-base; } /* base/common properties */ augment "/if:interfaces/if:interface" { status deprecated; ext:augment-identifier "base-ids"; leaf of-port-id { type inv:node-connector-id; description "can be a physical switch port or virtual switch port e.g. neutron port"; } } augment "/if:interfaces/if:interface" { ext:augment-identifier "parent-refs"; leaf datapath-node-identifier { type uint64; description "can be a physical switch identifier (optional)"; } leaf parent-interface { type string; description "can be a physical switch port or virtual switch port e.g. neutron port"; } list node-identifier { key "topology-id"; description "an identifier of the dependant underlying configuration protocol"; leaf "topology-id" { type string; description "can be ovsdb configuration protocol"; } leaf "node-id" { type string; description "can be hwvtep configuration protocol"; } } } /* interface type specific properties */ /* VLAN logical port */ augment "/if:interfaces/if:interface" { ext:augment-identifier "if-l2vlan"; when "if:type = 'ianaift:l2vlan'"; leaf vlan-id { type ethertype:vlan-id; } leaf l2vlan-mode { description "The VLAN mode of the L2Vlan Interface."; type enumeration { enum "access" { value 1; description "The VLAN mode access."; } enum "native-tagged" { value 2; description "The VLAN mode native-tagged."; } enum "native-untagged" { value 3; description "The VLAN mode native-untagged."; } enum "trunk" { value 4; description "The VLAN mode trunk."; } enum "trunk-member" { value 5; description "The VLAN mode trunk-member."; } enum "transparent" { value 6; description "The VLAN mode transparent."; } } default "trunk"; } } /* Q-in-Q logical port */ augment "/if:interfaces/if:interface" { ext:augment-identifier "if-stacked-vlan"; when "if:type = 'stacked-vlan'"; leaf stacked_vlan-id { type uint16 { range "1..4094"; } } } augment "/if:interfaces/if:interface" { ext:augment-identifier "if-tunnel"; when "if:type = 'ianaift:tunnel'"; leaf internal { type boolean; default "false"; description "represents whether this is an internal or external tunnel."; } leaf tunnel-interface-type { type identityref { base tunnel-type-base; } } leaf tunnel-source { type inet:ip-address; description "Local Endpoint IP address"; } leaf tunnel-destination { type inet:ip-address; description "Remote Endpoint IP address"; } leaf tunnel-gateway { type inet:ip-address; description "gateway IP address"; } leaf monitor-enabled { type boolean; default false; } leaf monitor-interval { type uint32; default 10000; } } augment "/if:interfaces/if:interface" { status deprecated; ext:augment-identifier "if-l3tunnel"; when "if:type = 'ianaift:l3tunnel'"; leaf tunnel-type { type identityref { base tunnel-type-base; } } leaf local-ip { type inet:ip-address; description "Local Endpoint IP address"; } leaf remote-ip { type inet:ip-address; description "Remote Endpoint IP address"; } leaf gateway-ip { type inet:ip-address; description "gateway IP address"; } } /* MPLS logical port */ augment "/if:interfaces/if:interface" { ext:augment-identifier "if-mpls"; when "if:type = 'mpls'"; leaf-list labelStack { type uint32 { range "15..1048575"; } } leaf numLabels{ type uint8 { range "1..7"; } } } }