Bump upstreams to 2022.09
[bgpcep.git] / bgp / parser-impl / src / main / java / org / opendaylight / protocol / bgp / parser / impl / message / open / LlGracefulCapabilityHandler.java
index a7898ad272f5c35b422108ae522938a3c6a82406..0f230c74d268fe8d57da60e56b13d814d21fba26 100644 (file)
@@ -12,13 +12,13 @@ import static java.util.Objects.requireNonNull;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Map;
 import org.opendaylight.protocol.bgp.parser.spi.AddressFamilyRegistry;
 import org.opendaylight.protocol.bgp.parser.spi.CapabilityParser;
 import org.opendaylight.protocol.bgp.parser.spi.CapabilitySerializer;
 import org.opendaylight.protocol.bgp.parser.spi.CapabilityUtil;
 import org.opendaylight.protocol.bgp.parser.spi.SubsequentAddressFamilyRegistry;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204.Uint24;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.optional.capabilities.CParameters;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.optional.capabilities.CParametersBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.CParameters1;
@@ -27,9 +27,10 @@ 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.mp.capabilities.LlGracefulRestartCapabilityBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.ll.graceful.restart.capability.Tables;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.ll.graceful.restart.capability.TablesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.ll.graceful.restart.capability.TablesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.SubsequentAddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.uint24.rev200104.Uint24;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -61,11 +62,11 @@ public final class LlGracefulCapabilityHandler implements CapabilityParser, Capa
 
     @Override
     public CParameters parseCapability(final ByteBuf buffer) {
-        final List<Tables> tables = new ArrayList<>();
+        final BindingMap.Builder<TablesKey, Tables> tables = BindingMap.builder();
 
         while (buffer.isReadable()) {
             final short afival = buffer.readShort();
-            final Class<? extends AddressFamily> afi = this.afiReg.classForFamily(afival);
+            final AddressFamily afi = this.afiReg.classForFamily(afival);
             if (afi == null) {
                 LOG.debug("Ignoring GR capability for unknown address family {}", afival);
                 buffer.skipBytes(PER_TABLE_SIZE - 2);
@@ -73,7 +74,7 @@ public final class LlGracefulCapabilityHandler implements CapabilityParser, Capa
             }
 
             final byte safival = buffer.readByte();
-            final Class<? extends SubsequentAddressFamily> safi = this.safiReg.classForFamily(safival);
+            final SubsequentAddressFamily safi = this.safiReg.classForFamily(safival);
             if (safi == null) {
                 LOG.debug("Ignoring GR capability for unknown subsequent address family {}", safival);
                 buffer.skipBytes(PER_TABLE_SIZE - 3);
@@ -85,17 +86,17 @@ public final class LlGracefulCapabilityHandler implements CapabilityParser, Capa
             final Tables table = new TablesBuilder()
                     .setAfi(afi)
                     .setSafi(safi)
-                    .setAfiFlags(new Tables.AfiFlags(Boolean.valueOf(afiFlags == AFI_FLAG_FORWARDING_STATE)))
+                    .setAfiFlags(new Tables.AfiFlags(afiFlags == AFI_FLAG_FORWARDING_STATE))
                     .setLongLivedStaleTime(new Uint24(Uint32.valueOf(staleTime)))
                     .build();
             tables.add(table);
         }
         return new CParametersBuilder()
-                .addAugmentation(CParameters1.class, new CParameters1Builder()
-                        .setLlGracefulRestartCapability(new LlGracefulRestartCapabilityBuilder()
-                                .setTables(tables)
-                                .build())
+                .addAugmentation(new CParameters1Builder()
+                    .setLlGracefulRestartCapability(new LlGracefulRestartCapabilityBuilder()
+                        .setTables(tables.build())
                         .build())
+                    .build())
                 .build();
     }
 
@@ -111,22 +112,22 @@ public final class LlGracefulCapabilityHandler implements CapabilityParser, Capa
     }
 
     private ByteBuf serializeCapability(final LlGracefulRestartCapability cap) {
-        final List<Tables> tables = cap.getTables();
+        final Map<TablesKey, Tables> tables = cap.getTables();
         if (tables == null || tables.isEmpty()) {
             return Unpooled.EMPTY_BUFFER;
         }
 
         final ByteBuf buffer = Unpooled.buffer(PER_TABLE_SIZE * tables.size());
-        for (Tables table : tables) {
-            final Class<? extends AddressFamily> afi = table.getAfi();
-            final Class<? extends SubsequentAddressFamily> safi = table.getSafi();
+        for (Tables table : tables.values()) {
+            final AddressFamily afi = table.getAfi();
             final Integer afival = this.afiReg.numberForClass(afi);
             checkArgument(afival != null, "Unhandled address family %s", afi);
             buffer.writeShort(afival);
+            final SubsequentAddressFamily safi = table.getSafi();
             final Integer safival = this.safiReg.numberForClass(safi);
             checkArgument(safival != null, "Unhandled subsequent address family %s", safi);
             buffer.writeByte(safival);
-            if (table.getAfiFlags() != null && table.getAfiFlags().isForwardingState()) {
+            if (table.getAfiFlags() != null && table.getAfiFlags().getForwardingState()) {
                 buffer.writeByte(AFI_FLAG_FORWARDING_STATE);
             } else {
                 buffer.writeByte(0);