Fix bgp-segment-routing 24/85324/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 21 Oct 2019 08:23:24 +0000 (10:23 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 23 Oct 2019 12:21:30 +0000 (14:21 +0200)
This model is not valid yang, as it is defining overlapping leaves
in choice/case statements. This fixes the violations by providing
encapsulating containers.

JIRA: BGPCEP-880
Change-Id: I4f4f99a6b4a95ab6c8eb997d5ad97d3101b4f387
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit e4b99745b830d4fddbd4141dbeb72aad34b8b953)

14 files changed:
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/attribute/sr/RangeTlvParser.java
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/attribute/sr/SrLinkAttributesParser.java
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/attribute/sr/SrPrefixAttributesParser.java
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/attribute/sr/binding/sid/sub/tlvs/BackupUnnumberedParser.java
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/attribute/sr/binding/sid/sub/tlvs/Ipv4BackupEro.java
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/attribute/sr/binding/sid/sub/tlvs/Ipv4EroParser.java
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/attribute/sr/binding/sid/sub/tlvs/Ipv4PrefixSidParser.java
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/attribute/sr/binding/sid/sub/tlvs/Ipv6BackupEro.java
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/attribute/sr/binding/sid/sub/tlvs/Ipv6EroParser.java
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/attribute/sr/binding/sid/sub/tlvs/Ipv6PrefixSidParser.java
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/attribute/sr/binding/sid/sub/tlvs/UnnumberedEroParser.java
bgp/extensions/linkstate/src/main/yang/bgp-segment-routing.yang
bgp/extensions/linkstate/src/test/java/org/opendaylight/protocol/bgp/linkstate/LinkstateAttributeParserTest.java
bgp/extensions/linkstate/src/test/java/org/opendaylight/protocol/bgp/linkstate/SrAttributeParserTest.java

index 84dae0f9fc014889178f0a508f7b9ac27b4c731c..8ffafc87f9fa0b46bf2b8b96a56e6b8cd7f2e740 100644 (file)
@@ -32,6 +32,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segm
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.sub.tlvs.range.sub.tlv.PrefixSidTlvCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.sub.tlvs.range.sub.tlv.SidLabelTlvCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.sub.tlvs.range.sub.tlv.SidLabelTlvCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.sub.tlvs.range.sub.tlv.ipv6.prefix.sid.tlv._case.Ipv6PrefixSidTlv;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.sub.tlvs.range.sub.tlv.ipv6.prefix.sid.tlv._case.Ipv6PrefixSidTlvBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.sub.tlvs.range.sub.tlv.prefix.sid.tlv._case.PrefixSidTlv;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.sub.tlvs.range.sub.tlv.prefix.sid.tlv._case.PrefixSidTlvBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.tlv.SubTlvs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.tlv.SubTlvsBuilder;
 import org.slf4j.Logger;
