Azinix

Evl_Manager_t Struct Reference

A representation of rules and corresponding lookup table. More...

#include <evl.h>


Data Fields

array_trawRulesAndMacrosArray
st_tabledefineTable
array_trawRules
int numAllRules
int numPreprocessRules
int indexFirstContentRule
int indexLastContentRule
Evl_L4Manager_ttcpMgr
Evl_L4Manager_tudpMgr
Evl_L4Manager_ticmpMgr
Evl_L4Manager_tipMgr
Evl_GenericManager_tgenericMgr
Evl_Bridge_tbridge
array_trlpActionArray
array_tactionArray
st_tablequeueTable
Heap_tqHeap
Tcl_Interp * interp
ClientData cd
st_tableucodeNameToFunction
array_tpreprocessorResult
array_tgenericResult
array_tlayer3Result
array_tlayer4Result


Detailed Description

A representation of rules and corresponding lookup table.

We will often refer to a rule by its index into the allRules array, which is just the string formula of the rule.

For now we are assuming that the rules are partitioned into three sets: those that depend on dest port, those that depend on src but not dest, and those that depend on neither source nor destination.

The variable ordering is taken to be destPort < srcPort < destIp < srcIp for all the BDDs.

The destPort bits are MSB to LSB in the BDD, ditto for the other port and IP bits. This will also help with the actual lookup.

The distinctL4RulesTable keeps track of the distinct L4 rules we've seen - it maps the BDD to an int id, which can be used to index into L4RuleIdToL7ruleSetTable, which tells us for a given L4 rule what the original rules were - the set of corresponding rules is represented by a var_set_t of length numAllRules.

There are three arrays of L4 lookup tables - one for each of the groups - destPortRules, srcPortRules, noPortRules. See the L4 lookup table structure for details.

Definition at line 428 of file evl.h.


Field Documentation

array_t* Evl_Manager_t::rawRulesAndMacrosArray

Definition at line 431 of file evl.h.

st_table* Evl_Manager_t::defineTable

Definition at line 432 of file evl.h.

array_t* Evl_Manager_t::rawRules

Definition at line 434 of file evl.h.

int Evl_Manager_t::numAllRules

Definition at line 435 of file evl.h.

int Evl_Manager_t::numPreprocessRules

Definition at line 437 of file evl.h.

int Evl_Manager_t::indexFirstContentRule

Definition at line 438 of file evl.h.

int Evl_Manager_t::indexLastContentRule

Definition at line 439 of file evl.h.

Evl_L4Manager_t* Evl_Manager_t::tcpMgr

Definition at line 441 of file evl.h.

Evl_L4Manager_t* Evl_Manager_t::udpMgr

Definition at line 442 of file evl.h.

Evl_L4Manager_t* Evl_Manager_t::icmpMgr

Definition at line 443 of file evl.h.

Evl_L4Manager_t* Evl_Manager_t::ipMgr

Definition at line 444 of file evl.h.

Evl_GenericManager_t* Evl_Manager_t::genericMgr

Definition at line 445 of file evl.h.

Evl_Bridge_t* Evl_Manager_t::bridge

Definition at line 447 of file evl.h.

array_t* Evl_Manager_t::rlpActionArray

Definition at line 449 of file evl.h.

array_t* Evl_Manager_t::actionArray

Definition at line 450 of file evl.h.

st_table* Evl_Manager_t::queueTable

Definition at line 451 of file evl.h.

Heap_t* Evl_Manager_t::qHeap

Definition at line 452 of file evl.h.

Tcl_Interp* Evl_Manager_t::interp

Definition at line 454 of file evl.h.

ClientData Evl_Manager_t::cd

Definition at line 455 of file evl.h.

st_table* Evl_Manager_t::ucodeNameToFunction

Definition at line 457 of file evl.h.

array_t* Evl_Manager_t::preprocessorResult

Definition at line 461 of file evl.h.

array_t* Evl_Manager_t::genericResult

Definition at line 462 of file evl.h.

array_t* Evl_Manager_t::layer3Result

Definition at line 463 of file evl.h.

array_t* Evl_Manager_t::layer4Result

Definition at line 464 of file evl.h.