コード例 #1
0
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));
};
コード例 #2
0
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));
}
コード例 #3
0
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));
}
コード例 #4
0
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));
}
コード例 #5
0
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));
}
コード例 #6
0
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));
}
コード例 #7
0
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));
}
コード例 #8
0
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));
}
コード例 #9
0
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));
};
コード例 #10
0
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));
};
コード例 #11
0
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));
};
コード例 #12
0
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));
};
コード例 #13
0
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));
};
コード例 #14
0
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));
}
コード例 #15
0
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;
};
コード例 #16
0
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));
};