Switch to MD-SAL LISP address model 40/60940/3
authorLorand Jakab <lojakab@cisco.com>
Mon, 31 Jul 2017 15:08:55 +0000 (18:08 +0300)
committerLorand Jakab <lojakab@cisco.com>
Sat, 5 Aug 2017 05:19:31 +0000 (08:19 +0300)
ietf-lisp-address-types.yang was added to MD-SAL in [0] with the
intention to be the canonical place for the model. This patch removes
this model from lispflowmapping and switches to using that model.

[0] https://git.opendaylight.org/gerrit/#/c/60528/

Change-Id: Ib731bf9f10efd7f4417d3ea8cb1b73018519062f
Signed-off-by: Lorand Jakab <lojakab@cisco.com>
mappingservice/lisp-proto/pom.xml
mappingservice/lisp-proto/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/lisp/address/types/rev151105/SimpleAddressBuilder.java [deleted file]
mappingservice/lisp-proto/src/main/yang/ietf-lisp-address-types.yang [deleted file]

index 0d69d9bc66659cd7f185f36296804fdaf4e84387..ecfc3d1449e3b73c9676c3e28d525817a0adad40 100644 (file)
@@ -37,6 +37,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <groupId>org.opendaylight.mdsal.model</groupId>
       <artifactId>ietf-yang-types-20130715</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.opendaylight.mdsal.model</groupId>
+      <artifactId>ietf-lisp-address-types-2015-11-05</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
       <artifactId>iana-afn-safi</artifactId>
