#ifndef _CONTROL_PACKET_H #define _CONTROL_PACKET_H #ifdef __cpluscplus extern "C" { #endif #include enum session_state { SESSION_STATE_OPENING = 1, SESSION_STATE_CLOSING = 2, SESSION_STATE_ACTIVE = 3, SESSION_STATE_RESETALL = 4, }; enum control_packet_state { CTRL_PKT_SUCCESS = 0, CTRL_PKT_INVALID_FORMAT, CTRL_PKT_INVALID_TSYNC, CTRL_PKT_INVALID_SESSION_ID, CTRL_PKT_INVALID_STATE, CTRL_PKT_INVALID_METHOD, CTRL_PKT_INVALID_POLICY_UPDATE, CTRL_PKT_INVALID_PARAMS, CTRL_PKT_INVALID_APP, CTRL_PKT_INVALID_RULE_IDS, }; struct control_packet { char tsync[4]; uint64_t session_id; enum session_state state; char method[32]; uint64_t rule_ids[32]; int rule_id_num; }; const char *session_state_to_string(enum session_state state); const char *control_packte_state_to_string(enum control_packet_state state); enum control_packet_state control_packet_parse(struct control_packet *handler, const char *data, size_t length); void control_packet_dump(struct control_packet *handler); #ifdef __cpluscplus } #endif #endif