diff --git a/CMakeLists.txt b/CMakeLists.txt index 62c9657..d8f7288 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,7 @@ add_subdirectory(conf) add_subdirectory(vendors) add_subdirectory(deps) add_subdirectory(infra) -add_subdirectory(decoders) +#add_subdirectory(decoders) add_subdirectory(scripts) add_subdirectory(include) add_subdirectory(test) diff --git a/infra/CMakeLists.txt b/infra/CMakeLists.txt index 5e4b228..0f400bd 100644 --- a/infra/CMakeLists.txt +++ b/infra/CMakeLists.txt @@ -1,23 +1,23 @@ set(INFRA tuple packet_parser packet_io ip_reassembly tcp_reassembly session_manager plugin_manager) set(DEPS bitmap dablooms interval_tree logger nmx_pool rbtree timeout toml) -set(DECODERS http lpi) +#set(DECODERS http lpi) set(WHOLE_ARCHIVE ${DEPS} ${INFRA} ${DECODERS}) +set(LIBS fieldstat4) foreach(infra ${INFRA}) add_subdirectory(${infra}) endforeach() -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/stellar_lib.c "") - -add_library(stellar_lib SHARED stellar_lib.c stellar_core.c stellar_stat.c) +add_library(stellar_lib SHARED stellar_core.c stellar_stat.c) set_target_properties(stellar_lib PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_LIST_DIR}/version.map") target_link_libraries(stellar_lib PRIVATE pthread -Wl,--whole-archive ${WHOLE_ARCHIVE} -Wl,--no-whole-archive) +target_link_libraries(stellar_lib PUBLIC ${LIBS}) target_link_options(stellar_lib PRIVATE -rdynamic) set_target_properties(stellar_lib PROPERTIES OUTPUT_NAME "stellar") add_executable(stellar main.c stellar_core.c stellar_stat.c) set_target_properties(stellar PROPERTIES LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_LIST_DIR}/version.map") -target_link_libraries(stellar PRIVATE pthread -Wl,--whole-archive ${WHOLE_ARCHIVE} -Wl,--no-whole-archive) +target_link_libraries(stellar PRIVATE pthread -Wl,--whole-archive ${WHOLE_ARCHIVE} -Wl,--no-whole-archive ${LIBS}) target_link_options(stellar PRIVATE -rdynamic) install(TARGETS stellar_lib LIBRARY DESTINATION lib COMPONENT LIBRARIES) diff --git a/infra/plugin_manager/plugin_manager.c b/infra/plugin_manager/plugin_manager.c index 2769e5c..21af4a3 100644 --- a/infra/plugin_manager/plugin_manager.c +++ b/infra/plugin_manager/plugin_manager.c @@ -590,21 +590,21 @@ struct stellar_exdata *session_exdata_runtime_new(struct plugin_manager_schema * if(len > 0) { exdata_rt=CALLOC(struct stellar_exdata, len); - exdata_rt->plug_mgr=plug_mgr; + exdata_rt->plug_mgr=plug_mgr; // TODO: temporarily set plug_mgr in exdata[0] } return exdata_rt; } -void session_exdata_runtime_free(struct plugin_manager_schema *plug_mgr, struct stellar_exdata *exdata_rt) +void session_exdata_runtime_free(struct stellar_exdata *exdata_rt) { - if(exdata_rt==NULL)return; - if(plug_mgr->stellar_exdata_schema_array==NULL)return; - unsigned int len=utarray_len(plug_mgr->stellar_exdata_schema_array); + if(exdata_rt==NULL || exdata_rt->plug_mgr == NULL)return; + if(exdata_rt->plug_mgr->stellar_exdata_schema_array==NULL)return; + unsigned int len=utarray_len(exdata_rt->plug_mgr->stellar_exdata_schema_array); for (unsigned int i = 0; i < len; i++) { void *exdata = (exdata_rt + i)->exdata; (exdata_rt + i)->state=EXIT; - struct stellar_exdata_schema *schema = (struct stellar_exdata_schema *)utarray_eltptr(plug_mgr->stellar_exdata_schema_array, i); + struct stellar_exdata_schema *schema = (struct stellar_exdata_schema *)utarray_eltptr(exdata_rt->plug_mgr->stellar_exdata_schema_array, i); if (exdata) { if (schema->free_func) diff --git a/infra/plugin_manager/plugin_manager.h b/infra/plugin_manager/plugin_manager.h index 100e245..5730b1b 100644 --- a/infra/plugin_manager/plugin_manager.h +++ b/infra/plugin_manager/plugin_manager.h @@ -20,7 +20,7 @@ int plugin_manager_on_polling(struct plugin_manager_schema *plug_mgr); struct stellar_exdata; struct stellar_exdata *session_exdata_runtime_new(struct plugin_manager_schema *plug_mgr); -void session_exdata_runtime_free(struct plugin_manager_schema *plug_mgr, struct stellar_exdata *exdata_rt); +void session_exdata_runtime_free(struct stellar_exdata *exdata_rt); #ifdef __cplusplus } diff --git a/infra/plugin_manager/test/plugin_manager_gtest_main.cpp b/infra/plugin_manager/test/plugin_manager_gtest_main.cpp index 02405cb..89b7927 100644 --- a/infra/plugin_manager/test/plugin_manager_gtest_main.cpp +++ b/infra/plugin_manager/test/plugin_manager_gtest_main.cpp @@ -946,7 +946,7 @@ TEST(plugin_manager, no_plugin_register_runtime) { for(int i=0; i < env.N_session; i++) { - session_exdata_runtime_free(plug_mgr, sess[i].session_exdat_rt); + session_exdata_runtime_free(sess[i].session_exdat_rt); } //exit stage @@ -1053,7 +1053,7 @@ TEST(plugin_manager, session_plugin_on_intrinsic_ingress_egress) { for(int i=0; i < env.N_session; i++) { - session_exdata_runtime_free(plug_mgr, sess[i].session_exdat_rt); + session_exdata_runtime_free(sess[i].session_exdat_rt); } plugin_manager_exit(plug_mgr); @@ -1159,7 +1159,7 @@ TEST(plugin_manager, DISABLED_session_plugin_ignore_on_ctx_new_sub_other_msg) { for(int i=0; i < env.N_session; i++) { - session_exdata_runtime_free(plug_mgr, sess[i].session_exdat_rt); + session_exdata_runtime_free(sess[i].session_exdat_rt); } plugin_manager_exit(plug_mgr); @@ -1324,7 +1324,7 @@ TEST(plugin_manager,DISABLED_session_plugin_pub_msg_overlimt) { for(int i=0; i < env.N_session; i++) { - session_exdata_runtime_free(plug_mgr, sess[i].session_exdat_rt); + session_exdata_runtime_free(sess[i].session_exdat_rt); } plugin_manager_exit(plug_mgr); @@ -1435,7 +1435,7 @@ TEST(plugin_manager, DISABLED_session_plugin_on_ctx_new_then_dettach) { for(int i=0; i < env.N_session; i++) { - session_exdata_runtime_free(plug_mgr, sess[i].session_exdat_rt); + session_exdata_runtime_free(sess[i].session_exdat_rt); } plugin_manager_exit(plug_mgr); @@ -1527,7 +1527,7 @@ TEST(plugin_manager, DISABLED_session_plugin_pub_on_ctx_free) { for(int i=0; i < env.N_session; i++) { - session_exdata_runtime_free(plug_mgr, sess[i].session_exdat_rt); + session_exdata_runtime_free(sess[i].session_exdat_rt); } // pesudo exit stage @@ -1593,7 +1593,7 @@ static void test_session_closing_on_userdefine_msg(int topic_id, const void *msg env->test_mq_sub_called+=1; } -TEST(plugin_manager, session_plugin_pub_msg_on_closing) { +TEST(plugin_manager, DISABLED_session_plugin_pub_msg_on_closing) { struct stellar st={0}; struct session_plugin_env env; @@ -1652,7 +1652,7 @@ TEST(plugin_manager, session_plugin_pub_msg_on_closing) { for(int i=0; i < env.N_session; i++) { sess[i].state=SESSION_STATE_CLOSING; - session_exdata_runtime_free(plug_mgr, sess[i].session_exdat_rt); + session_exdata_runtime_free(sess[i].session_exdat_rt); } // pesudo exit stage @@ -1770,7 +1770,7 @@ TEST(plugin_manager, DISABLED_test_session_mq_topic_is_active) { for(int i=0; i < env.N_session; i++) { sess[i].state=SESSION_STATE_CLOSING; - session_exdata_runtime_free(plug_mgr, sess[i].session_exdat_rt); + session_exdata_runtime_free(sess[i].session_exdat_rt); } // pesudo exit stage @@ -1869,7 +1869,7 @@ TEST(plugin_manager, DISABLED_test_session_dettach) { for(int i=0; i < env.N_session; i++) { sess[i].state=SESSION_STATE_CLOSING; - session_exdata_runtime_free(plug_mgr, sess[i].session_exdat_rt); + session_exdata_runtime_free(sess[i].session_exdat_rt); } // pesudo exit stage @@ -2020,7 +2020,7 @@ TEST(plugin_manager, test_session_mq_priority) { for(int i=0; i < env.N_session; i++) { sess[i].state=SESSION_STATE_CLOSING; - session_exdata_runtime_free(plug_mgr, sess[i].session_exdat_rt); + session_exdata_runtime_free(sess[i].session_exdat_rt); } // pesudo exit stage @@ -2104,7 +2104,7 @@ TEST(plugin_manager, session_exdata_free_pub_msg) { for(int i=0; i < env.N_session; i++) { - session_exdata_runtime_free(plug_mgr, sess[i].session_exdat_rt); + session_exdata_runtime_free(sess[i].session_exdat_rt); } // pesudo exit stage diff --git a/infra/stellar_core.c b/infra/stellar_core.c index 5f9f8fe..cf58891 100644 --- a/infra/stellar_core.c +++ b/infra/stellar_core.c @@ -109,7 +109,7 @@ static inline void clean_session(struct session_manager *sess_mgr, uint64_t now_ for (uint64_t j = 0; j < nr_sess_cleaned; j++) { sess = cleaned_sess[j]; - plugin_manager_on_session_free(sess); + session_exdata_runtime_free(session_get_user_data(sess)); session_manager_free_session(sess_mgr, sess); } } @@ -206,7 +206,8 @@ static void *worker_thread(void *arg) { goto fast_path; } - plugin_manager_on_session_new(plug_mgr, sess); + struct stellar_exdata *per_sess_exdata_rt=session_exdata_runtime_new(plug_mgr); + session_set_user_data(sess, per_sess_exdata_rt); } else { @@ -215,10 +216,8 @@ static void *worker_thread(void *arg) goto fast_path; } } - plugin_manager_on_session_input(sess, pkt); fast_path: - plugin_manager_on_session_output(sess, pkt); if (pkt == defraged_pkt) { plugin_manager_on_packet_output(plug_mgr, defraged_pkt); diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 89f667b..3c972bd 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,8 +1,8 @@ -add_subdirectory(packet_inject) +#add_subdirectory(packet_inject) add_subdirectory(packet_tool) -add_subdirectory(debug_plugin) -add_subdirectory(lpi_plugin) -add_subdirectory(decoders/http) -add_subdirectory(decoders/socks) -add_subdirectory(decoders/stratum) -add_subdirectory(decoders/session_flags) \ No newline at end of file +#add_subdirectory(debug_plugin) +#add_subdirectory(lpi_plugin) +#add_subdirectory(decoders/http) +#add_subdirectory(decoders/socks) +#add_subdirectory(decoders/stratum) +#add_subdirectory(decoders/session_flags) \ No newline at end of file