Add packet utils to packet.h
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
#include <assert.h>
|
||||
#include "plugin_manager.h"
|
||||
#include "session_private.h"
|
||||
|
||||
@@ -9,18 +10,23 @@ struct plugin_manager
|
||||
void *plugin_manager_new_ctx(struct session *sess)
|
||||
{
|
||||
// TODO
|
||||
return NULL;
|
||||
return sess;
|
||||
}
|
||||
|
||||
void plugin_manager_free_ctx(void *ctx)
|
||||
{
|
||||
// TODO
|
||||
struct session *sess = (struct session *)ctx;
|
||||
char buff[4096] = {0};
|
||||
session_to_json(sess, buff, sizeof(buff));
|
||||
PLUGIN_MANAGER_LOG_DEBUG("=> SESSION : %s", buff);
|
||||
}
|
||||
|
||||
struct plugin_manager *plugin_manager_new(void)
|
||||
{
|
||||
// TODO
|
||||
return NULL;
|
||||
static struct plugin_manager mgr;
|
||||
return &mgr;
|
||||
}
|
||||
|
||||
void plugin_manager_free(struct plugin_manager *mgr)
|
||||
@@ -31,30 +37,42 @@ void plugin_manager_free(struct plugin_manager *mgr)
|
||||
void plugin_manager_dispatch_session(struct plugin_manager *mgr, struct session *sess, struct packet *pkt)
|
||||
{
|
||||
// TODO
|
||||
// current implementation only for testing
|
||||
|
||||
PLUGIN_MANAGER_LOG_DEBUG("=> plugin dispatch session: %u %s\n", session_get_id(sess), session_get_tuple_str(sess));
|
||||
session_dump(sess);
|
||||
struct tcp_segment *seg;
|
||||
enum session_state state = session_get_state(sess);
|
||||
enum session_type type = session_get_type(sess);
|
||||
PLUGIN_MANAGER_LOG_DEBUG("=> plugin dispatch session: %u %s %s %s", session_get_id(sess), session_get_tuple_str(sess), session_type_to_str(type), session_state_to_str(state));
|
||||
|
||||
if (session_get_type(sess) == SESSION_TYPE_TCP)
|
||||
// session_print(sess);
|
||||
|
||||
if (packet_is_ctrl(pkt))
|
||||
{
|
||||
// TODO Trigger TCP ALL MSG with (mgr, sess, pkt)
|
||||
|
||||
do
|
||||
{
|
||||
struct tcp_segment *seg = session_get_tcp_segment(sess);
|
||||
if (seg == NULL)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// TODO Trigger TCP Stream MSG with (mgr, sess, seg->data, seg->len)
|
||||
|
||||
session_free_tcp_segment(sess, seg);
|
||||
} while (1);
|
||||
// trigger ctrl msg with (mgr, sess, pkt)
|
||||
// dispatch_plugin()
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO Trigger UDP MSG
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user