2 * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.netvirt.elanmanager.api;
11 import java.math.BigInteger;
12 import java.util.Collection;
13 import java.util.List;
15 import org.opendaylight.genius.mdsalutil.MatchInfoBase;
16 import org.opendaylight.netvirt.elan.arp.responder.ArpResponderInput;
17 import org.opendaylight.netvirt.elanmanager.exceptions.MacNotFoundException;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.dpn.interfaces.elan.dpn.interfaces.list.DpnInterfaces;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.instances.ElanInstance;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.interfaces.ElanInterface;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.forwarding.entries.MacEntry;
22 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
23 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
25 public interface IElanService extends IEtreeService {
27 boolean createElanInstance(String elanInstanceName, long macTimeout, String description);
29 void updateElanInstance(String elanInstanceName, long newMacTimout, String newDescription);
31 boolean deleteElanInstance(String elanInstanceName);
33 void addElanInterface(String elanInstanceName, String interfaceName, List<String> staticMacAddresses,
36 void updateElanInterface(String elanInstanceName, String interfaceName, List<String> updatedStaticMacAddresses,
37 String newDescription);
39 void deleteElanInterface(String elanInstanceName, String interfaceName);
41 void addStaticMacAddress(String elanInstanceName, String interfaceName, String macAddress);
43 void deleteStaticMacAddress(String elanInstanceName, String interfaceName, String macAddress)
44 throws MacNotFoundException;
46 Collection<MacEntry> getElanMacTable(String elanInstanceName);
48 void flushMACTable(String elanInstanceName);
50 ElanInstance getElanInstance(String elanInstanceName);
52 List<ElanInstance> getElanInstances();
54 List<String> getElanInterfaces(String elanInstanceName);
56 void createExternalElanNetwork(ElanInstance elanInstance);
58 void updateExternalElanNetwork(ElanInstance elanInstance);
60 void createExternalElanNetworks(Node node);
62 void updateExternalElanNetworks(Node origNode, Node updatedNode);
64 void deleteExternalElanNetwork(ElanInstance elanInstance);
66 void deleteExternalElanNetworks(Node node);
68 Collection<String> getExternalElanInterfaces(String elanInstanceName);
70 String getExternalElanInterface(String elanInstanceName, BigInteger dpnId);
72 boolean isExternalInterface(String interfaceName);
74 ElanInterface getElanInterfaceByElanInterfaceName(String interfaceName);
77 void handleKnownL3DmacAddress(String macAddress, String elanInstanceName, int addOrRemove);
79 void addKnownL3DmacAddress(String macAddress, String elanInstanceName);
81 void removeKnownL3DmacAddress(String macAddress, String elanInstanceName);
83 List<MatchInfoBase> getEgressMatchesForElanInstance(String elanInstanceName);
85 Boolean isOpenStackVniSemanticsEnforced();
88 * Add ARP Responder Flow on the given dpn for the ingress interface.
90 * @param arpResponderInput
91 * ArpResponder Input parameters
92 * @see ArpResponderInput
94 void addArpResponderFlow(ArpResponderInput arpResponderInput);
97 * Add ARP Responder Flow on the given dpn for the SR-IOV VMs ingress interface.
99 * @param arpResponderInput
100 * ArpResponder Input parameters
101 * @see ArpResponderInput
102 * @param elanInstanceName
103 * The elanInstance corresponding to the interface
105 void addExternalTunnelArpResponderFlow(ArpResponderInput arpResponderInput, String elanInstanceName);
108 * Remove ARP Responder flow from the given dpn for the ingress interface.
110 * @param arpResponderInput
111 * ArpResponder Input parameters
112 * @see ArpResponderInput
114 void removeArpResponderFlow(ArpResponderInput arpResponderInput);
116 Long retrieveNewElanTag(String idKey);
118 InstanceIdentifier<DpnInterfaces> getElanDpnInterfaceOperationalDataPath(String elanInstanceName, BigInteger dpnId);
120 DpnInterfaces getElanInterfaceInfoByElanDpn(String elanInstanceName, BigInteger dpId);