diff options
Diffstat (limited to 'dependence/include/stellar/stellar.h')
| -rw-r--r-- | dependence/include/stellar/stellar.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/dependence/include/stellar/stellar.h b/dependence/include/stellar/stellar.h new file mode 100644 index 0000000..e9322be --- /dev/null +++ b/dependence/include/stellar/stellar.h @@ -0,0 +1,48 @@ +#pragma once + +struct session; +struct stellar; + +int stellar_get_worker_thread_num(struct stellar *st); +int stellar_get_current_thread_id(struct stellar *st); + +//return plugin_env +typedef void *plugin_on_load_func(struct stellar *st); +typedef void plugin_on_unload_func(void *plugin_env); + +//return per_session_ctx +typedef void *session_ctx_new_func(struct session *sess, void *plugin_env); +typedef void session_ctx_free_func(struct session *sess, void *session_ctx, void *plugin_env); + +//intrinsic topic, publish packet as message +#define TOPIC_TCP "TCP" +#define TOPIC_TCP_STREAM "TCP_STREAM" +#define TOPIC_UDP "UDP" +#define TOPIC_EGRESS "EGRESS" +#define TOPIC_CONTROL_PACKET "CONTROL_PACKET" + +//return session plugin_id +int stellar_session_plugin_register(struct stellar *st, + session_ctx_new_func session_ctx_new, + session_ctx_free_func session_ctx_free, + void *plugin_env); + +void stellar_session_plugin_dettach_current_session(struct session *sess); + + + +struct packet; +typedef void plugin_on_packet_func(struct packet *pkt, unsigned char ip_protocol, void *plugin_env); + +//return packet plugin_id +int stellar_packet_plugin_register(struct stellar *st, unsigned char ip_protocol, plugin_on_packet_func on_packet, void *plugin_env); + + +//return polling work result, 0: no work, 1: work +typedef int plugin_on_polling_func(void *plugin_env); + +//return polling plugin_id +int stellar_polling_plugin_register(struct stellar *st, plugin_on_polling_func on_polling, void *plugin_env); + + +void stellar_emit_datapath_telemetry(struct packet *pkt, const char * module, const char *str);
\ No newline at end of file |
