HONEYCOMB-182 - Vrf support 45/4545/5
authorJan Srnicek <[email protected]>
Wed, 4 Jan 2017 15:56:33 +0000 (16:56 +0100)
committerMarek Gradzki <[email protected]>
Wed, 4 Jan 2017 18:06:38 +0000 (18:06 +0000)
Change-Id: Ic2328b626b198bffb550f22ca1144853c16b39e4
Signed-off-by: Jan Srnicek <[email protected]>
v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/ip/v4/subinterface/SubInterfaceIpv4NeighbourCustomizer.java
v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/ip/v6/Ipv6NeighbourCustomizer.java
v3po/v3po2vpp/src/main/java/io/fd/hc2vpp/v3po/interfaces/ip/v6/subinterface/SubInterfaceIpv6NeighbourCustomizer.java

index 6255d08..d7f6f32 100644 (file)
@@ -60,12 +60,11 @@ public class SubInterfaceIpv4NeighbourCustomizer extends FutureJVppCustomizer
             request.dstAddress = ipv4AddressNoZoneToArray(data.getIp());
             request.macAddress = parseMac(data.getLinkLayerAddress().getValue());
             request.swIfIndex = subInterfaceIndex(id, interfaceContext, writeContext.getMappingContext());
+            // we don't have support for sub-interface routing, so not setting vrf
 
-            //TODO HONEYCOMB-182 if it is necessary for future use ,make adjustments to be able to set vrfid
-            //request.vrfId
             return request;
         }, getFutureJVpp());
-        LOG.info("Neighbour {} successfully written", id);
+        LOG.debug("Neighbour {} successfully written", id);
     }
 
     @Override
@@ -93,7 +92,7 @@ public class SubInterfaceIpv4NeighbourCustomizer extends FutureJVppCustomizer
             //request.vrfId
             return request;
         }, getFutureJVpp());
-        LOG.info("Neighbour {} successfully deleted", id);
+        LOG.debug("Neighbour {} successfully deleted", id);
     }
 
 }
index 376ac9a..dc059c3 100644 (file)
@@ -20,6 +20,7 @@ import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
+import com.google.common.base.Optional;
 import io.fd.hc2vpp.common.translate.util.AddressTranslator;
 import io.fd.hc2vpp.common.translate.util.ByteDataTranslator;
 import io.fd.hc2vpp.common.translate.util.FutureJVppCustomizer;
@@ -35,6 +36,7 @@ import javax.annotation.Nonnull;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.ipv6.Neighbor;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ip.rev140616.interfaces._interface.ipv6.NeighborKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev161214.VppInterfaceAugmentation;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -68,8 +70,8 @@ public class Ipv6NeighbourCustomizer extends FutureJVppCustomizer
 
         LOG.debug("Parent interface index found");
         addDelNeighbourAndReply(id, true,
-                interfaceContext.getIndex(interfaceName, mappingContext), dataAfter);
-        LOG.info("Neighbour successfully written");
+                interfaceContext.getIndex(interfaceName, mappingContext), dataAfter, writeContext);
+        LOG.debug("Neighbour successfully written");
     }
 
     @Override
@@ -97,12 +99,12 @@ public class Ipv6NeighbourCustomizer extends FutureJVppCustomizer
         LOG.debug("Parent interface[{}] index found", interfaceName);
 
         addDelNeighbourAndReply(id, false,
-                interfaceContext.getIndex(interfaceName, mappingContext), dataBefore);
-        LOG.info("Neighbour {} successfully deleted", id);
+                interfaceContext.getIndex(interfaceName, mappingContext), dataBefore, writeContext);
+        LOG.debug("Neighbour {} successfully deleted", id);
     }
 
     private void addDelNeighbourAndReply(InstanceIdentifier<Neighbor> id, boolean add, int parentInterfaceIndex,
-                                         Neighbor data) throws WriteFailedException {
+                                         Neighbor data, WriteContext writeContext) throws WriteFailedException {
 
         IpNeighborAddDel request = new IpNeighborAddDel();
 
@@ -113,8 +115,14 @@ public class Ipv6NeighbourCustomizer extends FutureJVppCustomizer
         request.macAddress = parseMac(data.getLinkLayerAddress().getValue());
         request.swIfIndex = parentInterfaceIndex;
 
-        //TODO HONEYCOMB-182 if it is necessary for future use ,make adjustments to be able to set vrfid
-        //request.vrfId
+        final Optional<Interface> optIface = writeContext.readBefore(id.firstIdentifierOf(Interface.class));
+
+        // if routing set, reads vrf-id
+        if (optIface.isPresent() && optIface.get().getAugmentation(VppInterfaceAugmentation.class) != null &&
+                optIface.get().getAugmentation(VppInterfaceAugmentation.class).getRouting() != null) {
+            request.vrfId = optIface.get().getAugmentation(VppInterfaceAugmentation.class).getRouting().getIpv4VrfId()
+                    .byteValue();
+        }
         getReplyForWrite(getFutureJVpp().ipNeighborAddDel(request).toCompletableFuture(), id);
     }
 }
index 9d26a9a..00a0832 100644 (file)
@@ -60,9 +60,8 @@ public class SubInterfaceIpv6NeighbourCustomizer extends FutureJVppCustomizer
             request.dstAddress = ipv6AddressNoZoneToArray(data.getIp());
             request.macAddress = parseMac(data.getLinkLayerAddress().getValue());
             request.swIfIndex = subInterfaceIndex(id, interfaceContext, writeContext.getMappingContext());
+            // we don't have support for sub-interface routing, so not setting vrf
 
-            //TODO HONEYCOMB-182 if it is necessary for future use ,make adjustments to be able to set vrfid
-            //request.vrfId
             return request;
         }, getFutureJVpp());
         LOG.debug("Neighbour {} successfully written", id);