Update Node Flag TLV 67/28867/1
authorClaudio D. Gasparini <cgaspari@cisco.com>
Wed, 28 Oct 2015 09:48:09 +0000 (10:48 +0100)
committerClaudio D. Gasparini <cgaspari@cisco.com>
Wed, 28 Oct 2015 09:48:09 +0000 (10:48 +0100)
Update Node Flag TLV based on last RFC

ref:https://tools.ietf.org/html/draft-ietf-idr-ls-distribution-12

Change-Id: Ia371c77780355709d65ebb9943a5b8a3fc488543
Signed-off-by: Claudio D. Gasparini <cgaspari@cisco.com>
bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/attribute/NodeAttributesParser.java
bgp/linkstate/src/main/yang/bgp-linkstate.yang
bgp/linkstate/src/test/java/org/opendaylight/protocol/bgp/linkstate/LinkstateAttributeParserTest.java

index bef35d2979e03ff61f4c6c5ff1237bc07059f3d5..dfc249edb0d3fce9271569a79750fc782b82d177 100644 (file)
@@ -54,6 +54,8 @@ public final class NodeAttributesParser {
     private static final int ATTACHED_BIT = 1;
     private static final int EXTERNAL_BIT = 2;
     private static final int ABBR_BIT = 3;
+    private static final int ROUTER_BIT = 4;
+    private static final int V6_BIT = 5;
 
     /* Node Attribute TLVs */
     private static final int NODE_FLAG_BITS = 1024;
@@ -86,7 +88,8 @@ public final class NodeAttributesParser {
                 break;
             case NODE_FLAG_BITS:
                 final BitArray flags = BitArray.valueOf(value, FLAGS_SIZE);
-                builder.setNodeFlags(new NodeFlagBits(flags.get(OVERLOAD_BIT), flags.get(ATTACHED_BIT), flags.get(EXTERNAL_BIT), flags.get(ABBR_BIT)));
+                builder.setNodeFlags(new NodeFlagBits(flags.get(OVERLOAD_BIT), flags.get(ATTACHED_BIT), flags.get
+                    (EXTERNAL_BIT), flags.get(ABBR_BIT), flags.get(ROUTER_BIT), flags.get(V6_BIT)));
                 LOG.debug("Parsed Overload bit: {}, attached bit: {}, external bit: {}, area border router: {}.",
                     flags.get(OVERLOAD_BIT), flags.get(ATTACHED_BIT), flags.get(EXTERNAL_BIT), flags.get(ABBR_BIT));
                 break;
@@ -203,6 +206,8 @@ public final class NodeAttributesParser {
             flags.set(ATTACHED_BIT, nodeFlagBits.isAttached());
             flags.set(EXTERNAL_BIT, nodeFlagBits.isExternal());
             flags.set(ABBR_BIT, nodeFlagBits.isAbr());
+            flags.set(ROUTER_BIT, nodeFlagBits.isRouter());
+            flags.set(V6_BIT, nodeFlagBits.isV6());
             flags.toByteBuf(nodeFlagBuf);
             TlvUtil.writeTLV(NODE_FLAG_BITS, nodeFlagBuf, byteAggregator);
         }
index e08f36b20f241703d3a5ad20c6e654e0ff08e3cb..6aa85736627da86cd95eb062193b387631ae2c3d 100644 (file)
@@ -416,6 +416,12 @@ module bgp-linkstate {
             bit abr {
                 position 3;
             }
+            bit router {
+                position 4;
+            }
+            bit v6 {
+                position 5;
+            }
         }
     }
 
index f62991f99c04905ba3fa5327e6f14e98c810dca5..974e4f8dde801e97661e37b72dec9b80ef18425a 100644 (file)
@@ -93,7 +93,7 @@ public class LinkstateAttributeParserTest {
         0x04, 0x0d, 0, 0x08, (byte)0x80, 0x05, 0x01, 0x04, 0x0a, 0x0b, 0x0c, 0x0e,
         0x04, (byte) 0x88, 0, 0x01, 0x0a };
 
-    private static final byte[] NODE_ATTR = { 0x01, 0x07, 0, 0x04, 0, 0x2a, 0, 0x2b, 0x04, 0, 0, 0x01, (byte) 0xb0, 0x04, 0x02, 0,
+    private static final byte[] NODE_ATTR = { 0x01, 0x07, 0, 0x04, 0, 0x2a, 0, 0x2b, 0x04, 0, 0, 0x01, (byte) 0xbc, 0x04, 0x02, 0,
         0x05, 0x31, 0x32, 0x4b, 0x2d, 0x32, 0x04, 0x03, 0, 0x01, 0x72, 0x04, 0x03, 0, 0x01, 0x73, 0x04, 0x04, 0, 0x04,
         0x29, 0x29, 0x29, 0x29, 0x04, (byte) 0x88, 0, 0x01, 0x0a };
 
@@ -224,6 +224,8 @@ public class LinkstateAttributeParserTest {
         assertFalse(ls.getNodeFlags().isAttached());
         assertTrue(ls.getNodeFlags().isExternal());
         assertTrue(ls.getNodeFlags().isAbr());
+        assertTrue(ls.getNodeFlags().isRouter());
+        assertTrue(ls.getNodeFlags().isV6());
 
         assertEquals("12K-2", ls.getDynamicHostname());
         assertEquals(2, ls.getIsisAreaId().size());