From 728df00486565d037e176acb23456d6f9e85ae8e Mon Sep 17 00:00:00 2001 From: "Banse, Christian" <christian.banse@aisec.fraunhofer.de> Date: Mon, 18 May 2015 10:43:24 +0200 Subject: [PATCH] added option to add SEND_FLOW_REM flag into new flowmod messages --- .../floodlightcontroller/forwarding/Forwarding.java | 7 +++++++ .../floodlightcontroller/routing/ForwardingBase.java | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java b/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java index f347ef87d..a830d6788 100644 --- a/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java +++ b/src/main/java/net/floodlightcontroller/forwarding/Forwarding.java @@ -470,6 +470,13 @@ public class Forwarding extends ForwardingBase implements IFloodlightModule { } else { log.info("Default priority not configured. Using {}.", FLOWMOD_DEFAULT_PRIORITY); } + tmp = configParameters.get("set-send-flow-rem-flag"); + if (tmp != null) { + FLOWMOD_SET_SEND_FLOW_REM_FLAG = Boolean.parseBoolean(tmp); + log.info("Default flags will include SEND_FLOW_REM"); + } else { + log.info("Default flags will be empty"); + } tmp = configParameters.get("match"); if (tmp != null) { tmp = tmp.toLowerCase(); diff --git a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java index 015b83a01..f30aca529 100644 --- a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java +++ b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.util.EnumSet; import java.util.ArrayList; import java.util.Comparator; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; @@ -51,6 +52,7 @@ import org.projectfloodlight.openflow.protocol.OFFlowMod; import org.projectfloodlight.openflow.protocol.match.Match; import org.projectfloodlight.openflow.protocol.match.MatchField; import org.projectfloodlight.openflow.protocol.OFFlowModCommand; +import org.projectfloodlight.openflow.protocol.OFFlowModFlags; import org.projectfloodlight.openflow.protocol.OFMessage; import org.projectfloodlight.openflow.protocol.OFPacketIn; import org.projectfloodlight.openflow.protocol.OFPacketOut; @@ -84,6 +86,8 @@ public abstract class ForwardingBase implements IOFMessageListener { public static int FLOWMOD_DEFAULT_HARD_TIMEOUT = 0; // infinite public static int FLOWMOD_DEFAULT_PRIORITY = 1; // 0 is the default table-miss flow in OF1.3+, so we need to use 1 + public static boolean FLOWMOD_SET_SEND_FLOW_REM_FLAG = false; + public static boolean FLOWMOD_DEFAULT_MATCH_VLAN = true; public static boolean FLOWMOD_DEFAULT_MATCH_MAC = true; public static boolean FLOWMOD_DEFAULT_MATCH_IP_ADDR = true; @@ -265,6 +269,12 @@ public abstract class ForwardingBase implements IOFMessageListener { aob.setMaxLen(Integer.MAX_VALUE); actions.add(aob.build()); + if(FLOWMOD_SET_SEND_FLOW_REM_FLAG) { + Set<OFFlowModFlags> flags = new HashSet<>(); + flags.add(OFFlowModFlags.SEND_FLOW_REM); + fmb.setFlags(flags); + } + // compile fmb.setMatch(mb.build()) // was match w/o modifying input port .setActions(actions) -- GitLab