ROFL-pipeline
v0.6.0dev
|
OpenFlow v1.0, 1.2 and 1.3.2 action packet processing routines. More...
#include <inttypes.h>
#include <string.h>
#include <stdbool.h>
#include <assert.h>
#include "rofl.h"
#include "../../../util/pp_guard.h"
#include "of1x_statistics_pp.h"
#include "of1x_action.h"
#include "of1x_group_table.h"
#include "of1x_flow_table.h"
#include "of1x_utils.h"
#include "../../../physical_switch.h"
#include "../../../util/logging.h"
#include "../../../common/protocol_constants.h"
#include "../../../common/ternary_fields.h"
#include "../../../common/bitmap.h"
#include "../../../platform/lock.h"
#include "../../../platform/likely.h"
#include "../../../platform/memory.h"
#include "../../../platform/packet.h"
#include "../of1x_async_events_hooks.h"
Go to the source code of this file.
Functions | |
static ROFL_BEGIN_DECLS void | __of1x_init_packet_write_actions (of1x_write_actions_t *pkt_write_actions) |
static void | __of1x_update_packet_write_actions (of1x_write_actions_t *packet_write_actions, const of1x_write_actions_t *entry_write_actions) |
static void | __of1x_clear_write_actions (of1x_write_actions_t *pkt_write_actions) |
static void | __of1x_process_apply_actions (const unsigned int tid, const struct of1x_switch *sw, const unsigned int table_id, datapacket_t *pkt, const of1x_action_group_t *apply_actions_group, bool replicate_pkts, datapacket_t **reinject_pkt) |
static void | __of1x_process_group_actions (const unsigned int tid, const struct of1x_switch *sw, const unsigned int table_id, datapacket_t *pkt, uint64_t field, of1x_group_t *group, bool replicate_pkts) |
static void | __of1x_process_packet_action (const unsigned int tid, const struct of1x_switch *sw, const unsigned int table_id, datapacket_t *pkt, of1x_packet_action_t *action, bool replicate_pkts, datapacket_t **reinject_pkt) |
static void | __of1x_process_write_actions (const unsigned int tid, const struct of1x_switch *sw, const unsigned int table_id, datapacket_t *pkt, bool replicate_pkts) |
OpenFlow v1.0, 1.2 and 1.3.2 action packet processing routines.
Note regarding endianness: Conforming the convention that the pipeline works in Network Byte Order the matches need to to be initialized in NBO (Big Endian). This applies to the values comming from the packet (eth_src, eth_dst, ...) and NOT to the ones that are external to it:
There is an special alignment for non complete values as
Definition in file of1x_action_pp.h.