summaryrefslogtreecommitdiffstats
path: root/mpls
diff options
context:
space:
mode:
authorMichal Cmarada <michal.cmarada@pantheon.tech>2018-05-11 12:16:10 +0200
committerMarek Gradzki <mgradzki@cisco.com>2018-05-11 11:02:10 +0000
commit149d172a8d41dc02bd9ae47ff5db76ba751900b4 (patch)
tree26f50ed162bfcc124627658350e8e49405e45f2e /mpls
parent6e6b56482dddb1575820b62ae4a39b6006293e9a (diff)
HC2VPP-297 - MPLS model updates
This patch updates MPLS models to: - hc2vpp-ietf-mpls-static@2017-07-02.yang (draft at: https://tools.ietf.org/html/draft-ietf-mpls-static-yang-05) Due to odl bugs these models were changed, see HC2VPP-307 for more details. see mpls_postman_collection.json for examples and usage Summary of changes: - leaf operation in static-lsp->config was replaced with mpls-operations-type - paths were refactored and moved to static-lsp - outgoing-labels container was introduced in static-lsp->paths - MPLS docker demo was updated to reflect model changes Change-Id: I725ec5e4b3a1acea2aeabec41185949fc498ff26 Signed-off-by: Michal Cmarada <michal.cmarada@pantheon.tech>
Diffstat (limited to 'mpls')
-rwxr-xr-x[-rw-r--r--]mpls/api/src/main/yang/hc2vpp-ietf-mpls-static@2017-07-02.yang (renamed from mpls/api/src/main/yang/hc2vpp-ietf-mpls-static@2017-03-10.yang)290
-rw-r--r--mpls/api/src/main/yang/vpp-mpls@2017-11-20.yang2
-rw-r--r--mpls/impl/src/main/java/io/fd/hc2vpp/mpls/ImposeAndForwardWriter.java57
-rw-r--r--mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java5
-rw-r--r--mpls/impl/src/main/java/io/fd/hc2vpp/mpls/LspWriter.java2
-rw-r--r--mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsInSegmentTranslator.java8
-rw-r--r--mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsLookupWriter.java8
-rw-r--r--mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsSwapWriter.java20
-rw-r--r--mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsWriterFactory.java38
-rw-r--r--mpls/impl/src/main/java/io/fd/hc2vpp/mpls/StaticLspCustomizer.java19
-rw-r--r--mpls/impl/src/test/java/io/fd/hc2vpp/mpls/ImposeAndForwardTest.java120
-rw-r--r--mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndIpv4LookupTest.java32
-rw-r--r--mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndMplsLookupTest.java28
-rw-r--r--mpls/impl/src/test/java/io/fd/hc2vpp/mpls/SwapAndForwardTest.java49
-rwxr-xr-x[-rw-r--r--]mpls/mpls_postman_collection.json690
15 files changed, 794 insertions, 574 deletions
diff --git a/mpls/api/src/main/yang/hc2vpp-ietf-mpls-static@2017-03-10.yang b/mpls/api/src/main/yang/hc2vpp-ietf-mpls-static@2017-07-02.yang
index ae8688bbd..9da4bb942 100644..100755
--- a/mpls/api/src/main/yang/hc2vpp-ietf-mpls-static@2017-03-10.yang
+++ b/mpls/api/src/main/yang/hc2vpp-ietf-mpls-static@2017-07-02.yang
@@ -8,10 +8,13 @@ module hc2vpp-ietf-mpls-static {
prefix mpls;
}
-/*
- TODO: changed to modified version of ietf-routing that we use
- Set back to ietf-routing after HC2VPP-253 is resolved.
-*/
+ /*
+ TODO: HC2VPP-307 - Remove workarounds for ODL bugs from ietf-mpls YANG.
+ */
+ /*
+ TODO: changed to modified version of ietf-routing that we use
+ Set back to ietf-routing after HC2VPP-298 is resolved.
+ */
import hc2vpp-ietf-routing {
prefix "rt";
}
@@ -53,7 +56,6 @@ module hc2vpp-ietf-mpls-static {
WG Chair: Ross Callon
<mailto:rcallon@juniper.net>
-
WG Chair: George Swallow
<mailto:swallow.ietf@gmail.com>
@@ -93,9 +95,9 @@ module hc2vpp-ietf-mpls-static {
/*
TODO: 2017-07-02 defines grouping in-segment but does not use it.
- Bump to newer version after the issue is resolved.
+ Bump to newer version after HC2VPP-306 is resolved.
*/
- revision "2017-03-10" {
+ revision "2017-07-02" {
description
"Latest revision:
- Addressed MPLS-RT review comments";
@@ -112,6 +114,35 @@ module hc2vpp-ietf-mpls-static {
configured static LSP.";
}
+ typedef mpls-operations-type {
+ type enumeration {
+ enum impose-and-forward {
+ description
+ "Operation impose outgoing label(s) and forward to
+ next-hop";
+ }
+ enum pop-and-forward {
+ description
+ "Operation pop incoming label and forward to next-hop";
+ }
+ enum pop-impose-and-forward {
+ description
+ "Operation pop incoming label, impose one or more
+ outgoing label(s) and forward to next-hop";
+ }
+ enum swap-and-forward {
+ description
+ "Operation swap incoming label, with outgoing label and
+ forward to next-hop";
+ }
+ enum pop-and-lookup {
+ description
+ "Operation pop incoming label and perform a lookup";
+ }
+ }
+ description "MPLS operations types";
+ }
+
grouping path-basic_config {
description "common definitions for statics";
@@ -134,6 +165,53 @@ module hc2vpp-ietf-mpls-static {
}
}
+ grouping path-outgoing-labels_config {
+ description "Path outgoing labels grouping";
+ leaf index {
+ type uint8 {
+ range "0..255";
+ }
+ description
+ "Index of the label. Index 0 indicates
+ top of the label stack";
+ }
+ leaf label {
+ type rt-types:mpls-label;
+ description
+ "The outgoing MPLS labels to impose";
+ }
+ }
+
+ grouping path-outgoing-labels {
+ description "Path outgoing labels grouping";
+ container outgoing-labels {
+ description "List of outgoing labels";
+ list outgoing-labels {
+ key "index";
+ description "Outgoing label list";
+ leaf index {
+ type leafref {
+ path "../config/index";
+ }
+ description
+ "Index of the label. Index 0 indicates
+ top of the label stack";
+ }
+ container config {
+ description
+ "Configuration intended parameters";
+ uses path-outgoing-labels_config;
+ }
+ container state {
+ config false;
+ description
+ "Configuration applied parameters and state";
+ uses path-outgoing-labels_config;
+ }
+ }
+ }
+ }
+
grouping path-properties_config {
description
"MPLS path properties";
@@ -155,13 +233,6 @@ module hc2vpp-ietf-mpls-static {
"The address of the next-hop";
}
- leaf-list outgoing-labels {
- type rt-types:mpls-label;
- ordered-by user;
- description
- "The outgoing MPLS labels to impose";
- }
-
leaf outgoing-interface {
type if:interface-ref;
description
@@ -197,103 +268,148 @@ module hc2vpp-ietf-mpls-static {
}
}
- grouping static-lsp_config {
- description "common definitions for static LSPs";
-
- container in-segment {
- description
- "MPLS incoming segment";
- choice type {
- description
- "Basic FEC choice";
- case ip-prefix {
- leaf ip-prefix {
- type inet:ip-prefix;
- description "An IP prefix";
+ grouping static-lsp-paths {
+ description "Static LSP path grouping";
+ choice out-segment {
+ description "The MPLS out-segment type choice";
+ case simple-path {
+ container simple-path {
+ description "Simple path container";
+ container config {
+ description
+ "Holds the intended configuration";
+ uses path-basic_config;
}
- }
- case mpls-label {
- leaf incoming-label {
- type rt-types:mpls-label;
- description "label value on the incoming packet";
+ container state {
+ config false;
+ description
+ "Holds the state and inuse configuration";
+ uses path-basic_config;
}
}
- /*
- Currently not supported. Commented out due to ODL issues (MDSAL-182, YANGTOOLS-677).
- case tunnel {
- leaf tunnel {
- type te:tunnel-ref;
- description "TE tunnel FEC mapping";
+ }
+ case multiple-paths {
+ container paths {
+ description "List of outgoing paths";
+ list path {
+ key path-index;
+ description
+ "The list of MPLS paths associated with the FEC";
+ leaf path-index {
+ type leafref {
+ path "../config/path-index";
+ }
+ description "Index of the path";
+ }
+ container config {
+ description
+ "Holds the intended configuration";
+ uses path-properties_config;
+ }
+ container state {
+ config false;
+ description
+ "Holds the state and inuse configuration";
+ uses path-properties_config;
+ }
}
+ uses path-outgoing-labels;
}
- */
- }
- leaf incoming-interface {
- type if:interface-ref;
- description
- "Optional incoming interface if FEC is restricted
- to traffic incoming on a specific interface";
}
}
+ }
- leaf operation {
- type enumeration {
- enum impose-and-forward {
- description
- "Operation impose outgoing label(s) and forward to
- next-hop";
- }
- enum pop-and-forward {
- description
- "Operation pop incoming label and forward to next-hop";
- }
- enum pop-impose-and-forward {
- description
- "Operation pop incoming label, impose one or more
- outgoing label(s) and forward to next-hop";
+ grouping in-segment_config {
+ description "In-segment grouping";
+ choice type {
+ description
+ "Basic FEC choice";
+ case ip-prefix {
+ leaf ip-prefix {
+ type inet:ip-prefix;
+ description "An IP prefix";
}
- enum swap-and-forward {
- description
- "Operation swap incoming label, with outgoing label and
- forward to next-hop";
+ }
+ case mpls-label {
+ leaf incoming-label {
+ type rt-types:mpls-label;
+ description "label value on the incoming packet";
}
- enum pop-and-lookup {
- description
- "Operation pop incoming label and perform a lookup";
+ }
+ /* Import TE generic types */
+ /*
+ Yangtools has some issues with ietf-te model.
+ There is no plan to support tunnels currently, so we simply comment this out.
+ TODO: remove comment after following issues are resolved:
+ https://jira.opendaylight.org/browse/MDSAL-182
+ https://jira.opendaylight.org/browse/YANGTOOLS-677
+
+ case tunnel {
+ leaf tunnel {
+ type te:tunnel-ref;
+ description "TE tunnel FEC mapping";
}
}
+ */
+ }
+ leaf incoming-interface {
+ type if:interface-ref;
description
- "The MPLS operation to be executed on the incoming packet";
+ "Optional incoming interface if FEC is restricted
+ to traffic incoming on a specific interface";
}
+ }
- choice out-segment {
- description "The MPLS out-segment type choice";
- case simple-path {
- uses path-basic_config;
+ grouping in-segment {
+ description "In-segment grouping";
+ container in-segment {
+ description
+ "MPLS incoming segment";
+ container config {
+ description
+ "Holds the intended configuration";
+ uses in-segment_config;
}
- case path-list {
- list paths {
- key path-index;
- description
- "The list of MPLS paths associated with the FEC";
- uses path-properties_config;
- }
+ container state {
+ config false;
+ description
+ "Holds the state and inuse configuration";
+ uses in-segment_config;
}
}
}
- grouping static-lsp {
- description "grouping for top level list of static LSPs";
+ grouping static-lsp-top_config {
+ description "Static LSP configuration grouping";
+ /*
+ TODO: 2017-07-02 defines grouping in-segment but was not used - HC2VPP-306.
+ Added it here as it was in static-lsp-config in 2017-03-10 revision.
+ This will probably be fixed in next version of this model.
+ */
+ uses in-segment;
+ leaf name {
+ type string;
+ description "name to identify the LSP";
+ }
+ leaf operation {
+ type mpls-operations-type;
+ description
+ "The MPLS operation to be executed on the incoming packet";
+ }
+ }
+
+ grouping static-lsp-top {
+ description "common definitions for static LSPs";
container config {
description
"Holds the intended configuration";
- uses static-lsp_config;
+ uses static-lsp-top_config;
}
container state {
config false;
description
"Holds the state and inuse configuration";
- uses static-lsp_config;
+ uses static-lsp-top_config;
}
}
@@ -305,12 +421,14 @@ module hc2vpp-ietf-mpls-static {
list static-lsp {
key name;
description "list of defined static LSPs";
-
leaf name {
- type string;
+ type leafref {
+ path "../config/name";
+ }
description "name to identify the LSP";
}
- uses static-lsp;
+ uses static-lsp-top;
+ uses static-lsp-paths;
}
}
}
diff --git a/mpls/api/src/main/yang/vpp-mpls@2017-11-20.yang b/mpls/api/src/main/yang/vpp-mpls@2017-11-20.yang
index c417046c0..8b5aa5ee8 100644
--- a/mpls/api/src/main/yang/vpp-mpls@2017-11-20.yang
+++ b/mpls/api/src/main/yang/vpp-mpls@2017-11-20.yang
@@ -15,7 +15,7 @@ module vpp-mpls {
import hc2vpp-ietf-mpls-static {
prefix "mpls-static";
- revision-date 2017-03-10;
+ revision-date 2017-07-02;
}
import yang-ext {
diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/ImposeAndForwardWriter.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/ImposeAndForwardWriter.java
index 5e384305c..6a09b3eb7 100644
--- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/ImposeAndForwardWriter.java
+++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/ImposeAndForwardWriter.java
@@ -31,21 +31,22 @@ import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig.Operation;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.Config;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegment;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.OutSegment;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.Type;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.type.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.PathList;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.SimplePath;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.path.list.Paths;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.OutSegment;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.MultiplePaths;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.SimplePath;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.Paths;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.Config;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegment;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.Type;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.type.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.OutgoingLabels;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204.MplsLabel;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
- * Translates {@link Operation#ImposeAndForward ImposeAndForward} operation to ip_add_del_route API.
+ * Translates {@link MplsOperationsType#ImposeAndForward ImposeAndForward} operation to ip_add_del_route API.
*
* @see <a href="https://git.fd.io/vpp/tree/src/vnet/ip/ip.api">ip_add_del_route</a> definition
*/
@@ -66,7 +67,7 @@ final class ImposeAndForwardWriter implements LspWriter, Ipv4Translator, MplsLab
request.isAdd = booleanToByte(isAdd);
translate(config.getInSegment(), request);
- translate(config.getOutSegment(), request, ctx);
+ translate(data.getOutSegment(), request, ctx);
// default values based on inspecting VPP's CLI and make test code
request.nextHopWeight = 1;
@@ -76,8 +77,9 @@ final class ImposeAndForwardWriter implements LspWriter, Ipv4Translator, MplsLab
}
private void translate(@Nonnull final InSegment inSegment, @Nonnull final IpAddDelRoute request) {
- checkArgument(inSegment != null, "Configuring impose-and-forward, but in-segment is missing.");
- final Type type = inSegment.getType();
+ checkArgument(inSegment.getConfig() != null,
+ "Configuring impose-and-forward, but in-segment config is missing.");
+ final Type type = inSegment.getConfig().getType();
checkArgument(type instanceof IpPrefix, "Only ip-prefix type is supported, but %s given.", type);
// TODO(HC2VPP-264): add support for mpls + v6
@@ -93,8 +95,8 @@ final class ImposeAndForwardWriter implements LspWriter, Ipv4Translator, MplsLab
final String outgoingInterface;
if (outSegment instanceof SimplePath) {
outgoingInterface = translate((SimplePath) outSegment, request);
- } else if (outSegment instanceof PathList) {
- outgoingInterface = translate((PathList) outSegment, request);
+ } else if (outSegment instanceof MultiplePaths) {
+ outgoingInterface = translate((MultiplePaths) outSegment, request);
} else {
throw new IllegalArgumentException("Unsupported out-segment type: " + outSegment);
}
@@ -104,7 +106,7 @@ final class ImposeAndForwardWriter implements LspWriter, Ipv4Translator, MplsLab
}
private String translate(@Nonnull final SimplePath path, @Nonnull final IpAddDelRoute request) {
- final IpAddress nextHop = path.getNextHop();
+ final IpAddress nextHop = path.getSimplePath().getConfig().getNextHop();
// TODO(HC2VPP-264): add support for mpls + v6
if (nextHop != null) {
@@ -115,18 +117,19 @@ final class ImposeAndForwardWriter implements LspWriter, Ipv4Translator, MplsLab
request.nextHopAddress = new byte[0];
}
- final MplsLabel outgoingLabel = path.getOutgoingLabel();
+ final MplsLabel outgoingLabel = path.getSimplePath().getConfig().getOutgoingLabel();
checkArgument(outgoingLabel != null, "Configuring impose-and-forward, but outgoing-label is missing.");
request.nextHopOutLabelStack = new FibMplsLabel[] {translate(outgoingLabel.getValue())};
request.nextHopNOutLabels = 1;
- return path.getOutgoingInterface();
+ return path.getSimplePath().getConfig().getOutgoingInterface();
}
- private String translate(@Nonnull final PathList pathList, @Nonnull final IpAddDelRoute request) {
- checkArgument(pathList.getPaths() != null && pathList.getPaths().size() == 1, "Only single path is supported");
- final Paths paths = pathList.getPaths().get(0);
- final IpAddress nextHop = paths.getNextHop();
+ private String translate(@Nonnull final MultiplePaths pathList, @Nonnull final IpAddDelRoute request) {
+ checkArgument(pathList.getPaths() != null && pathList.getPaths().getPath().size() == 1,
+ "Only single path is supported");
+ final Paths paths = pathList.getPaths();
+ final IpAddress nextHop = paths.getPath().get(0).getConfig().getNextHop();
// TODO(HC2VPP-264): add support for mpls + v6
if (nextHop != null) {
@@ -137,14 +140,14 @@ final class ImposeAndForwardWriter implements LspWriter, Ipv4Translator, MplsLab
request.nextHopAddress = new byte[0];
}
- final List<MplsLabel> labels = paths.getOutgoingLabels();
+ final List<OutgoingLabels> labels = paths.getOutgoingLabels().getOutgoingLabels();
final int numberOfLabels = labels.size();
checkArgument(numberOfLabels > 0 && numberOfLabels < MAX_LABELS, "Number of labels (%s) not in range (0, %s].",
numberOfLabels, MAX_LABELS, numberOfLabels);
request.nextHopNOutLabels = (byte) numberOfLabels;
- request.nextHopOutLabelStack =
- labels.stream().map(label -> translate(label.getValue())).toArray(FibMplsLabel[]::new);
+ request.nextHopOutLabelStack = labels.stream().map(label -> translate(label.getConfig().getLabel().getValue()))
+ .toArray(FibMplsLabel[]::new);
- return paths.getOutgoingInterface();
+ return paths.getPath().get(0).getConfig().getOutgoingInterface();
}
}
diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java
index be26166d3..3b0be1fed 100644
--- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java
+++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java
@@ -24,9 +24,8 @@ import io.fd.vpp.jvpp.core.dto.MplsRouteAddDel;
import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import io.fd.vpp.jvpp.core.types.FibMplsLabel;
import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.Config;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.Config;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.LookupType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.StaticLspVppLookupAugmentation;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/LspWriter.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/LspWriter.java
index 0e68f0c40..7a67b26db 100644
--- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/LspWriter.java
+++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/LspWriter.java
@@ -21,7 +21,7 @@ import io.fd.hc2vpp.common.translate.util.JvppReplyConsumer;
import io.fd.honeycomb.translate.MappingContext;
import io.fd.honeycomb.translate.write.WriteFailedException;
import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsInSegmentTranslator.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsInSegmentTranslator.java
index 9f531bba4..e15e50a7d 100644
--- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsInSegmentTranslator.java
+++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsInSegmentTranslator.java
@@ -20,9 +20,9 @@ import static com.google.common.base.Preconditions.checkArgument;
import io.fd.vpp.jvpp.core.dto.MplsRouteAddDel;
import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegment;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.Type;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.type.MplsLabel;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegment;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.Type;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.type.MplsLabel;
/**
* Mixin that translates {@link InSegment} of {@link MplsLabel} type to {@link MplsRouteAddDel} message.
@@ -30,7 +30,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._stati
interface MplsInSegmentTranslator {
default void translate(@Nonnull final InSegment inSegment, @Nonnull final MplsRouteAddDel request) {
checkArgument(inSegment != null, "Missing in-segment");
- final Type type = inSegment.getType();
+ final Type type = inSegment.getConfig().getType();
checkArgument(type instanceof MplsLabel, "Expecting in-segment of type mpls-label, but %s given.", type);
final Long label = ((MplsLabel) type).getIncomingLabel().getValue();
request.mrLabel = label.intValue();
diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsLookupWriter.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsLookupWriter.java
index 86e7bdee1..c42aedd27 100644
--- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsLookupWriter.java
+++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsLookupWriter.java
@@ -24,15 +24,15 @@ import io.fd.vpp.jvpp.core.dto.MplsRouteAddDel;
import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import io.fd.vpp.jvpp.core.types.FibMplsLabel;
import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.Config;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.Config;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.LookupType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.StaticLspVppLookupAugmentation;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
- * Translates {@link StaticLspConfig.Operation#PopAndLookup} operation with {@link LookupType#Mpls} to
+ * Translates {@link MplsOperationsType#PopAndLookup} operation with {@link LookupType#Mpls} to
* mpls_route_add_del API.
*
* @see <a href="https://git.fd.io/vpp/tree/src/vnet/mpls/mpls.api">mpls_route_add_del</a> definition
diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsSwapWriter.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsSwapWriter.java
index 72d9c65ae..c8b47b8da 100644
--- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsSwapWriter.java
+++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsSwapWriter.java
@@ -29,16 +29,16 @@ import io.fd.vpp.jvpp.core.types.FibMplsLabel;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.Config;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.OutSegment;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.SimplePath;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.OutSegment;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.SimplePath;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.Config;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204.MplsLabel;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
- * Translates {@link StaticLspConfig.Operation#SwapAndForward} operation to mpls_route_add_del API.
+ * Translates {@link MplsOperationsType#SwapAndForward} operation to mpls_route_add_del API.
*
* @see <a href="https://git.fd.io/vpp/tree/src/vnet/mpls/mpls.api">mpls_route_add_del</a> definition
*/
@@ -61,7 +61,7 @@ final class MplsSwapWriter implements LspWriter, Ipv4Translator, MplsInSegmentTr
request.mrEos = 1; // only SWAP for the last label in the stack is currently supported
translate(config.getInSegment(), request);
- translate(config.getOutSegment(), request, ctx);
+ translate(data.getOutSegment(), request, ctx);
// default values based on inspecting VPP's CLI and make test code
request.mrClassifyTableIndex = -1;
@@ -75,7 +75,7 @@ final class MplsSwapWriter implements LspWriter, Ipv4Translator, MplsInSegmentTr
@Nonnull final MappingContext ctx) {
checkArgument(outSegment instanceof SimplePath, "Unsupported out-segment type: %s", outSegment);
final SimplePath path = (SimplePath) outSegment;
- final IpAddress nextHop = path.getNextHop();
+ final IpAddress nextHop = path.getSimplePath().getConfig().getNextHop();
checkArgument(nextHop != null, "Configuring swap-and-forward, but next-hop is missing.");
// TODO(HC2VPP-264): add support for mpls + v6
@@ -83,12 +83,12 @@ final class MplsSwapWriter implements LspWriter, Ipv4Translator, MplsInSegmentTr
checkArgument(address != null, "Only IPv4 next-hop address is supported.");
request.mrNextHop = ipv4AddressNoZoneToArray(address.getValue());
- final MplsLabel outgoingLabel = path.getOutgoingLabel();
+ final MplsLabel outgoingLabel = path.getSimplePath().getConfig().getOutgoingLabel();
checkArgument(outgoingLabel != null, "Configuring swap-and-forward, but outgoing-label is missing.");
request.mrNextHopOutLabelStack = new FibMplsLabel[] {translate(outgoingLabel.getValue())};
request.mrNextHopNOutLabels = 1;
- final String outgoingInterface = path.getOutgoingInterface();
+ final String outgoingInterface = path.getSimplePath().getConfig().getOutgoingInterface();
checkArgument(outgoingInterface != null, "Configuring swap-and-forward, but outgoing-interface is missing.");
request.mrNextHopSwIfIndex = interfaceContext.getIndex(outgoingInterface, ctx);
}
diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsWriterFactory.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsWriterFactory.java
index d81d6fae3..475a06288 100644
--- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsWriterFactory.java
+++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsWriterFactory.java
@@ -27,12 +27,15 @@ import io.fd.honeycomb.translate.write.registry.ModifiableWriterRegistryBuilder;
import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import javax.annotation.Nonnull;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.Mpls1;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.Config;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegment;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.path.list.Paths;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls.StaticLsps;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.Mpls1;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.paths.Path;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.simple.path.SimplePath;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.Paths;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.Config;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegment;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.OutgoingLabels;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls.StaticLsps;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.Routing1;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.interfaces.mpls.Interface;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.routing.Mpls;
@@ -80,10 +83,27 @@ final class MplsWriterFactory implements WriterFactory {
// First enable MPLS on interface, then configure it:
registry.subtreeAddAfter(
ImmutableSet
- .of(CONFIG_ID, InstanceIdentifier.create(StaticLsp.class).child(Config.class).child(InSegment.class),
- InstanceIdentifier.create(StaticLsp.class).child(Config.class).child(Paths.class),
+ .of(CONFIG_ID,
+ InstanceIdentifier.create(StaticLsp.class).child(Config.class).child(InSegment.class),
+ InstanceIdentifier.create(StaticLsp.class)
+ .child(Config.class)
+ .child(InSegment.class)
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.in.segment.Config.class),
InstanceIdentifier.create(StaticLsp.class).child(Config.class)
- .augmentation(StaticLspVppLookupAugmentation.class).child(LabelLookup.class)),
+ .augmentation(StaticLspVppLookupAugmentation.class).child(LabelLookup.class),
+ InstanceIdentifier.create(StaticLsp.class).child(Paths.class),
+ InstanceIdentifier.create(StaticLsp.class).child(Paths.class).child(OutgoingLabels.class),
+ InstanceIdentifier.create(StaticLsp.class).child(Paths.class).child(OutgoingLabels.class)
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.OutgoingLabels.class),
+ InstanceIdentifier.create(StaticLsp.class).child(Paths.class).child(OutgoingLabels.class)
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.OutgoingLabels.class)
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.outgoing.labels.Config.class),
+ InstanceIdentifier.create(StaticLsp.class).child(Paths.class).child(Path.class),
+ InstanceIdentifier.create(StaticLsp.class).child(Paths.class).child(Path.class)
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.paths.path.Config.class),
+ InstanceIdentifier.create(StaticLsp.class).child(SimplePath.class),
+ InstanceIdentifier.create(StaticLsp.class).child(SimplePath.class)
+ .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.simple.path.simple.path.Config.class)),
new GenericWriter<>(STATIC_LSP_ID, new StaticLspCustomizer(vppApi, ifcContext)),
INTERFACE_ID);
}
diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/StaticLspCustomizer.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/StaticLspCustomizer.java
index 6aab1ed42..b97a36974 100644
--- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/StaticLspCustomizer.java
+++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/StaticLspCustomizer.java
@@ -18,9 +18,9 @@ package io.fd.hc2vpp.mpls;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
-import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig.Operation.ImposeAndForward;
-import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig.Operation.PopAndLookup;
-import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig.Operation.SwapAndForward;
+import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType.ImposeAndForward;
+import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType.PopAndLookup;
+import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType.SwapAndForward;
import io.fd.hc2vpp.common.translate.util.NamingContext;
import io.fd.honeycomb.translate.MappingContext;
@@ -29,10 +29,11 @@ import io.fd.honeycomb.translate.write.WriteContext;
import io.fd.honeycomb.translate.write.WriteFailedException;
import io.fd.vpp.jvpp.core.future.FutureJVppCore;
import javax.annotation.Nonnull;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.Config;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspKey;
+
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.Config;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.LookupType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.StaticLspVppLookupAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.VppLabelLookupAttributes;
@@ -41,7 +42,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * Selects specific {@link LspWriter} based on {@link StaticLspConfig.Operation} and {@link LookupType}.
+ * Selects specific {@link LspWriter} based on {@link MplsOperationsType} and {@link LookupType}.
*/
final class StaticLspCustomizer implements ListWriterCustomizer<StaticLsp, StaticLspKey>, LspWriter {
private static final Logger LOG = LoggerFactory.getLogger(StaticLspCustomizer.class);
@@ -93,7 +94,7 @@ final class StaticLspCustomizer implements ListWriterCustomizer<StaticLsp, Stati
@Nonnull final MappingContext ctx, final boolean isAdd) throws WriteFailedException {
final Config config = data.getConfig();
checkArgument(config != null, "Config node of static-lsp is missing.");
- final StaticLspConfig.Operation operation = config.getOperation();
+ final MplsOperationsType operation = config.getOperation();
if (ImposeAndForward.equals(operation)) {
imposeAndForward.write(id, data, ctx, isAdd);
} else if (PopAndLookup.equals(operation)) {
diff --git a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/ImposeAndForwardTest.java b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/ImposeAndForwardTest.java
index ca687b502..12312af37 100644
--- a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/ImposeAndForwardTest.java
+++ b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/ImposeAndForwardTest.java
@@ -36,18 +36,20 @@ import org.junit.Test;
import org.mockito.Mock;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
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.mpls._static.rev170310.Mpls1;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.ConfigBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegmentBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.type.IpPrefixBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.PathListBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.SimplePathBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.path.list.PathsBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls.StaticLsps;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.Mpls1;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.MultiplePathsBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.PathsBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.paths.PathBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.simple.path.SimplePathBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.ConfigBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegmentBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.type.IpPrefixBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.OutgoingLabelsBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls.StaticLsps;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspKey;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.Routing1;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.routing.Mpls;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.Routing;
@@ -73,44 +75,76 @@ public class ImposeAndForwardTest extends WriterCustomizerTest implements ByteDa
private static StaticLsp getSimpleLsp(final long label) {
return getSimpleLsp(label, IpAddressBuilder.getDefaultInstance("5.6.7.8"));
}
- private static StaticLsp getSimpleLsp(final long label,
- final IpAddress nextHop) {
- return new StaticLspBuilder()
- .setName(LSP_NAME)
- .setConfig(new ConfigBuilder()
- .setInSegment(new InSegmentBuilder()
- .setType(new IpPrefixBuilder().setIpPrefix(getDefaultInstance("1.2.3.4/24"))
- .build())
- .build()
- )
- .setOperation(StaticLspConfig.Operation.ImposeAndForward)
- .setOutSegment(new SimplePathBuilder()
- .setNextHop(nextHop)
- .setOutgoingInterface(IF_NAME)
- .setOutgoingLabel(new MplsLabel(label))
+
+ private static StaticLsp getSimpleLsp(final long label, final IpAddress nextHop) {
+ return new StaticLspBuilder().setName(LSP_NAME)
+ .setConfig(new ConfigBuilder().setInSegment(new InSegmentBuilder().setConfig(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.in.segment.ConfigBuilder()
+ .setType(new IpPrefixBuilder().setIpPrefix(getDefaultInstance("1.2.3.4/24")).build())
+ .build())
+ .build())
+ .setOperation(MplsOperationsType.ImposeAndForward)
+ .build())
+ .setOutSegment(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.SimplePathBuilder()
+ .setSimplePath(new SimplePathBuilder().setConfig(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.simple.path.simple.path.ConfigBuilder()
+ .setNextHop(nextHop)
+ .setOutgoingInterface(IF_NAME)
+ .setOutgoingLabel(new MplsLabel(label))
+ .build()).build())
.build())
- .build())
.build();
}
private static StaticLsp getComplexLsp() {
- return new StaticLspBuilder()
- .setName(LSP_NAME)
- .setConfig(new ConfigBuilder()
- .setInSegment(new InSegmentBuilder()
- .setType(new IpPrefixBuilder().setIpPrefix(getDefaultInstance("10.10.24.0/24"))
+ return new StaticLspBuilder().setName(LSP_NAME)
+ .setConfig(
+ new ConfigBuilder()
+ .setInSegment(
+ new InSegmentBuilder()
+ .setConfig(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.in.segment.ConfigBuilder()
+ .setType(
+ new IpPrefixBuilder()
+ .setIpPrefix(getDefaultInstance("10.10.24.0/24"))
+ .build())
+ .build())
+ .build())
+ .setOperation(MplsOperationsType.ImposeAndForward)
+ .build())
+ .setOutSegment(
+ new MultiplePathsBuilder()
+ .setPaths(
+ new PathsBuilder()
+ .setPath(
+ Collections.singletonList(new PathBuilder()
+ .setConfig(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.paths.path.ConfigBuilder()
+ .setNextHop(
+ IpAddressBuilder
+ .getDefaultInstance("10.10.12.2"))
+ .setOutgoingInterface(IF_NAME)
+
+ .build()).build()))
+ .setOutgoingLabels(
+ new OutgoingLabelsBuilder()
+ .setOutgoingLabels(Arrays.asList(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.OutgoingLabelsBuilder()
+ .setIndex((short) 0)
+ .setConfig(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.outgoing.labels.ConfigBuilder()
+ .setLabel(new MplsLabel(102L))
+ .build())
+ .build(),
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.OutgoingLabelsBuilder()
+ .setIndex((short) 1)
+ .setConfig(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.outgoing.labels.ConfigBuilder()
+ .setLabel(new MplsLabel(104L))
+ .build())
+ .build()))
+ .build())
.build())
- .build()
- )
- .setOperation(StaticLspConfig.Operation.ImposeAndForward)
- .setOutSegment(new PathListBuilder()
- .setPaths(Collections.singletonList(new PathsBuilder()
- .setNextHop(IpAddressBuilder.getDefaultInstance("10.10.12.2"))
- .setOutgoingInterface(IF_NAME)
- .setOutgoingLabels(Arrays.asList(new MplsLabel(102L), new MplsLabel(104L)))
- .build()))
.build())
- .build())
.build();
}
diff --git a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndIpv4LookupTest.java b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndIpv4LookupTest.java
index 434f3b91d..627c3294f 100644
--- a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndIpv4LookupTest.java
+++ b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndIpv4LookupTest.java
@@ -30,15 +30,15 @@ import io.fd.vpp.jvpp.core.future.FutureJVppCoreFacade;
import io.fd.vpp.jvpp.core.types.FibMplsLabel;
import org.junit.Test;
import org.mockito.Mock;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.Mpls1;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.ConfigBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegmentBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.type.MplsLabelBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls.StaticLsps;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.Mpls1;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.ConfigBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegmentBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.type.MplsLabelBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls.StaticLsps;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspKey;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.Routing1;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.routing.Mpls;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.Routing;
@@ -72,12 +72,18 @@ public class PopAndIpv4LookupTest extends WriterCustomizerTest implements ByteDa
return new StaticLspBuilder()
.setName(LSP_NAME)
.setConfig(new ConfigBuilder()
- .setInSegment(new InSegmentBuilder()
- .setType(new MplsLabelBuilder().setIncomingLabel(new MplsLabel((long) LOCAL_LABEL))
- .build())
+ .setInSegment(
+ new InSegmentBuilder()
+ .setConfig(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.in.segment.ConfigBuilder()
+ .setType(new MplsLabelBuilder()
+ .setIncomingLabel(new MplsLabel((long) LOCAL_LABEL))
+ .build())
+ .build())
+
.build()
)
- .setOperation(StaticLspConfig.Operation.PopAndLookup)
+ .setOperation(MplsOperationsType.PopAndLookup)
.addAugmentation(StaticLspVppLookupAugmentation.class,
new StaticLspVppLookupAugmentationBuilder()
.setLabelLookup(new LabelLookupBuilder()
diff --git a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndMplsLookupTest.java b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndMplsLookupTest.java
index a6bc3432a..ab069100b 100644
--- a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndMplsLookupTest.java
+++ b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndMplsLookupTest.java
@@ -30,15 +30,15 @@ import io.fd.vpp.jvpp.core.future.FutureJVppCoreFacade;
import io.fd.vpp.jvpp.core.types.FibMplsLabel;
import org.junit.Test;
import org.mockito.Mock;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.Mpls1;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.ConfigBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegmentBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.type.MplsLabelBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls.StaticLsps;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.Mpls1;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.ConfigBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegmentBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.type.MplsLabelBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls.StaticLsps;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspKey;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.Routing1;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.routing.Mpls;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.Routing;
@@ -72,12 +72,16 @@ public class PopAndMplsLookupTest extends WriterCustomizerTest implements ByteDa
return new StaticLspBuilder()
.setName(LSP_NAME)
.setConfig(new ConfigBuilder()
- .setInSegment(new InSegmentBuilder()
- .setType(new MplsLabelBuilder().setIncomingLabel(new MplsLabel((long) LOCAL_LABEL))
+ .setInSegment(new InSegmentBuilder().setConfig(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.in.segment.ConfigBuilder()
+ .setType(
+ new MplsLabelBuilder()
+ .setIncomingLabel(new MplsLabel((long) LOCAL_LABEL))
+ .build())
.build())
.build()
)
- .setOperation(StaticLspConfig.Operation.PopAndLookup)
+ .setOperation(MplsOperationsType.PopAndLookup)
.addAugmentation(StaticLspVppLookupAugmentation.class,
new StaticLspVppLookupAugmentationBuilder()
.setLabelLookup(new LabelLookupBuilder()
diff --git a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/SwapAndForwardTest.java b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/SwapAndForwardTest.java
index 4a962dd9f..677bb0914 100644
--- a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/SwapAndForwardTest.java
+++ b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/SwapAndForwardTest.java
@@ -32,16 +32,16 @@ import io.fd.vpp.jvpp.core.types.FibMplsLabel;
import org.junit.Test;
import org.mockito.Mock;
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.mpls._static.rev170310.Mpls1;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.ConfigBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegmentBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.type.MplsLabelBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.SimplePathBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls.StaticLsps;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.Mpls1;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.SimplePathBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.ConfigBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegmentBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.type.MplsLabelBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls.StaticLsps;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspKey;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.Routing1;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.routing.Mpls;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.Routing;
@@ -73,18 +73,29 @@ public class SwapAndForwardTest extends WriterCustomizerTest implements ByteData
return new StaticLspBuilder()
.setName(LSP_NAME)
.setConfig(new ConfigBuilder()
- .setInSegment(new InSegmentBuilder()
- .setType(new MplsLabelBuilder().setIncomingLabel(new MplsLabel((long) LOCAL_LABEL))
- .build())
+ .setInSegment(
+ new InSegmentBuilder()
+ .setConfig(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.in.segment.ConfigBuilder()
+ .setType(new MplsLabelBuilder().setIncomingLabel(new MplsLabel((long) LOCAL_LABEL))
+ .build())
+ .build())
.build()
)
- .setOperation(StaticLspConfig.Operation.SwapAndForward)
- .setOutSegment(new SimplePathBuilder()
- .setNextHop(IpAddressBuilder.getDefaultInstance("10.10.24.4"))
- .setOutgoingInterface(IF_NAME)
- .setOutgoingLabel(new MplsLabel((long) OUT_LABEL))
- .build())
+ .setOperation(MplsOperationsType.SwapAndForward)
.build())
+ .setOutSegment(
+ new SimplePathBuilder()
+ .setSimplePath(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.simple.path.SimplePathBuilder()
+ .setConfig(
+ new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.simple.path.simple.path.ConfigBuilder()
+ .setNextHop(IpAddressBuilder.getDefaultInstance("10.10.24.4"))
+ .setOutgoingInterface(IF_NAME)
+ .setOutgoingLabel(new MplsLabel((long) OUT_LABEL))
+ .build())
+ .build())
+ .build())
.build();
}
diff --git a/mpls/mpls_postman_collection.json b/mpls/mpls_postman_collection.json
index c40afd791..1bede639b 100644..100755
--- a/mpls/mpls_postman_collection.json
+++ b/mpls/mpls_postman_collection.json
@@ -1,372 +1,396 @@
{
- "id": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "name": "Honeycomb MPLS calls",
- "description": "",
- "order": [
- "e8d94648-0106-feaa-f436-1c0cd327d89c",
- "94581eee-036d-dced-1495-1b5c8c35059d",
- "14fedcfb-faf6-00f5-4673-c1074923b92e",
- "22964c4c-3ba1-39fe-9a24-de6af2ca53a2",
- "48779e1a-5a6d-9e76-c646-8f3eea9433d2",
- "65f84720-3266-322f-9739-af804da451b7",
- "15a16a52-17fe-f50a-a973-90947ef6c625",
- "1b3c51b3-0675-61e3-6670-d8b7fcdd2884",
- "6fcda03b-3efa-3ae9-a1a0-5fafef5732a0",
- "11f04e55-6c1f-38ad-ed12-dab1f1c5df97",
- "15f14fb1-a102-e482-814f-7c8afca13812",
- "5a271f51-ab7e-c007-882b-d5e0a99da138",
- "b98635ba-fc25-feb7-8281-1654a7639ebd",
- "3e9ec3af-3d8b-6b1e-c193-22c702c3e81e",
- "590a3bad-ecbc-7309-1357-50e678036e17",
- "1297c446-dc5f-51b1-3368-9d64e48fff83",
- "27b745d3-2fbe-0f02-d605-904f8188088f"
- ],
- "folders": [],
- "timestamp": 1509091634177,
- "owner": 0,
- "public": false,
- "requests": [
+ "info": {
+ "_postman_id": "a86a2f22-d753-4a4b-a1a4-ade4f9bbfb2f",
+ "name": "Honeycomb MPLS calls",
+ "schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json"
+ },
+ "item": [
{
- "id": "11f04e55-6c1f-38ad-ed12-dab1f1c5df97",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp4",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "PUT",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1511436906647,
- "name": "Swap label and forward",
- "description": "Corresponding CLI command:\n\nmpls local-label add eos 123 via 10.10.24.4 loop0 out-labels 123\n\n\nCan be verified via CLI using:\n\nshow mpls fib 123",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"static-lsp4\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 123\n },\n \"operation\": \"swap-and-forward\",\n \"next-hop\": \"10.10.24.5\",\n \"outgoing-label\": 123,\n \"outgoing-interface\": \"loop0\"\n }\n }\n ]\n}"
+ "name": "Add loopback ifc ",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"loop0\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:loopback\",\r\n \"loopback\" :{\r\n \"mac\" : \"00:ff:ff:ff:ff:ff\"\r\n }\r\n }\r\n ]\r\n \r\n}"
+ },
+ "url": "http://localhost:8183/restconf/config/ietf-interfaces:interfaces/interface/loop0",
+ "description": "Corresponding CLI command:\n\ncreate loop interface"
+ },
+ "response": []
},
{
- "id": "1297c446-dc5f-51b1-3368-9d64e48fff83",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp4",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "DELETE",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1511430765571,
- "name": "Delete label swap FIB entry",
- "description": "Corresponding CLI command:\n\nmpls local-label del eos 123 via 10.10.24.4 loop0 out-labels 123\n\nCan be verified via CLI using:\n\nshow mpls fib",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": ""
+ "name": "List ifcs - cfg",
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}"
+ },
+ "url": "http://localhost:8183/restconf/config/ietf-interfaces:interfaces/"
+ },
+ "response": []
},
{
- "id": "14fedcfb-faf6-00f5-4673-c1074923b92e",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/operational/ietf-interfaces:interfaces-state/",
- "pathVariables": {},
- "preRequestScript": "",
- "method": "GET",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "data": [],
- "dataMode": "raw",
"name": "List ifcs - oper",
- "description": "",
- "descriptionFormat": "html",
- "time": 1509094553742,
- "version": 2,
- "responses": [],
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}"
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}"
+ },
+ "url": "http://localhost:8183/restconf/operational/ietf-interfaces:interfaces-state/"
+ },
+ "response": []
},
{
- "id": "15a16a52-17fe-f50a-a973-90947ef6c625",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp1",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "PUT",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1511436768230,
- "name": "Push two MPLS labels",
- "description": "Corresponding CLI command:\n\nip route add 10.10.24.0/24 via 10.10.12.2 loop1 out-labels 102 104\n\nCan be verified via CLI using:\n\nshow ip fib 10.10.24.0/24",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"static-lsp1\",\n \"config\": {\n \"in-segment\": {\n \"ip-prefix\": \"10.10.24.0/24\"\n },\n \"operation\": \"impose-and-forward\",\n \"paths\": [\n {\n \"path-index\": 0,\n \"next-hop\": \"10.10.12.2\",\n \"outgoing-labels\": [\n 102,\n 104\n ],\n \"outgoing-interface\": \"loop0\"\n }\n ]\n }\n }\n ]\n}"
+ "name": "Enable mpls on loop0 interface",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"interface\": [\n {\n \"name\": \"loop0\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}"
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/loop0",
+ "description": "Correspondig CLI command:\n\nset interface mpls loop0 enable"
+ },
+ "response": []
},
{
- "id": "15f14fb1-a102-e482-814f-7c8afca13812",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "GET",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1509715185345,
- "name": "Get static LSPs (cfg)",
- "description": "",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": ""
+ "name": "Get mpls interfaces (cfg)",
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls"
+ },
+ "response": []
},
{
- "id": "1b3c51b3-0675-61e3-6670-d8b7fcdd2884",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp2",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "PUT",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1511358690276,
- "name": "Pop label and MPLS lookup",
- "description": "Corresponding CLI command:\n\nmpls local-label add non-eos 102 mpls-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 102",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"static-lsp2\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 102\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\" : {\n \"type\": \"mpls\",\n \"mpls-lookup-in-table\": 0\n }\n }\n }\n ]\n}"
+ "name": "Push single MPLS label",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"static-lsp\": [{\n \"name\": \"static-lsp0\",\n \"config\": {\n \"in-segment\": {\n \"config\": {\n \"ip-prefix\": \"10.10.34.0/24\"\n }\n },\n \"operation\": \"impose-and-forward\"\n },\n \"simple-path\": {\n \"config\": {\n \"next-hop\": \"10.10.13.3\",\n \"outgoing-label\": 111,\n \"outgoing-interface\": \"loop0\"\n }\n }\n }]\n}"
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp0",
+ "description": "Corresponding CLI command:\n\nip route add 10.10.34.0/24 via 10.10.13.3 loop0 out-labels 111\n\nCan be verified via CLI using:\n\nshow ip fib 10.10.34.0/24"
+ },
+ "response": []
},
{
- "id": "22964c4c-3ba1-39fe-9a24-de6af2ca53a2",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/loop0",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "PUT",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1511172459957,
- "name": "Enable mpls on loop0 interface",
- "description": "Correspondig CLI command:\n\nset interface mpls loop0 enable",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"loop0\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}"
+ "name": "Push two MPLS labels",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n \"static-lsp\": [{\r\n \"name\": \"static-lsp1\",\r\n \"config\": {\r\n \"in-segment\": {\r\n \"config\": {\r\n \"ip-prefix\": \"10.10.24.0/24\"\r\n }\r\n },\r\n \"operation\": \"impose-and-forward\"\r\n },\r\n \"paths\": {\r\n \"path\": [{\r\n \"path-index\": 0,\r\n \"config\" : {\r\n \"path-index\": 0,\r\n \"next-hop\": \"10.10.12.2\",\r\n \"outgoing-interface\": \"loop0\" \r\n }\r\n }],\r\n \"outgoing-labels\": {\r\n \"outgoing-labels\": [\r\n {\r\n \"index\": 0,\r\n \"config\": {\r\n \"index\": 0,\r\n \"label\": 102\r\n }\r\n },\r\n {\r\n \"index\": 1,\r\n \"config\": {\r\n \"index\": 1,\r\n \"label\": 104\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n }]\r\n}"
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp1",
+ "description": "Corresponding CLI command:\n\nip route add 10.10.24.0/24 via 10.10.12.2 loop1 out-labels 102 104\n\nCan be verified via CLI using:\n\nshow ip fib 10.10.24.0/24"
+ },
+ "response": []
},
{
- "id": "27b745d3-2fbe-0f02-d605-904f8188088f",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/loop0",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "DELETE",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1511172494988,
- "name": "Disable mpls on loop0 interface",
- "description": "Correspondig CLI command:\n\nset interface mpls loop0 disable",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": ""
+ "name": "Pop label and MPLS lookup",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"static-lsp\": [{\n \"name\": \"static-lsp2\",\n \"config\": {\n \"in-segment\": {\n \"config\": {\n \"incoming-label\": 102\n }\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\": {\n \"type\": \"mpls\",\n \"mpls-lookup-in-table\": 0\n }\n }\n }]\n}"
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp2",
+ "description": "Corresponding CLI command:\n\nmpls local-label add non-eos 102 mpls-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 102"
+ },
+ "response": []
},
{
- "id": "3e9ec3af-3d8b-6b1e-c193-22c702c3e81e",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp2",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "DELETE",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1511436719275,
- "name": "Delete label pop and MPLS lookup FIB entry",
- "description": "Corresponding CLI command:\n\nmpls local-label del non-eos 102 mpls-lookup-in-table 0\n\nCan be verified via CLI using:\n\nshow mpls fib",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": ""
+ "name": "Pop label and IPv4 lookup",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"static-lsp\": [{\n \"name\": \"static-lsp3\",\n \"config\": {\n \"in-segment\": {\n \"config\": {\n \"incoming-label\": 104\n }\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\": {\n \"type\": \"ipv4\",\n \"ip4-lookup-in-table\": 0\n }\n }\n }]\n}"
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp3",
+ "description": "Corresponding CLI command:\n\nmpls local-label add eos 104 ip4-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 104"
+ },
+ "response": []
},
{
- "id": "48779e1a-5a6d-9e76-c646-8f3eea9433d2",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "GET",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1509715030301,
- "name": "Get mpls interfaces (cfg)",
- "description": "",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": ""
+ "name": "Swap label and forward",
+ "request": {
+ "method": "PUT",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"static-lsp\": [{\n \"name\": \"static-lsp4\",\n \"config\": {\n \"in-segment\": {\n \"config\": {\n \"incoming-label\": 123\n }\n },\n \"operation\": \"swap-and-forward\"\n },\n \"simple-path\": {\n \"config\": {\n \"next-hop\": \"10.10.24.5\",\n \"outgoing-label\": 123,\n \"outgoing-interface\": \"loop0\"\n }\n }\n }]\n}"
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp4",
+ "description": "Corresponding CLI command:\n\nmpls local-label add eos 123 via 10.10.24.4 loop0 out-labels 123\n\n\nCan be verified via CLI using:\n\nshow mpls fib 123"
+ },
+ "response": []
},
{
- "id": "590a3bad-ecbc-7309-1357-50e678036e17",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp3",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "DELETE",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1511437151063,
- "name": "Delete label pop and IPv4 lookup FIB entry",
- "description": "Corresponding CLI command:\n\nmpls local-label del eos 104 ip4-lookup-in-table 0\n\nCan be verified via CLI using:\n\nshow mpls fib",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": ""
+ "name": "Get static LSPs (cfg)",
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/"
+ },
+ "response": []
},
{
- "id": "5a271f51-ab7e-c007-882b-d5e0a99da138",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp0",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "DELETE",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1511172422196,
"name": "Delete single MPLS label push FIB entry",
- "description": "Corresponding CLI command:\n\nip route del 10.10.34.0/24 via 10.10.13.3 loop0 out-labels 111\n\nCan be verified via CLI using:\n\nshow ip fib",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": ""
+ "request": {
+ "method": "DELETE",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp0",
+ "description": "Corresponding CLI command:\n\nip route del 10.10.34.0/24 via 10.10.13.3 loop0 out-labels 111\n\nCan be verified via CLI using:\n\nshow ip fib"
+ },
+ "response": []
},
{
- "id": "65f84720-3266-322f-9739-af804da451b7",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp0",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "PUT",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1511436775238,
- "name": "Push single MPLS label",
- "description": "Corresponding CLI command:\n\nip route add 10.10.34.0/24 via 10.10.13.3 loop0 out-labels 111\n\nCan be verified via CLI using:\n\nshow ip fib 10.10.34.0/24",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"static-lsp0\",\n \"config\": {\n \"in-segment\": {\n \"ip-prefix\": \"10.10.34.0/24\"\n },\n \"operation\": \"impose-and-forward\",\n \"next-hop\": \"10.10.13.3\",\n \"outgoing-label\": 111,\n \"outgoing-interface\": \"loop0\"\n }\n }\n ]\n}"
+ "name": "Delete FIB entry that pushes two MPLS labels",
+ "request": {
+ "method": "DELETE",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp1",
+ "description": "Corresponding CLI command:\n\nip route add 10.10.24.0/24 via 10.10.12.2 loop1 out-labels 102 104\n\nCan be verified via CLI using:\n\nshow ip fib"
+ },
+ "response": []
},
{
- "id": "6fcda03b-3efa-3ae9-a1a0-5fafef5732a0",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp3",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "PUT",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1511360517399,
- "name": "Pop label and IPv4 lookup",
- "description": "Corresponding CLI command:\n\nmpls local-label add eos 104 ip4-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 104",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"static-lsp3\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 104\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\" : {\n \"type\": \"ipv4\",\n \"ip4-lookup-in-table\": 0\n }\n }\n }\n ]\n}"
+ "name": "Delete label pop and MPLS lookup FIB entry",
+ "request": {
+ "method": "DELETE",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp2",
+ "description": "Corresponding CLI command:\n\nmpls local-label del non-eos 102 mpls-lookup-in-table 0\n\nCan be verified via CLI using:\n\nshow mpls fib"
+ },
+ "response": []
},
{
- "id": "94581eee-036d-dced-1495-1b5c8c35059d",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/ietf-interfaces:interfaces/",
- "pathVariables": {},
- "preRequestScript": "",
- "method": "GET",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "data": [],
- "dataMode": "raw",
- "name": "List ifcs - cfg",
- "description": "",
- "descriptionFormat": "html",
- "time": 1509094536608,
- "version": 2,
- "responses": [],
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}"
+ "name": "Delete label pop and IPv4 lookup FIB entry",
+ "request": {
+ "method": "DELETE",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp3",
+ "description": "Corresponding CLI command:\n\nmpls local-label del eos 104 ip4-lookup-in-table 0\n\nCan be verified via CLI using:\n\nshow mpls fib"
+ },
+ "response": []
},
{
- "id": "b98635ba-fc25-feb7-8281-1654a7639ebd",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp1",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "DELETE",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1511172427485,
- "name": "Delete FIB entry that pushes two MPLS labels",
- "description": "Corresponding CLI command:\n\nip route add 10.10.24.0/24 via 10.10.12.2 loop1 out-labels 102 104\n\nCan be verified via CLI using:\n\nshow ip fib",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": ""
+ "name": "Delete label swap FIB entry",
+ "request": {
+ "method": "DELETE",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp4",
+ "description": "Corresponding CLI command:\n\nmpls local-label del eos 123 via 10.10.24.4 loop0 out-labels 123\n\nCan be verified via CLI using:\n\nshow mpls fib"
+ },
+ "response": []
},
{
- "id": "e8d94648-0106-feaa-f436-1c0cd327d89c",
- "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n",
- "url": "http://localhost:8183/restconf/config/ietf-interfaces:interfaces/interface/loop0",
- "preRequestScript": "",
- "pathVariables": {},
- "method": "PUT",
- "data": [],
- "dataMode": "raw",
- "version": 2,
- "tests": "",
- "currentHelper": "normal",
- "helperAttributes": {},
- "time": 1511172015125,
- "name": "Add loopback ifc ",
- "description": "Corresponding CLI command:\n\ncreate loop interface",
- "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425",
- "responses": [],
- "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"loop0\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:loopback\",\r\n \"loopback\" :{\r\n \"mac\" : \"00:ff:ff:ff:ff:ff\"\r\n }\r\n }\r\n ]\r\n \r\n}"
+ "name": "Disable mpls on loop0 interface",
+ "request": {
+ "method": "DELETE",
+ "header": [
+ {
+ "key": "Authorization",
+ "value": "Basic YWRtaW46YWRtaW4="
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": ""
+ },
+ "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/loop0",
+ "description": "Correspondig CLI command:\n\nset interface mpls loop0 disable"
+ },
+ "response": []
}
]
} \ No newline at end of file