5 #ifndef __OF1X_INSTRUCTION_PP_H__
6 #define __OF1X_INSTRUCTION_PP_H__
11 #include "../../../util/pp_guard.h"
27 bool has_goto = inst_grp->instructions[OF1X_IT_GOTO_TABLE].type == OF1X_IT_GOTO_TABLE;
28 unsigned int n_out = inst_grp->num_of_outputs;
30 return ( (n_out == 1) && (has_goto) ) || ( n_out > 1);
43 if(inst->type == OF1X_IT_APPLY_ACTIONS)
44 __of1x_process_apply_actions(tid, sw, table_id, pkt, inst->apply_actions, __of1x_process_instructions_must_replicate(instructions), NULL);
49 if(inst->type == OF1X_IT_CLEAR_ACTIONS)
50 __of1x_clear_write_actions(&pkt->write_actions.of1x);
55 if(inst->type == OF1X_IT_WRITE_ACTIONS)
56 __of1x_update_packet_write_actions(&pkt->write_actions.of1x, inst->write_actions);
61 if(inst->type == OF1X_IT_WRITE_METADATA){
62 pkt->__metadata = (pkt->__metadata & ~inst->write_metadata.metadata_mask) |
63 (inst->write_metadata.metadata & inst->write_metadata.metadata_mask);
69 if(inst->type == OF1X_IT_EXPERIMENTER){
76 if(inst->type == OF1X_IT_METER){
84 return inst->go_to_table;
90 #endif //OF1X_INSTRUCTION_PP
OpenFlow-enabled v1.0, 1.2 and 1.3.2 switch abstraction.
OpenFlow v1.X instructions.
OpenFlow v1.0, 1.2 and 1.3.2 action packet processing routines.
static unsigned int __of1x_process_instructions(const unsigned int tid, const struct of1x_switch *sw, const unsigned int table_id, datapacket_t *const pkt, const of1x_instruction_group_t *instructions)