2024-04-11 19:44:02 +08:00
|
|
|
#include <assert.h>
|
2024-04-11 16:30:21 +08:00
|
|
|
#include "plugin_manager.h"
|
2024-04-22 20:01:15 +08:00
|
|
|
#include "session_priv.h"
|
2024-04-25 16:48:50 +08:00
|
|
|
#include "stellar_priv.h"
|
2024-04-11 16:30:21 +08:00
|
|
|
|
|
|
|
|
struct plugin_manager
|
|
|
|
|
{
|
|
|
|
|
// TODO
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
void *plugin_manager_new_ctx(struct session *sess)
|
|
|
|
|
{
|
|
|
|
|
// TODO
|
2024-04-11 19:44:02 +08:00
|
|
|
return sess;
|
2024-04-11 16:30:21 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void plugin_manager_free_ctx(void *ctx)
|
|
|
|
|
{
|
|
|
|
|
// TODO
|
2024-04-17 17:53:42 +08:00
|
|
|
// struct session *sess = (struct session *)ctx;
|
|
|
|
|
// char buff[4096] = {0};
|
|
|
|
|
// session_to_json(sess, buff, sizeof(buff));
|
|
|
|
|
// PLUGIN_MANAGER_LOG_DEBUG("=> SESSION : %s", buff);
|
2024-04-11 16:30:21 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct plugin_manager *plugin_manager_new(void)
|
|
|
|
|
{
|
|
|
|
|
// TODO
|
2024-04-11 19:44:02 +08:00
|
|
|
static struct plugin_manager mgr;
|
|
|
|
|
return &mgr;
|
2024-04-11 16:30:21 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void plugin_manager_free(struct plugin_manager *mgr)
|
|
|
|
|
{
|
|
|
|
|
// TODO
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void plugin_manager_dispatch_session(struct plugin_manager *mgr, struct session *sess, struct packet *pkt)
|
|
|
|
|
{
|
|
|
|
|
// TODO
|
2024-04-11 19:44:02 +08:00
|
|
|
// current implementation only for testing
|
2024-04-11 16:30:21 +08:00
|
|
|
|
2024-04-11 19:44:02 +08:00
|
|
|
struct tcp_segment *seg;
|
|
|
|
|
enum session_state state = session_get_state(sess);
|
|
|
|
|
enum session_type type = session_get_type(sess);
|
2024-05-15 16:29:33 +08:00
|
|
|
PLUGIN_MANAGER_LOG_DEBUG("=> thread [%d] plugin dispatch session: %u %s %s %s", stellar_get_current_thread_index(), session_get_id(sess), session_get_tuple6_str(sess), session_type_to_str(type), session_state_to_str(state));
|
2024-04-11 19:44:02 +08:00
|
|
|
// session_print(sess);
|
2024-04-11 16:30:21 +08:00
|
|
|
|
2024-04-11 19:44:02 +08:00
|
|
|
if (packet_is_ctrl(pkt))
|
|
|
|
|
{
|
|
|
|
|
// trigger ctrl msg with (mgr, sess, pkt)
|
|
|
|
|
// dispatch_plugin()
|
2024-04-11 16:30:21 +08:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2024-04-11 19:44:02 +08:00
|
|
|
switch (type)
|
|
|
|
|
{
|
|
|
|
|
case SESSION_TYPE_TCP:
|
|
|
|
|
// trigger TCP msg with (mgr, sess, pkt)
|
|
|
|
|
// dispatch_plugin()
|
|
|
|
|
while ((seg = session_get_tcp_segment(sess)) != NULL)
|
|
|
|
|
{
|
|
|
|
|
// trigger TCP stream msg with (mgr, sess, seg->data, seg->len)
|
|
|
|
|
// dispatch_plugin()
|
|
|
|
|
session_free_tcp_segment(sess, seg);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case SESSION_TYPE_UDP:
|
|
|
|
|
// trigger UDP msg with (mgr, sess, pkt)
|
|
|
|
|
// dispatch_plugin()
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
assert(0);
|
|
|
|
|
break;
|
|
|
|
|
}
|
2024-04-11 16:30:21 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void plugin_manager_dispatch_packet(struct plugin_manager *mgr, struct packet *pkt)
|
|
|
|
|
{
|
|
|
|
|
// TODO
|
|
|
|
|
}
|