From 2f26b994ca44193a187dbf98c27225d219d17206 Mon Sep 17 00:00:00 2001 From: Jan Srnicek Date: Mon, 15 Aug 2016 15:34:24 +0200 Subject: HONEYCOMB-75 - Lisp API Change-Id: I9999bd2c10fb8731aaabc2a0875eac43647d9e08 Signed-off-by: Jan Srnicek --- lisp/api/src/main/yang/lisp.yang | 311 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 311 insertions(+) create mode 100755 lisp/api/src/main/yang/lisp.yang (limited to 'lisp/api/src/main/yang/lisp.yang') diff --git a/lisp/api/src/main/yang/lisp.yang b/lisp/api/src/main/yang/lisp.yang new file mode 100755 index 000000000..4f64ca28a --- /dev/null +++ b/lisp/api/src/main/yang/lisp.yang @@ -0,0 +1,311 @@ +//TODO mandatory statements +module lisp { + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:lisp"; + prefix "lisp"; + import ietf-interfaces { + prefix "if"; + } + import ietf-inet-types { + prefix "inet"; + } + import ietf-lisp-address-types { + prefix "lisp-types"; + } + organization + "FD.io Overlay Forwarding Engine (ONE) project"; + contact + "Florin Coras + Vina Ermagan + ONE list "; + + description + "This YANG module defines the generic configuration and + operational data for LISP in VPP"; + revision "2016-05-20" { + description + "Initial revision of LISP model"; + reference + "https://tools.ietf.org/html/rfc6830"; + } + + typedef locator-set-ref { + type leafref { + path "/lisp/locator-sets/locator-set/name"; + } + description "Locator-set reference"; + } + + typedef mapping-id { + type string; + description "Mapping ID"; + } + + typedef map-reply-action { + type enumeration { + enum no-action { + value 0; + description + "Mapping is kept alive and no encapsulation occurs."; + } + enum natively-forward { + value 1; + description + "Matching packets are not encapsulated or dropped but + natively forwarded."; + } + enum send-map-request { + value 2; + description + "Matching packets invoke Map-Requests."; + } + enum drop { + value 3; + description + "Matching packets are dropped."; + } + } + description + "Defines the lisp map-cache ACT type"; + reference + "https://tools.ietf.org/html/rfc6830#section-6.1.4"; + } + grouping locator-properties-grouping { + description + "Properties of a RLOC"; + leaf priority { + type uint8; + description + "Locator priority."; + } + leaf weight { + type uint8; + description + "Locator weight."; + } + } + + grouping locator-sets-grouping { + // NOTE: to be used only for local locators + // lisp_add_del_locator_set locator-set [del] + // lisp_add_del_locator locator-set iface + // p w [del] + container locator-sets { + when "../lisp:enable = 'true'"; + list locator-set { + key "name"; + leaf name { + type string; + description "Locator-set name"; + } + list interface { + key "interface-ref"; + leaf interface-ref { + type if:interface-ref; + description "Interface reference"; + } + uses locator-properties-grouping; + description "List of interfaces part of the locator-set"; + } + description "Locator-set"; + } + description "Locator-sets"; + } + description "Grouping for locator-sets"; + } + + grouping eid-table-grouping { + container eid-table { + when "../lisp:enable = 'true'"; + list vni-table { + key "virtual-network-identifier"; + leaf virtual-network-identifier { + type uint32; + description "vni"; + } + leaf table-id { + type uint32; + description "table-id/vrf"; + } + // Once both vni and table-id are set: + // lisp_eid_table_add_del_map + container local-mappings { + list local-mapping { + key "id"; + leaf id { + type mapping-id; + description "Id that uniquely identifies a mapping"; + } + container eid { + uses lisp-types:lisp-address; + description "EID address"; + } + leaf locator-set { + type locator-set-ref; + description "Locator-set"; + } + description "Local mapping"; + } + description "Local EID to locator-set mappings"; + } + // lisp_add_del_local_eid eid locator-set + // [del] + // lisp_add_del_remote_mapping vni eid seid + // [action ] rloc + // [rloc ..] + // NOTE: 1.lisp_add_del_remote_mapping needs updating, right now + // it expects both seid and deid, but this will be + // simplified to just eid + // 2.priority/weight not yet part of API, patch under + // review + container remote-mappings { + list remote-mapping { + key "id"; + leaf id { + type mapping-id; + description "Id that uniquely identifies a mapping"; + } + container eid { + description "Remote EID address"; + uses lisp-types:lisp-address; + } + leaf ttl { + type uint32; + description "Mapping validity period."; + } + leaf authoritative { + type bits { + bit A { + description "Authoritative bit."; + } + } + description + "Bit that indicates if mapping comes from an + authoritative source."; + } + choice locator-list { + description + "list of locators are either negative, or positive."; + case negative-mapping { + //NOTE if this is enclosed in container,there can be a dedicated writer/reader + //for setting/reading this node + leaf map-reply-action { + type map-reply-action; + description + "Forwarding action for a negative mapping."; + } + } + case positive-mapping { + container rlocs { + list locator { + key "address"; + leaf address { + type inet:ip-address; + description "Locator address"; + } + uses locator-properties-grouping; + description "Remote locator"; + } + description + "List of locators for a positive mapping."; + } + } + } + description "List of remote mappings"; + } + description "Map-cache/remote mappings cache"; + } + + container adjacencies { + list adjacency { + key "id"; + leaf id { + type string; + description "Adjacency id"; + } + container local-eid { + uses lisp-types:lisp-address; + description "Local EID that must have a local mapping"; + } + container remote-eid { + uses lisp-types:lisp-address; + description "Remote EID that must have a remote mapping"; + } + description "List of adjacencies"; + } + description "Adjacencies programmed into the data plane"; + } + description "VNI tables"; + } + description "EID table"; + } + description "EID table grouping"; + } + grouping map-resolvers-grouping { + container map-resolvers { + // lisp_add_del_map_resolver + when "../lisp:enable = 'true'"; + list map-resolver { + key ip-address; + leaf ip-address { + type inet:ip-address; + description "Map-resolver IP address"; + } + description "List of map-resolvers"; + } + description "Map-resolvers configured"; + } + description "Map-Resolver grouping"; + } + grouping pitr-cfg-grouping { + // lisp_pitr_set_locator_set + container pitr-cfg { + when "../lisp:enable = 'true'"; + leaf locator-set { + type locator-set-ref; + description "Locator-set reference"; + } + description "Proxy-ITR configuration"; + } + description ""; + } + + // ref https://wiki.fd.io/view/ONE/Command-line_Interface_CLI_Guide + container lisp { + // lisp_enable_disable / lisp_enable_disable_status_dump + leaf enable { + type boolean; + description "Enable/disable LISP feature"; + } + // lisp_add_del_map_request_itr_rlocs add/del + leaf itr-rlocs { + type locator-set-ref; + description "Locators to be used in map-requests"; + } + uses locator-sets-grouping; + uses eid-table-grouping; + uses map-resolvers-grouping; + uses pitr-cfg-grouping; + + // lisp_pitr_set_locator_set + description "LISP configuration"; + } + + container lisp-state { + config false; + leaf enable { + type boolean; + description "LISP status"; + } + leaf itr-rlocs { + type locator-set-ref; + description "Locators to be used in map-requests"; + } + uses locator-sets-grouping; + uses eid-table-grouping; + uses map-resolvers-grouping; + uses pitr-cfg-grouping; + + description "LISP state"; + } +} \ No newline at end of file -- cgit 1.2.3-korg