void EventLogger::packet_out(const Packet &packet) { typedef struct : msg_hdr_t { int port_out; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::PACKET_OUT, packet, &msg); msg.port_out = packet.get_egress_port(); transport_instance->send((char *) &msg, sizeof(msg)); };
void EventLogger::parser_start(const Packet &packet, const Parser &parser) { typedef struct : msg_hdr_t { int parser_id; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::PARSER_START, device_id, packet, &msg); msg.parser_id = parser.get_id(); transport_instance->send(reinterpret_cast<char *>(&msg), sizeof(msg)); }
void EventLogger::packet_in(const Packet &packet) { typedef struct : msg_hdr_t { int port_in; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::PACKET_IN, device_id, packet, &msg); msg.port_in = packet.get_ingress_port(); transport_instance->send(reinterpret_cast<char *>(&msg), sizeof(msg)); }
void EventLogger::table_miss(const Packet &packet, const MatchTableAbstract &table) { typedef struct : msg_hdr_t { int table_id; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::TABLE_MISS, device_id, packet, &msg); msg.table_id = table.get_id(); transport_instance->send(reinterpret_cast<char *>(&msg), sizeof(msg)); }
void EventLogger::pipeline_done(const Packet &packet, const Pipeline &pipeline) { typedef struct : msg_hdr_t { int pipeline_id; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::PIPELINE_DONE, device_id, packet, &msg); msg.pipeline_id = pipeline.get_id(); transport_instance->send(reinterpret_cast<char *>(&msg), sizeof(msg)); }
void EventLogger::checksum_update(const Packet &packet, const Checksum &checksum) { typedef struct : msg_hdr_t { int checksum_id; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::CHECKSUM_UPDATE, device_id, packet, &msg); msg.checksum_id = checksum.get_id(); transport_instance->send(reinterpret_cast<char *>(&msg), sizeof(msg)); }
void EventLogger::deparser_emit(const Packet &packet, header_id_t header) { typedef struct : msg_hdr_t { int header_id; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::DEPARSER_EMIT, device_id, packet, &msg); msg.header_id = header; transport_instance->send(reinterpret_cast<char *>(&msg), sizeof(msg)); }
void EventLogger::deparser_done(const Packet &packet, const Deparser &deparser) { typedef struct : msg_hdr_t { int deparser_id; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::DEPARSER_DONE, device_id, packet, &msg); msg.deparser_id = deparser.get_id(); transport_instance->send(reinterpret_cast<char *>(&msg), sizeof(msg)); }
void EventLogger::parser_done(const Packet &packet, const Parser &parser) { typedef struct : msg_hdr_t { int parser_id; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::PARSER_DONE, packet, &msg); msg.parser_id = parser.get_id(); transport_instance->send((char *) &msg, sizeof(msg)); };
void EventLogger::pipeline_start(const Packet &packet, const Pipeline &pipeline) { typedef struct : msg_hdr_t { int pipeline_id; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::PIPELINE_START, packet, &msg); msg.pipeline_id = pipeline.get_id(); transport_instance->send((char *) &msg, sizeof(msg)); };
void EventLogger::deparser_start(const Packet &packet, const Deparser &deparser) { typedef struct : msg_hdr_t { int deparser_id; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::DEPARSER_START, packet, &msg); msg.deparser_id = deparser.get_id(); transport_instance->send((char *) &msg, sizeof(msg)); };
void EventLogger::parser_extract(const Packet &packet, header_id_t header) { typedef struct : msg_hdr_t { int header_id; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::PARSER_EXTRACT, packet, &msg); msg.header_id = header; transport_instance->send((char *) &msg, sizeof(msg)); };
void EventLogger::condition_eval(const Packet &packet, const Conditional &cond, bool result) { typedef struct : msg_hdr_t { int condition_id; int result; // 0 (true) or 1 (false); } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::CONDITION_EVAL, packet, &msg); msg.condition_id = cond.get_id(); msg.result = result; transport_instance->send((char *) &msg, sizeof(msg)); };
void EventLogger::table_hit(const Packet &packet, const MatchTableAbstract &table, entry_handle_t handle) { typedef struct : msg_hdr_t { int table_id; int entry_hdl; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::TABLE_HIT, device_id, packet, &msg); msg.table_id = table.get_id(); msg.entry_hdl = static_cast<int>(handle); transport_instance->send(reinterpret_cast<char *>(&msg), sizeof(msg)); }
void EventLogger::action_execute(const Packet &packet, const ActionFn &action_fn, const ActionData &action_data) { typedef struct : msg_hdr_t { int action_id; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::ACTION_EXECUTE, packet, &msg); msg.action_id = action_fn.get_id(); transport_instance->send((char *) &msg, sizeof(msg)); // to costly to send action data? (void) action_data; };
void EventLogger::table_hit(const Packet &packet, const MatchTableAbstract &table, entry_handle_t handle) { typedef struct : msg_hdr_t { int table_id; int entry_hdl; } __attribute__((packed)) msg_t; msg_t msg; fill_msg_hdr(EventType::TABLE_HIT, packet, &msg); msg.table_id = table.get_id(); msg.entry_hdl = (int) handle; transport_instance->send((char *) &msg, sizeof(msg)); };