From 8bede1e85b5ee20c1d29a882fb289010dbb526cf 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 6c608aff365..ff116a0ae4a 100644 --- a/src/vnsw/agent/pkt/flow_entry.cc +++ b/src/vnsw/agent/pkt/flow_entry.cc @@ -2083,11 +2083,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 d2d400c0f30..80106c0171a 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 dcfc2a2520e..57202c3ca93 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 120ea672a92..02168c95dc3 100644 --- a/src/vnsw/agent/vrouter/ksync/flowtable_ksync.cc +++ b/src/vnsw/agent/vrouter/ksync/flowtable_ksync.cc @@ -400,6 +400,10 @@ int FlowTableKSyncEntry::Encode(sandesh_op::type op, char *buf, int buf_len) { } } + 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);