#pragma once #include "packet.h" #include "event.h" #include struct stellar_session; enum stellar_session_type { SESSION_TYPE_CUSTOM, SESSION_TYPE_IP, SESSION_TYPE_TCP, SESSION_TYPE_UDP, SESSION_TYPE_ICMP, SESSION_TYPE_PPTP, SESSION_TYPE_L2TP, SESSION_TYPE_SOCKS, SESSION_TYPE_GTPU, SESSION_TYPE_HTTP, SESSION_TYPE_MAIL, SESSION_TYPE_DNS, SESSION_TYPE_MAX, }; enum session_event_type { SESSION_EVENT_UNKNOWN = (0x00), SESSION_EVENT_OPENING = (0x01 << 1), SESSION_EVENT_RAWPKT = (0x01 << 2), SESSION_EVENT_ORDPKT = (0x01 << 3), SESSION_EVENT_META = (0x01 << 4), SESSION_EVENT_CLOSING = (0x01 << 5), SESSION_EVENT_ALL = (0x01 << 1 | 0x01 << 2 | 0x01 << 3 | 0x01 << 4 | 0x01 << 5), }; struct stellar_session_event_extras; typedef void(fn_session_event_callback)(const struct stellar_session *s, enum session_event_type event, struct stellar_packet *p, const char *payload, uint16_t len, void **pme); void session_manager_trigger_event(struct stellar_session *s, enum session_event_type type, struct stellar_session_event_extras *info); struct stellar_session *session_manager_session_derive(const struct stellar_session *this_session, const char *session_name);