⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fltlist.c

📁 一个很好用的linux 下的流量监控软件
💻 C
字号:
void init_filter_table(struct filterlist *fl){    fl->head = fl->tail = NULL;}/* * Loads the filter from the filter file */int loadfilter(char *filename, struct filterlist *fl, int resolve){    struct filterent *fe;    int pfd;    unsigned int idx = 0;    int br;    int resolv_err = 0;    char err_msg[80];    init_filter_table(fl);    pfd = open(filename, O_RDONLY);    if (pfd < 0) {        memset(err_msg, 0, 80);        snprintf(err_msg, 80, "Error opening IP filter data file");        write_error(err_msg, daemonized);        fl->head = NULL;        return 1;    }    do {        fe = malloc(sizeof(struct filterent));        br = read(pfd, &(fe->hp), sizeof(struct hostparams));        if (br > 0) {            fe->index = idx;            if (resolve) {                fe->saddr = nametoaddr(fe->hp.s_fqdn, &resolv_err);                fe->daddr = nametoaddr(fe->hp.d_fqdn, &resolv_err);                if (resolv_err) {                    free(fe);                    continue;                }                fe->smask = inet_addr(fe->hp.s_mask);                fe->dmask = inet_addr(fe->hp.d_mask);            }            if (fl->head == NULL) {                fl->head = fe;                fe->prev_entry = NULL;            } else {                fl->tail->next_entry = fe;                fe->prev_entry = fl->tail;            }            fe->next_entry = NULL;            fl->tail = fe;            idx++;        } else {            free(fe);        }    } while (br > 0);    if (br == 0)        close(pfd);    return 0;}void savefilter(char *filename, struct filterlist *fl){    struct filterent *fe = fl->head;    int pfd;    int bw;    int resp;    pfd = open(filename, O_CREAT | O_TRUNC | O_WRONLY, S_IRUSR | S_IWUSR);    while (fe != NULL) {        bw = write(pfd, &(fe->hp), sizeof(struct hostparams));        if (bw < 0) {            tx_errbox("Unable to save filter changes", ANYKEY_MSG, &resp);            clear_flt_tag();            return;        }        fe = fe->next_entry;    }    close(pfd);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -