OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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,
FlowEntryCmp
FlowEntryTree
 

Functions

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

Variables

SandeshTraceBufferPtr FlowTraceBuf
 

Macro Definition Documentation

#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); \
}
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.

#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

Definition at line 321 of file flow_table.h.

Function Documentation

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

Definition at line 3015 of file flow_entry.cc.

Here is the call graph for this function:

Variable Documentation

SandeshTraceBufferPtr FlowTraceBuf