BUG-113: split out attribute parsers
[bgpcep.git] / bgp / parser-impl / src / main / java / org / opendaylight / protocol / bgp / parser / impl / message / update / CommunitiesParser.java
index 9b20326b04983f8ab0ba627a9f0f0f988bcafdd8..999038d96fa0014bc87e282fc698801b92cbf543 100644 (file)
@@ -59,8 +59,9 @@ public class CommunitiesParser {
         * @throws BGPDocumentedException
         */
        static Community parseCommunity(final byte[] bytes) throws BGPDocumentedException {
-               if (bytes.length != COMMUNITY_LENGTH)
+               if (bytes.length != COMMUNITY_LENGTH) {
                        throw new BGPDocumentedException("Community with wrong length: " + bytes.length, BGPError.OPT_ATTR_ERROR);
+               }
                if (Arrays.equals(bytes, new byte[] { (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0x01 })) {
                        return CommunityUtil.NO_EXPORT;
                } else if (Arrays.equals(bytes, new byte[] { (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0x02 })) {
@@ -91,51 +92,54 @@ public class CommunitiesParser {
                                return new CRouteTargetExtendedCommunityBuilder().setRouteTargetExtendedCommunity(
                                                new RouteTargetExtendedCommunityBuilder().setGlobalAdministrator(
                                                                new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
                        } else if (subType == 3) {
                                return new CRouteOriginExtendedCommunityBuilder().setRouteOriginExtendedCommunity(
                                                new RouteOriginExtendedCommunityBuilder().setGlobalAdministrator(
                                                                new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
-                       } else
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
+                       } else {
                                return new CAsSpecificExtendedCommunityBuilder().setAsSpecificExtendedCommunity(
                                                new AsSpecificExtendedCommunityBuilder().setTransitive(false).setGlobalAdministrator(
                                                                new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
+                       }
                case 40: // 01000000
                        return new CAsSpecificExtendedCommunityBuilder().setAsSpecificExtendedCommunity(
                                        new AsSpecificExtendedCommunityBuilder().setTransitive(true).setGlobalAdministrator(
                                                        new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                       ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
+                                                                       ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
                case 2:
                        if (subType == 2) {
                                return new CRouteTargetExtendedCommunityBuilder().setRouteTargetExtendedCommunity(
                                                new RouteTargetExtendedCommunityBuilder().setGlobalAdministrator(
                                                                new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
                        } else if (subType == 3) {
                                return new CRouteOriginExtendedCommunityBuilder().setRouteOriginExtendedCommunity(
                                                new RouteOriginExtendedCommunityBuilder().setGlobalAdministrator(
                                                                new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
-                       } else
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
+                       } else {
                                throw new BGPDocumentedException("Could not parse Extended Community subtype: " + subType, BGPError.OPT_ATTR_ERROR);
+                       }
                case 1:
                        if (subType == 2) {
                                return new CRouteTargetExtendedCommunityBuilder().setRouteTargetExtendedCommunity(
                                                new RouteTargetExtendedCommunityBuilder().setGlobalAdministrator(
                                                                new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
                        } else if (subType == 3) {
                                return new CRouteOriginExtendedCommunityBuilder().setRouteOriginExtendedCommunity(
                                                new RouteOriginExtendedCommunityBuilder().setGlobalAdministrator(
                                                                new AsNumber(ByteArray.bytesToLong(ByteArray.subByte(value, 0, AS_NUMBER_LENGTH)))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
-                       } else
+                                                                               ByteArray.subByte(value, AS_NUMBER_LENGTH, AS_LOCAL_ADMIN_LENGTH)).build()).build();
+                       } else {
                                return new CInet4SpecificExtendedCommunityBuilder().setInet4SpecificExtendedCommunity(
                                                new Inet4SpecificExtendedCommunityBuilder().setTransitive(false).setGlobalAdministrator(
                                                                Ipv4Util.addressForBytes(ByteArray.subByte(value, 0, 4))).setLocalAdministrator(
-                                                               ByteArray.subByte(value, 4, 2)).build()).build();
+                                                                               ByteArray.subByte(value, 4, 2)).build()).build();
+                       }
                case 41: // 01000001
                        return new CInet4SpecificExtendedCommunityBuilder().setInet4SpecificExtendedCommunity(
                                        new Inet4SpecificExtendedCommunityBuilder().setTransitive(true).setGlobalAdministrator(