summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
52c17b5)
Change-Id: I14cf648026a1a66e1e7014e7c97511d395a76dec
Signed-off-by: Abhinav Gupta <abhinav.gupta@ericsson.com>
package org.opendaylight.vpnservice;
package org.opendaylight.vpnservice;
+import java.math.BigInteger;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.vpnservice.interfacemgr.interfaces.IInterfaceManager;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.vpnservice.interfacemgr.interfaces.IInterfaceManager;
+import org.opendaylight.vpnservice.mdsalutil.NwConstants;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;
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.interfaces.rev140508.Interfaces;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.L3tunnel;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterface;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterface;
private ListenerRegistration<DataChangeListener> listenerRegistration;
private final DataBroker broker;
private VpnInterfaceManager vpnInterfaceManager;
private ListenerRegistration<DataChangeListener> listenerRegistration;
private final DataBroker broker;
private VpnInterfaceManager vpnInterfaceManager;
+ private IInterfaceManager interfaceManager;
public InterfaceChangeListener(final DataBroker db, VpnInterfaceManager vpnInterfaceManager) {
public InterfaceChangeListener(final DataBroker db, VpnInterfaceManager vpnInterfaceManager) {
+ public void setInterfaceManager(IInterfaceManager interfaceManager) {
+ this.interfaceManager = interfaceManager;
+ }
+
@Override
public void close() throws Exception {
if (listenerRegistration != null) {
@Override
public void close() throws Exception {
if (listenerRegistration != null) {
@Override
protected void remove(InstanceIdentifier<Interface> identifier, Interface intrf) {
LOG.trace("Remove interface event - key: {}, value: {}", identifier, intrf );
@Override
protected void remove(InstanceIdentifier<Interface> identifier, Interface intrf) {
LOG.trace("Remove interface event - key: {}, value: {}", identifier, intrf );
+ if (intrf.getType().equals(L3tunnel.class)) {
+ BigInteger dpnId = interfaceManager.getDpnForInterface(intrf);
+ String ifName = intrf.getName();
+ LOG.debug("Removing tunnel interface associated with Interface {}", intrf.getName());
+ vpnInterfaceManager.makeTunnelIngressFlow(dpnId, ifName, NwConstants.DEL_FLOW);
+ }
+ else {
VpnInterface vpnInterface = vpnInterfaceManager.getVpnInterface(intrf.getName());
VpnInterface vpnInterface = vpnInterfaceManager.getVpnInterface(intrf.getName());
- InstanceIdentifier<VpnInterface> id = VpnUtil.getVpnInterfaceIdentifier(intrf.getName());
- LOG.debug("Removing VPN Interface associated with Interface {}", intrf.getName());
- vpnInterfaceManager.remove(id, vpnInterface);
+ if (vpnInterface !=null) {
+ InstanceIdentifier<VpnInterface> id = VpnUtil.getVpnInterfaceIdentifier(intrf.getName());
+ LOG.debug("Removing VPN Interface associated with Interface {}", intrf.getName());
+ vpnInterfaceManager.remove(id, vpnInterface);
+ }
+ else {
+ LOG.debug("No VPN Interface associated with Interface {}", intrf.getName());
+ }
+ }
- private void makeTunnelIngressFlow(BigInteger dpnId, String ifName, int addOrRemoveFlow) {
+ protected void makeTunnelIngressFlow(BigInteger dpnId, String ifName, int addOrRemoveFlow) {
long portNo = 0;
String flowName = ifName;
String flowRef = getTunnelInterfaceFlowRef(dpnId, VpnConstants.LPORT_INGRESS_TABLE, ifName);
long portNo = 0;
String flowName = ifName;
String flowRef = getTunnelInterfaceFlowRef(dpnId, VpnConstants.LPORT_INGRESS_TABLE, ifName);
vpnInterfaceManager.setIdManager(idManager);
vpnManager.setVpnInterfaceManager(vpnInterfaceManager);
interfaceListener = new InterfaceChangeListener(dataBroker, vpnInterfaceManager);
vpnInterfaceManager.setIdManager(idManager);
vpnManager.setVpnInterfaceManager(vpnInterfaceManager);
interfaceListener = new InterfaceChangeListener(dataBroker, vpnInterfaceManager);
+ interfaceListener.setInterfaceManager(interfaceManager);
createIdPool();
} catch (Exception e) {
LOG.error("Error initializing services", e);
createIdPool();
} catch (Exception e) {
LOG.error("Error initializing services", e);