diff --git a/include/stellar/stellar.h b/include/stellar/stellar.h index 1c2e0b6..43d911f 100644 --- a/include/stellar/stellar.h +++ b/include/stellar/stellar.h @@ -54,7 +54,8 @@ uint16_t stellar_get_current_thread_index(); // return inject packet length, return 0 if failed int stellar_inject_tcp_rst(struct stellar *st, const struct session *sess, enum flow_direction inject_dir); int stellar_inject_tcp_fin(struct stellar *st, const struct session *sess, enum flow_direction inject_dir); -int stellar_inject_payload(struct stellar *st, const struct session *sess, enum flow_direction inject_dir, const char *payload, uint16_t len); +int stellar_inject_tcp_payload(struct stellar *st, const struct session *sess, enum flow_direction inject_dir, const char *payload, uint16_t len); +int stellar_inject_udp_payload(struct stellar *st, const struct session *sess, enum flow_direction inject_dir, const char *payload, uint16_t len); int stellar_inject_ctrl_msg(struct stellar *st, const struct session *sess, const struct sid_list *sids, const char *msg, uint16_t len); int stellar_main(int argc, char **argv); diff --git a/src/stellar/inject.cpp b/src/stellar/inject.cpp index ef46861..9fed296 100644 --- a/src/stellar/inject.cpp +++ b/src/stellar/inject.cpp @@ -543,17 +543,14 @@ int stellar_inject_tcp_fin(struct stellar *st, const struct session *sess, enum return inject_tcp_packet(st, sess, inject_dir, TH_FIN | TH_ACK, NULL, 0); } -int stellar_inject_payload(struct stellar *st, const struct session *sess, enum flow_direction inject_dir, const char *payload, uint16_t len) +int stellar_inject_tcp_payload(struct stellar *st, const struct session *sess, enum flow_direction inject_dir, const char *payload, uint16_t len) { - switch (session_get_type(sess)) - { - case SESSION_TYPE_TCP: - return inject_tcp_packet(st, sess, inject_dir, TH_ACK, payload, len); - case SESSION_TYPE_UDP: - return inject_udp_packet(st, sess, inject_dir, payload, len); - default: - return 0; - } + return inject_tcp_packet(st, sess, inject_dir, TH_ACK, payload, len); +} + +int stellar_inject_udp_payload(struct stellar *st, const struct session *sess, enum flow_direction inject_dir, const char *payload, uint16_t len) +{ + return inject_udp_packet(st, sess, inject_dir, payload, len); } int stellar_inject_ctrl_msg(struct stellar *st, const struct session *sess, const struct sid_list *sids, const char *msg, uint16_t len) diff --git a/src/stellar/version.map b/src/stellar/version.map index 8cf067f..275d5bd 100644 --- a/src/stellar/version.map +++ b/src/stellar/version.map @@ -59,7 +59,8 @@ global: stellar_get_current_thread_index; stellar_inject_tcp_rst; stellar_inject_tcp_fin; - stellar_inject_payload; + stellar_inject_tcp_payload; + stellar_inject_udp_payload; stellar_inject_ctrl_msg; stellar_main; diff --git a/test/packet_inject/packet_inject_plugin.cpp b/test/packet_inject/packet_inject_plugin.cpp index f29890b..1c2917b 100644 --- a/test/packet_inject/packet_inject_plugin.cpp +++ b/test/packet_inject/packet_inject_plugin.cpp @@ -82,25 +82,25 @@ static void on_sess_msg(struct session *sess, int topic_id, const void *msg, voi break; case INJECT_TYPE_TCP_PAYLOAD: snprintf(buffer, sizeof(buffer), "HTTP/1.1 200 OK\r\nContent-Length: %d\r\n\r\n%s", 5 + 5 + 2, "Hello"); - stellar_inject_payload(ctx->st, sess, FLOW_DIRECTION_S2C, buffer, strlen(buffer)); // inject payload to client - stellar_inject_payload(ctx->st, sess, FLOW_DIRECTION_S2C, "World\r\n", 7); // inject payload to client - stellar_inject_tcp_rst(ctx->st, sess, FLOW_DIRECTION_S2C); // inject RST to client - stellar_inject_tcp_rst(ctx->st, sess, FLOW_DIRECTION_C2S); // inject RST to server + stellar_inject_tcp_payload(ctx->st, sess, FLOW_DIRECTION_S2C, buffer, strlen(buffer)); // inject payload to client + stellar_inject_tcp_payload(ctx->st, sess, FLOW_DIRECTION_S2C, "World\r\n", 7); // inject payload to client + stellar_inject_tcp_rst(ctx->st, sess, FLOW_DIRECTION_S2C); // inject RST to client + stellar_inject_tcp_rst(ctx->st, sess, FLOW_DIRECTION_C2S); // inject RST to server session_set_discard(sess); break; case INJECT_TYPE_TCP_PAYLOAD_FIN_RST: snprintf(buffer, sizeof(buffer), "HTTP/1.1 200 OK\r\nContent-Length: %d\r\n\r\n%s", 5 + 5 + 2, "Hello"); - stellar_inject_payload(ctx->st, sess, FLOW_DIRECTION_S2C, buffer, strlen(buffer)); // inject payload to client - stellar_inject_payload(ctx->st, sess, FLOW_DIRECTION_S2C, "World\r\n", 7); // inject payload to client - stellar_inject_tcp_fin(ctx->st, sess, FLOW_DIRECTION_S2C); // inject FIN to client - stellar_inject_tcp_rst(ctx->st, sess, FLOW_DIRECTION_S2C); // inject RST to client - stellar_inject_tcp_fin(ctx->st, sess, FLOW_DIRECTION_C2S); // inject FIN to server - stellar_inject_tcp_rst(ctx->st, sess, FLOW_DIRECTION_C2S); // inject RST to server + stellar_inject_tcp_payload(ctx->st, sess, FLOW_DIRECTION_S2C, buffer, strlen(buffer)); // inject payload to client + stellar_inject_tcp_payload(ctx->st, sess, FLOW_DIRECTION_S2C, "World\r\n", 7); // inject payload to client + stellar_inject_tcp_fin(ctx->st, sess, FLOW_DIRECTION_S2C); // inject FIN to client + stellar_inject_tcp_rst(ctx->st, sess, FLOW_DIRECTION_S2C); // inject RST to client + stellar_inject_tcp_fin(ctx->st, sess, FLOW_DIRECTION_C2S); // inject FIN to server + stellar_inject_tcp_rst(ctx->st, sess, FLOW_DIRECTION_C2S); // inject RST to server session_set_discard(sess); break; case INJECT_TYPE_UDP_PAYLOAD: - stellar_inject_payload(ctx->st, sess, FLOW_DIRECTION_C2S, "Hello Server", 12); - stellar_inject_payload(ctx->st, sess, FLOW_DIRECTION_S2C, "Hello Client", 12); + stellar_inject_udp_payload(ctx->st, sess, FLOW_DIRECTION_C2S, "Hello Server", 12); + stellar_inject_udp_payload(ctx->st, sess, FLOW_DIRECTION_S2C, "Hello Client", 12); session_set_discard(sess); break; case INJECT_TYPE_CTRL_MSG: