secgateway/Product/modules/match_rule/k-userhash.h

50 lines
1.2 KiB
C

#ifndef _KUSERHASH_H
#define _KUSERHASH_H
#include <linux/list.h>
#include <linux/types.h>
#include <linux/timex.h>
/*定义hash表大小 */
#define HASH_SIZE 100
#define KUSERNAME_SIZE 63
typedef struct konline_user
{
__u32 kuser_ip; /*用户IP*/
char kuser_name[KUSERNAME_SIZE + 1]; /*用户名, 不允许重名*/
int kuser_id; /*用户ID,唯一标识用户*/
int kgroup_id; /* 用户组ID,唯一标识用户组*/
__u32 kmessage_num; /*下行报文数*/
__u64 kbyte_num; /*下行字节数*/
__kernel_time_t konline_time; /* 在线时间*/
}KONLINE_USER;
typedef struct k_userinfo
{
struct list_head hnode;
KONLINE_USER k_user;
}K_USERINFO;
/*init hashtable */
void init_hashMap(void);
/*获取hashtable位置索引 */
int get_hash_index(__u32 ip);
/* search node */
K_USERINFO *search_user(__u32 ip);
/*add user */
int add_user(__u32 ip, char name, int id, int gid, __u64 mes_num, __u64 bnum, __kernel_time_t time);
/*delete a node */
void del_user(__u32 ip);
/*delete all node */
void free_all_user(void);
/*printf all nodes */
void printk_all_user(void);
#endif