BGP handle multiple update message processing
Change-Id: I61cba87876e27be63a8dfa5539d321e3e6273c09
diff --git a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPMessageVer4.java b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPMessageVer4.java
index d45e3de..34fa5d7 100755
--- a/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPMessageVer4.java
+++ b/bgp/bgpio/src/main/java/org/onosproject/bgpio/protocol/ver4/BGPMessageVer4.java
@@ -75,8 +75,9 @@
}
}
short length = cb.readShort();
- if (length != (cb.readableBytes() + HEADER_AND_MSG_LEN)) {
- Validation.validateLen(BGPErrorType.MESSAGE_HEADER_ERROR, BGPErrorType.BAD_MESSAGE_LENGTH, length);
+ if (length > cb.readableBytes() + HEADER_AND_MSG_LEN) {
+ Validation.validateLen(BGPErrorType.MESSAGE_HEADER_ERROR,
+ BGPErrorType.BAD_MESSAGE_LENGTH, length);
}
bgpHeader.setLength(length);
byte type = cb.readByte();
@@ -93,7 +94,7 @@
return BGPKeepaliveMsgVer4.READER.readFrom(cb.readBytes(len), bgpHeader);
case UPDATE_MSG_TYPE:
log.debug("UPDATE MESSAGE is received");
- // TODO: Update message version 4
+ return BgpUpdateMsgVer4.READER.readFrom(cb.readBytes(len), bgpHeader);
case NOTIFICATION_MSG_TYPE:
log.debug("NOTIFICATION MESSAGE is received");
return BGPNotificationMsgVer4.READER.readFrom(cb.readBytes(len), bgpHeader);
@@ -102,7 +103,8 @@
return null;
}
} catch (IndexOutOfBoundsException e) {
- throw new BGPParseException(BGPErrorType.MESSAGE_HEADER_ERROR, BGPErrorType.BAD_MESSAGE_LENGTH, null);
+ throw new BGPParseException(BGPErrorType.MESSAGE_HEADER_ERROR,
+ BGPErrorType.BAD_MESSAGE_LENGTH, null);
}
}
}