From 7fd91ca847eaebfa14b0da26e986641be438fdae Mon Sep 17 00:00:00 2001 From: Faseela K Date: Wed, 13 Jan 2016 19:29:28 +0530 Subject: [PATCH] Fix for tunnel-id set issues in intra DC communication scenario Change-Id: Id72ed0c24f06f7752f30fe1d79472b5a45fc084d Signed-off-by: Faseela K --- .../vpnservice/fibmanager/FibManager.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java b/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java index 1db29e16..f1ce228a 100644 --- a/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java +++ b/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java @@ -213,9 +213,9 @@ public class FibManager extends AbstractDataChangeListener implements Preconditions.checkNotNull(vpnInstance.getVpnId(), "Vpn Instance with rd " + vpnInstance.getVrfId() + "has null vpnId!"); Collection vpnToDpnList = vpnInstance.getVpnToDpnList(); + BigInteger localDpnId = createLocalFibEntry(vpnInstance.getVpnId(), + vrfTableKey.getRouteDistinguisher(), vrfEntry); if (vpnToDpnList != null) { - BigInteger localDpnId = createLocalFibEntry(vpnInstance.getVpnId(), - vrfTableKey.getRouteDistinguisher(), vrfEntry); for (VpnToDpnList curDpn : vpnToDpnList) { if (!curDpn.getDpnId().equals(localDpnId)) { createRemoteFibEntry(localDpnId, curDpn.getDpnId(), vpnInstance.getVpnId(), @@ -272,9 +272,8 @@ public class FibManager extends AbstractDataChangeListener implements LOG.info("create terminatingServiceAction on DpnId = {} and serviceId = {} and actions = {}", destDpId , label,actionsInfos); // Matching metadata - mkMatches.add(new MatchInfo(MatchFieldType.tunnel_id, new BigInteger[] { - MetaDataUtil.getTunnelIdWithValidVniBitAndVniSet(label), - MetaDataUtil.METADA_MASK_TUNNEL_ID })); + // FIXME vxlan vni bit set is not working properly with OVS.need to revisit + mkMatches.add(new MatchInfo(MatchFieldType.tunnel_id, new BigInteger[] {BigInteger.valueOf(label)})); List mkInstructions = new ArrayList(); mkInstructions.add(new InstructionInfo(InstructionType.write_actions, actionsInfos)); @@ -372,7 +371,7 @@ public class FibManager extends AbstractDataChangeListener implements vrfEntry.getDestPrefix(), rd); return; } - List actionInfos = nextHopManager.getEgressActionsForInterface(tunnelInterface); + List actionInfos = new ArrayList<>(); Class tunnel_type = getTunnelType(tunnelInterface); if (tunnel_type.equals(TunnelTypeMplsOverGre.class)) { LOG.debug("Push label action for prefix {}", vrfEntry.getDestPrefix()); @@ -381,15 +380,17 @@ public class FibManager extends AbstractDataChangeListener implements } else { int label = vrfEntry.getLabel().intValue(); BigInteger tunnelId; + // FIXME vxlan vni bit set is not working properly with OVS.need to revisit if(tunnel_type.equals(TunnelTypeVxlan.class)) { - tunnelId = MetaDataUtil.getTunnelIdWithValidVniBitAndVniSet(label); + tunnelId = BigInteger.valueOf(label); } else { tunnelId = BigInteger.valueOf(label); } LOG.debug("adding set tunnel id action for label {}", label); - actionInfos.add(new ActionInfo(ActionType.set_field_tunnel_id, new BigInteger[] { - tunnelId})); + actionInfos.add(new ActionInfo(ActionType.set_field_tunnel_id, new BigInteger[]{ + tunnelId})); } + actionInfos.addAll(nextHopManager.getEgressActionsForInterface(tunnelInterface)); /* List actionInfos = resolveAdjacency(localDpnId, remoteDpnId, vpnId, vrfEntry); if(actionInfos == null) { @@ -417,7 +418,7 @@ public class FibManager extends AbstractDataChangeListener implements MetaDataUtil.METADA_MASK_VALID_TUNNEL_ID_BIT_AND_TUNNEL_ID })); } **/ - makeConnectedRoute(remoteDpnId, vpnId, vrfEntry, rd, actionInfos, NwConstants.ADD_FLOW); + makeConnectedRoute(remoteDpnId, vpnId, vrfEntry, rd, actionInfos, NwConstants.ADD_FLOW); LOG.debug( "Successfully added fib entry for " + vrfEntry.getDestPrefix() + " vpnId " + vpnId); } @@ -431,9 +432,9 @@ public class FibManager extends AbstractDataChangeListener implements VpnInstanceOpDataEntry vpnInstance = getVpnInstance(vrfTableKey.getRouteDistinguisher()); Preconditions.checkNotNull(vpnInstance, "Vpn Instance not available!"); Collection vpnToDpnList = vpnInstance.getVpnToDpnList(); + BigInteger localDpnId = deleteLocalFibEntry(vpnInstance.getVpnId(), + vrfTableKey.getRouteDistinguisher(), vrfEntry); if (vpnToDpnList != null) { - BigInteger localDpnId = deleteLocalFibEntry(vpnInstance.getVpnId(), - vrfTableKey.getRouteDistinguisher(), vrfEntry); for (VpnToDpnList curDpn : vpnToDpnList) { if (!curDpn.getDpnId().equals(localDpnId)) { deleteRemoteRoute(localDpnId, curDpn.getDpnId(), vpnInstance.getVpnId(), vrfTableKey, vrfEntry); -- 2.36.6