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.util.Collection;
12 import java.util.List;
13 import org.opendaylight.netvirt.elan.arp.responder.ArpResponderInput;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.dpn.interfaces.elan.dpn.interfaces.list.DpnInterfaces;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.instances.ElanInstance;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.interfaces.ElanInterface;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.forwarding.entries.MacEntry;
18 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
19 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
20 import org.opendaylight.yangtools.yang.common.Uint32;
21 import org.opendaylight.yangtools.yang.common.Uint64;
23 public interface IElanService extends IEtreeService {
25 boolean createElanInstance(String elanInstanceName, long macTimeout, String description);
27 void updateElanInstance(String elanInstanceName, long newMacTimout, String newDescription);
29 boolean deleteElanInstance(String elanInstanceName);
31 void addElanInterface(String elanInstanceName, String interfaceName, List<String> staticMacAddresses,
34 void updateElanInterface(String elanInstanceName, String interfaceName, List<String> updatedStaticMacAddresses,
35 String newDescription);
37 void deleteElanInterface(String interfaceName);
39 void addStaticMacAddress(String interfaceName, String macAddress);
41 void deleteStaticMacAddress(String interfaceName, String macAddress);
43 Collection<MacEntry> getElanMacTable(String elanInstanceName);
45 void flushMACTable(String elanInstanceName);
47 ElanInstance getElanInstance(String elanInstanceName);
49 List<ElanInstance> getElanInstances();
51 List<String> getElanInterfaces(String elanInstanceName);
53 void createExternalElanNetwork(ElanInstance elanInstance);
55 void updateExternalElanNetwork(ElanInstance elanInstance);
57 void createExternalElanNetworks(Node node);
59 void updateExternalElanNetworks(Node origNode, Node updatedNode);
61 void deleteExternalElanNetwork(ElanInstance elanInstance);
63 void deleteExternalElanNetworks(Node node);
65 Collection<String> getExternalElanInterfaces(String elanInstanceName);
67 String getExternalElanInterface(String elanInstanceName, Uint64 dpnId);
69 boolean isExternalInterface(String interfaceName);
71 ElanInterface getElanInterfaceByElanInterfaceName(String interfaceName);
74 void handleKnownL3DmacAddress(String macAddress, String elanInstanceName, int addOrRemove);
76 void addKnownL3DmacAddress(String macAddress, String elanInstanceName);
78 void removeKnownL3DmacAddress(String macAddress, String elanInstanceName);
80 Boolean isOpenStackVniSemanticsEnforced();
83 * Add ARP Responder Flow on the given dpn for the ingress interface.
85 * @param arpResponderInput
86 * ArpResponder Input parameters
87 * @see ArpResponderInput
89 void addArpResponderFlow(ArpResponderInput arpResponderInput);
92 * Add ARP Responder Flow on the given dpn for the SR-IOV VMs ingress interface.
94 * @param arpResponderInput
95 * ArpResponder Input parameters
96 * @see ArpResponderInput
97 * @param elanInstanceName
98 * The elanInstance corresponding to the interface
100 void addExternalTunnelArpResponderFlow(ArpResponderInput arpResponderInput, String elanInstanceName);
103 * Remove ARP Responder flow from the given dpn for the ingress interface.
105 * @param arpResponderInput
106 * ArpResponder Input parameters
107 * @see ArpResponderInput
109 void removeArpResponderFlow(ArpResponderInput arpResponderInput);
111 Uint32 retrieveNewElanTag(String idKey);
113 InstanceIdentifier<DpnInterfaces> getElanDpnInterfaceOperationalDataPath(String elanInstanceName, Uint64 dpnId);
115 DpnInterfaces getElanInterfaceInfoByElanDpn(String elanInstanceName, Uint64 dpId);