update stellar thread main loop

This commit is contained in:
luwenpeng
2024-03-08 18:10:38 +08:00
parent 734f6a5135
commit ee35a26a9d
14 changed files with 406 additions and 340 deletions

View File

@@ -49,20 +49,27 @@ struct session_manager_options
struct session_manager;
struct session_manager *session_manager_new(struct session_manager_options *opts);
void session_manager_free(struct session_manager *mgr);
struct session *session_manager_lookup_session(struct session_manager *mgr, const struct packet *pkt);
// only use the packet six-tuple to find the session, not update it
struct session *session_manager_lookup_sesssion(struct session_manager *mgr, const struct packet *pkt);
/*
* Return NULL in the following cases:
* 1.not a TCP or UDP packet
* 2.TCP packet miss session but no syn packet seen
* 3.TCP duplicate packet
* 4.TCP discards packets
* 5.UDP evict packet
* pakcet will not update the session and needs to be fast forwarded
* return NULL following case:
* 1.Not TCP or UDP
* 2.UDP eviction packet
* 3.UDP overloading and config to bypass new session
* 4.TCP no SYN flag
* 5.UDP overloading and config to bypass new session
*/
struct session *session_manager_update_session(struct session_manager *mgr, const struct packet *pkt);
struct session *session_manager_new_session(struct session_manager *mgr, const struct packet *pkt);
void session_manager_free_session(struct session_manager *mgr, struct session *sess);
/*
* return NULL following case:
* 1.Not TCP or UDP
* 2.TCP duplicate packet
*/
int session_manager_update_session(struct session_manager *mgr, struct session *sess, const struct packet *pkt);
// return session need free by session_manager_free_session()
struct session *session_manager_get_expired_session(struct session_manager *mgr);
// return session need free by session_manager_free_session()
struct session *session_manager_get_evicted_session(struct session_manager *mgr);
// return 0: have already timeout session
// return >0: next expire interval