Bug 5564: BGP-LS: Bad handling of unknown NLRI type cause NPE 81/36881/2
authorMilos Fabian <milfabia@cisco.com>
Wed, 30 Mar 2016 12:19:02 +0000 (14:19 +0200)
committerRobert Varga <nite@hq.sk>
Fri, 1 Apr 2016 20:55:17 +0000 (20:55 +0000)
Fixed destination extractor for TE LSP NLRI Type.

Change-Id: Ie1a26e78d71d289ae2b63bd3c7a5d7167c50ee99
Signed-off-by: Milos Fabian <milfabia@cisco.com>
bgp/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/nlri/LinkstateNlriParser.java

index 7aca24bef6a37f14d506aee208f917b0e4d2dd64..f2bd7e1734402d7b114fe4d7a785d32293853faa 100644 (file)
@@ -193,7 +193,7 @@ public final class LinkstateNlriParser implements NlriParser, NlriSerializer {
         nlriByteBuf.writeByte(destination.getProtocolId().getIntValue());
         nlriByteBuf.writeLong(destination.getIdentifier().getValue().longValue());
         final ByteBuf ldescs = Unpooled.buffer();
-        NlriType nlriType = SimpleNlriTypeRegistry.getInstance().serializeNlriType(destination, ldescs, nlriByteBuf);
+        final NlriType nlriType = SimpleNlriTypeRegistry.getInstance().serializeNlriType(destination, ldescs, nlriByteBuf);
         Preconditions.checkNotNull(nlriType, "NLRI Type value should not be null.");
         TlvUtil.writeTLV(nlriType.getIntValue(), nlriByteBuf, buffer);
     }
@@ -259,18 +259,16 @@ public final class LinkstateNlriParser implements NlriParser, NlriSerializer {
         serializeCommonParts(builder, linkstate);
 
         final ChoiceNode objectType = (ChoiceNode) linkstate.getChild(OBJECT_TYPE_NID).get();
-        if (!builder.getProtocolId().equals(ProtocolId.RsvpTe)) {
-            if (objectType.getChild(ADVERTISING_NODE_DESCRIPTORS_NID).isPresent()) {
-                serializeAdvertisedNodeDescriptor(builder, objectType);
-            } else if (objectType.getChild(LOCAL_NODE_DESCRIPTORS_NID).isPresent()) {
-                serializeLocalNodeDescriptor(builder, objectType);
-            } else if (objectType.getChild(NODE_DESCRIPTORS_NID).isPresent()) {
-                serializeNodeDescriptor(builder, objectType);
-            } else {
-                LOG.warn("Unknown Object Type.");
-            }
+        if (objectType.getChild(ADVERTISING_NODE_DESCRIPTORS_NID).isPresent()) {
+            serializeAdvertisedNodeDescriptor(builder, objectType);
+        } else if (objectType.getChild(LOCAL_NODE_DESCRIPTORS_NID).isPresent()) {
+            serializeLocalNodeDescriptor(builder, objectType);
+        } else if (objectType.getChild(NODE_DESCRIPTORS_NID).isPresent()) {
+            serializeNodeDescriptor(builder, objectType);
         } else if (TeLspNlriSerializer.isTeLsp(objectType)) {
             builder.setObjectType(TeLspNlriSerializer.serializeTeLsp(objectType));
+        } else {
+            LOG.warn("Unknown Object Type: {}.", objectType);
         }
         return builder.build();
     }