X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=fibmanager%2Ffibmanager-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Ffibmanager%2FFibManager.java;h=1db29e16814cc0856e6ab73a862db83b3a0361b0;hb=1cddfc772b08569953f28a0679818aac75a9c30a;hp=d3d584201d7d97fb3026d06c495143fbd5b03883;hpb=b2dd97a5264bd734b036b8558ae1598d32781c88;p=vpnservice.git 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 d3d58420..1db29e16 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 @@ -51,7 +51,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.vpn.instanc import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.vpn.instance.op.data.VpnInstanceOpDataEntryKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.vpn.instance.op.data.vpn.instance.op.data.entry.VpnToDpnList; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan; -import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.rpcs.rev151217.GetTunnelInterfaceNameOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.rpcs.rev151217.ItmRpcService; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.fibmanager.rev150330.FibEntries; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.fibmanager.rev150330.fibentries.VrfTables; @@ -86,6 +85,7 @@ public class FibManager extends AbstractDataChangeListener implements private static final short L3_FIB_TABLE = 21; private static final short L3_LFIB_TABLE = 20; + public static final short INTERNAL_TUNNEL_TABLE = 23; private static final short L3_PROTOCOL_TABLE = 36; private static final short L3_INTERFACE_TABLE = 80; public static final short LPORT_DISPATCHER_TABLE = 30; @@ -94,6 +94,7 @@ public class FibManager extends AbstractDataChangeListener implements private static final int DEFAULT_FIB_FLOW_PRIORITY = 10; private static final BigInteger METADATA_MASK_CLEAR = new BigInteger("000000FFFFFFFFFF", 16); private static final BigInteger CLEAR_METADATA = BigInteger.valueOf(0); + public static final BigInteger COOKIE_TUNNEL = new BigInteger("9000000", 16); private static final FutureCallback DEFAULT_CALLBACK = @@ -266,8 +267,7 @@ public class FibManager extends AbstractDataChangeListener implements } public void createTerminatingServiceActions( BigInteger destDpId, int label, List actionsInfos) { - // FIXME -/* List mkMatches = new ArrayList(); + List mkMatches = new ArrayList(); LOG.info("create terminatingServiceAction on DpnId = {} and serviceId = {} and actions = {}", destDpId , label,actionsInfos); @@ -279,18 +279,28 @@ public class FibManager extends AbstractDataChangeListener implements List mkInstructions = new ArrayList(); mkInstructions.add(new InstructionInfo(InstructionType.write_actions, actionsInfos)); - FlowEntity terminatingServiceTableFlowEntity = MDSALUtil.buildFlowEntity(destDpId,ITMConstants.TERMINATING_SERVICE_TABLE, - getFlowRef(destDpId, ITMConstants.TERMINATING_SERVICE_TABLE,label), 5, String.format("%s:%d","TST Flow Entry ",label), - 0, 0, ITMConstants.COOKIE_ITM.add(BigInteger.valueOf(label)),mkMatches, mkInstructions); + FlowEntity terminatingServiceTableFlowEntity = MDSALUtil.buildFlowEntity(destDpId, INTERNAL_TUNNEL_TABLE, + getFlowRef(destDpId, INTERNAL_TUNNEL_TABLE,label), 5, String.format("%s:%d","TST Flow Entry ",label), + 0, 0, COOKIE_TUNNEL.add(BigInteger.valueOf(label)),mkMatches, mkInstructions); - mdsalManager.installFlow(terminatingServiceTableFlowEntity);*/ + mdsalManager.installFlow(terminatingServiceTableFlowEntity); } private void removeTunnelTableEntry(BigInteger dpId, long label) { - // FIXME - // itmManager.removeTerminatingServiceAction(dpId, (int)label); - - // LOG.debug("Terminating service Entry for dpID {} : label : {} removed successfully {}",dpId, label); + FlowEntity flowEntity; + LOG.info("remove terminatingServiceActions called with DpnId = {} and label = {}", dpId , label); + List mkMatches = new ArrayList(); + // Matching metadata + mkMatches.add(new MatchInfo(MatchFieldType.tunnel_id, new BigInteger[] { + MetaDataUtil.getTunnelIdWithValidVniBitAndVniSet((int)label), + MetaDataUtil.METADA_MASK_TUNNEL_ID })); + flowEntity = MDSALUtil.buildFlowEntity(dpId, + INTERNAL_TUNNEL_TABLE, + getFlowRef(dpId, INTERNAL_TUNNEL_TABLE, (int)label), + 5, String.format("%s:%d","TST Flow Entry ",label), 0, 0, + COOKIE_TUNNEL.add(BigInteger.valueOf(label)), mkMatches, null); + mdsalManager.removeFlow(flowEntity); + LOG.debug("Terminating service Entry for dpID {} : label : {} removed successfully {}",dpId, label); } public BigInteger deleteLocalFibEntry(Long vpnId, String rd, VrfEntry vrfEntry) { @@ -378,7 +388,7 @@ public class FibManager extends AbstractDataChangeListener implements } LOG.debug("adding set tunnel id action for label {}", label); actionInfos.add(new ActionInfo(ActionType.set_field_tunnel_id, new BigInteger[] { - tunnelId, MetaDataUtil.METADA_MASK_VALID_TUNNEL_ID_BIT_AND_TUNNEL_ID })); + tunnelId})); } /* List actionInfos = resolveAdjacency(localDpnId, remoteDpnId, vpnId, vrfEntry);