use of org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop.LrsBits in project lispflowmapping by opendaylight.
the class LispAddressUtil method asTeLcafRloc.
public static Rloc asTeLcafRloc(List<IpAddress> hopList) {
ExplicitLocatorPathBuilder teAddrBuilder = new ExplicitLocatorPathBuilder();
teAddrBuilder.setHop(new ArrayList<Hop>());
for (IpAddress hop : hopList) {
HopBuilder hopBuilder = new HopBuilder();
hopBuilder.setAddress(new SimpleAddress(hop));
hopBuilder.setHopId("Hop " + teAddrBuilder.getHop().size());
hopBuilder.setLrsBits(new LrsBits(false, false, false));
teAddrBuilder.getHop().add(hopBuilder.build());
}
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ExplicitLocatorPathBuilder elpBuilder = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ExplicitLocatorPathBuilder();
elpBuilder.setExplicitLocatorPath(teAddrBuilder.build());
RlocBuilder teBuilder = new RlocBuilder();
teBuilder.setAddress(elpBuilder.build());
teBuilder.setAddressType(ExplicitLocatorPathLcaf.class);
return teBuilder.build();
}
use of org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop.LrsBits in project lispflowmapping by opendaylight.
the class MappingServiceIntegrationTest method registerAndQuery__TrafficEngineering.
public void registerAndQuery__TrafficEngineering() throws SocketTimeoutException {
cleanUP();
String macString = "01:02:03:04:05:06";
String ipString = "10.20.255.30";
HopBuilder hopBuilder = new HopBuilder();
hopBuilder.setAddress(new SimpleAddress(new IpAddress(new Ipv4Address(ipString))));
hopBuilder.setLrsBits(new LrsBits(true, false, true));
Hop hop1 = hopBuilder.build();
hopBuilder.setAddress(new SimpleAddress(new MacAddress(macString)));
hopBuilder.setLrsBits(new LrsBits(false, true, false));
Hop hop2 = hopBuilder.build();
ExplicitLocatorPathBuilder elpBuilder = new ExplicitLocatorPathBuilder();
elpBuilder.setHop(new ArrayList<Hop>());
elpBuilder.getHop().add(hop1);
elpBuilder.getHop().add(hop2);
EidBuilder eb = new EidBuilder();
eb.setAddressType(ExplicitLocatorPathLcaf.class);
eb.setVirtualNetworkId(null);
eb.setAddress(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ExplicitLocatorPathBuilder().setExplicitLocatorPath(elpBuilder.build()).build());
MapReply reply = registerAddressAndQuery(eb.build());
assertEquals(ExplicitLocatorPathLcaf.class, reply.getMappingRecordItem().get(0).getMappingRecord().getEid().getAddressType());
ExplicitLocatorPath receivedAddress = (ExplicitLocatorPath) reply.getMappingRecordItem().get(0).getMappingRecord().getEid().getAddress();
Hop receivedHop1 = (Hop) receivedAddress.getExplicitLocatorPath().getHop().get(0);
Hop receivedHop2 = (Hop) receivedAddress.getExplicitLocatorPath().getHop().get(1);
assertEquals(true, receivedHop1.getLrsBits().isLookup());
assertEquals(false, receivedHop1.getLrsBits().isRlocProbe());
assertEquals(true, receivedHop1.getLrsBits().isStrict());
assertEquals(false, receivedHop2.getLrsBits().isLookup());
assertEquals(true, receivedHop2.getLrsBits().isRlocProbe());
assertEquals(false, receivedHop2.getLrsBits().isStrict());
assertNotNull(receivedHop1.getAddress().getIpAddress().getIpv4Address());
assertNotNull(receivedHop2.getAddress().getMacAddress());
assertEquals(ipString, receivedHop1.getAddress().getIpAddress().getIpv4Address().getValue());
assertEquals(macString, receivedHop2.getAddress().getMacAddress().getValue());
}
use of org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop.LrsBits in project lispflowmapping by opendaylight.
the class LispAddressUtilTest method asTeLcafRloc.
/**
* Tests {@link LispAddressUtil#asSrcDstEid(SourceDestKey, InstanceIdType)} method.
*/
@Test
public void asTeLcafRloc() {
final List<IpAddress> ipAddresses = Arrays.asList(IP_ADDRESS_IPV4_TEST, IP_ADDRESS_IPV6_TEST);
final Rloc rloc = LispAddressUtil.asTeLcafRloc(ipAddresses);
assertNotNull(rloc);
assertEquals(ExplicitLocatorPathLcaf.class, rloc.getAddressType());
final List<Hop> hops = ((ExplicitLocatorPath) rloc.getAddress()).getExplicitLocatorPath().getHop();
assertEquals(hops.size(), ipAddresses.size());
for (IpAddress ipAddress : ipAddresses) {
assertTrue("Ip address " + ipAddress + "should be part of hops list.", isIpAddressInHops(ipAddress, hops));
}
for (Hop hop : hops) {
final Hop.LrsBits lrsBits = hop.getLrsBits();
assertFalse(lrsBits.isLookup());
assertFalse(lrsBits.isRlocProbe());
assertFalse(lrsBits.isStrict());
final IpAddress ipAddressFromHop = hop.getAddress().getIpAddress();
assertNotNull(ipAddressFromHop);
}
}
use of org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop.LrsBits in project lispflowmapping by opendaylight.
the class ExplicitLocatorPathSerializer method deserializeData.
private Address deserializeData(ByteBuffer buffer, short lcafLength, LispAddressSerializerContext ctx) {
List<Hop> hops = new ArrayList<Hop>();
short length = lcafLength;
while (length > 0) {
byte flags = (byte) buffer.getShort();
boolean lookup = ByteUtil.extractBit(flags, Flags.LOOKUP);
boolean rlocProbe = ByteUtil.extractBit(flags, Flags.RLOC_PROBE);
boolean strict = ByteUtil.extractBit(flags, Flags.STRICT);
SimpleAddress address = SimpleAddressSerializer.getInstance().deserialize(buffer, ctx);
HopBuilder builder = new HopBuilder();
builder.setLrsBits(new LrsBits(lookup, rlocProbe, strict));
builder.setAddress(address);
builder.setHopId("Hop " + (hops.size() + 1));
length -= SimpleAddressSerializer.getInstance().getAddressSize(address) + 2;
hops.add(builder.build());
}
return new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ExplicitLocatorPathBuilder().setExplicitLocatorPath(new ExplicitLocatorPathBuilder().setHop(hops).build()).build();
}
use of org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop.LrsBits in project lispflowmapping by opendaylight.
the class LispAddressStringifier method getStringFromExplicitLocatorPath.
protected static String getStringFromExplicitLocatorPath(Destination dst, ExplicitLocatorPath addr) {
// AFI = 16387, LCAF Type 10, Explicit Locator Path
// Example rendering:
// {192.0.2.1->192.0.2.2|lps->192.0.2.3}
List<Hop> hops = addr.getExplicitLocatorPath().getHop();
StringBuilder sb = new StringBuilder();
sb.append("{");
boolean needArrow = false;
for (Hop hop : hops) {
if (needArrow) {
sb.append("->");
}
sb.append(LispSimpleAddressStringifier.getString(dst, hop.getAddress()));
LrsBits lrs = hop.getLrsBits();
if (lrs.isLookup() || lrs.isRlocProbe() || lrs.isStrict()) {
sb.append("|");
}
if (lrs.isLookup()) {
sb.append("l");
}
if (lrs.isRlocProbe()) {
sb.append("p");
}
if (lrs.isStrict()) {
sb.append("s");
}
needArrow = true;
}
sb.append("}");
return sb.toString();
}
Aggregations