blob: 07142450aebe3d7f26138318ebb5958f92f0f7e1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#ifndef _SESSION_H
#define _SESSION_H
#ifdef __cpluscplus
extern "C"
{
#endif
#include <stdint.h>
#define SESSION_DIR_C2S 0x01
#define SESSION_DIR_S2C 0x02
#define EX_DATA_MAX_NUM 1024
typedef void free_callback(void *ex_data, void *cb_arg);
struct session_ex_data
{
void *ex_data;
void *cb_arg;
free_callback *free_cb;
};
struct stellar_session
{
struct stellar_session *father;
struct session_ex_data ex_data[EX_DATA_MAX_NUM];
const char *session_name;
uint8_t current_packet_dir; // SESSION_DIR_C2S or SESSION_DIR_S2C
const char *l7_payload;
size_t l7_payload_length;
};
struct session_event
{
struct stellar_session *session;
const char *event_name;
size_t event_id;
struct session_event *next;
};
void session_event_push(struct session_event *event);
struct session_event *session_event_pop();
struct stellar_session *session_derive(struct stellar_session *session, const char *session_name);
void session_trigger(struct stellar_session *session, const char *event_name);
size_t session_register_ex_data_index(const char *key);
void session_set_ex_data(struct stellar_session *session, int idx, void *ex_data, free_callback *free_cb, void *cb_arg);
void *session_get_ex_data(struct stellar_session *session, int idx);
void session_del_ex_data(struct stellar_session *session, int idx);
void session_free_ex_data(struct stellar_session *session);
const char *session_get_l4_payload(struct stellar_session *session);
size_t session_get_l4_payload_length(struct stellar_session *session);
uint8_t session_get_l4_dir(struct stellar_session *session);
void pm_session_dettach_me(struct stellar_session *session);
#ifdef __cpluscplus
}
#endif
#endif
|