Improve Ipv{4,6}Address handling 61/96961/1
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 20 Jul 2021 18:17:07 +0000 (20:17 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 20 Jul 2021 18:18:11 +0000 (20:18 +0200)
Ipv4Address can actually contain a zone, which would break prefix
creation. Use IetfInetUtil to convert address to prefix.

Change-Id: I5434d8c9b3164f6cee8c47b44a65bad5e02abf8f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateGraphBuilder.java

index f05f4f01015f3237a81f368c77577b96c5098bce..c39fc0a448fc016c5472a05bec5150f3f996dbdf 100644 (file)
@@ -24,9 +24,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.Ipv4InterfaceIdentifier;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.Ipv6InterfaceIdentifier;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.LinkstateAddressFamily;
@@ -255,14 +253,13 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
 
         /*
          * Add corresponding Prefix for the Local Address. Remote address will be added with the remote Edge */
+        final var localAddress = edge.getEdgeAttributes().getLocalAddress();
         PrefixBuilder prefBuilder = new PrefixBuilder().setVertexId(srcId);
-        if (edge.getEdgeAttributes().getLocalAddress().getIpv4Address() != null) {
-            prefBuilder.setPrefix(new IpPrefix(
-                    new Ipv4Prefix(edge.getEdgeAttributes().getLocalAddress().getIpv4Address().getValue() + "/32")));
+        if (localAddress.getIpv4Address() != null) {
+            prefBuilder.setPrefix(new IpPrefix(IetfInetUtil.INSTANCE.ipv4PrefixFor(localAddress.getIpv4Address())));
         }
-        if (edge.getEdgeAttributes().getLocalAddress().getIpv6Address() != null) {
-            prefBuilder.setPrefix(new IpPrefix(
-                    new Ipv6Prefix(edge.getEdgeAttributes().getLocalAddress().getIpv6Address().getValue() + "/128")));
+        if (localAddress.getIpv6Address() != null) {
+            prefBuilder.setPrefix(new IpPrefix(IetfInetUtil.INSTANCE.ipv6PrefixFor(localAddress.getIpv6Address())));
         }
         Prefix prefix = prefBuilder.build();