From 089bb77bd2440df8f8dad131c285f35e9d44fa9f Mon Sep 17 00:00:00 2001 From: alshabib Date: Tue, 3 Mar 2015 18:26:26 -0800 Subject: [PATCH] partial fix for default flows. Need to redesign packet requests Change-Id: Ia68412c3843ecd7da3e7ae9f4f52750874fb1409 --- .../net/packet/impl/PacketManager.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java b/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java index 1bc918c9e3..18989bbb4c 100644 --- a/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java +++ b/core/net/src/main/java/org/onosproject/net/packet/impl/PacketManager.java @@ -15,14 +15,6 @@ */ package org.onosproject.net.packet.impl; -import static com.google.common.base.Preconditions.checkNotNull; -import static org.slf4j.LoggerFactory.getLogger; - -import java.util.Collections; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Deactivate; @@ -31,6 +23,7 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; import org.apache.felix.scr.annotations.Service; import org.onosproject.core.ApplicationId; import org.onosproject.net.Device; +import org.onosproject.net.MastershipRole; import org.onosproject.net.device.DeviceEvent; import org.onosproject.net.device.DeviceListener; import org.onosproject.net.device.DeviceService; @@ -55,6 +48,14 @@ import org.onosproject.net.provider.AbstractProviderRegistry; import org.onosproject.net.provider.AbstractProviderService; import org.slf4j.Logger; +import java.util.Collections; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +import static com.google.common.base.Preconditions.checkNotNull; +import static org.slf4j.LoggerFactory.getLogger; + /** * Provides a basic implementation of the packet SB & NB APIs. */ @@ -193,8 +194,9 @@ implements PacketService, PacketProviderRegistry { PacketRequest request = new PacketRequest(selector, priority, appId, tableType); - packetRequests.add(request); - pushToAllDevices(request); + if (packetRequests.add(request)) { + pushToAllDevices(request); + } } /** @@ -204,7 +206,9 @@ implements PacketService, PacketProviderRegistry { */ private void pushToAllDevices(PacketRequest request) { for (Device device : deviceService.getDevices()) { - pushRule(device, request); + if (deviceService.getRole(device.id()) == MastershipRole.MASTER) { + pushRule(device, request); + } } }