#ifndef _KUSERHASH_H #define _KUSERHASH_H #include #include #include /*定义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