summaryrefslogtreecommitdiffstats
path: root/examples/ncclient/nat
diff options
context:
space:
mode:
authorMarek Gradzki <mgradzki@cisco.com>2018-04-18 08:19:36 +0200
committerMarek Gradzki <mgradzki@cisco.com>2018-05-02 10:00:35 +0000
commit9f9d2614ff5bd0d2a1729d1793a9bd6ca3def717 (patch)
treeef26ca2c2b20f58b77244f8dafec75a5f3346e2d /examples/ncclient/nat
parent52ca7c2e86cf982bf1cd4aaea8869555fea0aa4a (diff)
HC2VPP-313: <copy-config> examples using nnclient library
Shows how to configure VPP using nnclient library. Requires following changes to ODL Netconf (HC2VPP-312): - <copy-config> support: https://git.opendaylight.org/gerrit/#/c/69606/ - various fixes to make ODL Netconf compatible with nnclient: https://git.opendaylight.org/gerrit/#/c/71181/ and ncclient library with the following change: https://github.com/marekgr/ncclient/commit/fbc31b06daf114c11dcb6bf1bcfac9127b2e0062 Change-Id: I3dceb8ead6e6f558a3c76f6c1c3b0ba5f7c52f93 Signed-off-by: Marek Gradzki <mgradzki@cisco.com> (cherry picked from commit 2e96f3423a2619cd2aa9d188de513723416c15e6)
Diffstat (limited to 'examples/ncclient/nat')
-rw-r--r--examples/ncclient/nat/copy_config_nat.xml82
-rw-r--r--examples/ncclient/nat/copy_config_nat_update.xml103
-rw-r--r--examples/ncclient/nat/expected_config_nat.xml82
-rw-r--r--examples/ncclient/nat/expected_config_nat_update.xml103
-rwxr-xr-xexamples/ncclient/nat/test_nat.sh18
-rwxr-xr-xexamples/ncclient/nat/test_nat_update.sh20
6 files changed, 408 insertions, 0 deletions
diff --git a/examples/ncclient/nat/copy_config_nat.xml b/examples/ncclient/nat/copy_config_nat.xml
new file mode 100644
index 000000000..d1441b07f
--- /dev/null
+++ b/examples/ncclient/nat/copy_config_nat.xml
@@ -0,0 +1,82 @@
+<!--
+ ~ Copyright (c) 2018 Cisco Systems, Inc. and others. All rights reserved.
+ ~
+ ~ This program and the accompanying materials are made available under the
+ ~ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ ~ and is available at http://www.eclipse.org/legal/epl-v10.html
+ -->
+<config>
+ <nat-config xmlns="urn:ietf:params:xml:ns:yang:ietf-nat">
+ <nat-instances>
+ <nat-instance>
+ <id>0</id>
+ <external-ip-address-pool>
+ <pool-id>2</pool-id>
+ <external-ip-pool>172.16.2.123/32</external-ip-pool>
+ </external-ip-address-pool>
+ <external-ip-address-pool>
+ <pool-id>3</pool-id>
+ <external-ip-pool>10.10.10.1/30</external-ip-pool>
+ <pool-type xmlns="urn:opendaylight:params:xml:ns:yang:vpp:nat">nat64</pool-type>
+ </external-ip-address-pool>
+ <external-ip-address-pool>
+ <pool-id>1</pool-id>
+ <external-ip-pool>172.16.2.0/30</external-ip-pool>
+ </external-ip-address-pool>
+ <mapping-table>
+ <mapping-entry>
+ <index>1</index>
+ <external-src-address>10.1.1.3</external-src-address>
+ <type>static</type>
+ <transport-protocol>6</transport-protocol>
+ <external-src-port>
+ <single-port-number>5678</single-port-number>
+ </external-src-port>
+ <internal-src-port>
+ <single-port-number>1234</single-port-number>
+ </internal-src-port>
+ <internal-src-address>2001:db8:85a3::8a2e:370:7334</internal-src-address>
+ </mapping-entry>
+ </mapping-table>
+ <nat64-prefixes>
+ <nat64-prefix-id>0</nat64-prefix-id>
+ <nat64-prefix>2001:db8:122:300::/56</nat64-prefix>
+ </nat64-prefixes>
+ </nat-instance>
+ </nat-instances>
+ </nat-config>
+ <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
+ <interface>
+ <name>local0</name>
+ <type xmlns:x="urn:ietf:params:xml:ns:yang:iana-if-type">x:ethernetCsmacd</type>
+ <enabled>false</enabled>
+ </interface>
+ <interface>
+ <name>loop1</name>
+ <description>for testing purposes</description>
+ <type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:loopback</type>
+ <loopback xmlns="urn:opendaylight:params:xml:ns:yang:v3po">
+ <mac>01:ff:ff:ff:ff:ff</mac>
+ </loopback>
+ <nat xmlns="urn:opendaylight:params:xml:ns:yang:interface:nat">
+ <outbound>
+ <post-routing>true</post-routing>
+ </outbound>
+ </nat>
+ </interface>
+ <interface>
+ <name>loop0</name>
+ <description>for testing purposes</description>
+ <type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:loopback</type>
+ <loopback xmlns="urn:opendaylight:params:xml:ns:yang:v3po">
+ <mac>00:ff:ff:ff:ff:ff</mac>
+ </loopback>
+ <nat xmlns="urn:opendaylight:params:xml:ns:yang:interface:nat">
+ <inbound>
+ <nat64-support>true</nat64-support>
+ <nat44-support>false</nat44-support>
+ </inbound>
+ </nat>
+ </interface>
+ </interfaces>
+</config>
diff --git a/examples/ncclient/nat/copy_config_nat_update.xml b/examples/ncclient/nat/copy_config_nat_update.xml
new file mode 100644
index 000000000..6b346cf80
--- /dev/null
+++ b/examples/ncclient/nat/copy_config_nat_update.xml
@@ -0,0 +1,103 @@
+<!--
+ ~ Copyright (c) 2018 Cisco Systems, Inc. and others. All rights reserved.
+ ~
+ ~ This program and the accompanying materials are made available under the
+ ~ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ ~ and is available at http://www.eclipse.org/legal/epl-v10.html
+ -->
+<config>
+ <nat-config xmlns="urn:ietf:params:xml:ns:yang:ietf-nat">
+ <nat-instances>
+ <nat-instance>
+ <id>0</id>
+ <external-ip-address-pool>
+ <pool-id>2</pool-id>
+ <external-ip-pool>172.15.2.123/32</external-ip-pool>
+ </external-ip-address-pool>
+ <external-ip-address-pool>
+ <pool-id>3</pool-id>
+ <external-ip-pool>10.10.10.1/30</external-ip-pool>
+ <pool-type xmlns="urn:opendaylight:params:xml:ns:yang:vpp:nat">nat64</pool-type>
+ </external-ip-address-pool>
+ <external-ip-address-pool>
+ <pool-id>5</pool-id>
+ <external-ip-pool>172.16.2.0/30</external-ip-pool>
+ </external-ip-address-pool>
+ <external-ip-address-pool>
+ <pool-id>6</pool-id>
+ <external-ip-pool>1.2.3.4/32</external-ip-pool>
+ <pool-type xmlns="urn:opendaylight:params:xml:ns:yang:vpp:nat">nat64</pool-type>
+ </external-ip-address-pool>
+ <mapping-table>
+ <mapping-entry>
+ <index>1</index>
+ <external-src-address>10.1.1.3</external-src-address>
+ <type>static</type>
+ <transport-protocol>6</transport-protocol>
+ <external-src-port>
+ <single-port-number>5678</single-port-number>
+ </external-src-port>
+ <internal-src-port>
+ <single-port-number>1234</single-port-number>
+ </internal-src-port>
+ <internal-src-address>2001:db8:85a3::8a2e:370:7334</internal-src-address>
+ </mapping-entry>
+ </mapping-table>
+ <nat64-prefixes>
+ <nat64-prefix-id>0</nat64-prefix-id>
+ <nat64-prefix>2001:db8:122:300::/56</nat64-prefix>
+ </nat64-prefixes>
+ </nat-instance>
+ </nat-instances>
+ </nat-config>
+ <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
+ <interface>
+ <name>local0</name>
+ <type xmlns:x="urn:ietf:params:xml:ns:yang:iana-if-type">x:ethernetCsmacd</type>
+ <enabled>false</enabled>
+ </interface>
+ <interface>
+ <name>loop3</name>
+ <description>for testing purposes</description>
+ <type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:loopback</type>
+ <loopback xmlns="urn:opendaylight:params:xml:ns:yang:v3po">
+ <mac>03:ff:ff:ff:ff:ff</mac>
+ </loopback>
+ <nat xmlns="urn:opendaylight:params:xml:ns:yang:interface:nat">
+ <outbound>
+ <post-routing>true</post-routing>
+ </outbound>
+ </nat>
+ </interface>
+ <interface>
+ <name>loop2</name>
+ <description>for testing purposes</description>
+ <type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:loopback</type>
+ <loopback xmlns="urn:opendaylight:params:xml:ns:yang:v3po">
+ <mac>02:ff:ff:ff:ff:ff</mac>
+ </loopback>
+ <nat xmlns="urn:opendaylight:params:xml:ns:yang:interface:nat">
+ <inbound>
+ <nat64-support>true</nat64-support>
+ <nat44-support>false</nat44-support>
+ </inbound>
+ </nat>
+ </interface>
+ <interface>
+ <name>loop1</name>
+ <description>for testing purposes</description>
+ <type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:loopback</type>
+ <loopback xmlns="urn:opendaylight:params:xml:ns:yang:v3po">
+ <mac>01:ff:ff:ff:ff:ff</mac>
+ </loopback>
+ </interface>
+ <interface>
+ <name>loop0</name>
+ <description>for testing purposes</description>
+ <type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:loopback</type>
+ <loopback xmlns="urn:opendaylight:params:xml:ns:yang:v3po">
+ <mac>00:ff:ff:ff:ff:ff</mac>
+ </loopback>
+ </interface>
+ </interfaces>
+</config>
diff --git a/examples/ncclient/nat/expected_config_nat.xml b/examples/ncclient/nat/expected_config_nat.xml
new file mode 100644
index 000000000..35a51bc1e
--- /dev/null
+++ b/examples/ncclient/nat/expected_config_nat.xml
@@ -0,0 +1,82 @@
+<!--
+ ~ Copyright (c) 2018 Cisco Systems, Inc. and others. All rights reserved.
+ ~
+ ~ This program and the accompanying materials are made available under the
+ ~ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ ~ and is available at http://www.eclipse.org/legal/epl-v10.html
+ -->
+<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <nat-config xmlns="urn:ietf:params:xml:ns:yang:ietf-nat">
+ <nat-instances>
+ <nat-instance>
+ <id>0</id>
+ <external-ip-address-pool>
+ <pool-id>2</pool-id>
+ <external-ip-pool>172.16.2.123/32</external-ip-pool>
+ </external-ip-address-pool>
+ <external-ip-address-pool>
+ <pool-id>3</pool-id>
+ <external-ip-pool>10.10.10.1/30</external-ip-pool>
+ <pool-type xmlns="urn:opendaylight:params:xml:ns:yang:vpp:nat">nat64</pool-type>
+ </external-ip-address-pool>
+ <external-ip-address-pool>
+ <pool-id>1</pool-id>
+ <external-ip-pool>172.16.2.0/30</external-ip-pool>
+ </external-ip-address-pool>
+ <mapping-table>
+ <mapping-entry>
+ <index>1</index>
+ <external-src-address>10.1.1.3</external-src-address>
+ <type>static</type>
+ <transport-protocol>6</transport-protocol>
+ <external-src-port>
+ <single-port-number>5678</single-port-number>
+ </external-src-port>
+ <internal-src-port>
+ <single-port-number>1234</single-port-number>
+ </internal-src-port>
+ <internal-src-address>2001:db8:85a3::8a2e:370:7334</internal-src-address>
+ </mapping-entry>
+ </mapping-table>
+ <nat64-prefixes>
+ <nat64-prefix-id>0</nat64-prefix-id>
+ <nat64-prefix>2001:db8:122:300::/56</nat64-prefix>
+ </nat64-prefixes>
+ </nat-instance>
+ </nat-instances>
+ </nat-config>
+ <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
+ <interface>
+ <name>local0</name>
+ <type xmlns:x="urn:ietf:params:xml:ns:yang:iana-if-type">x:ethernetCsmacd</type>
+ <enabled>false</enabled>
+ </interface>
+ <interface>
+ <name>loop1</name>
+ <description>for testing purposes</description>
+ <type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:loopback</type>
+ <loopback xmlns="urn:opendaylight:params:xml:ns:yang:v3po">
+ <mac>01:ff:ff:ff:ff:ff</mac>
+ </loopback>
+ <nat xmlns="urn:opendaylight:params:xml:ns:yang:interface:nat">
+ <outbound>
+ <post-routing>true</post-routing>
+ </outbound>
+ </nat>
+ </interface>
+ <interface>
+ <name>loop0</name>
+ <description>for testing purposes</description>
+ <type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:loopback</type>
+ <loopback xmlns="urn:opendaylight:params:xml:ns:yang:v3po">
+ <mac>00:ff:ff:ff:ff:ff</mac>
+ </loopback>
+ <nat xmlns="urn:opendaylight:params:xml:ns:yang:interface:nat">
+ <inbound>
+ <nat64-support>true</nat64-support>
+ <nat44-support>false</nat44-support>
+ </inbound>
+ </nat>
+ </interface>
+ </interfaces>
+</data>
diff --git a/examples/ncclient/nat/expected_config_nat_update.xml b/examples/ncclient/nat/expected_config_nat_update.xml
new file mode 100644
index 000000000..41891e088
--- /dev/null
+++ b/examples/ncclient/nat/expected_config_nat_update.xml
@@ -0,0 +1,103 @@
+<!--
+ ~ Copyright (c) 2018 Cisco Systems, Inc. and others. All rights reserved.
+ ~
+ ~ This program and the accompanying materials are made available under the
+ ~ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ ~ and is available at http://www.eclipse.org/legal/epl-v10.html
+ -->
+<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <nat-config xmlns="urn:ietf:params:xml:ns:yang:ietf-nat">
+ <nat-instances>
+ <nat-instance>
+ <id>0</id>
+ <external-ip-address-pool>
+ <pool-id>6</pool-id>
+ <external-ip-pool>1.2.3.4/32</external-ip-pool>
+ <pool-type xmlns="urn:opendaylight:params:xml:ns:yang:vpp:nat">nat64</pool-type>
+ </external-ip-address-pool>
+ <external-ip-address-pool>
+ <pool-id>5</pool-id>
+ <external-ip-pool>172.16.2.0/30</external-ip-pool>
+ </external-ip-address-pool>
+ <external-ip-address-pool>
+ <pool-id>2</pool-id>
+ <external-ip-pool>172.15.2.123/32</external-ip-pool>
+ </external-ip-address-pool>
+ <external-ip-address-pool>
+ <pool-id>3</pool-id>
+ <external-ip-pool>10.10.10.1/30</external-ip-pool>
+ <pool-type xmlns="urn:opendaylight:params:xml:ns:yang:vpp:nat">nat64</pool-type>
+ </external-ip-address-pool>
+ <mapping-table>
+ <mapping-entry>
+ <index>1</index>
+ <external-src-address>10.1.1.3</external-src-address>
+ <type>static</type>
+ <transport-protocol>6</transport-protocol>
+ <external-src-port>
+ <single-port-number>5678</single-port-number>
+ </external-src-port>
+ <internal-src-port>
+ <single-port-number>1234</single-port-number>
+ </internal-src-port>
+ <internal-src-address>2001:db8:85a3::8a2e:370:7334</internal-src-address>
+ </mapping-entry>
+ </mapping-table>
+ <nat64-prefixes>
+ <nat64-prefix-id>0</nat64-prefix-id>
+ <nat64-prefix>2001:db8:122:300::/56</nat64-prefix>
+ </nat64-prefixes>
+ </nat-instance>
+ </nat-instances>
+ </nat-config>
+ <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
+ <interface>
+ <name>local0</name>
+ <type xmlns:x="urn:ietf:params:xml:ns:yang:iana-if-type">x:ethernetCsmacd</type>
+ <enabled>false</enabled>
+ </interface>
+ <interface>
+ <name>loop1</name>
+ <description>for testing purposes</description>
+ <type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:loopback</type>
+ <loopback xmlns="urn:opendaylight:params:xml:ns:yang:v3po">
+ <mac>01:ff:ff:ff:ff:ff</mac>
+ </loopback>
+ </interface>
+ <interface>
+ <name>loop2</name>
+ <description>for testing purposes</description>
+ <type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:loopback</type>
+ <loopback xmlns="urn:opendaylight:params:xml:ns:yang:v3po">
+ <mac>02:ff:ff:ff:ff:ff</mac>
+ </loopback>
+ <nat xmlns="urn:opendaylight:params:xml:ns:yang:interface:nat">
+ <inbound>
+ <nat64-support>true</nat64-support>
+ <nat44-support>false</nat44-support>
+ </inbound>
+ </nat>
+ </interface>
+ <interface>
+ <name>loop3</name>
+ <description>for testing purposes</description>
+ <type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:loopback</type>
+ <loopback xmlns="urn:opendaylight:params:xml:ns:yang:v3po">
+ <mac>03:ff:ff:ff:ff:ff</mac>
+ </loopback>
+ <nat xmlns="urn:opendaylight:params:xml:ns:yang:interface:nat">
+ <outbound>
+ <post-routing>true</post-routing>
+ </outbound>
+ </nat>
+ </interface>
+ <interface>
+ <name>loop0</name>
+ <description>for testing purposes</description>
+ <type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:loopback</type>
+ <loopback xmlns="urn:opendaylight:params:xml:ns:yang:v3po">
+ <mac>00:ff:ff:ff:ff:ff</mac>
+ </loopback>
+ </interface>
+ </interfaces>
+</data>
diff --git a/examples/ncclient/nat/test_nat.sh b/examples/ncclient/nat/test_nat.sh
new file mode 100755
index 000000000..272a1d6d9
--- /dev/null
+++ b/examples/ncclient/nat/test_nat.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+#
+# Copyright (c) 2018 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.
+
+DIR_NAME=$(dirname $0)
+
+${DIR_NAME}/../test_copy_config.sh ${DIR_NAME}/copy_config_nat.xml ${DIR_NAME}/expected_config_nat.xml
diff --git a/examples/ncclient/nat/test_nat_update.sh b/examples/ncclient/nat/test_nat_update.sh
new file mode 100755
index 000000000..b37e4c6a9
--- /dev/null
+++ b/examples/ncclient/nat/test_nat_update.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Copyright (c) 2018 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.
+
+DIR_NAME=$(dirname $0)
+
+${DIR_NAME}/../test_copy_config.sh ${DIR_NAME}/copy_config_nat.xml ${DIR_NAME}/expected_config_nat.xml
+
+${DIR_NAME}/../test_copy_config.sh ${DIR_NAME}/copy_config_nat_update.xml ${DIR_NAME}/expected_config_nat_update.xml