HC2VPP-53: YANG model for DHCP Relay 91/5091/2
authorMarek Gradzki <[email protected]>
Thu, 9 Feb 2017 13:33:52 +0000 (14:33 +0100)
committerMarek Gradzki <[email protected]>
Fri, 10 Feb 2017 13:50:17 +0000 (14:50 +0100)
Change-Id: Ia6dd23a731b1889f5b69ff1761604c29ff84f03c
Signed-off-by: Marek Gradzki <[email protected]>
dhcp/dhcp-api/asciidoc/Readme.adoc [new file with mode: 0644]
dhcp/dhcp-api/pom.xml [new file with mode: 0644]
dhcp/dhcp-api/src/main/yang/dhcp.yang [new file with mode: 0644]
dhcp/pom.xml [new file with mode: 0644]
pom.xml

diff --git a/dhcp/dhcp-api/asciidoc/Readme.adoc b/dhcp/dhcp-api/asciidoc/Readme.adoc
new file mode 100644 (file)
index 0000000..12e3bcd
--- /dev/null
@@ -0,0 +1,14 @@
+= dhcp-api
+
+Provides YANG model that defines DHCP configuration for VPP.
+
+Currently only DHCP relay configuration is supported.
+
+Operational data model is not supported
+(there is no binary API for reading DHCP configuration).
+
+== Notes on model
+* DHCP relay configuration is based on dhcp_proxy_config_2 message API:
+  https://git.fd.io/vpp/tree/src/vnet/dhcp/dhcp.api#n48
+* More info regarding functionality provided by VPP can be found
+  at https://docs.fd.io/vpp/17.04/clicmd_src_vnet_dhcp.html#clicmd_set_dhcp_proxy
diff --git a/dhcp/dhcp-api/pom.xml b/dhcp/dhcp-api/pom.xml
new file mode 100644 (file)
index 0000000..bbeb988
--- /dev/null
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017 Cisco and/or its affiliates.
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <groupId>io.fd.honeycomb.common</groupId>
+    <artifactId>api-parent</artifactId>
+    <version>1.17.04-SNAPSHOT</version>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>io.fd.hc2vpp.dhcp</groupId>
+  <artifactId>dhcp-api</artifactId>
+  <name>dhcp-api</name>
+  <version>1.17.04-SNAPSHOT</version>
+  <packaging>bundle</packaging>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.opendaylight.mdsal.model</groupId>
+      <artifactId>iana-if-type-2014-05-08</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.mdsal.model</groupId>
+      <artifactId>ietf-yang-types-20130715</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.mdsal.model</groupId>
+      <artifactId>ietf-interfaces</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.mdsal.model</groupId>
+      <artifactId>ietf-inet-types-2013-07-15</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.mdsal.model</groupId>
+      <artifactId>yang-ext</artifactId>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/dhcp/dhcp-api/src/main/yang/dhcp.yang b/dhcp/dhcp-api/src/main/yang/dhcp.yang
new file mode 100644 (file)
index 0000000..281c504
--- /dev/null
@@ -0,0 +1,89 @@
+module dhcp {
+
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:vpp:dhcp";
+    prefix "dhcp";
+
+    description
+        "This YANG module defines the generic configuration and
+        operational data for dhcp in VPP";
+
+    revision "2017-03-15" {
+        description
+            "Initial revision of dhcp model";
+    }
+
+    import ietf-inet-types {
+        prefix inet;
+    }
+
+    identity address-family {
+        description
+            "Base identity from which identities describing address
+            families are derived.";
+    }
+
+    identity ipv4 {
+        base address-family;
+        description
+            "This identity represents IPv4 address family.";
+    }
+
+    identity ipv6 {
+        base address-family;
+        description
+            "This identity represents IPv6 address family.";
+    }
+
+    typedef address-type {
+        type identityref {
+            base address-family;
+        }
+    }
+
+    grouping relay-attributes {
+        leaf server-address {
+            type inet:ip-address-no-zone;
+            mandatory true;
+            description
+                "IP address of the server DHCP packets will be forwarded to.";
+        }
+        leaf server-vrf-id {
+            type uint32;
+            default 0;
+            description
+                "Used to send DHCP messages to the server";
+        }
+        leaf gateway-address {
+            type inet:ip-address-no-zone;
+            mandatory true;
+            description
+                "IP address of the relay agent.";
+        }
+        leaf insert-circuit-id {
+            type boolean;
+            default true;
+        }
+    }
+
+    grouping dhcp-attributes {
+        container relays {
+            list relay {
+                key "address-type rx-vrf-id";
+                leaf address-type {
+                    type address-type;
+                }
+                leaf rx-vrf-id {
+                    type uint32;
+                    description
+                        "Used to receive DHCP messages from clients.";
+                }
+                uses relay-attributes;
+            }
+        }
+    }
+
+    container dhcp {
+        uses dhcp-attributes;
+    }
+}
\ No newline at end of file
diff --git a/dhcp/pom.xml b/dhcp/pom.xml
new file mode 100644 (file)
index 0000000..d6e5652
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017 Cisco and/or its affiliates.
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <groupId>io.fd.hc2vpp.dhcp</groupId>
+
+  <parent>
+    <artifactId>hc2vpp-aggregator</artifactId>
+    <groupId>io.fd.hc2vpp</groupId>
+    <version>1.17.04-SNAPSHOT</version>
+  </parent>
+  <artifactId>dhcp-aggregator</artifactId>
+  <version>1.17.04-SNAPSHOT</version>
+  <name>dhcp-aggregator</name>
+  <packaging>pom</packaging>
+  <modelVersion>4.0.0</modelVersion>
+
+  <modules>
+    <module>dhcp-api</module>
+  </modules>
+
+  <!-- DO NOT install or deploy the repo root pom as it's only needed to initiate a build -->
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-deploy-plugin</artifactId>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-install-plugin</artifactId>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/pom.xml b/pom.xml
index 434eefc..b7e4f70 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -45,5 +45,6 @@
     <module>release-notes</module>
     <module>vpp-integration</module>
     <module>acl</module>
+    <module>dhcp</module>
   </modules>
 </project>
\ No newline at end of file