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; } import opendaylight-inventory { prefix inv; revision-date 2013-08-19; } 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"; } identity l3tunnel { status deprecated; base if:interface-type; reference "l3 tunnel interface"; } /* Tunnel (GRE, VxLAN) logical port */ 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; } /* 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"; } } /* 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 uint16 { range "1..4094"; } } } /* 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 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"; } } 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"; } } } }