@@ -65,18 +69,17 @@ public final class RangeTlvParser {
     private static List<SubTlvs> parseRangeSubTlvs(final ByteBuf buffer, final ProtocolId protocolId) {
         final List<SubTlvs> subTlvs = new ArrayList<>();
         while (buffer.isReadable()) {
-            final SubTlvsBuilder subTlv = new SubTlvsBuilder();
             final RangeSubTlv subTlvCase;
             final int type = buffer.readUnsignedShort();
             final int length = buffer.readUnsignedShort();
             switch (type) {
                 case PREFIX_SID:
-                    subTlvCase = new PrefixSidTlvCaseBuilder(
-                        SrPrefixAttributesParser.parseSrPrefix(buffer.readSlice(length), protocolId)).build();
+                    subTlvCase = new PrefixSidTlvCaseBuilder().setPrefixSidTlv(new PrefixSidTlvBuilder(
+                        SrPrefixAttributesParser.parseSrPrefix(buffer.readSlice(length), protocolId)).build()).build();
                     break;
                 case IPV6_PREFIX_SID:
-                    subTlvCase = new Ipv6PrefixSidTlvCaseBuilder(
-                        Ipv6SrPrefixAttributesParser.parseSrIpv6Prefix(buffer.readSlice(length))).build();
+                    subTlvCase = new Ipv6PrefixSidTlvCaseBuilder().setIpv6PrefixSidTlv(new Ipv6PrefixSidTlvBuilder(
+                        Ipv6SrPrefixAttributesParser.parseSrIpv6Prefix(buffer.readSlice(length))).build()).build();
                     break;
                 case BINDING_SID:
                     subTlvCase = new BindingSidTlvCaseBuilder(
@@ -85,14 +88,14 @@ public final class RangeTlvParser {
                 case SID_TYPE:
                     subTlvCase = new SidLabelTlvCaseBuilder().setSidLabelIndex(
                         SidLabelIndexParser.parseSidLabelIndex(Size.forValue(length), buffer.readSlice(length)))
-                    .build();
+                        .build();
                     break;
                 default:
                     LOG.info("Unknown type of range sub-tlv: {}", type);
                     buffer.skipBytes(length);
                     continue;
             }
-            subTlvs.add(subTlv.setRangeSubTlv(subTlvCase).build());
+            subTlvs.add(new SubTlvsBuilder().setRangeSubTlv(subTlvCase).build());
         }
         return subTlvs;
     }
@@ -111,7 +114,7 @@ public final class RangeTlvParser {
             ByteBuf buffer = Unpooled.buffer();
             final RangeSubTlv rangeSubTlv = subTlv.getRangeSubTlv();
             if (rangeSubTlv instanceof PrefixSidTlvCase) {
-                final PrefixSidTlvCase prefixSidTlv = (PrefixSidTlvCase) rangeSubTlv;
+                final PrefixSidTlv prefixSidTlv = ((PrefixSidTlvCase) rangeSubTlv).getPrefixSidTlv();
                 SrPrefixAttributesParser.serializePrefixAttributes(
                     prefixSidTlv.getFlags(),
                     prefixSidTlv.getAlgorithm(),
@@ -119,7 +122,7 @@ public final class RangeTlvParser {
                     buffer);
                 TlvUtil.writeTLV(PREFIX_SID, buffer, aggregator);
             } else if (rangeSubTlv instanceof Ipv6PrefixSidTlvCase) {
-                final Ipv6PrefixSidTlvCase prefixSidTlv = (Ipv6PrefixSidTlvCase) rangeSubTlv;
+                final Ipv6PrefixSidTlv prefixSidTlv = ((Ipv6PrefixSidTlvCase) rangeSubTlv).getIpv6PrefixSidTlv();
                 Ipv6SrPrefixAttributesParser.serializePrefixAttributes(prefixSidTlv.getAlgorithm(), buffer);
                 TlvUtil.writeTLV(IPV6_PREFIX_SID, buffer, aggregator);
             } else if (rangeSubTlv instanceof BindingSidTlvCase) {
index 6071900c0121cc5663a55a28421b5c26ca8b9d56..07bb3a2937ba6be33a0708c102d43aa887d4c0f3 100644 (file)
@@ -30,6 +30,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segm
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.IsisAdjFlagsCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.OspfAdjFlagsCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.OspfAdjFlagsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.isis.adj.flags._case.IsisAdjFlags;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.isis.adj.flags._case.IsisAdjFlagsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.ospf.adj.flags._case.OspfAdjFlags;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.ospf.adj.flags._case.OspfAdjFlagsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.sid.label.index.SidLabelIndex;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.concepts.rev131125.IsoSystemIdentifier;
 
@@ -154,12 +158,20 @@ public final class SrLinkAttributesParser {
         switch (protocol) {
             case IsisLevel1:
             case IsisLevel2:
-                return new IsisAdjFlagsCaseBuilder().setAddressFamily(flags.get(ADDRESS_FAMILY_FLAG))
-                        .setBackup(flags.get(BACKUP_ISIS))
-                        .setSet(flags.get(SET_ISIS)).build();
+                return new IsisAdjFlagsCaseBuilder()
+                        .setIsisAdjFlags(new IsisAdjFlagsBuilder()
+                            .setAddressFamily(flags.get(ADDRESS_FAMILY_FLAG))
+                            .setBackup(flags.get(BACKUP_ISIS))
+                            .setSet(flags.get(SET_ISIS))
+                            .build())
+                        .build();
             case Ospf:
             case OspfV3:
-                return new OspfAdjFlagsCaseBuilder().setBackup(flags.get(BACKUP_OSPF)).setSet(flags.get(SET_OSPF))
+                return new OspfAdjFlagsCaseBuilder()
+                        .setOspfAdjFlags(new OspfAdjFlagsBuilder()
+                            .setBackup(flags.get(BACKUP_OSPF))
+                            .setSet(flags.get(SET_OSPF))
+                            .build())
                         .build();
             default:
                 return null;
@@ -210,12 +222,12 @@ public final class SrLinkAttributesParser {
     private static BitArray serializeAdjFlags(final Flags flags, final SidLabelIndex sidLabelIndex) {
         final BitArray bitFlags = new BitArray(FLAGS_BITS_SIZE);
         if (flags instanceof OspfAdjFlagsCase) {
-            final OspfAdjFlagsCase ospfFlags = (OspfAdjFlagsCase) flags;
+            final OspfAdjFlags ospfFlags = ((OspfAdjFlagsCase) flags).getOspfAdjFlags();
             bitFlags.set(BACKUP_OSPF, ospfFlags.isBackup());
             bitFlags.set(SET_OSPF, ospfFlags.isSet());
             SidLabelIndexParser.setFlags(sidLabelIndex, bitFlags, VALUE_OSPF, LOCAL_OSPF);
         } else if (flags instanceof IsisAdjFlagsCase) {
-            final IsisAdjFlagsCase isisFlags = (IsisAdjFlagsCase) flags;
+            final IsisAdjFlags isisFlags = ((IsisAdjFlagsCase) flags).getIsisAdjFlags();
             bitFlags.set(ADDRESS_FAMILY_FLAG, isisFlags.isAddressFamily());
             bitFlags.set(BACKUP_ISIS, isisFlags.isBackup());
             bitFlags.set(SET_ISIS, isisFlags.isSet());
index f2c32dfad5b3f5703a11a4f98f89985a507bc53e..72544a70545a6159f258aaf16d31ad4d058efd0d 100644 (file)
@@ -19,6 +19,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segm
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.prefix.sid.tlv.flags.IsisPrefixFlagsCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.prefix.sid.tlv.flags.OspfPrefixFlagsCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.prefix.sid.tlv.flags.OspfPrefixFlagsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.prefix.sid.tlv.flags.isis.prefix.flags._case.IsisPrefixFlags;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.prefix.sid.tlv.flags.isis.prefix.flags._case.IsisPrefixFlagsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.prefix.sid.tlv.flags.ospf.prefix.flags._case.OspfPrefixFlags;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.prefix.sid.tlv.flags.ospf.prefix.flags._case.OspfPrefixFlagsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.sid.label.index.SidLabelIndex;
 
 public final class SrPrefixAttributesParser {
@@ -52,13 +56,23 @@ public final class SrPrefixAttributesParser {
         switch (protocol) {
             case IsisLevel1:
             case IsisLevel2:
-                return new IsisPrefixFlagsCaseBuilder().setReadvertisement(flags.get(RE_ADVERTISEMENT))
-                        .setNodeSid(flags.get(NODE_SID)).setNoPhp(flags.get(NO_PHP))
-                        .setExplicitNull(flags.get(EXPLICIT_NULL)).build();
+                return new IsisPrefixFlagsCaseBuilder()
+                        .setIsisPrefixFlags(new IsisPrefixFlagsBuilder()
+                            .setReadvertisement(flags.get(RE_ADVERTISEMENT))
+                            .setNodeSid(flags.get(NODE_SID))
+                            .setNoPhp(flags.get(NO_PHP))
+                            .setExplicitNull(flags.get(EXPLICIT_NULL))
+                            .build())
+                        .build();
             case Ospf:
             case OspfV3:
-                return new OspfPrefixFlagsCaseBuilder().setExplicitNull(flags.get(EXPLICIT_NULL))
-                        .setMappingServer(flags.get(MAPPING_SERVER)).setNoPhp(flags.get(NO_PHP_OSPF)).build();
+                return new OspfPrefixFlagsCaseBuilder()
+                        .setOspfPrefixFlags(new OspfPrefixFlagsBuilder()
+                            .setExplicitNull(flags.get(EXPLICIT_NULL))
+                            .setMappingServer(flags.get(MAPPING_SERVER))
+                            .setNoPhp(flags.get(NO_PHP_OSPF))
+                            .build())
+                        .build();
             default:
                 return null;
         }
@@ -82,12 +96,12 @@ public final class SrPrefixAttributesParser {
         final BitArray bitFlags = new BitArray(FLAGS_SIZE);
         SidLabelIndexParser.setFlags(sidLabelIndex, bitFlags, VALUE, LOCAL);
         if (flags instanceof OspfPrefixFlagsCase) {
-            final OspfPrefixFlagsCase ospfFlags = (OspfPrefixFlagsCase) flags;
+            final OspfPrefixFlags ospfFlags = ((OspfPrefixFlagsCase) flags).getOspfPrefixFlags();
             bitFlags.set(NO_PHP_OSPF, ospfFlags.isNoPhp());
             bitFlags.set(MAPPING_SERVER, ospfFlags.isMappingServer());
             bitFlags.set(EXPLICIT_NULL, ospfFlags.isExplicitNull());
         } else if (flags instanceof IsisPrefixFlagsCase) {
-            final IsisPrefixFlagsCase isisFlags = (IsisPrefixFlagsCase) flags;
+            final IsisPrefixFlags isisFlags = ((IsisPrefixFlagsCase) flags).getIsisPrefixFlags();
             bitFlags.set(RE_ADVERTISEMENT, isisFlags.isReadvertisement());
             bitFlags.set(NODE_SID, isisFlags.isNodeSid());
             bitFlags.set(NO_PHP, isisFlags.isNoPhp());
index 53b0b203ebd779ae7e60684aa811a5c9acfe4209..8c16437605f7469c09c51c415acfa748d51774b6 100644 (file)
@@ -8,7 +8,7 @@
 package org.opendaylight.protocol.bgp.linkstate.impl.attribute.sr.binding.sid.sub.tlvs;
 
 import static com.google.common.base.Preconditions.checkArgument;
-import static org.opendaylight.protocol.bgp.linkstate.impl.attribute.sr.binding.sid.sub.tlvs.UnnumberedEroParser.parseUnnumberedEroCase;
+import static org.opendaylight.protocol.bgp.linkstate.impl.attribute.sr.binding.sid.sub.tlvs.UnnumberedEroParser.parseUnnumberedEroBackupCase;
 import static org.opendaylight.protocol.bgp.linkstate.impl.attribute.sr.binding.sid.sub.tlvs.UnnumberedEroParser.serializeUnnumberedIdEro;
 
 import io.netty.buffer.ByteBuf;
@@ -18,17 +18,14 @@ import org.opendaylight.protocol.bgp.linkstate.spi.TlvUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.ProtocolId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.BindingSubTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.UnnumberedInterfaceIdBackupEroCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.UnnumberedInterfaceIdBackupEroCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.UnnumberedInterfaceIdEroCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.unnumbered._interface.id.backup.ero._case.UnnumberedInterfaceIdBackupEro;
 
 public final class BackupUnnumberedParser implements BindingSubTlvsParser, BindingSubTlvsSerializer {
     private static final int BACKUP_UNNUMBERED_ERO = 1168;
 
     @Override
     public BindingSubTlv parseSubTlv(final ByteBuf slice, final ProtocolId protocolId) {
-        final UnnumberedInterfaceIdEroCase unnumberedBackup = parseUnnumberedEroCase(slice);
-        return new UnnumberedInterfaceIdBackupEroCaseBuilder().setLoose(unnumberedBackup.isLoose())
-            .setRouterId(unnumberedBackup.getRouterId()).setInterfaceId(unnumberedBackup.getInterfaceId()).build();
+        return parseUnnumberedEroBackupCase(slice);
     }
 
     @Override
@@ -40,7 +37,8 @@ public final class BackupUnnumberedParser implements BindingSubTlvsParser, Bindi
     public void serializeSubTlv(final BindingSubTlv bindingSubTlv, final ByteBuf aggregator) {
         checkArgument(bindingSubTlv instanceof UnnumberedInterfaceIdBackupEroCase,
             "Wrong BindingSubTlv instance expected", bindingSubTlv);
-        final UnnumberedInterfaceIdBackupEroCase unnumberedBackup = (UnnumberedInterfaceIdBackupEroCase) bindingSubTlv;
+        final UnnumberedInterfaceIdBackupEro unnumberedBackup =
+                ((UnnumberedInterfaceIdBackupEroCase) bindingSubTlv).getUnnumberedInterfaceIdBackupEro();
         TlvUtil.writeTLV(BACKUP_UNNUMBERED_ERO, serializeUnnumberedIdEro(unnumberedBackup.isLoose(),
             unnumberedBackup.getRouterId(), unnumberedBackup.getInterfaceId()), aggregator);
     }
index 26079257126a60c911c56802c7127924dfba1016..116431e63354ace15795bf2c65f7d73af0b43a26 100644 (file)
@@ -16,17 +16,14 @@ import org.opendaylight.protocol.bgp.linkstate.spi.TlvUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.ProtocolId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.BindingSubTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv4EroBackupCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv4EroBackupCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv4EroCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv4.ero.backup._case.Ipv4EroBackup;
 
 public final class Ipv4BackupEro implements BindingSubTlvsParser, BindingSubTlvsSerializer {
     private static final int BACKUP_ERO_IPV4 = 1166;
 
     @Override
     public BindingSubTlv parseSubTlv(final ByteBuf slice, final ProtocolId protocolId) {
-        final Ipv4EroCase ipv4Backup = Ipv4EroParser.parseIpv4EroCase(slice);
-        return new Ipv4EroBackupCaseBuilder().setAddress(ipv4Backup.getAddress()).setLoose(ipv4Backup.isLoose())
-                .build();
+        return Ipv4EroParser.parseIpv4EroBackupCase(slice);
     }
 
     @Override
@@ -38,7 +35,7 @@ public final class Ipv4BackupEro implements BindingSubTlvsParser, BindingSubTlvs
     public void serializeSubTlv(final BindingSubTlv bindingSubTlv, final ByteBuf aggregator) {
         checkArgument(bindingSubTlv instanceof Ipv4EroBackupCase, "Wrong BindingSubTlv instance expected",
             bindingSubTlv);
-        final Ipv4EroBackupCase ipv4Backup = (Ipv4EroBackupCase) bindingSubTlv;
+        final Ipv4EroBackup ipv4Backup = ((Ipv4EroBackupCase) bindingSubTlv).getIpv4EroBackup();
         TlvUtil.writeTLV(getType(), Ipv4EroParser.serializeIpv4EroCase(ipv4Backup.isLoose(), ipv4Backup.getAddress()),
             aggregator);
     }
index 87bd142561d7a5f2deeb9e1a746a02f7989c0088..b29c9d3ce6a2302a54b59b4be6457f1890dfe54a 100644 (file)
@@ -19,8 +19,13 @@ import org.opendaylight.protocol.util.Ipv4Util;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.ProtocolId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.BindingSubTlv;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv4EroBackupCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv4EroBackupCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv4EroCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv4EroCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv4.ero._case.Ipv4Ero;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv4.ero._case.Ipv4EroBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv4.ero.backup._case.Ipv4EroBackupBuilder;
 
 public final class Ipv4EroParser implements BindingSubTlvsParser, BindingSubTlvsSerializer {
     private static final int ERO_IPV4 = 1163;
@@ -30,8 +35,7 @@ public final class Ipv4EroParser implements BindingSubTlvsParser, BindingSubTlvs
 
     @Override
     public BindingSubTlv parseSubTlv(final ByteBuf slice, final ProtocolId protocolId) {
-        final Ipv4EroCase ipv4Ero = parseIpv4EroCase(slice);
-        return new Ipv4EroCaseBuilder().setAddress(ipv4Ero.getAddress()).setLoose(ipv4Ero.isLoose()).build();
+        return parseIpv4EroCase(slice);
     }
 
     @Override
@@ -43,19 +47,27 @@ public final class Ipv4EroParser implements BindingSubTlvsParser, BindingSubTlvs
     public void serializeSubTlv(final BindingSubTlv bindingSubTlv, final ByteBuf aggregator) {
         checkArgument(bindingSubTlv instanceof Ipv4EroCase, "Wrong BindingSubTlv instance expected",
             bindingSubTlv);
-        final Ipv4EroCase ipv4Ero = (Ipv4EroCase) bindingSubTlv;
+        final Ipv4Ero ipv4Ero = ((Ipv4EroCase) bindingSubTlv).getIpv4Ero();
         TlvUtil.writeTLV(getType(), serializeIpv4EroCase(ipv4Ero.isLoose(), ipv4Ero.getAddress()), aggregator);
     }
 
     static Ipv4EroCase parseIpv4EroCase(final ByteBuf buffer) {
-        final Ipv4EroCaseBuilder builder = new Ipv4EroCaseBuilder();
+        final Ipv4EroBuilder builder = new Ipv4EroBuilder();
         final BitArray flags = BitArray.valueOf(buffer, FLAGS_SIZE);
         builder.setLoose(flags.get(LOOSE));
         buffer.skipBytes(RESERVED_ERO);
         builder.setAddress(Ipv4Util.addressForByteBuf(buffer));
-        return builder.build();
+        return new Ipv4EroCaseBuilder().setIpv4Ero(builder.build()).build();
     }
 
+    static Ipv4EroBackupCase parseIpv4EroBackupCase(final ByteBuf buffer) {
+        final Ipv4EroBackupBuilder builder = new Ipv4EroBackupBuilder();
+        final BitArray flags = BitArray.valueOf(buffer, FLAGS_SIZE);
+        builder.setLoose(flags.get(LOOSE));
+        buffer.skipBytes(RESERVED_ERO);
+        builder.setAddress(Ipv4Util.addressForByteBuf(buffer));
+        return new Ipv4EroBackupCaseBuilder().setIpv4EroBackup(builder.build()).build();
+    }
 
     static ByteBuf serializeIpv4EroCase(final Boolean loose, final Ipv4Address address) {
         final ByteBuf buffer = Unpooled.buffer();
index 5cce7dd3a023a6119567ded97d723c1fdb4e6480..e30d57beeebca22d51b75ebf43580e208169fa1f 100644 (file)
@@ -20,6 +20,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.link
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.BindingSubTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.PrefixSidCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.PrefixSidCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.prefix.sid._case.PrefixSid;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.prefix.sid._case.PrefixSidBuilder;
 
 public final class Ipv4PrefixSidParser implements BindingSubTlvsParser, BindingSubTlvsSerializer {
     public static final int PREFIX_SID = 1158;
@@ -27,8 +29,13 @@ public final class Ipv4PrefixSidParser implements BindingSubTlvsParser, BindingS
     @Override
     public BindingSubTlv parseSubTlv(final ByteBuf slice, final ProtocolId protocolId) {
         final SrPrefix prefix = SrPrefixAttributesParser.parseSrPrefix(slice, protocolId);
-        return new PrefixSidCaseBuilder().setAlgorithm(prefix.getAlgorithm()).setFlags(prefix.getFlags())
-            .setSidLabelIndex(prefix.getSidLabelIndex()).build();
+        return new PrefixSidCaseBuilder()
+                .setPrefixSid(new PrefixSidBuilder()
+                    .setAlgorithm(prefix.getAlgorithm())
+                    .setFlags(prefix.getFlags())
+                    .setSidLabelIndex(prefix.getSidLabelIndex())
+                    .build())
+                .build();
     }
 
     @Override
@@ -40,7 +47,7 @@ public final class Ipv4PrefixSidParser implements BindingSubTlvsParser, BindingS
     public void serializeSubTlv(final BindingSubTlv bindingSubTlv, final ByteBuf aggregator) {
         checkArgument(bindingSubTlv instanceof PrefixSidCase, "Wrong BindingSubTlv instance expected",
             bindingSubTlv);
-        final PrefixSidCase prefix = (PrefixSidCase) bindingSubTlv;
+        final PrefixSid prefix = ((PrefixSidCase) bindingSubTlv).getPrefixSid();
         final ByteBuf buffer = Unpooled.buffer();
         SrPrefixAttributesParser.serializePrefixAttributes(prefix.getFlags(), prefix.getAlgorithm(),
             prefix.getSidLabelIndex(), buffer);
index babfe1e9e0660859a36db97a28015b77adffe91f..c5e41bf50659a27a3030134c1367c425ed39ff1b 100644 (file)
@@ -16,17 +16,14 @@ import org.opendaylight.protocol.bgp.linkstate.spi.TlvUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.ProtocolId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.BindingSubTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv6EroBackupCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv6EroBackupCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv6EroCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv6.ero.backup._case.Ipv6EroBackup;
 
 public final class Ipv6BackupEro implements BindingSubTlvsParser, BindingSubTlvsSerializer {
     private static final int BACKUP_ERO_IPV6 = 1167;
 
     @Override
     public BindingSubTlv parseSubTlv(final ByteBuf slice, final ProtocolId protocolId) {
-        final Ipv6EroCase ipv6backup = Ipv6EroParser.parseIpv6EroCase(slice);
-        return new Ipv6EroBackupCaseBuilder().setAddress(ipv6backup.getAddress()).setLoose(ipv6backup.isLoose())
-                .build();
+        return Ipv6EroParser.parseIpv6EroBackupCase(slice);
     }
 
     @Override
@@ -38,7 +35,7 @@ public final class Ipv6BackupEro implements BindingSubTlvsParser, BindingSubTlvs
     public void serializeSubTlv(final BindingSubTlv bindingSubTlv, final ByteBuf aggregator) {
         checkArgument(bindingSubTlv instanceof Ipv6EroBackupCase, "Wrong BindingSubTlv instance expected",
             bindingSubTlv);
-        final Ipv6EroBackupCase ipv6Backup = (Ipv6EroBackupCase) bindingSubTlv;
+        final Ipv6EroBackup ipv6Backup = ((Ipv6EroBackupCase) bindingSubTlv).getIpv6EroBackup();
         TlvUtil.writeTLV(getType(), Ipv6EroParser.serializeIpv6EroCase(ipv6Backup.isLoose(), ipv6Backup.getAddress()),
             aggregator);
     }
index 556b632aa34e36fd85a377d7cab4cbc39f0f5275..706b52bafa4b202a7214534ad4c9e2a03035154f 100644 (file)
@@ -19,16 +19,20 @@ import org.opendaylight.protocol.util.Ipv6Util;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.ProtocolId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.BindingSubTlv;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv6EroBackupCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv6EroBackupCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv6EroCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv6EroCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv6.ero._case.Ipv6Ero;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv6.ero._case.Ipv6EroBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv6.ero.backup._case.Ipv6EroBackupBuilder;
 
 public final class Ipv6EroParser implements BindingSubTlvsParser, BindingSubTlvsSerializer {
     private static final int ERO_IPV6 = 1164;
 
     @Override
     public BindingSubTlv parseSubTlv(final ByteBuf slice, final ProtocolId protocolId) {
-        final Ipv6EroCase ipv6ero = parseIpv6EroCase(slice);
-        return new Ipv6EroCaseBuilder().setAddress(ipv6ero.getAddress()).setLoose(ipv6ero.isLoose()).build();
+        return parseIpv6EroCase(slice);
     }
 
     @Override
@@ -40,17 +44,26 @@ public final class Ipv6EroParser implements BindingSubTlvsParser, BindingSubTlvs
     public void serializeSubTlv(final BindingSubTlv bindingSubTlv, final ByteBuf aggregator) {
         checkArgument(bindingSubTlv instanceof Ipv6EroCase, "Wrong BindingSubTlv instance expected",
             bindingSubTlv);
-        final Ipv6EroCase ipv6Ero = (Ipv6EroCase) bindingSubTlv;
+        final Ipv6Ero ipv6Ero = ((Ipv6EroCase) bindingSubTlv).getIpv6Ero();
         TlvUtil.writeTLV(getType(), serializeIpv6EroCase(ipv6Ero.isLoose(), ipv6Ero.getAddress()), aggregator);
     }
 
     public static Ipv6EroCase parseIpv6EroCase(final ByteBuf buffer) {
-        final Ipv6EroCaseBuilder builder = new Ipv6EroCaseBuilder();
+        final Ipv6EroBuilder builder = new Ipv6EroBuilder();
         final BitArray flags = BitArray.valueOf(buffer, Ipv4EroParser.FLAGS_SIZE);
         builder.setLoose(flags.get(Ipv4EroParser.LOOSE));
         buffer.skipBytes(Ipv4EroParser.RESERVED_ERO);
         builder.setAddress(Ipv6Util.addressForByteBuf(buffer));
-        return builder.build();
+        return new Ipv6EroCaseBuilder().setIpv6Ero(builder.build()).build();
+    }
+
+    public static Ipv6EroBackupCase parseIpv6EroBackupCase(final ByteBuf buffer) {
+        final Ipv6EroBackupBuilder builder = new Ipv6EroBackupBuilder();
+        final BitArray flags = BitArray.valueOf(buffer, Ipv4EroParser.FLAGS_SIZE);
+        builder.setLoose(flags.get(Ipv4EroParser.LOOSE));
+        buffer.skipBytes(Ipv4EroParser.RESERVED_ERO);
+        builder.setAddress(Ipv6Util.addressForByteBuf(buffer));
+        return new Ipv6EroBackupCaseBuilder().setIpv6EroBackup(builder.build()).build();
     }
 
     static ByteBuf serializeIpv6EroCase(final Boolean loose, final Ipv6Address address) {
index f3a2e84362ef90412136391e495653aa29dea823..8fc7678aa6bc4834acc78eea27a5ed2e46f8316f 100644 (file)
@@ -20,6 +20,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.link
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.BindingSubTlv;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv6PrefixSidCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.Ipv6PrefixSidCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv6.prefix.sid._case.Ipv6PrefixSid;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv6.prefix.sid._case.Ipv6PrefixSidBuilder;
 
 public final class Ipv6PrefixSidParser implements BindingSubTlvsParser, BindingSubTlvsSerializer {
     public static final int IPV6_PREFIX_SID = 1169;
@@ -27,7 +29,9 @@ public final class Ipv6PrefixSidParser implements BindingSubTlvsParser, BindingS
     @Override
     public BindingSubTlv parseSubTlv(final ByteBuf slice, final ProtocolId protocolId) {
         final Ipv6SrPrefix ipv6Prefix = Ipv6SrPrefixAttributesParser.parseSrIpv6Prefix(slice);
-        return new Ipv6PrefixSidCaseBuilder().setAlgorithm(ipv6Prefix.getAlgorithm()).build();
+        return new Ipv6PrefixSidCaseBuilder()
+                .setIpv6PrefixSid(new Ipv6PrefixSidBuilder().setAlgorithm(ipv6Prefix.getAlgorithm()).build())
+                .build();
     }
 
     @Override
@@ -39,7 +43,7 @@ public final class Ipv6PrefixSidParser implements BindingSubTlvsParser, BindingS
     public void serializeSubTlv(final BindingSubTlv bindingSubTlv, final ByteBuf aggregator) {
         checkArgument(bindingSubTlv instanceof Ipv6PrefixSidCase, "Wrong BindingSubTlv instance expected",
             bindingSubTlv);
-        final Ipv6PrefixSidCase prefix = (Ipv6PrefixSidCase) bindingSubTlv;
+        final Ipv6PrefixSid prefix = ((Ipv6PrefixSidCase) bindingSubTlv).getIpv6PrefixSid();
         final ByteBuf buffer = Unpooled.buffer();
         Ipv6SrPrefixAttributesParser.serializePrefixAttributes(prefix.getAlgorithm(), buffer);
         TlvUtil.writeTLV(getType(), buffer, aggregator);
index 6fc9928ca14ddd315f5c5de0d57b56870984ff43..1bb9e0efde2f0c1ea1572ac22135265a3fdcd1fb 100644 (file)
@@ -18,8 +18,13 @@ import org.opendaylight.protocol.util.BitArray;
 import org.opendaylight.protocol.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev180329.ProtocolId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.BindingSubTlv;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.UnnumberedInterfaceIdBackupEroCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.UnnumberedInterfaceIdBackupEroCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.UnnumberedInterfaceIdEroCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.UnnumberedInterfaceIdEroCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.unnumbered._interface.id.backup.ero._case.UnnumberedInterfaceIdBackupEroBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.unnumbered._interface.id.ero._case.UnnumberedInterfaceIdEro;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.unnumbered._interface.id.ero._case.UnnumberedInterfaceIdEroBuilder;
 import org.opendaylight.yangtools.yang.common.Uint32;
 
 public final class UnnumberedEroParser implements BindingSubTlvsParser, BindingSubTlvsSerializer {
@@ -27,10 +32,7 @@ public final class UnnumberedEroParser implements BindingSubTlvsParser, BindingS
 
     @Override
     public BindingSubTlv parseSubTlv(final ByteBuf slice, final ProtocolId protocolId) {
-        final UnnumberedInterfaceIdEroCase unnumbered = parseUnnumberedEroCase(slice);
-        return new UnnumberedInterfaceIdEroCaseBuilder().setLoose(unnumbered.isLoose())
-                .setRouterId(unnumbered.getRouterId())
-                .setInterfaceId(unnumbered.getInterfaceId()).build();
+        return parseUnnumberedEroCase(slice);
     }
 
     @Override
@@ -42,19 +44,31 @@ public final class UnnumberedEroParser implements BindingSubTlvsParser, BindingS
     public void serializeSubTlv(final BindingSubTlv bindingSubTlv, final ByteBuf aggregator) {
         checkArgument(bindingSubTlv instanceof UnnumberedInterfaceIdEroCase,
             "Wrong BindingSubTlv instance expected", bindingSubTlv);
-        final UnnumberedInterfaceIdEroCase unnumberedEro = (UnnumberedInterfaceIdEroCase) bindingSubTlv;
+        final UnnumberedInterfaceIdEro unnumberedEro =
+                ((UnnumberedInterfaceIdEroCase) bindingSubTlv).getUnnumberedInterfaceIdEro();
         TlvUtil.writeTLV(getType(), serializeUnnumberedIdEro(unnumberedEro.isLoose(), unnumberedEro.getRouterId(),
             unnumberedEro.getInterfaceId()), aggregator);
     }
 
     static UnnumberedInterfaceIdEroCase parseUnnumberedEroCase(final ByteBuf buffer) {
-        final UnnumberedInterfaceIdEroCaseBuilder builder = new UnnumberedInterfaceIdEroCaseBuilder();
+        final UnnumberedInterfaceIdEroBuilder builder = new UnnumberedInterfaceIdEroBuilder();
         final BitArray flags = BitArray.valueOf(buffer, Ipv4EroParser.FLAGS_SIZE);
         builder.setLoose(flags.get(Ipv4EroParser.LOOSE));
         buffer.skipBytes(Ipv4EroParser.RESERVED_ERO);
         builder.setRouterId(ByteBufUtils.readUint32(buffer));
         builder.setInterfaceId(ByteBufUtils.readUint32(buffer));
-        return builder.build();
+        return new UnnumberedInterfaceIdEroCaseBuilder().setUnnumberedInterfaceIdEro(builder.build()).build();
+    }
+
+    static UnnumberedInterfaceIdBackupEroCase parseUnnumberedEroBackupCase(final ByteBuf buffer) {
+        final UnnumberedInterfaceIdBackupEroBuilder builder = new UnnumberedInterfaceIdBackupEroBuilder();
+        final BitArray flags = BitArray.valueOf(buffer, Ipv4EroParser.FLAGS_SIZE);
+        builder.setLoose(flags.get(Ipv4EroParser.LOOSE));
+        buffer.skipBytes(Ipv4EroParser.RESERVED_ERO);
+        builder.setRouterId(ByteBufUtils.readUint32(buffer));
+        builder.setInterfaceId(ByteBufUtils.readUint32(buffer));
+        return new UnnumberedInterfaceIdBackupEroCaseBuilder().setUnnumberedInterfaceIdBackupEro(builder.build())
+                .build();
     }
 
     static ByteBuf serializeUnnumberedIdEro(final Boolean loose, final Uint32 routerId, final Uint32 interfaceId) {
index cab57070ccf4fa2e6c43517289e167999c4cb65c..e3819ffa9d3a3bb4211f19184578bedbe63717f1 100644 (file)
@@ -101,13 +101,17 @@ module bgp-segment-routing {
     grouping adj-flags {
         choice flags {
             case ospf-adj-flags-case {
-                uses ospf-adj-flags;
+                container ospf-adj-flags {
+                    uses ospf-adj-flags;
+                }
             }
             case isis-adj-flags-case {
                 reference "https://tools.ietf.org/html/draft-ietf-isis-segment-routing-extensions-06#section-2.2.1";
-                uses ospf-adj-flags;
-                leaf address-family {
-                    type boolean;
+                container isis-adj-flags {
+                    uses ospf-adj-flags;
+                    leaf address-family {
+                        type boolean;
+                    }
                 }
             }
         }
@@ -154,20 +158,24 @@ module bgp-segment-routing {
         reference "https://tools.ietf.org/html/draft-gredler-idr-bgp-ls-segment-routing-ext-02#section-2.3.1";
         choice flags {
             case isis-prefix-flags-case {
-                reference "https://tools.ietf.org/html/draft-ietf-ospf-segment-routing-extensions-08#section-5";
-                uses prefix-flags;
-                leaf readvertisement {
-                    type boolean;
-                }
-                leaf node-sid {
-                    type boolean;
+                container isis-prefix-flags {
+                    reference "https://tools.ietf.org/html/draft-ietf-ospf-segment-routing-extensions-08#section-5";
+                    uses prefix-flags;
+                    leaf readvertisement {
+                        type boolean;
+                    }
+                    leaf node-sid {
+                        type boolean;
+                    }
                 }
             }
             case ospf-prefix-flags-case {
-                reference "https://tools.ietf.org/html/draft-ietf-ospf-segment-routing-extensions-05#section-5";
-                uses prefix-flags;
-                leaf mapping-server {
-                    type boolean;
+                container ospf-prefix-flags {
+                    reference "https://tools.ietf.org/html/draft-ietf-ospf-segment-routing-extensions-05#section-5";
+                    uses prefix-flags;
+                    leaf mapping-server {
+                        type boolean;
+                    }
                 }
             }
         }
@@ -220,10 +228,14 @@ module bgp-segment-routing {
         reference "https://tools.ietf.org/html/draft-gredler-idr-bgp-ls-segment-routing-ext-02#section-2.3.4";
         choice binding-sub-tlv {
             case prefix-sid-case {
-                uses prefix-sid-tlv;
+                container prefix-sid {
+                    uses prefix-sid-tlv;
+                }
             }
             case ipv6-prefix-sid-case {
-                uses ipv6-prefix-sid-tlv;
+                container ipv6-prefix-sid {
+                    uses ipv6-prefix-sid-tlv;
+                }
             }
             case sid-label-case {
                 uses sid-label-index;
@@ -234,22 +246,34 @@ module bgp-segment-routing {
                 }
             }
             case ipv4-ero-case {
-                uses ero-ipv4-address;
+                container ipv4-ero {
+                    uses ero-ipv4-address;
+                }
             }
             case ipv6-ero-case {
-                uses ero-ipv6-address;
+                container ipv6-ero {
+                    uses ero-ipv6-address;
+                }
             }
             case unnumbered-interface-id-ero-case {
-                uses ero-unnumbered;
+                container unnumbered-interface-id-ero {
+                    uses ero-unnumbered;
+                }
             }
             case ipv4-ero-backup-case {
-                uses ero-ipv4-address;
+                container ipv4-ero-backup {
+                    uses ero-ipv4-address;
+                }
             }
             case ipv6-ero-backup-case {
-                uses ero-ipv6-address;
+                container ipv6-ero-backup {
+                    uses ero-ipv6-address;
+                }
             }
             case unnumbered-interface-id-backup-ero-case {
-                uses ero-unnumbered;
+                container unnumbered-interface-id-backup-ero {
+                    uses ero-unnumbered;
+                }
             }
         }
     }
@@ -304,10 +328,14 @@ module bgp-segment-routing {
                 uses binding-sid-tlv;
             }
             case prefix-sid-tlv-case {
-                uses prefix-sid-tlv;
+                container prefix-sid-tlv {
+                    uses prefix-sid-tlv;
+                }
             }
             case ipv6-prefix-sid-tlv-case {
-                uses ipv6-prefix-sid-tlv;
+                container ipv6-prefix-sid-tlv {
+                    uses ipv6-prefix-sid-tlv;
+                }
             }
             case sid-label-tlv-case {
                 uses sid-label-index;
index 05850bb27b5d74c9420fd3c6a1a5099deefedec2..45066cbf96d6839e4e12c68c37c30ddb9c540c13 100644 (file)
@@ -64,6 +64,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mult
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.update.attributes.mp.unreach.nlri.WithdrawnRoutesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.IsisAdjFlagsCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.IsisAdjFlagsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.isis.adj.flags._case.IsisAdjFlagsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.sid.label.index.sid.label.index.LocalLabelCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.sid.label.index.sid.label.index.SidCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ieee754.rev130819.Float32;
@@ -241,8 +242,13 @@ public class LinkstateAttributeParserTest {
         assertEquals(2, ls.getSharedRiskLinkGroups().size());
         assertEquals(305419896, ls.getSharedRiskLinkGroups().get(0).getValue().intValue());
         assertEquals("12K-2", ls.getLinkName());
-        final IsisAdjFlagsCase flags = new IsisAdjFlagsCaseBuilder().setAddressFamily(Boolean.TRUE)
-                .setBackup(Boolean.FALSE).setSet(Boolean.FALSE).build();
+        final IsisAdjFlagsCase flags = new IsisAdjFlagsCaseBuilder()
+                .setIsisAdjFlags(new IsisAdjFlagsBuilder()
+                    .setAddressFamily(Boolean.TRUE)
+                    .setBackup(Boolean.FALSE)
+                    .setSet(Boolean.FALSE)
+                    .build())
+                .build();
         assertEquals(flags, ls.getSrAdjIds().get(0).getFlags());
         assertEquals(flags, ls.getSrAdjIds().get(1).getFlags());
         assertEquals(Uint32.valueOf(1048575L),
index ffc067c857afc3580816150c7cf6aa34b82131ca..e65daa0624f39cc8cf8ca2383bf0e8632518f940 100644 (file)
@@ -53,6 +53,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segm
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.IsisAdjFlagsCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.OspfAdjFlagsCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.OspfAdjFlagsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.isis.adj.flags._case.IsisAdjFlagsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.adj.flags.flags.ospf.adj.flags._case.OspfAdjFlagsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sid.tlv.BindingSubTlvs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sid.tlv.BindingSubTlvsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sid.tlv.flags.IsisBindingFlagsCase;
@@ -66,13 +68,23 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segm
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.SidLabelCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.UnnumberedInterfaceIdBackupEroCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.UnnumberedInterfaceIdEroCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv4.ero._case.Ipv4EroBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv4.ero.backup._case.Ipv4EroBackupBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv6.ero._case.Ipv6EroBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.ipv6.ero.backup._case.Ipv6EroBackupBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.prefix.sid._case.PrefixSidBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.unnumbered._interface.id.backup.ero._case.UnnumberedInterfaceIdBackupEroBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.binding.sub.tlvs.binding.sub.tlv.unnumbered._interface.id.ero._case.UnnumberedInterfaceIdEroBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.prefix.sid.tlv.flags.IsisPrefixFlagsCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.prefix.sid.tlv.flags.IsisPrefixFlagsCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.prefix.sid.tlv.flags.OspfPrefixFlagsCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.prefix.sid.tlv.flags.OspfPrefixFlagsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.prefix.sid.tlv.flags.isis.prefix.flags._case.IsisPrefixFlagsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.prefix.sid.tlv.flags.ospf.prefix.flags._case.OspfPrefixFlagsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.sub.tlvs.range.sub.tlv.BindingSidTlvCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.sub.tlvs.range.sub.tlv.PrefixSidTlvCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.sub.tlvs.range.sub.tlv.SidLabelTlvCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.sub.tlvs.range.sub.tlv.prefix.sid.tlv._case.PrefixSidTlvBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.tlv.SubTlvs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.range.tlv.SubTlvsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev151014.sid.label.index.sid.label.index.Ipv6AddressCaseBuilder;
@@ -93,28 +105,48 @@ public class SrAttributeParserTest {
     private static final Ipv6Address IPV6_B = new Ipv6Address("2001:db8::2");
 
     private static final IsisPrefixFlagsCase ISIS_PREFIX_FLAGS = new IsisPrefixFlagsCaseBuilder()
-            .setReadvertisement(Boolean.TRUE).setNodeSid(Boolean.FALSE).setNoPhp(Boolean.TRUE)
-            .setExplicitNull(Boolean.FALSE).build();
+            .setIsisPrefixFlags(new IsisPrefixFlagsBuilder()
+                .setReadvertisement(Boolean.TRUE)
+                .setNodeSid(Boolean.FALSE)
+                .setNoPhp(Boolean.TRUE)
+                .setExplicitNull(Boolean.FALSE)
+                .build())
+            .build();
     private static final OspfPrefixFlagsCase OSPF_PREFIX_FLAGS = new OspfPrefixFlagsCaseBuilder()
-            .setNoPhp(Boolean.FALSE).setMappingServer(Boolean.TRUE).setExplicitNull(Boolean.FALSE).build();
+            .setOspfPrefixFlags(new OspfPrefixFlagsBuilder()
+                .setNoPhp(Boolean.FALSE)
+                .setMappingServer(Boolean.TRUE)
+                .setExplicitNull(Boolean.FALSE)
+                .build())
+            .build();
 
     private static final IsisBindingFlagsCase BINDING_FLAGS = new IsisBindingFlagsCaseBuilder()
         .setAddressFamily(Boolean.FALSE)
         .setMirrorContext(Boolean.TRUE)
         .setSpreadTlv(Boolean.FALSE)
         .setLeakedFromLevel2(Boolean.FALSE)
-        .setAttachedFlag(Boolean.TRUE).build();
+        .setAttachedFlag(Boolean.TRUE)
+        .build();
 
     private static final IsisAdjFlagsCase ISIS_ADJ_FLAGS = new IsisAdjFlagsCaseBuilder()
-        .setAddressFamily(Boolean.FALSE)
-        .setBackup(Boolean.TRUE)
-        .setSet(Boolean.FALSE).build();
+            .setIsisAdjFlags(new IsisAdjFlagsBuilder()
+                .setAddressFamily(Boolean.FALSE)
+                .setBackup(Boolean.TRUE)
+                .setSet(Boolean.FALSE)
+                .build())
+            .build();
     private static final OspfAdjFlagsCase OSPF_ADJ_FLAGS = new OspfAdjFlagsCaseBuilder()
-        .setBackup(Boolean.TRUE)
-        .setSet(Boolean.FALSE).build();
+            .setOspfAdjFlags(new OspfAdjFlagsBuilder()
+                .setBackup(Boolean.TRUE)
+                .setSet(Boolean.FALSE)
+                .build())
+            .build();
     private static final OspfAdjFlagsCase OSPF_LAN_ADJ_FLAGS = new OspfAdjFlagsCaseBuilder()
-        .setBackup(Boolean.FALSE)
-        .setSet(Boolean.FALSE).build();
+            .setOspfAdjFlags(new OspfAdjFlagsBuilder()
+                .setBackup(Boolean.FALSE)
+                .setSet(Boolean.FALSE)
+                .build())
+            .build();
 
     @Before
     public void setUp() throws Exception {
@@ -234,15 +266,19 @@ public class SrAttributeParserTest {
     }
 
     private static void addSubTlvs(final List<SubTlvs> rangeSubTlvs) {
-        rangeSubTlvs.add(new SubTlvsBuilder().setRangeSubTlv(
-            new SidLabelTlvCaseBuilder()
-                .setSidLabelIndex(new SidCaseBuilder().setSid(Uint32.valueOf(16909060L)).build()).build()).build());
-        rangeSubTlvs.add(new SubTlvsBuilder().setRangeSubTlv(
-            new PrefixSidTlvCaseBuilder()
-                .setFlags(ISIS_PREFIX_FLAGS)
-                .setAlgorithm(Algorithm.StrictShortestPathFirst)
-                .setSidLabelIndex(new LocalLabelCaseBuilder()
-                    .setLocalLabel(new MplsLabel(Uint32.valueOf(66048)))
+        rangeSubTlvs.add(new SubTlvsBuilder()
+            .setRangeSubTlv(new SidLabelTlvCaseBuilder()
+                .setSidLabelIndex(new SidCaseBuilder().setSid(Uint32.valueOf(16909060L)).build())
+                .build())
+            .build());
+        rangeSubTlvs.add(new SubTlvsBuilder()
+            .setRangeSubTlv(new PrefixSidTlvCaseBuilder()
+                .setPrefixSidTlv(new PrefixSidTlvBuilder()
+                    .setFlags(ISIS_PREFIX_FLAGS)
+                    .setAlgorithm(Algorithm.StrictShortestPathFirst)
+                    .setSidLabelIndex(new LocalLabelCaseBuilder()
+                        .setLocalLabel(new MplsLabel(Uint32.valueOf(66048)))
+                        .build())
                     .build())
                 .build())
             .build());
@@ -256,12 +292,15 @@ public class SrAttributeParserTest {
     }
 
     private static void addBindingSubTlvs(final List<BindingSubTlvs> bindingSubTlvs) {
-        bindingSubTlvs.add(new BindingSubTlvsBuilder().setBindingSubTlv(
-            new PrefixSidCaseBuilder()
-                .setFlags(ISIS_PREFIX_FLAGS)
-                .setAlgorithm(Algorithm.StrictShortestPathFirst)
-                .setSidLabelIndex(new SidCaseBuilder().setSid(Uint32.valueOf(16909060L)).build())
-                .build()).build());
+        bindingSubTlvs.add(new BindingSubTlvsBuilder()
+            .setBindingSubTlv(new PrefixSidCaseBuilder()
+                .setPrefixSid(new PrefixSidBuilder()
+                    .setFlags(ISIS_PREFIX_FLAGS)
+                    .setAlgorithm(Algorithm.StrictShortestPathFirst)
+                    .setSidLabelIndex(new SidCaseBuilder().setSid(Uint32.valueOf(16909060L)).build())
+                    .build())
+                .build())
+            .build());
         bindingSubTlvs.add(new BindingSubTlvsBuilder()
             .setBindingSubTlv(new SidLabelCaseBuilder()
                 .setSidLabelIndex(new SidCaseBuilder().setSid(Uint32.valueOf(16909060L)).build())
@@ -269,23 +308,34 @@ public class SrAttributeParserTest {
             .build());
         bindingSubTlvs.add(new BindingSubTlvsBuilder().setBindingSubTlv(
             new EroMetricCaseBuilder().setEroMetric(new TeMetric(Uint32.valueOf(6))).build()).build());
-        bindingSubTlvs.add(new BindingSubTlvsBuilder().setBindingSubTlv(
-            new Ipv4EroCaseBuilder().setLoose(Boolean.FALSE).setAddress(new Ipv4Address("9.8.7.6")).build()).build());
+        bindingSubTlvs.add(new BindingSubTlvsBuilder()
+            .setBindingSubTlv(new Ipv4EroCaseBuilder()
+                .setIpv4Ero(new Ipv4EroBuilder().setLoose(Boolean.FALSE).setAddress(new Ipv4Address("9.8.7.6")).build())
+                .build())
+            .build());
         bindingSubTlvs.add(new BindingSubTlvsBuilder()
             .setBindingSubTlv(new UnnumberedInterfaceIdEroCaseBuilder()
-                .setLoose(Boolean.FALSE)
-                .setRouterId(Uint32.valueOf(16843009L))
-                .setInterfaceId(Uint32.valueOf(33686018L))
+                .setUnnumberedInterfaceIdEro(new UnnumberedInterfaceIdEroBuilder()
+                    .setLoose(Boolean.FALSE)
+                    .setRouterId(Uint32.valueOf(16843009L))
+                    .setInterfaceId(Uint32.valueOf(33686018L))
+                    .build())
                 .build())
             .build());
-        bindingSubTlvs.add(new BindingSubTlvsBuilder().setBindingSubTlv(
-            new Ipv4EroBackupCaseBuilder().setLoose(Boolean.FALSE).setAddress(new Ipv4Address("3.4.5.6")).build())
+        bindingSubTlvs.add(new BindingSubTlvsBuilder()
+            .setBindingSubTlv(new Ipv4EroBackupCaseBuilder()
+                .setIpv4EroBackup(new Ipv4EroBackupBuilder()
+                    .setLoose(Boolean.FALSE).setAddress(new Ipv4Address("3.4.5.6"))
+                    .build())
+                .build())
             .build());
         bindingSubTlvs.add(new BindingSubTlvsBuilder()
             .setBindingSubTlv(new UnnumberedInterfaceIdBackupEroCaseBuilder()
-                .setLoose(Boolean.FALSE)
-                .setRouterId(Uint32.valueOf(50529027L))
-                .setInterfaceId(Uint32.valueOf(67372036L))
+                .setUnnumberedInterfaceIdBackupEro(new UnnumberedInterfaceIdBackupEroBuilder()
+                    .setLoose(Boolean.FALSE)
+                    .setRouterId(Uint32.valueOf(50529027L))
+                    .setInterfaceId(Uint32.valueOf(67372036L))
+                    .build())
                 .build())
             .build());
     }
@@ -304,10 +354,19 @@ public class SrAttributeParserTest {
 
         final List<SubTlvs> rangeSubTlvs = new ArrayList<>();
         final List<BindingSubTlvs> bindingSubTlvs = new ArrayList<>();
-        bindingSubTlvs.add(new BindingSubTlvsBuilder().setBindingSubTlv(
-            new Ipv6EroCaseBuilder().setLoose(Boolean.FALSE).setAddress(new Ipv6Address(IPV6_A)).build()).build());
-        bindingSubTlvs.add(new BindingSubTlvsBuilder().setBindingSubTlv(
-            new Ipv6EroBackupCaseBuilder().setLoose(Boolean.FALSE).setAddress(new Ipv6Address(IPV6_B)).build())
+        bindingSubTlvs.add(new BindingSubTlvsBuilder()
+            .setBindingSubTlv(new Ipv6EroCaseBuilder()
+                .setIpv6Ero(new Ipv6EroBuilder()
+                    .setLoose(Boolean.FALSE).setAddress(new Ipv6Address(IPV6_A))
+                    .build())
+                .build())
+            .build());
+        bindingSubTlvs.add(new BindingSubTlvsBuilder()
+            .setBindingSubTlv(new Ipv6EroBackupCaseBuilder()
+                .setIpv6EroBackup(new Ipv6EroBackupBuilder()
+                    .setLoose(Boolean.FALSE).setAddress(new Ipv6Address(IPV6_B))
+                    .build())
+                .build())
             .build());
         rangeSubTlvs.add(new SubTlvsBuilder().setRangeSubTlv(
             new BindingSidTlvCaseBuilder()