#ifndef _PACKET_INJECT_MAIN_H #define _PACKET_INJECT_MAIN_H #ifdef __cplusplus extern "C" { #endif #include #include "stellar/packet.h" #define AFTER_RECV_C2S_N_PACKET 1 #define AFTER_RECV_S2C_N_PACKET 2 enum packet_inject_type { INJECT_TYPE_TCP_RST = 1, INJECT_TYPE_TCP_FIN = 2, INJECT_TYPE_TCP_PAYLOAD = 3, INJECT_TYPE_TCP_PAYLOAD_FIN_RST = 4, INJECT_TYPE_UDP_PAYLOAD = 5, INJECT_TYPE_CTRL_MSG = 6, }; struct packet_inject_rule { struct address addr; /* network order */ uint16_t port; /* network order */ enum packet_inject_type inject_type; // inject packet after (C2S/S2C) receiving n packets int direction; // AFTER_RECV_C2S_N_PACKET or AFTER_RECV_S2C_N_PACKET uint64_t number; // n packets received }; extern struct packet_inject_rule rule; int packet_inject_main(int argc, char **argv); #ifdef __cplusplus } #endif #endif