59 lines
1.7 KiB
C
59 lines
1.7 KiB
C
#ifndef CACHE_H
|
|
#define CACHE_H
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <errno.h>
|
|
#include <time.h>
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <pcap.h>
|
|
#include <netinet/in.h>
|
|
#include <arpa/inet.h>
|
|
#include <netinet/ip.h> // IP header
|
|
#include <netinet/tcp.h> // TCP header
|
|
#include <sys/types.h>
|
|
#include <ctype.h>
|
|
|
|
#include <sys/types.h>
|
|
#include <sys/ipc.h>
|
|
#include <sys/shm.h>
|
|
#include <unistd.h>
|
|
#include <getopt.h>
|
|
#include <string.h>
|
|
|
|
#define MAXIPSET_ 10240
|
|
#define MAXIPLEN 32
|
|
|
|
#define CACHE_TTL 180 // 设定缓存的存活时间为 600 秒 (10 分钟)
|
|
#define MAX_CACHE_SIZE 100 // 缓存最多存储 100 个 IP 地址
|
|
extern int cache_size; // 当前缓存中的 IP 数量
|
|
|
|
// 定义链表结构,用于缓存 IP 地址
|
|
struct ip_cache_node {
|
|
char ip[INET_ADDRSTRLEN]; // 存储 IP 地址
|
|
time_t timestamp; // 记录缓存时间
|
|
struct ip_cache_node *next; // 指向下一个节点
|
|
};
|
|
|
|
extern void add_ip_to_cache(const char *ip);
|
|
extern int is_ip_in_cache(const char *ip);
|
|
extern void free_ip_cache();
|
|
|
|
extern char cn_ip[MAXIPSET_][MAXIPLEN];
|
|
extern int add_cn_ip(char cn_ip[MAXIPSET_][MAXIPLEN], char *ip);
|
|
extern int is_ip_in_set(char cn_ip[MAXIPSET_][MAXIPLEN], const char *ip);
|
|
extern int cn_ip_len(char cn_ip[MAXIPSET_][MAXIPLEN]);
|
|
extern void clear_ip_set(char cn_ip[MAXIPSET_][MAXIPLEN]);
|
|
extern int is_ip_in_cache(const char *ip);
|
|
|
|
extern int append_string_to_file(const char *filepath, const char *str);
|
|
extern int read_file_to_array(const char *filepath, char cn_ip[MAXIPSET_][MAXIPLEN], int *line_count);
|
|
|
|
extern int file_exists_access(const char *filepath);
|
|
|
|
#endif
|