From 32bd7220e808048c3c03c2a783a3bf96f16c14fe Mon Sep 17 00:00:00 2001 From: Manish Date: Fri, 24 Feb 2017 16:37:30 +0530 Subject: [PATCH] Set action to drop if its a short flow. To handle the cases where TrafficAction gets overridden after being marked as drop, use short flow flag as well to identify drop action. Change-Id: I45e98836c5463a9913f2a9bdb9aeedc2643f6c2c Closes-bug: #1664301 (cherry picked from commit 517775d18e4f734910d32dac3a70d9ec1f1d24a6) --- src/vnsw/agent/pkt/flow_entry.cc | 5 ----- src/vnsw/agent/pkt/test/test_flow_util.h | 2 -- src/vnsw/agent/test-xml/test_xml_oper.cc | 3 ++- src/vnsw/agent/vrouter/ksync/flowtable_ksync.cc | 4 ++++ 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/vnsw/agent/pkt/flow_entry.cc b/src/vnsw/agent/pkt/flow_entry.cc index e42e9b158f8..20483f8080f 100644 --- a/src/vnsw/agent/pkt/flow_entry.cc +++ b/src/vnsw/agent/pkt/flow_entry.cc @@ -2097,11 +2097,6 @@ bool FlowEntry::ActionRecompute() { } } - // Force short flows to DROP - if (is_flags_set(FlowEntry::ShortFlow)) { - action |= (1 << TrafficAction::DENY); - } - if (SetQosConfigIndex()) { ret = true; } diff --git a/src/vnsw/agent/pkt/test/test_flow_util.h b/src/vnsw/agent/pkt/test/test_flow_util.h index d998b30f9ae..aacb5c85fdb 100644 --- a/src/vnsw/agent/pkt/test/test_flow_util.h +++ b/src/vnsw/agent/pkt/test/test_flow_util.h @@ -323,10 +323,8 @@ class ShortFlow : public FlowVerify { virtual void Verify(FlowEntry *fe) { EXPECT_TRUE(fe->is_flags_set(FlowEntry::ShortFlow) == true); - EXPECT_TRUE((fe->data().match_p.action_info.action & (1 << TrafficAction::DENY)) != 0); FlowEntry *rev = fe->reverse_flow_entry(); EXPECT_TRUE(rev->is_flags_set(FlowEntry::ShortFlow) == true); - EXPECT_TRUE((rev->data().match_p.action_info.action & (1 << TrafficAction::DENY)) != 0); } private: }; diff --git a/src/vnsw/agent/test-xml/test_xml_oper.cc b/src/vnsw/agent/test-xml/test_xml_oper.cc index 6f0329ac6a5..8aaf639933d 100644 --- a/src/vnsw/agent/test-xml/test_xml_oper.cc +++ b/src/vnsw/agent/test-xml/test_xml_oper.cc @@ -1325,7 +1325,8 @@ static bool MatchFlowAction(FlowEntry *flow, const string &str) { } if (str == "deny") { - return ((action & TrafficAction::DROP_FLAGS) != 0); + return (((action & TrafficAction::DROP_FLAGS) != 0) | + (flow->IsShortFlow())); } return false; diff --git a/src/vnsw/agent/vrouter/ksync/flowtable_ksync.cc b/src/vnsw/agent/vrouter/ksync/flowtable_ksync.cc index 270a0daa981..4c763be02ef 100644 --- a/src/vnsw/agent/vrouter/ksync/flowtable_ksync.cc +++ b/src/vnsw/agent/vrouter/ksync/flowtable_ksync.cc @@ -368,6 +368,10 @@ int FlowTableKSyncEntry::Encode(sandesh_op::type op, char *buf, int buf_len) { req.set_fr_rindex(rev_flow->flow_handle()); } + if (flow_entry_->IsShortFlow()) { + action = VR_FLOW_ACTION_DROP; + } + req.set_fr_flags(flags); req.set_fr_action(action); req.set_fr_drop_reason(drop_reason);