From e183e76e7c815b7516ad13da5491360f9f5631f3 Mon Sep 17 00:00:00 2001 From: chechoRP <chechoRP@users.noreply.github.com> Date: Thu, 29 Oct 2015 12:54:08 -0400 Subject: [PATCH] Fix for Firewall issue #590 The dl_type=ARP (or any other dl_type) is overwritten if dst-ip/src-ip are specified later on in the json object. I added condition that only overwrites the field if it hasn't been already specified. This case only applies for src-ip, and dst-ip. --- .../firewall/FirewallRulesResource.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/floodlightcontroller/firewall/FirewallRulesResource.java b/src/main/java/net/floodlightcontroller/firewall/FirewallRulesResource.java index bfdf5f88d..57ccb6a77 100644 --- a/src/main/java/net/floodlightcontroller/firewall/FirewallRulesResource.java +++ b/src/main/java/net/floodlightcontroller/firewall/FirewallRulesResource.java @@ -223,8 +223,10 @@ public class FirewallRulesResource extends ServerResource { else if (n.equalsIgnoreCase("src-ip")) { if (!jp.getText().equalsIgnoreCase("ANY")) { rule.any_nw_src = false; - rule.any_dl_type = false; - rule.dl_type = EthType.IPv4; + if (rule.dl_type.equals(EthType.NONE)){ + rule.any_dl_type = false; + rule.dl_type = EthType.IPv4; + } try { rule.nw_src_prefix_and_mask = IPv4AddressWithMask.of(jp.getText()); } catch (IllegalArgumentException e) { @@ -237,8 +239,10 @@ public class FirewallRulesResource extends ServerResource { else if (n.equalsIgnoreCase("dst-ip")) { if (!jp.getText().equalsIgnoreCase("ANY")) { rule.any_nw_dst = false; - rule.any_dl_type = false; - rule.dl_type = EthType.IPv4; + if (rule.dl_type.equals(EthType.NONE)){ + rule.any_dl_type = false; + rule.dl_type = EthType.IPv4; + } try { rule.nw_dst_prefix_and_mask = IPv4AddressWithMask.of(jp.getText()); } catch (IllegalArgumentException e) { -- GitLab