diff --git a/mappingservice/lisp-proto/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/lisp/address/types/rev151105/SimpleAddressBuilder.java b/mappingservice/lisp-proto/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/lisp/address/types/rev151105/SimpleAddressBuilder.java
deleted file mode 100644 (file)
index b201f94..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105;
-
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefixBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-
-
-/**
- * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation.
- * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32).
- *
- * The reason behind putting it under src/main/java is:
- * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent
- * loss of user code.
- *
- */
-public class SimpleAddressBuilder {
-
-    public static SimpleAddress getDefaultInstance(String defaultValue) {
-        SimpleAddress address = tryIpAddress(defaultValue);
-        if (address != null) {
-            return address;
-        }
-
-        address = tryIpPrefix(defaultValue);
-        if (address != null) {
-            return address;
-        }
-
-        address = tryMacAddress(defaultValue);
-        if (address != null) {
-            return address;
-        }
-
-        // XXX need support for MAC addresses and AS numbers
-        address = new SimpleAddress(new DistinguishedNameType(defaultValue));
-
-        return address;
-    }
-
-    private static SimpleAddress tryIpAddress(String defaultValue) {
-        try {
-            SimpleAddress address = new SimpleAddress(IpAddressBuilder.getDefaultInstance(defaultValue));
-            return address;
-        } catch (IllegalArgumentException e) {
-            return null;
-        }
-    }
-
-    private static SimpleAddress tryIpPrefix(String defaultValue) {
-        try {
-            SimpleAddress address = new SimpleAddress(IpPrefixBuilder.getDefaultInstance(defaultValue));
-            return address;
-        } catch (IllegalArgumentException e) {
-            return null;
-        }
-    }
-
-    private static SimpleAddress tryMacAddress(String defaultValue) {
-        try {
-            SimpleAddress address = new SimpleAddress(new MacAddress(defaultValue));
-            return address;
-        } catch (IllegalArgumentException e) {
-            return null;
-        }
-    }
-}
diff --git a/mappingservice/lisp-proto/src/main/yang/ietf-lisp-address-types.yang b/mappingservice/lisp-proto/src/main/yang/ietf-lisp-address-types.yang
deleted file mode 100644 (file)
index c9c0b7b..0000000
+++ /dev/null
@@ -1,675 +0,0 @@
-module ietf-lisp-address-types {
-  namespace "urn:ietf:params:xml:ns:yang:ietf-lisp-address-types";
-  prefix laddr;
-  import ietf-inet-types {
-    prefix inet;
-    revision-date 2013-07-15;
-  }
-  import ietf-yang-types {
-    prefix yang;
-    revision-date 2013-07-15;
-  }
-  organization
-    "IETF LISP (Locator/ID Separation Protocol) Working Group";
-  contact
-    "lisp@ietf.org";
-  description
-    "This YANG module defines the LISP Canonical Address Formats
-     (LCAF) for LISP. The module can be extended by vendors to
-     define vendor-specific parameters.
-
-     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 6338; see
-     the RFC itself for full legal notices.
-
-    ";
-  revision 2015-11-05 {
-    description
-      "Initial revision.";
-    reference
-      "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10";
-  }
-  identity lisp-address-family {
-    description
-      "Base identity from which identities describing LISP address
-       families are derived.";
-  }
-  identity no-address-afi {
-    base lisp-address-family;
-    description
-      "IANA Reserved.";
-    }
-  identity ipv4-afi {
-    base lisp-address-family;
-    description
-      "IANA IPv4 address family.";
-  }
-  identity ipv4-prefix-afi {
-    base lisp-address-family;
-    description
-      "IANA IPv4 address family prefix.";
-  }
-  identity ipv6-afi {
-    base lisp-address-family;
-    description
-      "IANA IPv6 address family.";
-  }
-  identity ipv6-prefix-afi {
-    base lisp-address-family;
-    description
-      "IANA IPv6 address family prefix.";
-  }
-  identity mac-afi {
-    base lisp-address-family;
-    description
-      "IANA MAC address family.";
-  }
-  identity distinguished-name-afi {
-    base lisp-address-family;
-    description
-      "IANA Distinguished Name address family.";
-  }
-  identity as-number-afi {
-      base lisp-address-family;
-      description
-        "IANA AS Number address family.";
-  }
-  identity lcaf {
-    base lisp-address-family;
-    description
-      "IANA LISP Canonical Address Format address family.";
-  }
-  identity null-address-lcaf {
-    base lcaf;
-    description
-      "Null body LCAF type.";
-  }
-  identity afi-list-lcaf {
-    base lcaf;
-    description
-      "AFI-List LCAF type.";
-  }
-  identity instance-id-lcaf {
-    base lcaf;
-    description
-      "Instance-ID LCAF type.";
-  }
-  identity as-number-lcaf {
-    base lcaf;
-    description
-      "AS Number LCAF type.";
-  }
-  identity application-data-lcaf {
-    base lcaf;
-    description
-      "Application Data LCAF type.";
-  }
-  identity geo-coordinates-lcaf {
-    base lcaf;
-    description
-      "Geo-coordinates LCAF type.";
-  }
-  identity opaque-key-lcaf {
-    base lcaf;
-    description
-      "Opaque Key LCAF type.";
-  }
-  identity nat-traversal-lcaf {
-    base lcaf;
-    description
-      "NAT-Traversal LCAF type.";
-  }
-  identity nonce-locator-lcaf {
-    base lcaf;
-    description
-      "Nonce-Locator LCAF type.";
-  }
-  identity multicast-info-lcaf {
-    base lcaf;
-    description
-      "Multicast Info LCAF type.";
-  }
-  identity explicit-locator-path-lcaf {
-    base lcaf;
-    description
-      "Explicit Locator Path LCAF type.";
-  }
-  identity security-key-lcaf {
-    base lcaf;
-    description
-      "Security Key LCAF type.";
-  }
-  identity source-dest-key-lcaf {
-    base lcaf;
-    description
-      "Source/Dest LCAF type.";
-  }
-  identity replication-list-lcaf {
-    base lcaf;
-    description
-      "Replication-List LCAF type.";
-  }
-  identity json-data-model-lcaf {
-    base lcaf;
-    description
-      "JSON Data Model LCAF type.";
-  }
-  identity key-value-address-lcaf {
-    base lcaf;
-    description
-      "Key/Value Address LCAF type.";
-  }
-  identity encapsulation-format-lcaf {
-    base lcaf;
-    description
-      "Encapsulation Format LCAF type.";
-  }
-  identity service-path-lcaf {
-    base lcaf;
-    description
-      "Service Path LCAF type.";
-  }
-  typedef instance-id-type {
-    type uint32 {
-      range "0..16777215";
-    }
-    description
-      "Defines the range of values for an Instance ID.";
-  }
-  typedef service-path-id-type {
-    type uint32 {
-      range "0..16777215";
-    }
-    description
-      "Defines the range of values for a Service Path ID.";
-  }
-   typedef distinguished-name-type {
-    type string;
-    description
-      "Distinguished Name address.";
-    reference
-      "http://www.iana.org/assignments/address-family-numbers/
-       address-family-numbers.xhtml";
-  }
-  typedef simple-address {
-    type union {
-      type inet:ip-address;
-      type inet:ip-prefix;
-      type yang:mac-address;
-      type distinguished-name-type;
-      type inet:as-number;
-    }
-    description
-      "Union of address types that can be part of LCAFs.";
-  }
-
-  typedef lisp-address-family-ref {
-    type identityref {
-      base lisp-address-family;
-    }
-    description
-      "LISP address family reference.";
-  }
-  typedef lcaf-ref {
-    type identityref {
-      base lcaf;
-    }
-    description
-      "LCAF types reference.";
-  }
-
-  grouping lisp-address {
-    description
-      "Generic LISP address.";
-    leaf address-type {
-      type lisp-address-family-ref;
-      mandatory true;
-      description
-        "Type of the LISP address.";
-    }
-    leaf virtual-network-id {
-      type instance-id-type;
-      description
-        "Virtual Network Identifier (instance-id) of the address.";
-    }
-    choice address {
-      description
-        "Various LISP address types, including IP, MAC, and LCAF.";
-  
-      leaf no-address {
-        when "../address-type = 'laddr:no-addr-afi'" {
-          description
-            "When AFI is 0.";
-        }
-        type empty;
-        description
-          "No address.";
-      }
-      leaf ipv4 {
-        when "../address-type = 'laddr:ipv4-afi'" {
-          description
-            "When AFI is IPv4.";
-        }
-        type inet:ipv4-address;
-        description
-          "IPv4 address.";
-      }
-      leaf ipv4-prefix {
-        when "../address-type = 'laddr:ipv4-prefix-afi'" {
-          description
-            "When AFI is IPv4.";
-        }
-        type inet:ipv4-prefix;
-        description
-          "IPv4 prefix.";
-      }
-      leaf ipv6 {
-        when "../address-type = 'laddr:ipv6-afi'" {
-          description
-            "When AFI is IPv6.";
-        }
-        type inet:ipv6-address;
-        description
-          "IPv6 address.";
-      }
-      leaf ipv6-prefix {
-        when "../address-type = 'laddr:ipv6-prefix-afi'" {
-          description
-            "When AFI is IPv6.";
-        }
-        type inet:ipv6-prefix;
-        description
-          "IPv6 address.";
-      }
-      leaf mac {
-        when "../address-type = 'laddr:mac-afi'" {
-          description
-            "When AFI is MAC.";
-        }
-        type yang:mac-address;
-        description
-          "MAC address.";
-      }
-      leaf distinguished-name {
-        when "../address-type = 'laddr:distinguished-name-afi'" {
-          description
-            "When AFI is distinguished-name.";
-        }
-        type distinguished-name-type;
-        description
-          "Distinguished Name address.";
-      }
-      leaf as-number {
-        when "../address-type = 'laddr:as-number-afi'" {
-          description
-            "When AFI is as-number.";
-        }
-        type inet:as-number;
-        description
-          "AS Number.";
-      }
-      container null-address {
-        when "../address-type = 'laddr:null-address-lcaf'" {
-          description
-            "When LCAF type is null.";
-        }
-        description
-          "Null body LCAF type";
-        leaf address {
-          type empty;
-          description
-            "AFI address.";
-        }
-      }
-      container afi-list {
-        when "../address-type = 'laddr:afi-list-lcaf'" {
-          description
-            "When LCAF type is AFI-List.";
-        }
-        description
-          "AFI-List LCAF type.";
-        reference
-          "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
-           #section-4.16.1";
-        leaf-list address-list {
-          type simple-address;
-          description
-            "List of AFI addresses.";
-        }
-      }
-      container instance-id {
-        when "../address-type = 'laddr:instance-id-lcaf'" {
-          description
-            "When LCAF type is Instance-ID";
-        }
-        description
-          "Instance ID LCAF type.";
-        reference
-          "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
-           #section-4.2";
-        leaf iid {
-          type instance-id-type;
-          description
-            "Instance ID value.";
-        }
-        leaf mask-length {
-            type uint8;
-            description
-              "Mask length.";
-        }
-        leaf address {
-          type simple-address;
-          description
-            "AFI address.";
-        }
-      }
-      container as-number-lcaf {
-        when "../address-type = 'laddr:as-number-lcaf'" {
-          description
-            "When LCAF type is AS-Number.";
-        }
-        description
-          "AS Number LCAF type.";
-        reference
-          "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
-           #section-4.3";
-        leaf as {
-          type inet:as-number;
-          description
-            "AS number.";
-        }
-        leaf address {
-          type simple-address;
-          description
-            "AFI address.";
-        }
-      }
-      container application-data {
-        when "../address-type = 'laddr:application-data-lcaf'" {
-          description
-            "When LCAF type is Application Data.";
-        }
-        description
-          "Application Data LCAF type.";
-        reference
-          "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
-           #section-4.4";
-        leaf address {
-            type simple-address;
-            description
-              "AFI address.";
-        }
-        leaf protocol {
-            type uint8;
-            description
-              "Protocol number.";
-        }
-        leaf ip-tos {
-            type int32;
-            description
-              "Type of service field.";
-        }
-        leaf local-port-low {
-            type inet:port-number;
-            description
-              "Low end of local port range.";
-        }
-        leaf local-port-high {
-            type inet:port-number;
-            description
-              "High end of local port range.";
-        }
-        leaf remote-port-low {
-            type inet:port-number;
-            description
-              "Low end of remote port range.";
-        }
-        leaf remote-port-high {
-            type inet:port-number;
-            description
-              "High end of remote port range.";
-        }
-      }
-      container geo-coordinates {
-        when "../address-type = 'laddr:geo-coordinates-lcaf'" {
-          description
-            "When LCAF type is Geo-coordinates.";
-        }
-        description
-          "Geo-coordinates LCAF type.";
-        reference
-          "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
-           #section-4.5";
-        leaf latitude {
-          type bits {
-            bit N {
-              description
-                "Latitude bit.";
-            }
-          }
-          description
-            "Bit that selects between North and South latitude.";
-        }
-        leaf latitude-degrees {
-          type uint8 {
-            range "0 .. 90";
-          }
-          description
-            "Degrees of latitude.";
-        }
-        leaf latitude-minutes {
-          type uint8 {
-            range "0..59";
-          }
-          description
-            "Minutes of latitude.";
-        }
-        leaf latitude-seconds {
-          type uint8 {
-            range "0..59";
-          }
-          description
-            "Seconds of latitude.";
-        }
-        leaf longitude {
-          type bits {
-            bit E {
-              description
-                "Longitude bit.";
-            }
-          }
-          description
-            "Bit that selects between East and West longitude.";
-        }
-        leaf longitude-degrees {
-          type uint16 {
-            range "0 .. 180";
-          }
-          description
-            "Degrees of longitude.";
-        }
-        leaf longitude-minutes {
-          type uint8 {
-            range "0..59";
-          }
-          description
-            "Minutes of longitude.";
-        }
-        leaf longitude-seconds {
-          type uint8 {
-            range "0..59";
-          }
-          description
-            "Seconds of longitude.";
-        }
-        leaf altitude {
-          type int32;
-          description
-            "Height relative to sea level in meters.";
-        }
-        leaf address {
-          type simple-address;
-          description
-            "AFI address.";
-        }
-      }
-      container nat-traversal {
-        when "../address-type = 'laddr:nat-traversal-lcaf'" {
-          description
-            "When LCAF type is NAT-Traversal.";
-        }
-        description
-          "NAT-Traversal LCAF type.";
-        reference
-          "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
-           #section-4.6";
-        leaf ms-udp-port {
-          type uint16;
-          description
-            "Map-Server UDP port (set to 4342).";
-        }
-        leaf etr-udp-port {
-          type uint16;
-          description
-            "ETR UDP port.";
-        }
-        leaf global-etr-rloc {
-          type simple-address;
-          description
-            "Global ETR RLOC address.";
-        }
-        leaf ms-rloc {
-          type simple-address;
-          description
-            "Map-Server RLOC address.";
-        }
-        leaf private-etr-rloc {
-          type simple-address;
-          description
-            "Private ETR RLOC address.";
-        }
-        leaf-list rtr-rlocs {
-          type simple-address;
-          description
-            "List of RTR RLOC addresses.";
-        }
-      }
-      container explicit-locator-path {
-        when "../address-type = 'laddr:explicit-locator-path-lcaf'" {
-          description
-            "When LCAF type type is Explicit Locator Path.";
-        }
-        description
-          "Explicit Locator Path LCAF type.";
-        reference
-          "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
-           #section-4.9";
-        list hop {
-          key "hop-id";
-          ordered-by user;
-          description
-            "List of locator hops forming the explicit path.";
-          leaf hop-id {
-            type string;
-            description
-              "Unique identifier for the hop.";
-          }
-          leaf address {
-            type simple-address;
-            description
-              "AFI address.";
-          }
-          leaf lrs-bits {
-            type bits{
-              bit lookup {
-                description
-                  "Lookup bit.";
-              }
-              bit rloc-probe {
-                description
-                  "RLOC-probe bit.";
-              }
-              bit strict {
-                description
-                  "Strict bit.";
-              }
-            }
-            description
-              "Flag bits per hop.";
-          }
-        }
-      }
-      container source-dest-key {
-        when "../address-type = 'laddr:source-dest-key-lcaf'" {
-          description
-            "When LCAF type type is Source/Dest.";
-        }
-        description
-          "Source/Dest LCAF type.";
-        reference
-            "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
-            #section-4.11";
-        leaf source {
-          type simple-address;
-          description
-            "Source address.";
-        }
-        leaf dest {
-          type simple-address;
-          description
-            "Destination address.";
-        }
-      }
-      container key-value-address {
-        when "../address-type = 'laddr:key-value-address-lcaf'" {
-          description
-            "When LCAF type type is Key/Value Address.";
-        }
-        description
-          "Key/Value Address LCAF type.";
-        reference
-          "http://tools.ietf.org/html/draft-ietf-lisp-lcaf-10
-           #section-4.11";
-        leaf key {
-          type simple-address;
-          description
-            "Address as Key.";
-        }
-        leaf value {
-          type simple-address;
-          description
-            "Address as Value.";
-        }
-      }
-      container service-path {
-        when "../address-type = 'laddr:service-path-lcaf'" {
-        description
-          "When LCAF type service path identifier.";
-            }
-        description
-          "Service Path LCAF type.";
-        reference
-          "http://tools.ietf.org/html/draft-ermagan-lisp-nsh-00";
-        leaf service-path-id {
-          type service-path-id-type;
-          description
-            "Service path identifier for the path for NSH header";
-        }
-        leaf service-index {
-          type uint8;
-          description
-            "Service path index for NSH header";
-        }
-      }
-    }
-  }
-}