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
8 package org.opendaylight.genius.interfacemanager.commons;
10 import java.math.BigInteger;
11 import java.util.List;
12 import java.util.concurrent.ConcurrentHashMap;
13 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
14 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
15 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
16 import org.opendaylight.genius.interfacemanager.IfmConstants;
17 import org.opendaylight.genius.interfacemanager.IfmUtil;
18 import org.opendaylight.genius.interfacemanager.renderer.ovs.utilities.BatchingUtils;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.BridgeInterfaceInfo;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.BridgeRefInfo;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.IfIndexesInterfaceMap;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.InterfaceChildInfo;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.TunnelInstanceInterfaceMap;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._if.indexes._interface.map.IfIndexInterface;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._if.indexes._interface.map.IfIndexInterfaceBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._if.indexes._interface.map.IfIndexInterfaceKey;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info.InterfaceParentEntry;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info.InterfaceParentEntryKey;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info._interface.parent.entry.InterfaceChildEntry;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info._interface.parent.entry.InterfaceChildEntryKey;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.BridgeEntry;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.BridgeEntryBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.BridgeEntryKey;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.bridge.entry.BridgeInterfaceEntry;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.bridge.entry.BridgeInterfaceEntryBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.bridge.entry.BridgeInterfaceEntryKey;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge.ref.info.BridgeRefEntry;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge.ref.info.BridgeRefEntryBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge.ref.info.BridgeRefEntryKey;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.tunnel.instance._interface.map.TunnelInstanceInterface;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.tunnel.instance._interface.map.TunnelInstanceInterfaceBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.tunnel.instance._interface.map.TunnelInstanceInterfaceKey;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnel;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.ParentRefs;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical._switch.attributes.Tunnels;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeRef;
50 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
51 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
52 import org.slf4j.Logger;
53 import org.slf4j.LoggerFactory;
55 public class InterfaceMetaUtils {
56 private static final Logger LOG = LoggerFactory.getLogger(InterfaceMetaUtils.class);
57 private static ConcurrentHashMap<BigInteger, BridgeEntry> bridgeEntryMap = new ConcurrentHashMap();
58 private static ConcurrentHashMap<BigInteger, BridgeRefEntry> bridgeRefEntryMap = new ConcurrentHashMap();
60 public static InstanceIdentifier<BridgeRefEntry> getBridgeRefEntryIdentifier(BridgeRefEntryKey bridgeRefEntryKey) {
61 InstanceIdentifier.InstanceIdentifierBuilder<BridgeRefEntry> bridgeRefEntryInstanceIdentifierBuilder =
62 InstanceIdentifier.builder(BridgeRefInfo.class)
63 .child(BridgeRefEntry.class, bridgeRefEntryKey);
64 return bridgeRefEntryInstanceIdentifierBuilder.build();
67 public static BridgeRefEntry getBridgeRefEntryFromOperDS(BigInteger dpId, DataBroker dataBroker) {
68 BridgeRefEntry bridgeRefEntry = getBridgeRefEntryFromCache(dpId);
69 if(bridgeRefEntry != null) {
70 return bridgeRefEntry;
72 BridgeRefEntryKey bridgeRefEntryKey = new BridgeRefEntryKey(dpId);
73 InstanceIdentifier<BridgeRefEntry> bridgeRefEntryIid = InterfaceMetaUtils
74 .getBridgeRefEntryIdentifier(bridgeRefEntryKey);
75 bridgeRefEntry = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, bridgeRefEntryIid, dataBroker).orNull();
76 if(bridgeRefEntry != null) {
77 addBridgeRefEntryToCache(dpId, bridgeRefEntry);
79 return bridgeRefEntry;
82 public static OvsdbBridgeRef getOvsdbBridgeRef(BigInteger dpId, DataBroker dataBroker) {
84 BridgeRefEntry bridgeRefEntry = getBridgeRefEntryFromOperDS(dpId, dataBroker);
86 if(bridgeRefEntry == null){
87 // bridge ref entry will be null if the bridge is disconnected from controller.
88 // In that case, fetch bridge reference from bridge interface entry config DS
89 BridgeEntry bridgeEntry = getBridgeEntryFromConfigDS(dpId, dataBroker);
90 if(bridgeEntry == null){
93 return bridgeEntry.getBridgeReference();
95 return bridgeRefEntry.getBridgeReference();
98 public static BridgeRefEntry getBridgeReferenceForInterface(Interface interfaceInfo,
99 DataBroker dataBroker) {
100 ParentRefs parentRefs = interfaceInfo.getAugmentation(ParentRefs.class);
101 BigInteger dpn = parentRefs.getDatapathNodeIdentifier();
102 return getBridgeRefEntryFromOperDS(dpn, dataBroker);
105 public static boolean bridgeExists(BridgeRefEntry bridgeRefEntry,
106 DataBroker dataBroker) {
107 if (bridgeRefEntry != null && bridgeRefEntry.getBridgeReference() != null) {
108 InstanceIdentifier<OvsdbBridgeAugmentation> bridgeIid =
109 (InstanceIdentifier<OvsdbBridgeAugmentation>) bridgeRefEntry.getBridgeReference().getValue();
110 return IfmUtil.read(LogicalDatastoreType.OPERATIONAL, bridgeIid, dataBroker).isPresent();
114 public static InstanceIdentifier<BridgeEntry> getBridgeEntryIdentifier(BridgeEntryKey bridgeEntryKey) {
115 InstanceIdentifier.InstanceIdentifierBuilder<BridgeEntry> bridgeEntryIdBuilder =
116 InstanceIdentifier.builder(BridgeInterfaceInfo.class).child(BridgeEntry.class, bridgeEntryKey);
117 return bridgeEntryIdBuilder.build();
120 public static BridgeEntry getBridgeEntryFromConfigDS(BigInteger dpnId,
121 DataBroker dataBroker) {
122 BridgeEntry bridgeEntry = getBridgeEntryFromCache(dpnId);
123 if(bridgeEntry != null) {
126 BridgeEntryKey bridgeEntryKey = new BridgeEntryKey(dpnId);
127 InstanceIdentifier<BridgeEntry> bridgeEntryInstanceIdentifier =
128 InterfaceMetaUtils.getBridgeEntryIdentifier(bridgeEntryKey);
129 LOG.debug("Trying to retrieve bridge entry from config for Id: {}", bridgeEntryInstanceIdentifier);
130 bridgeEntry = readBridgeEntryFromConfigDS(bridgeEntryInstanceIdentifier,
132 if(bridgeEntry != null) {
133 addBridgeEntryToCache(dpnId, bridgeEntry);
138 private static BridgeEntry readBridgeEntryFromConfigDS(InstanceIdentifier<BridgeEntry> bridgeEntryInstanceIdentifier,
139 DataBroker dataBroker) {
140 return IfmUtil.read(LogicalDatastoreType.CONFIGURATION, bridgeEntryInstanceIdentifier, dataBroker).orNull();
143 public static BridgeEntry getBridgeEntryFromConfigDS(InstanceIdentifier<BridgeEntry> bridgeEntryInstanceIdentifier,
144 DataBroker dataBroker) {
145 BigInteger dpnId = bridgeEntryInstanceIdentifier.firstKeyOf(BridgeEntry.class).getDpid();
146 return getBridgeEntryFromConfigDS(dpnId, dataBroker);
149 public static InstanceIdentifier<BridgeInterfaceEntry> getBridgeInterfaceEntryIdentifier(BridgeEntryKey bridgeEntryKey,
150 BridgeInterfaceEntryKey bridgeInterfaceEntryKey) {
151 return InstanceIdentifier.builder(BridgeInterfaceInfo.class)
152 .child(BridgeEntry.class, bridgeEntryKey)
153 .child(BridgeInterfaceEntry.class, bridgeInterfaceEntryKey).build();
157 public static void createBridgeInterfaceEntryInConfigDS(BigInteger dpId,
158 String childInterface) {
159 BridgeEntryKey bridgeEntryKey = new BridgeEntryKey(dpId);
160 BridgeInterfaceEntryKey bridgeInterfaceEntryKey = new BridgeInterfaceEntryKey(childInterface);
161 InstanceIdentifier<BridgeInterfaceEntry> bridgeInterfaceEntryIid =
162 InterfaceMetaUtils.getBridgeInterfaceEntryIdentifier(bridgeEntryKey, bridgeInterfaceEntryKey);
163 BridgeInterfaceEntryBuilder entryBuilder = new BridgeInterfaceEntryBuilder().setKey(bridgeInterfaceEntryKey)
164 .setInterfaceName(childInterface);
165 BatchingUtils.write(bridgeInterfaceEntryIid, entryBuilder.build(), BatchingUtils.EntityType.DEFAULT_CONFIG);
168 public static InstanceIdentifier<InterfaceParentEntry> getInterfaceParentEntryIdentifier(
169 InterfaceParentEntryKey interfaceParentEntryKey) {
170 InstanceIdentifier.InstanceIdentifierBuilder<InterfaceParentEntry> intfIdBuilder =
171 InstanceIdentifier.builder(InterfaceChildInfo.class)
172 .child(InterfaceParentEntry.class, interfaceParentEntryKey);
173 return intfIdBuilder.build();
176 public static InstanceIdentifier<InterfaceChildEntry> getInterfaceChildEntryIdentifier(
177 InterfaceParentEntryKey interfaceParentEntryKey, InterfaceChildEntryKey interfaceChildEntryKey) {
178 InstanceIdentifier.InstanceIdentifierBuilder<InterfaceChildEntry> intfIdBuilder =
179 InstanceIdentifier.builder(InterfaceChildInfo.class)
180 .child(InterfaceParentEntry.class, interfaceParentEntryKey)
181 .child(InterfaceChildEntry.class, interfaceChildEntryKey);
182 return intfIdBuilder.build();
185 public static InterfaceParentEntry getInterfaceParentEntryFromConfigDS(
186 String interfaceName, DataBroker dataBroker) {
187 InterfaceParentEntryKey interfaceParentEntryKey = new InterfaceParentEntryKey(interfaceName);
188 InterfaceParentEntry interfaceParentEntry =
189 InterfaceMetaUtils.getInterfaceParentEntryFromConfigDS(interfaceParentEntryKey, dataBroker);
190 return interfaceParentEntry;
193 public static InterfaceParentEntry getInterfaceParentEntryFromConfigDS(
194 InterfaceParentEntryKey interfaceParentEntryKey, DataBroker dataBroker) {
195 InstanceIdentifier<InterfaceParentEntry> intfParentIid =
196 getInterfaceParentEntryIdentifier(interfaceParentEntryKey);
198 return getInterfaceParentEntryFromConfigDS(intfParentIid, dataBroker);
201 public static InterfaceParentEntry getInterfaceParentEntryFromConfigDS(
202 InstanceIdentifier<InterfaceParentEntry> intfId, DataBroker dataBroker) {
203 return IfmUtil.read(LogicalDatastoreType.CONFIGURATION, intfId, dataBroker).orNull();
206 public static InterfaceChildEntry getInterfaceChildEntryFromConfigDS(InterfaceParentEntryKey interfaceParentEntryKey,
207 InterfaceChildEntryKey interfaceChildEntryKey,
208 DataBroker dataBroker) {
209 InstanceIdentifier<InterfaceChildEntry> intfChildIid =
210 getInterfaceChildEntryIdentifier(interfaceParentEntryKey, interfaceChildEntryKey);
212 return getInterfaceChildEntryFromConfigDS(intfChildIid, dataBroker);
215 public static InterfaceChildEntry getInterfaceChildEntryFromConfigDS(
216 InstanceIdentifier<InterfaceChildEntry> intfChildIid, DataBroker dataBroker) {
217 return IfmUtil.read(LogicalDatastoreType.CONFIGURATION, intfChildIid, dataBroker).orNull();
220 public static void createLportTagInterfaceMap(WriteTransaction t, String infName, Integer ifIndex) {
221 LOG.debug("creating lport tag to interface map for {}",infName);
222 InstanceIdentifier<IfIndexInterface> id = InstanceIdentifier.builder(IfIndexesInterfaceMap.class).child(IfIndexInterface.class, new IfIndexInterfaceKey(ifIndex)).build();
223 IfIndexInterface ifIndexInterface = new IfIndexInterfaceBuilder().setIfIndex(ifIndex).setKey(new IfIndexInterfaceKey(ifIndex)).setInterfaceName(infName).build();
224 t.put(LogicalDatastoreType.OPERATIONAL, id, ifIndexInterface, true);
227 public static void removeLportTagInterfaceMap(IdManagerService idManager, WriteTransaction t, String infName) {
228 // workaround to get the id to remove from lport tag interface map
229 Integer ifIndex = IfmUtil.allocateId(idManager, IfmConstants.IFM_IDPOOL_NAME, infName);
230 IfmUtil.releaseId(idManager, IfmConstants.IFM_IDPOOL_NAME, infName);
231 LOG.debug("removing lport tag to interface map for {}",infName);
232 InstanceIdentifier<IfIndexInterface> id = InstanceIdentifier.builder(IfIndexesInterfaceMap.class).child(IfIndexInterface.class, new IfIndexInterfaceKey(ifIndex)).build();
233 t.delete(LogicalDatastoreType.OPERATIONAL, id);
236 public static void addBridgeRefToBridgeInterfaceEntry(BigInteger dpId, OvsdbBridgeRef ovsdbBridgeRef, WriteTransaction t){
237 BridgeEntryKey bridgeEntryKey = new BridgeEntryKey(dpId);
238 InstanceIdentifier<BridgeEntry> bridgeEntryInstanceIdentifier = getBridgeEntryIdentifier(bridgeEntryKey);
240 BridgeEntryBuilder bridgeEntryBuilder =
241 new BridgeEntryBuilder().setKey(bridgeEntryKey).setBridgeReference(ovsdbBridgeRef);
242 t.merge(LogicalDatastoreType.CONFIGURATION, bridgeEntryInstanceIdentifier, bridgeEntryBuilder.build(), true);
245 public static void createBridgeRefEntry(BigInteger dpnId, InstanceIdentifier<?> bridgeIid,
246 WriteTransaction tx){
247 LOG.debug("Creating bridge ref entry for dpn: {} bridge: {}",
249 BridgeRefEntryKey bridgeRefEntryKey = new BridgeRefEntryKey(dpnId);
250 InstanceIdentifier<BridgeRefEntry> bridgeEntryId =
251 InterfaceMetaUtils.getBridgeRefEntryIdentifier(bridgeRefEntryKey);
252 BridgeRefEntryBuilder tunnelDpnBridgeEntryBuilder =
253 new BridgeRefEntryBuilder().setKey(bridgeRefEntryKey).setDpid(dpnId)
254 .setBridgeReference(new OvsdbBridgeRef(bridgeIid));
255 tx.put(LogicalDatastoreType.OPERATIONAL, bridgeEntryId, tunnelDpnBridgeEntryBuilder.build(), true);
257 public static void deleteBridgeRefEntry(BigInteger dpnId,
258 WriteTransaction tx) {
259 LOG.debug("Deleting bridge ref entry for dpn: {}",
261 BridgeRefEntryKey bridgeRefEntryKey = new BridgeRefEntryKey(dpnId);
262 InstanceIdentifier<BridgeRefEntry> bridgeEntryId =
263 InterfaceMetaUtils.getBridgeRefEntryIdentifier(bridgeRefEntryKey);
264 tx.delete(LogicalDatastoreType.OPERATIONAL, bridgeEntryId);
267 public static void createTunnelToInterfaceMap(String tunnelInstanceId,
269 WriteTransaction transaction) {
270 LOG.debug("creating tunnel instance identifier to interface map for {}",infName);
271 InstanceIdentifier<TunnelInstanceInterface> id = InstanceIdentifier.builder(TunnelInstanceInterfaceMap.class).
272 child(TunnelInstanceInterface.class, new TunnelInstanceInterfaceKey(tunnelInstanceId)).build();
273 TunnelInstanceInterface tunnelInstanceInterface = new TunnelInstanceInterfaceBuilder().
274 setTunnelInstanceIdentifier(tunnelInstanceId).setKey(new TunnelInstanceInterfaceKey(tunnelInstanceId)).setInterfaceName(infName).build();
275 transaction.put(LogicalDatastoreType.OPERATIONAL, id, tunnelInstanceInterface, true);
279 public static void createTunnelToInterfaceMap(String infName,InstanceIdentifier<Node> nodeId,
280 WriteTransaction transaction,
282 InstanceIdentifier<Tunnels> tunnelsInstanceIdentifier = org.opendaylight.genius.interfacemanager.renderer.hwvtep.utilities.SouthboundUtils.
283 createTunnelsInstanceIdentifier(nodeId,
284 ifTunnel.getTunnelSource(), ifTunnel.getTunnelDestination());
285 createTunnelToInterfaceMap(tunnelsInstanceIdentifier.toString(), infName, transaction);
288 public static void removeTunnelToInterfaceMap(InstanceIdentifier<Node> nodeId,
289 WriteTransaction transaction,
291 InstanceIdentifier<Tunnels> tunnelsInstanceIdentifier = org.opendaylight.genius.interfacemanager.renderer.hwvtep.utilities.SouthboundUtils.
292 createTunnelsInstanceIdentifier(nodeId,
293 ifTunnel.getTunnelSource(), ifTunnel.getTunnelDestination());
294 transaction.delete(LogicalDatastoreType.OPERATIONAL, tunnelsInstanceIdentifier);
297 public static String getInterfaceForTunnelInstanceIdentifier(String tunnelInstanceId,
298 DataBroker dataBroker) {
299 InstanceIdentifier<TunnelInstanceInterface> id = InstanceIdentifier.builder(TunnelInstanceInterfaceMap.class).
300 child(TunnelInstanceInterface.class, new TunnelInstanceInterfaceKey(tunnelInstanceId)).build();
301 return IfmUtil.read(LogicalDatastoreType.OPERATIONAL, id, dataBroker).transform(
302 TunnelInstanceInterface::getInterfaceName).orNull();
305 public static void deleteBridgeInterfaceEntry(BridgeEntryKey bridgeEntryKey, List<BridgeInterfaceEntry> bridgeInterfaceEntries,
306 InstanceIdentifier<BridgeEntry> bridgeEntryIid,
307 WriteTransaction transaction, String interfaceName){
308 BridgeInterfaceEntryKey bridgeInterfaceEntryKey =
309 new BridgeInterfaceEntryKey(interfaceName);
310 InstanceIdentifier<BridgeInterfaceEntry> bridgeInterfaceEntryIid =
311 InterfaceMetaUtils.getBridgeInterfaceEntryIdentifier(bridgeEntryKey,
312 bridgeInterfaceEntryKey);
314 if (bridgeInterfaceEntries.size() <= 1) {
315 transaction.delete(LogicalDatastoreType.CONFIGURATION, bridgeEntryIid);
317 // No point deleting interface individually if bridge entry is being deleted
318 // Note: Will this cause issue in listener code? Does it expect separate notifications for two?
319 transaction.delete(LogicalDatastoreType.CONFIGURATION, bridgeInterfaceEntryIid);
323 // Cache Util methods
325 // Start: BridgeEntryCache
326 public static void addBridgeEntryToCache(BigInteger dpnId, BridgeEntry bridgeEntry) {
327 bridgeEntryMap.put(dpnId, bridgeEntry);
330 public static void addBridgeEntryToCache(BridgeEntry bridgeEntry) {
331 addBridgeEntryToCache(bridgeEntry.getKey().getDpid(), bridgeEntry);
334 public static void removeFromBridgeEntryCache(BigInteger dpnId) {
335 bridgeEntryMap.remove(dpnId);
338 public static void removeFromBridgeEntryCache(BridgeEntry bridgeEntry) {
339 removeFromBridgeEntryCache(bridgeEntry.getKey().getDpid());
342 public static BridgeEntry getBridgeEntryFromCache(BigInteger dpnId) {
343 return bridgeEntryMap.get(dpnId);
345 // End: Bridge Entry Cache
347 //Start: BridgeRefEntry Cache
348 public static void addBridgeRefEntryToCache(BigInteger dpnId, BridgeRefEntry bridgeRefEntry) {
349 bridgeRefEntryMap.put(dpnId, bridgeRefEntry);
352 public static void addBridgeRefEntryToCache(BridgeRefEntry bridgeRefEntry) {
353 addBridgeRefEntryToCache(bridgeRefEntry.getKey().getDpid(), bridgeRefEntry);
356 public static void removeFromBridgeRefEntryCache(BigInteger dpnId) {
357 bridgeRefEntryMap.remove(dpnId);
360 public static void removeFromBridgeRefEntryCache(BridgeRefEntry bridgeRefEntry) {
361 removeFromBridgeRefEntryCache(bridgeRefEntry.getKey().getDpid());
364 public static BridgeRefEntry getBridgeRefEntryFromCache(BigInteger dpnId) {
365 return bridgeRefEntryMap.get(dpnId);