import org.opendaylight.protocol.concepts.Ipv4Util;
import org.opendaylight.protocol.util.ByteArray;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunities;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunitiesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Community;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.extended.community.ExtendedCommunity;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.extended.community.extended.community.CAsSpecificExtendedCommunityBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.extended.community.extended.community.CInet4SpecificExtendedCommunityBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.extended.community.extended.community.COpaqueExtendedCommunityBuilder;
*/
public final class CommunitiesParser {
- public static final int EXTENDED_COMMUNITY_LENGTH = 8;
+ protected static final int EXTENDED_COMMUNITY_LENGTH = 8;
- public static final int COMMUNITY_LENGTH = 4;
+ protected static final int COMMUNITY_LENGTH = 4;
private static final int TYPE_LENGTH = 2;
private static final int AS_LOCAL_ADMIN_LENGTH = 4;
+ protected static final short AS_TYPE_TRANS = 0;
+
+ protected static final short AS_TYPE_NON_TRANS = 40;
+
+ protected static final short INET_TYPE_TRANS = 1;
+
+ protected static final short INET_TYPE_NON_TRANS = 41;
+
+ protected static final short OPAQUE_TYPE_TRANS = 3;
+
+ protected static final short OPAQUE_TYPE_NON_TRANS = 43;
+
+ protected static final short ROUTE_TYPE_ONLY = 2;
+
+ protected static final short ROUTE_TARGET_SUBTYPE = 2;
+
+ protected static final short ROUTE_ORIGIN_SUBTYPE = 3;
+
private CommunitiesParser() {
}
* @throws BGPDocumentedException if the type is not recognized
*/
@VisibleForTesting
- // FIXME: switch to return ExtendedCommunities with setType and subtype
- public static ExtendedCommunity parseExtendedCommunity(final byte[] bytes) throws BGPDocumentedException {
+ public static ExtendedCommunities parseExtendedCommunity(final byte[] bytes) throws BGPDocumentedException {
final int type = UnsignedBytes.toInt(bytes[0]);
final int subType = UnsignedBytes.toInt(bytes[1]);
final byte[] value = ByteArray.subByte(bytes, TYPE_LENGTH, bytes.length - TYPE_LENGTH);
+ ExtendedCommunities comm;
switch (type) {
- case 0:
- 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();
- } 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();
+ case AS_TYPE_TRANS:
+ if (subType == ROUTE_TARGET_SUBTYPE) {
+ comm = new ExtendedCommunitiesBuilder().setCommType(AS_TYPE_TRANS).setCommSubType(ROUTE_TARGET_SUBTYPE).setExtendedCommunity(
+ 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()).build();
+ } else if (subType == ROUTE_ORIGIN_SUBTYPE) {
+ comm = new ExtendedCommunitiesBuilder().setCommType(AS_TYPE_TRANS).setCommSubType(ROUTE_ORIGIN_SUBTYPE).setExtendedCommunity(
+ 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()).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();
+ comm = new ExtendedCommunitiesBuilder().setCommType(AS_TYPE_TRANS).setExtendedCommunity(
+ 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()).build();
}
- case 40:
- 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();
- 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();
- } 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();
+ break;
+ case AS_TYPE_NON_TRANS:
+ comm = new ExtendedCommunitiesBuilder().setCommType(AS_TYPE_NON_TRANS).setExtendedCommunity(
+ 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()).build();
+ break;
+ case ROUTE_TYPE_ONLY:
+ if (subType == ROUTE_TARGET_SUBTYPE) {
+ comm = new ExtendedCommunitiesBuilder().setCommType(ROUTE_TYPE_ONLY).setCommSubType(ROUTE_TARGET_SUBTYPE).setExtendedCommunity(
+ 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()).build();
+ } else if (subType == ROUTE_ORIGIN_SUBTYPE) {
+ comm = new ExtendedCommunitiesBuilder().setCommType(ROUTE_TYPE_ONLY).setCommSubType(ROUTE_ORIGIN_SUBTYPE).setExtendedCommunity(
+ 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()).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();
- } 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();
+ break;
+ case INET_TYPE_TRANS:
+ if (subType == ROUTE_TARGET_SUBTYPE) {
+ comm = new ExtendedCommunitiesBuilder().setCommType(INET_TYPE_TRANS).setCommSubType(ROUTE_TARGET_SUBTYPE).setExtendedCommunity(
+ 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()).build();
+ } else if (subType == ROUTE_ORIGIN_SUBTYPE) {
+ comm = new ExtendedCommunitiesBuilder().setCommType(INET_TYPE_TRANS).setCommSubType(ROUTE_ORIGIN_SUBTYPE).setExtendedCommunity(
+ 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()).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();
+ comm = new ExtendedCommunitiesBuilder().setCommType(INET_TYPE_TRANS).setExtendedCommunity(
+ new CInet4SpecificExtendedCommunityBuilder().setInet4SpecificExtendedCommunity(
+ new Inet4SpecificExtendedCommunityBuilder().setTransitive(false).setGlobalAdministrator(
+ Ipv4Util.addressForBytes(ByteArray.subByte(value, 0, 4))).setLocalAdministrator(
+ ByteArray.subByte(value, 4, 2)).build()).build()).build();
}
- case 41:
- return new CInet4SpecificExtendedCommunityBuilder().setInet4SpecificExtendedCommunity(
- new Inet4SpecificExtendedCommunityBuilder().setTransitive(true).setGlobalAdministrator(
- Ipv4Util.addressForBytes(ByteArray.subByte(value, 0, 4))).setLocalAdministrator(ByteArray.subByte(value, 4, 2)).build()).build();
- case 3:
- return new COpaqueExtendedCommunityBuilder().setOpaqueExtendedCommunity(
- new OpaqueExtendedCommunityBuilder().setTransitive(false).setValue(value).build()).build();
- case 43:
- return new COpaqueExtendedCommunityBuilder().setOpaqueExtendedCommunity(
- new OpaqueExtendedCommunityBuilder().setTransitive(true).setValue(value).build()).build();
+ break;
+ case INET_TYPE_NON_TRANS:
+ comm = new ExtendedCommunitiesBuilder().setCommType(INET_TYPE_NON_TRANS).setExtendedCommunity(
+ new CInet4SpecificExtendedCommunityBuilder().setInet4SpecificExtendedCommunity(
+ new Inet4SpecificExtendedCommunityBuilder().setTransitive(true).setGlobalAdministrator(
+ Ipv4Util.addressForBytes(ByteArray.subByte(value, 0, 4))).setLocalAdministrator(
+ ByteArray.subByte(value, 4, 2)).build()).build()).build();
+ break;
+ case OPAQUE_TYPE_TRANS:
+ comm = new ExtendedCommunitiesBuilder().setCommType(OPAQUE_TYPE_TRANS).setExtendedCommunity(
+ new COpaqueExtendedCommunityBuilder().setOpaqueExtendedCommunity(
+ new OpaqueExtendedCommunityBuilder().setTransitive(false).setValue(value).build()).build()).build();
+ break;
+ case OPAQUE_TYPE_NON_TRANS:
+ comm = new ExtendedCommunitiesBuilder().setCommType(OPAQUE_TYPE_NON_TRANS).setExtendedCommunity(
+ new COpaqueExtendedCommunityBuilder().setOpaqueExtendedCommunity(
+ new OpaqueExtendedCommunityBuilder().setTransitive(true).setValue(value).build()).build()).build();
+ break;
default:
throw new BGPDocumentedException("Could not parse Extended Community type: " + type, BGPError.OPT_ATTR_ERROR);
}
+ return comm;
}
}
import org.opendaylight.protocol.bgp.parser.spi.AttributeParser;
import org.opendaylight.protocol.util.ByteArray;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunities;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunitiesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.update.PathAttributesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.extended.community.ExtendedCommunity;
import com.google.common.collect.Lists;
final List<ExtendedCommunities> set = Lists.newArrayList();
int i = 0;
while (i < bytes.length) {
- ExtendedCommunity comm = CommunitiesParser.parseExtendedCommunity(ByteArray.subByte(bytes, i,
+ final ExtendedCommunities comm = CommunitiesParser.parseExtendedCommunity(ByteArray.subByte(bytes, i,
CommunitiesParser.EXTENDED_COMMUNITY_LENGTH));
i += CommunitiesParser.EXTENDED_COMMUNITY_LENGTH;
- set.add(new ExtendedCommunitiesBuilder().setExtendedCommunity(comm).build());
+ set.add(comm);
}
builder.setExtendedCommunities(set);
new Ipv4NextHopBuilder().setGlobal(new Ipv4Address("3.3.3.3")).build()).build();
final List<ExtendedCommunities> comms = Lists.newArrayList();
- comms.add(new ExtendedCommunitiesBuilder().setExtendedCommunity(
+ comms.add(new ExtendedCommunitiesBuilder().setCommType((short) 1).setExtendedCommunity(
new CInet4SpecificExtendedCommunityBuilder().setInet4SpecificExtendedCommunity(
new Inet4SpecificExtendedCommunityBuilder().setTransitive(false).setGlobalAdministrator(
new Ipv4Address("192.168.1.0")).setLocalAdministrator(new byte[] { 0x12, 0x34 }).build()).build()).build());
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.bgp.parameters.c.parameters.CAs4BytesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.bgp.parameters.c.parameters.c.as4.bytes.As4BytesCapabilityBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AggregatorBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.ExtendedCommunities;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.BgpTableType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.open.bgp.parameters.c.parameters.CMultiprotocolBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.open.bgp.parameters.c.parameters.c.multiprotocol.MultiprotocolCapability;
tt.put(t, true);
tt.put(t1, false);
+ // FIXME: revive test for graceful capability tlv
// final BGPParameter tlv3 = new GracefulCapability(false, 0, tt);
final CParameters tlv4 = new CAs4BytesBuilder().setAs4BytesCapability(
@Test
public void testCommunitiesParser() {
- CAsSpecificExtendedCommunity as = null;
+ ExtendedCommunities as = null;
try {
- as = (CAsSpecificExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 0, 5, 0, 54, 0, 0, 1, 76 });
+ as = CommunitiesParser.parseExtendedCommunity(new byte[] { 0, 5, 0, 54, 0, 0, 1, 76 });
} catch (final BGPDocumentedException e1) {
fail("Not expected exception: " + e1);
}
CAsSpecificExtendedCommunity expected = new CAsSpecificExtendedCommunityBuilder().setAsSpecificExtendedCommunity(
new AsSpecificExtendedCommunityBuilder().setTransitive(false).setGlobalAdministrator(new AsNumber(54L)).setLocalAdministrator(
new byte[] { 0, 0, 1, 76 }).build()).build();
- assertEquals(expected.getAsSpecificExtendedCommunity().isTransitive(), as.getAsSpecificExtendedCommunity().isTransitive());
+ CAsSpecificExtendedCommunity result = (CAsSpecificExtendedCommunity) as.getExtendedCommunity();
+ assertEquals(expected.getAsSpecificExtendedCommunity().isTransitive(), result.getAsSpecificExtendedCommunity().isTransitive());
assertEquals(expected.getAsSpecificExtendedCommunity().getGlobalAdministrator(),
- as.getAsSpecificExtendedCommunity().getGlobalAdministrator());
+ result.getAsSpecificExtendedCommunity().getGlobalAdministrator());
assertArrayEquals(expected.getAsSpecificExtendedCommunity().getLocalAdministrator(),
- as.getAsSpecificExtendedCommunity().getLocalAdministrator());
+ result.getAsSpecificExtendedCommunity().getLocalAdministrator());
+ assertEquals(0, as.getCommType().intValue());
try {
- as = (CAsSpecificExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 40, 5, 0, 54, 0, 0, 1, 76 });
+ as = CommunitiesParser.parseExtendedCommunity(new byte[] { 40, 5, 0, 54, 0, 0, 1, 76 });
} catch (final BGPDocumentedException e1) {
fail("Not expected exception: " + e1);
}
expected = new CAsSpecificExtendedCommunityBuilder().setAsSpecificExtendedCommunity(
new AsSpecificExtendedCommunityBuilder().setTransitive(true).setGlobalAdministrator(new AsNumber(54L)).setLocalAdministrator(
new byte[] { 0, 0, 1, 76 }).build()).build();
- assertEquals(expected.getAsSpecificExtendedCommunity().isTransitive(), as.getAsSpecificExtendedCommunity().isTransitive());
+ result = (CAsSpecificExtendedCommunity) as.getExtendedCommunity();
+ assertEquals(expected.getAsSpecificExtendedCommunity().isTransitive(), result.getAsSpecificExtendedCommunity().isTransitive());
+ assertEquals(40, as.getCommType().intValue());
- CRouteTargetExtendedCommunity rtc = null;
+ ExtendedCommunities rtc = null;
try {
- rtc = (CRouteTargetExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 1, 2, 0, 35, 4, 2, 8, 7 });
+ rtc = CommunitiesParser.parseExtendedCommunity(new byte[] { 1, 2, 0, 35, 4, 2, 8, 7 });
} catch (final BGPDocumentedException e1) {
fail("Not expected exception: " + e1);
}
final CRouteTargetExtendedCommunity rexpected = new CRouteTargetExtendedCommunityBuilder().setRouteTargetExtendedCommunity(
new RouteTargetExtendedCommunityBuilder().setGlobalAdministrator(new AsNumber(35L)).setLocalAdministrator(
new byte[] { 4, 2, 8, 7 }).build()).build();
+ final CRouteTargetExtendedCommunity rresult = (CRouteTargetExtendedCommunity) rtc.getExtendedCommunity();
assertEquals(rexpected.getRouteTargetExtendedCommunity().getGlobalAdministrator(),
- rtc.getRouteTargetExtendedCommunity().getGlobalAdministrator());
+ rresult.getRouteTargetExtendedCommunity().getGlobalAdministrator());
assertArrayEquals(rexpected.getRouteTargetExtendedCommunity().getLocalAdministrator(),
- rtc.getRouteTargetExtendedCommunity().getLocalAdministrator());
+ rresult.getRouteTargetExtendedCommunity().getLocalAdministrator());
+ assertEquals(1, rtc.getCommType().intValue());
+ assertEquals(2, rtc.getCommSubType().intValue());
- CRouteOriginExtendedCommunity roc = null;
+ ExtendedCommunities roc = null;
try {
- roc = (CRouteOriginExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 0, 3, 0, 24, 4, 2, 8, 7 });
+ roc = CommunitiesParser.parseExtendedCommunity(new byte[] { 0, 3, 0, 24, 4, 2, 8, 7 });
} catch (final BGPDocumentedException e1) {
fail("Not expected exception: " + e1);
}
final CRouteOriginExtendedCommunity oexpected = new CRouteOriginExtendedCommunityBuilder().setRouteOriginExtendedCommunity(
new RouteOriginExtendedCommunityBuilder().setGlobalAdministrator(new AsNumber(24L)).setLocalAdministrator(
new byte[] { 4, 2, 8, 7 }).build()).build();
+ final CRouteOriginExtendedCommunity oresult = (CRouteOriginExtendedCommunity) roc.getExtendedCommunity();
assertEquals(oexpected.getRouteOriginExtendedCommunity().getGlobalAdministrator(),
- roc.getRouteOriginExtendedCommunity().getGlobalAdministrator());
+ oresult.getRouteOriginExtendedCommunity().getGlobalAdministrator());
assertArrayEquals(oexpected.getRouteOriginExtendedCommunity().getLocalAdministrator(),
- roc.getRouteOriginExtendedCommunity().getLocalAdministrator());
+ oresult.getRouteOriginExtendedCommunity().getLocalAdministrator());
+ assertEquals(0, roc.getCommType().intValue());
+ assertEquals(3, roc.getCommSubType().intValue());
- CInet4SpecificExtendedCommunity sec = null;
+ ExtendedCommunities sec = null;
try {
- sec = (CInet4SpecificExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 41, 6, 12, 51, 2, 5, 21, 45 });
+ sec = CommunitiesParser.parseExtendedCommunity(new byte[] { 41, 6, 12, 51, 2, 5, 21, 45 });
} catch (final BGPDocumentedException e1) {
fail("Not expected exception: " + e1);
}
final CInet4SpecificExtendedCommunity iexpected = new CInet4SpecificExtendedCommunityBuilder().setInet4SpecificExtendedCommunity(
new Inet4SpecificExtendedCommunityBuilder().setTransitive(true).setGlobalAdministrator(new Ipv4Address("12.51.2.5")).setLocalAdministrator(
new byte[] { 21, 45 }).build()).build();
- assertEquals(iexpected.getInet4SpecificExtendedCommunity().isTransitive(), sec.getInet4SpecificExtendedCommunity().isTransitive());
+ final CInet4SpecificExtendedCommunity iresult = (CInet4SpecificExtendedCommunity) sec.getExtendedCommunity();
+ assertEquals(iexpected.getInet4SpecificExtendedCommunity().isTransitive(),
+ iresult.getInet4SpecificExtendedCommunity().isTransitive());
assertEquals(iexpected.getInet4SpecificExtendedCommunity().getGlobalAdministrator(),
- sec.getInet4SpecificExtendedCommunity().getGlobalAdministrator());
+ iresult.getInet4SpecificExtendedCommunity().getGlobalAdministrator());
assertArrayEquals(iexpected.getInet4SpecificExtendedCommunity().getLocalAdministrator(),
- sec.getInet4SpecificExtendedCommunity().getLocalAdministrator());
+ iresult.getInet4SpecificExtendedCommunity().getLocalAdministrator());
+ assertEquals(41, sec.getCommType().intValue());
- COpaqueExtendedCommunity oec = null;
+ ExtendedCommunities oec = null;
try {
- oec = (COpaqueExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 3, 6, 21, 45, 5, 4, 3, 1 });
+ oec = CommunitiesParser.parseExtendedCommunity(new byte[] { 3, 6, 21, 45, 5, 4, 3, 1 });
} catch (final BGPDocumentedException e1) {
fail("Not expected exception: " + e1);
}
final COpaqueExtendedCommunity oeexpected = new COpaqueExtendedCommunityBuilder().setOpaqueExtendedCommunity(
new OpaqueExtendedCommunityBuilder().setTransitive(false).setValue(new byte[] { 21, 45, 5, 4, 3, 1 }).build()).build();
- assertEquals(oeexpected.getOpaqueExtendedCommunity().isTransitive(), oec.getOpaqueExtendedCommunity().isTransitive());
- assertArrayEquals(oeexpected.getOpaqueExtendedCommunity().getValue(), oec.getOpaqueExtendedCommunity().getValue());
+ final COpaqueExtendedCommunity oeresult = (COpaqueExtendedCommunity) oec.getExtendedCommunity();
+ assertEquals(oeexpected.getOpaqueExtendedCommunity().isTransitive(), oeresult.getOpaqueExtendedCommunity().isTransitive());
+ assertArrayEquals(oeexpected.getOpaqueExtendedCommunity().getValue(), oeresult.getOpaqueExtendedCommunity().getValue());
+ assertEquals(3, oec.getCommType().intValue());
try {
- oec = (COpaqueExtendedCommunity) CommunitiesParser.parseExtendedCommunity(new byte[] { 43, 6, 21, 45, 5, 4, 3, 1 });
+ oec = CommunitiesParser.parseExtendedCommunity(new byte[] { 43, 6, 21, 45, 5, 4, 3, 1 });
} catch (final BGPDocumentedException e1) {
fail("Not expected exception: " + e1);
}
final COpaqueExtendedCommunity oeexpected1 = new COpaqueExtendedCommunityBuilder().setOpaqueExtendedCommunity(
new OpaqueExtendedCommunityBuilder().setTransitive(true).setValue(new byte[] { 21, 45, 5, 4, 3, 1 }).build()).build();
- assertEquals(oeexpected1.getOpaqueExtendedCommunity().isTransitive(), oec.getOpaqueExtendedCommunity().isTransitive());
- assertArrayEquals(oeexpected1.getOpaqueExtendedCommunity().getValue(), oec.getOpaqueExtendedCommunity().getValue());
+ final COpaqueExtendedCommunity oeresult1 = (COpaqueExtendedCommunity) oec.getExtendedCommunity();
+ assertEquals(oeexpected1.getOpaqueExtendedCommunity().isTransitive(), oeresult1.getOpaqueExtendedCommunity().isTransitive());
+ assertArrayEquals(oeexpected1.getOpaqueExtendedCommunity().getValue(), oeresult1.getOpaqueExtendedCommunity().getValue());
+ assertEquals(43, oec.getCommType().intValue());
try {
CommunitiesParser.parseExtendedCommunity(new byte[] { 11, 11, 21, 45, 5, 4, 3, 1 });
return 0;
}
- // FIXME: look at ASPath
- // FIXME: look at everything else :-)
+ // FIXME: BUG-185: implement here
return 0;
}
builder.setSubobjects(subs);
assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), result));
- // FIXME: fix Ipv6Serializers (getType)
+ // FIXME: BUG-130: fix Ipv6Serializers (getType)
// assertArrayEquals(result, parser.serializeObject(builder.build()));
}
subs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reported.route.object.rro.SubobjectsBuilder().setSubobjectType(
new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.record.route.subobjects.subobject.type.IpPrefixBuilder().setIpPrefix(
new IpPrefix(Ipv6Util.prefixForBytes(ip6PrefixBytes, 22))).build()).setProtectionAvailable(false).setProtectionInUse(
- false).build());
+ false).build());
subs.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reported.route.object.rro.SubobjectsBuilder().setSubobjectType(
new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.record.route.subobjects.subobject.type.UnnumberedBuilder().setRouterId(
0x1245678L).setInterfaceId(0x9abcdef0L).build()).setProtectionAvailable(false).setProtectionInUse(false).build());
builder.setSubobjects(subs);
assertEquals(builder.build(), parser.parseObject(new ObjectHeaderImpl(false, false), result));
- // FIXME: fix Ipv6Serializers (getType)
+ // FIXME: BUG-130: fix Ipv6Serializers (getType)
// assertArrayEquals(result, parser.serializeObject(builder.build()));
}