#include "ipset.h" #include #include #include #define CMD_MAX_SIZE 1024 #ifdef IPSET_DEBUG #define DPRINTF(s) printf("%s\n", s) #else #define DPRINTF(s) #endif void ipset_init() { char cmd[CMD_MAX_SIZE]; snprintf(cmd, CMD_MAX_SIZE, IPSET_CMD " add " IPSET_BLACKLIST_NAME " hash:ip --timeout " IPSET_BLACKLIST_TIMEOUT); DPRINTF(cmd); system(cmd); snprintf(cmd, CMD_MAX_SIZE, IPSET_CMD " add " IPSET_WHITELIST_NAME " hash:ip"); DPRINTF(cmd); system(cmd); } void ipset_destroy() { char cmd[CMD_MAX_SIZE]; snprintf(cmd, CMD_MAX_SIZE, IPSET_CMD " destroy " IPSET_BLACKLIST_NAME); DPRINTF(cmd); system(cmd); snprintf(cmd, CMD_MAX_SIZE, IPSET_CMD " destroy " IPSET_WHITELIST_NAME); DPRINTF(cmd); system(cmd); } /* void ipset_blacklist_load(char *filename) { */ /* char cmd[CMD_MAX_SIZE]; */ /* snprintf(cmd, CMD_MAX_SIZE, IPSET_CMD " -R < %s", filename); */ /* DPRINTF(cmd); */ /* system(cmd); */ /* } */ /* void ipset_blacklist_save(char *filename) { */ /* char cmd[CMD_MAX_SIZE]; */ /* snprintf(cmd, CMD_MAX_SIZE, IPSET_CMD " -S " IPSET_BLACKLIST_NAME " > %s", filename); */ /* DPRINTF(cmd); */ /* system(cmd); */ /* } */ /* void ipset_whitelist_load(char *filename) { */ /* char cmd[CMD_MAX_SIZE]; */ /* snprintf(cmd, CMD_MAX_SIZE, IPSET_CMD " -R < %s", filename); */ /* DPRINTF(cmd); */ /* system(cmd); */ /* } */ /* void ipset_whitelist_save(char *filename) { */ /* char cmd[CMD_MAX_SIZE]; */ /* snprintf(cmd, CMD_MAX_SIZE, IPSET_CMD " -S " IPSET_WHITELIST_NAME " > %s", filename); */ /* DPRINTF(cmd); */ /* system(cmd); */ /* } */ void ipset_blacklist_add(u_int32_t addr) { char cmd[CMD_MAX_SIZE]; snprintf(cmd, CMD_MAX_SIZE, IPSET_CMD " add " IPSET_BLACKLIST_NAME " %u", ntohl(addr)); DPRINTF(cmd); system(cmd); } void ipset_blacklist_remove(u_int32_t addr) { char cmd[CMD_MAX_SIZE]; snprintf(cmd, CMD_MAX_SIZE, IPSET_CMD " del " IPSET_BLACKLIST_NAME " %u", ntohl(addr)); DPRINTF(cmd); system(cmd); } void ipset_whitelist_add(u_int32_t addr) { char cmd[CMD_MAX_SIZE]; snprintf(cmd, CMD_MAX_SIZE, IPSET_CMD " add " IPSET_WHITELIST_NAME " %u", ntohl(addr)); DPRINTF(cmd); system(cmd); } void ipset_whitelist_remove(u_int32_t addr) { char cmd[CMD_MAX_SIZE]; snprintf(cmd, CMD_MAX_SIZE, IPSET_CMD " del " IPSET_WHITELIST_NAME " %u", ntohl(addr)); DPRINTF(cmd); system(cmd); }