@VisibleForTesting
public static final NodeIdentifier LINK_DESCRIPTORS_NID = new NodeIdentifier(LinkDescriptors.QNAME);
- @VisibleForTesting
- public static final NodeIdentifier TE_LSP_NID = new NodeIdentifier(TeLspCase.QNAME);
@VisibleForTesting
public static final NodeIdentifier DISTINGUISHER_NID = new NodeIdentifier(QName.create(CLinkstateDestination.QNAME, "route-distinguisher").intern());
@VisibleForTesting
TlvUtil.writeTLV(LOCAL_NODE_DESCRIPTORS_TYPE, ldescs, nlriByteBuf);
nlriType = NlriType.Node;
} else if (ot instanceof TeLspCase) {
- final TeLspCase teLSP = (TeLspCase) destination.getObjectType();
+ final TeLspCase teLSP = ((TeLspCase) destination.getObjectType());
final AddressFamily afi = teLSP.getAddressFamily();
nlriType = TeLspNlriParser.serializeIpvTSA(afi, ldescs);
TeLspNlriParser.serializeTunnelID(teLSP.getTunnelId(), ldescs);
return ProtocolId.Direct.getIntValue();
case "static":
return ProtocolId.Static.getIntValue();
- case "rsvpte":
+ case "rsvp-te":
return ProtocolId.RsvpTe.getIntValue();
case "bgp-epe":
return ProtocolId.BgpEpe.getIntValue();
} else {
LOG.warn("Unknown Object Type.");
}
- } else if (objectType.getChild(TE_LSP_NID).isPresent()) {
- builder.setObjectType(TeLspNlriParser.serializeTeLsp((ContainerNode) objectType.getChild(TE_LSP_NID).get()));
+ } else if (TeLspNlriParser.isTeLsp(objectType)) {
+ builder.setObjectType(TeLspNlriParser.serializeTeLsp(objectType));
}
return builder.build();
}
import static org.opendaylight.protocol.util.ByteBufWriteUtil.writeIpv6Address;
import static org.opendaylight.protocol.util.ByteBufWriteUtil.writeShort;
import static org.opendaylight.protocol.util.ByteBufWriteUtil.writeUnsignedShort;
+
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import io.netty.buffer.ByteBuf;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
@VisibleForTesting
public final class TeLspNlriParser {
public static final YangInstanceIdentifier.NodeIdentifier IPV6_TUNNEL_ENDPOINT_ADDRESS = new YangInstanceIdentifier
.NodeIdentifier(QName.create(CLinkstateDestination.QNAME, "ipv6-tunnel-endpoint-address").intern());
- @VisibleForTesting
- public static final YangInstanceIdentifier.NodeIdentifier IPV4_CASE = new YangInstanceIdentifier.NodeIdentifier(Ipv4Case.QNAME);
- @VisibleForTesting
- public static final YangInstanceIdentifier.NodeIdentifier IPV6_CASE = new YangInstanceIdentifier.NodeIdentifier(Ipv6Case.QNAME);
@VisibleForTesting
public static final YangInstanceIdentifier.NodeIdentifier ADDRESS_FAMILY = new YangInstanceIdentifier.NodeIdentifier(AddressFamily.QNAME);
writeIpv4Address(ipv4, body);
}
- public static TeLspCase serializeTeLsp(final ContainerNode containerNode) {
- final TeLspCaseBuilder teLspCase = new TeLspCaseBuilder();
- teLspCase.setLspId(new LspId((Long) containerNode.getChild(LSP_ID).get().getValue()));
- teLspCase.setTunnelId(new TunnelId((Integer) containerNode.getChild(TUNNEL_ID).get().getValue()));
- if(containerNode.getChild(ADDRESS_FAMILY).isPresent()) {
- final ChoiceNode addressFamily = (ChoiceNode) containerNode.getChild(ADDRESS_FAMILY).get();
- if(addressFamily.getChild(IPV4_CASE).isPresent()) {
- teLspCase.setAddressFamily(serializeAddressFamily((ContainerNode) addressFamily.getChild(IPV4_CASE)
- .get(), true));
- }else{
- teLspCase.setAddressFamily(serializeAddressFamily((ContainerNode) addressFamily.getChild(IPV6_CASE)
- .get(), false));
- }
- }
+ public static boolean isTeLsp(final ChoiceNode objectType) {
+ return objectType.getChild(ADDRESS_FAMILY).isPresent();
+ }
+
+ public static TeLspCase serializeTeLsp(final ChoiceNode objectType) {
+ final TeLspCaseBuilder teLsp = new TeLspCaseBuilder();
+ teLsp.setLspId(new LspId((Long) objectType.getChild(LSP_ID).get().getValue()));
+ teLsp.setTunnelId(new TunnelId((Integer) objectType.getChild(TUNNEL_ID).get().getValue()));
+ final ChoiceNode addressFamily = (ChoiceNode) objectType.getChild(ADDRESS_FAMILY).get();
+ teLsp.setAddressFamily(serializeAddressFamily(addressFamily, addressFamily.getChild(IPV4_TUNNEL_SENDER_ADDRESS).isPresent()));
- return teLspCase.build();
+ return teLsp.build();
}
- private static AddressFamily serializeAddressFamily(final ContainerNode containerNode, final boolean ipv4Case) {
+ private static AddressFamily serializeAddressFamily(final ChoiceNode addressFamily, final boolean ipv4Case) {
if(ipv4Case) {
return new Ipv4CaseBuilder()
- .setIpv4TunnelSenderAddress(new Ipv4Address((String) containerNode.getChild(IPV4_TUNNEL_SENDER_ADDRESS).get().getValue()))
- .setIpv4TunnelEndpointAddress(new Ipv4Address((String) containerNode.getChild(IPV4_TUNNEL_ENDPOINT_ADDRESS).get().getValue()))
+ .setIpv4TunnelSenderAddress(new Ipv4Address((String) addressFamily.getChild(IPV4_TUNNEL_SENDER_ADDRESS).get().getValue()))
+ .setIpv4TunnelEndpointAddress(new Ipv4Address((String) addressFamily.getChild(IPV4_TUNNEL_ENDPOINT_ADDRESS).get().getValue()))
.build();
}
return new Ipv6CaseBuilder()
- .setIpv6TunnelSenderAddress(new Ipv6Address((String) containerNode.getChild(IPV6_TUNNEL_SENDER_ADDRESS).get().getValue()))
- .setIpv6TunnelEndpointAddress(new Ipv6Address((String) containerNode.getChild(IPV6_TUNNEL_ENDPOINT_ADDRESS).get().getValue()))
+ .setIpv6TunnelSenderAddress(new Ipv6Address((String) addressFamily.getChild(IPV6_TUNNEL_SENDER_ADDRESS).get().getValue()))
+ .setIpv6TunnelEndpointAddress(new Ipv6Address((String) addressFamily.getChild(IPV6_TUNNEL_ENDPOINT_ADDRESS).get().getValue()))
.build();
}
}
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
+
import com.google.common.collect.Lists;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
assertNull(this.dest.getDistinguisher());
assertEquals(ProtocolId.RsvpTe, this.dest.getProtocolId());
assertEquals(BigInteger.ONE, this.dest.getIdentifier().getValue());
- final TeLspCase teCase = ((TeLspCase) this.dest.getObjectType());
+ final TeLspCase teCase = (TeLspCase) this.dest.getObjectType();
assertEquals(new LspId(1L), teCase.getLspId());
assertEquals(new TunnelId(1), teCase.getTunnelId());
final ImmutableLeafNodeBuilder<String> protocolId = new ImmutableLeafNodeBuilder<>();
protocolId.withNodeIdentifier(LinkstateNlriParser.PROTOCOL_ID_NID);
- protocolId.withValue("rsvpte");
+ protocolId.withValue("rsvp-te");
linkstateBI.addChild(protocolId.build());
final ImmutableLeafNodeBuilder<BigInteger> identifier = new ImmutableLeafNodeBuilder<>();
final DataContainerNodeBuilder<NodeIdentifier, ChoiceNode> objectType = Builders.choiceBuilder();
objectType.withNodeIdentifier(LinkstateNlriParser.OBJECT_TYPE_NID);
- // advertising node descriptors
- final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> teLspCase = Builders.containerBuilder();
- teLspCase.withNodeIdentifier(LinkstateNlriParser.TE_LSP_NID);
- objectType.addChild(teLspCase.build());
-
final ImmutableLeafNodeBuilder<Long> lspId = new ImmutableLeafNodeBuilder<>();
lspId.withNodeIdentifier(TeLspNlriParser.LSP_ID);
lspId.withValue(1L);
final DataContainerNodeBuilder<NodeIdentifier, ChoiceNode> addressFamily = Builders.choiceBuilder();
addressFamily.withNodeIdentifier(TeLspNlriParser.ADDRESS_FAMILY);
- final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> ipv4Case = Builders.containerBuilder();
- ipv4Case.withNodeIdentifier(TeLspNlriParser.IPV4_CASE);
-
final ImmutableLeafNodeBuilder<String> ipv4TunnelSenderAddress = new ImmutableLeafNodeBuilder<>();
ipv4TunnelSenderAddress.withNodeIdentifier(TeLspNlriParser.IPV4_TUNNEL_SENDER_ADDRESS);
ipv4TunnelSenderAddress.withValue("1.2.3.4");
ipv4TunnelEndPointAddress.withNodeIdentifier(TeLspNlriParser.IPV4_TUNNEL_ENDPOINT_ADDRESS);
ipv4TunnelEndPointAddress.withValue("4.3.2.1");
- ipv4Case.addChild(ipv4TunnelSenderAddress.build());
- ipv4Case.addChild(ipv4TunnelEndPointAddress.build());
-
- addressFamily.addChild(ipv4Case.build());
+ addressFamily.addChild(ipv4TunnelSenderAddress.build());
+ addressFamily.addChild(ipv4TunnelEndPointAddress.build());
- teLspCase.addChild(lspId.build());
- teLspCase.addChild(tunnelId.build());
- teLspCase.addChild(addressFamily.build());
+ objectType.addChild(lspId.build());
+ objectType.addChild(tunnelId.build());
+ objectType.addChild(addressFamily.build());
- objectType.addChild(teLspCase.build());
linkstateBI.addChild(objectType.build());
assertEquals(this.dest, LinkstateNlriParser.extractLinkstateDestination(linkstateBI.build()));
}