#ifndef _SESSION_TABLE_H
#define _SESSION_TABLE_H
#ifdef __cplusplus
extern "C"
{
#endif
#include "session_priv.h"
struct session_table;
struct session_table *session_table_new();
void session_table_free(struct session_table *table);
uint64_t session_table_get_count(struct session_table *table);
typedef void (*session_free_cb)(struct session *sess, void *arg);
void session_table_set_freecb(struct session_table *table, session_free_cb free_cb, void *arg);
// return 0: success
// return -1: failed
int session_table_add(struct session_table *table, const struct tuple6 *tuple, struct session *sess);
void session_table_del(struct session_table *table, const struct tuple6 *tuple);
struct session *session_table_find_tuple(struct session_table *table, const struct tuple6 *tuple);
struct session *session_table_find_lru(struct session_table *table);
}