ROFL-pipeline  v0.6.0dev
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
of1x_flow_table.h File Reference

OpenFlow v1.0, 1.2 and 1.3.2 flow table abstraction. More...

#include <stdlib.h>
#include <stdbool.h>
#include <inttypes.h>
#include <stdint.h>
#include "rofl.h"
#include "../../../common/bitmap.h"
#include "../../../threading.h"
#include "of1x_flow_entry.h"
#include "of1x_timers.h"
#include "of1x_statistics.h"
#include "of1x_utils.h"
#include "matching_algorithms/matching_algorithms.h"

Go to the source code of this file.

Data Structures

struct  of1x_flow_table_config_t
 Table configuration. More...
 
struct  of1x_flow_table
 OpenFlow v1.0, 1.2 and 1.3.2 flow table abstraction. More...
 

Macros

#define OF1X_FIRST_FLOW_TABLE_INDEX   0
 
#define OF1X_MAX_NUMBER_OF_TABLE_ENTRIES   0xFFFFFFFF
 
#define OF1X_MAX_TABLE_NAME_LEN   32
 
#define __OF1X_TABLE_MISS_MAX   OF1X_TABLE_MISS_MASK+1
 

Typedefs

typedef void matching_auxiliary_t
 
typedef struct of1x_flow_table of1x_flow_table_t
 OpenFlow v1.0, 1.2 and 1.3.2 flow table abstraction. More...
 
typedef of1x_flow_table_t __of1x_flow_table_snapshot_t
 Table snapshot. More...
 

Enumerations

enum  of1x_flow_table_miss_config_t { OF1X_TABLE_MISS_CONTROLLER = 0, OF1X_TABLE_MISS_CONTINUE = 1 << 0, OF1X_TABLE_MISS_DROP = 1 << 1, OF1X_TABLE_MISS_MASK = 3 }
 Table miss behaviour (ofp_table_config) More...
 

Functions

ROFL_BEGIN_DECLS rofl_result_t __of1x_init_table (struct of1x_pipeline *pipeline, of1x_flow_table_t *table, const unsigned int table_index, const enum of1x_matching_algorithm_available algorithm)
 
void __of10_set_table_defaults (of1x_flow_table_t *table)
 
void __of12_set_table_defaults (of1x_flow_table_t *table)
 
void __of13_set_table_defaults (of1x_flow_table_t *table)
 
rofl_result_t __of1x_destroy_table (of1x_flow_table_t *table)
 
rofl_of1x_fm_result_t of1x_add_flow_entry_table (struct of1x_pipeline *const pipeline, const unsigned int table_id, of1x_flow_entry_t **const entry, bool check_overlap, bool reset_counts)
 Add a flow_entry to a table. More...
 
rofl_result_t of1x_modify_flow_entry_table (struct of1x_pipeline *const pipeline, const unsigned int table_id, of1x_flow_entry_t **const entry, const enum of1x_flow_removal_strictness strict, bool reset_counts)
 Modify flow_entry(s) in the table. More...
 
rofl_result_t of1x_remove_flow_entry_table (struct of1x_pipeline *const pipeline, const unsigned int table_id, of1x_flow_entry_t *entry, const enum of1x_flow_removal_strictness strict, uint32_t out_port, uint32_t out_group)
 Removes a flow_entry from the table. More...
 
rofl_result_t __of1x_remove_specific_flow_entry_table (struct of1x_pipeline *const pipeline, const unsigned int table_id, of1x_flow_entry_t *const specific_entry, of1x_flow_remove_reason_t reason, of1x_mutex_acquisition_required_t mutex_acquired)
 
void of1x_dump_table (of1x_flow_table_t *table, bool raw_nbo)
 

Variables

const char * __of1x_flow_table_miss_config_str [__OF1X_TABLE_MISS_MAX]
 

Detailed Description

OpenFlow v1.0, 1.2 and 1.3.2 flow table abstraction.

Author
Marc Sune<marc.sune (at) bisdn.de>, Tobias Jungel<tobias.jungel (at) bisdn.de>

The of1x_flow_table structure contains the main abstraction of the a flow entry table (or a flowmod table).

The basic operations which one can perform over a table are:

Additionally the table contain the pointer's to the matching algorithm using in this particular table. This is set during switch bootstrap and cannot be changed at runtime.

The matching algorithm, in conjunction with the state of the table can perform a packet lookup operation. The API is defined in the data struct matching_algorithm_functions Just have a look to the matching algorithm subsystem for more information

Definition in file of1x_flow_table.h.

Typedef Documentation

Table snapshot.

Definition at line 147 of file of1x_flow_table.h.

OpenFlow v1.0, 1.2 and 1.3.2 flow table abstraction.

Enumeration Type Documentation

Table miss behaviour (ofp_table_config)

Definition at line 59 of file of1x_flow_table.h.