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

OpenFlow v1.X instructions. More...

#include <inttypes.h>
#include <stdbool.h>
#include "rofl.h"
#include "of1x_action.h"
#include "../../../common/datapacket.h"

Go to the source code of this file.

Data Structures

struct  of1x_write_metadata
 
struct  of1x_instruction
 
struct  of1x_instruction_group
 

Macros

#define OF1X_IT_MAX   OF1X_IT_GOTO_TABLE+1
 

Typedefs

typedef struct of1x_write_metadata of1x_write_metadata_t
 
typedef struct of1x_instruction of1x_instruction_t
 
typedef struct
of1x_instruction_group 
of1x_instruction_group_t
 

Enumerations

enum  of1x_instruction_type_t {
  OF1X_IT_NO_INSTRUCTION = 0, OF1X_IT_APPLY_ACTIONS = 1, OF1X_IT_CLEAR_ACTIONS = 2, OF1X_IT_WRITE_ACTIONS = 3,
  OF1X_IT_WRITE_METADATA = 4, OF1X_IT_EXPERIMENTER = 5, OF1X_IT_METER = 6, OF1X_IT_GOTO_TABLE = 7
}
 Instruction type. More...
 

Functions

ROFL_BEGIN_DECLS void __of1x_init_instruction_group (of1x_instruction_group_t *group)
 
void __of1x_destroy_instruction_group (of1x_instruction_group_t *group)
 
void of1x_add_instruction_to_group (of1x_instruction_group_t *group, of1x_instruction_type_t type, of1x_action_group_t *apply_actions, of1x_write_actions_t *write_actions, of1x_write_metadata_t *write_metadata, unsigned int go_to_table)
 Adds an instruction of the group. More...
 
void of1x_remove_instruction_from_the_group (of1x_instruction_group_t *group, of1x_instruction_type_t type)
 Remove an instruction of the group. More...
 
rofl_result_t __of1x_update_instructions (of1x_instruction_group_t *group, of1x_instruction_group_t *new_group)
 
bool __of1x_instructions_contain_group (struct of1x_flow_entry *const entry, const unsigned int group_id)
 
void __of1x_copy_instruction_group (of1x_instruction_group_t *origin, of1x_instruction_group_t *dest)
 
bool __of1x_instruction_has (of1x_instruction_group_t *inst_grp, of1x_packet_action_type_t type, uint64_t value)
 
rofl_result_t __of1x_validate_instructions (of1x_instruction_group_t *inst_grp, struct of1x_pipeline *pipeline, unsigned int table_id)
 
void __of1x_dump_instructions (of1x_instruction_group_t group, bool raw_nbo)
 

Detailed Description

OpenFlow v1.X instructions.

Author
Marc Sune<marc.sune (at) bisdn.de>

Instructions should never be used directly. Instructions are arleady part of the of1x_flow_entry.

How to add and remove instructions (pseudo-code):

action_group = of1x_init_action_group()
//Push actions... (refer to of1x_action.h)
//APPLY ACTIONS
of1x_add_instruction_to_group(&entry->inst_grp, OF1X_IT_APPLY_ACTIONS, action_group,NULL,0)
//WRITE ACTIONS
write_actions = of1x_init_write_actions()
//Add actions to write group... (refer to of1x_action.h)
of1x_add_instruction_to_group(&entry->inst_grp, OF1X_IT_APPLY_ACTIONS, NULL, write_actions,0)
//GOTO_TABLE
of1x_add_instruction_to_group(&entry->inst_grp, OF1X_IT_GOTO_TABLE, NULL, NULL,10)
//To release resources

Definition in file of1x_instruction.h.

Function Documentation

bool __of1x_instruction_has ( of1x_instruction_group_t inst_grp,
of1x_packet_action_type_t  type,
uint64_t  value 
)

returns true if the action type with the specific value is in the set of instructions.

Definition at line 210 of file of1x_instruction.c.