OpenSDN source code
flow_table.h File Reference
#include <map>
#include <boost/uuid/random_generator.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <boost/intrusive_ptr.hpp>
#include <tbb/atomic.h>
#include <tbb/mutex.h>
#include <base/util.h>
#include <base/address.h>
#include <db/db_table_walker.h>
#include <cmn/agent_cmn.h>
#include <oper/mirror_table.h>
#include <filter/traffic_action.h>
#include <filter/acl_entry.h>
#include <filter/acl.h>
#include <pkt/pkt_types.h>
#include <pkt/pkt_handler.h>
#include <pkt/pkt_init.h>
#include <pkt/pkt_flow_info.h>
#include <pkt/flow_entry.h>
#include <sandesh/sandesh_trace.h>
#include <oper/vn.h>
#include <oper/vm.h>
#include <oper/interface_common.h>
#include <oper/nexthop.h>
#include <oper/route_common.h>
#include <oper/sg.h>
#include <oper/vrf.h>
#include <sandesh/common/flow_types.h>
Include dependency graph for flow_table.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  FlowEntryFreeList
 
struct  FlowTaskMsg
 
struct  Inet4FlowKeyCmp
 
class  FlowTable
 
struct  FlowTable::LinkLocalFlowInfo
 
struct  FlowEntryCmp
 

Macros

#define FLOW_LOCK(flow, rflow, flow_event)
 
#define FLOW_TRACE(obj, ...)
 

Typedefs

typedef std::set< FlowEntryPtr, FlowEntryCmpFlowEntryTree
 

Functions

void SetActionStr (const FlowAction &, std::vector< ActionStr > &)
 

Variables

SandeshTraceBufferPtr FlowTraceBuf
 

Macro Definition Documentation

◆ FLOW_LOCK

#define FLOW_LOCK (   flow,
  rflow,
  flow_event 
)
Value:
bool is_flow_rflow_key_same = false; \
if (flow == rflow) { \
if (flow_event == FlowEvent::DELETE_FLOW) { \
assert(0); \
} \
is_flow_rflow_key_same = true; \
rflow = NULL; \
} \
tbb::mutex tmp_mutex1, tmp_mutex2, *mutex_ptr_1, *mutex_ptr_2; \
FlowTable::GetMutexSeq(flow ? flow->mutex() : tmp_mutex1, \
rflow ? rflow->mutex() : tmp_mutex2, \
&mutex_ptr_1, &mutex_ptr_2); \
tbb::mutex::scoped_lock lock1(*mutex_ptr_1); \
tbb::mutex::scoped_lock lock2(*mutex_ptr_2); \
if (is_flow_rflow_key_same) { \
flow->MakeShortFlow(FlowEntry::SHORT_SAME_FLOW_RFLOW_KEY); \
}
@ SHORT_SAME_FLOW_RFLOW_KEY
Definition: flow_entry.h:482
@ DELETE_FLOW
Definition: flow_event.h:25
static void GetMutexSeq(tbb::mutex &mutex1, tbb::mutex &mutex2, tbb::mutex **mutex_ptr_1, tbb::mutex **mutex_ptr_2)
Definition: flow_table.cc:122

Definition at line 61 of file flow_table.h.

◆ FLOW_TRACE

#define FLOW_TRACE (   obj,
  ... 
)
Value:
do {\
Flow##obj::TraceMsg(FlowTraceBuf, __FILE__, __LINE__, ##__VA_ARGS__);\
} while (false)
SandeshTraceBufferPtr FlowTraceBuf

Definition at line 325 of file flow_table.h.

Typedef Documentation

◆ FlowEntryTree

Definition at line 321 of file flow_table.h.

Function Documentation

◆ SetActionStr()

void SetActionStr ( const FlowAction action_info,
std::vector< ActionStr > &  action_str_l 
)

Definition at line 3015 of file flow_entry.cc.

Here is the call graph for this function:

Variable Documentation

◆ FlowTraceBuf

SandeshTraceBufferPtr FlowTraceBuf
extern