ROFL-pipeline
v0.6.0dev
|
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] |
OpenFlow v1.0, 1.2 and 1.3.2 flow table abstraction.
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.
Table snapshot.
Definition at line 147 of file of1x_flow_table.h.
typedef struct of1x_flow_table of1x_flow_table_t |
OpenFlow v1.0, 1.2 and 1.3.2 flow table abstraction.
Table miss behaviour (ofp_table_config)
Definition at line 59 of file of1x_flow_table.h.