parent
68d5ba5429
commit
fa3a9930a7
29
tc/f_fw.c
29
tc/f_fw.c
|
|
@ -19,7 +19,7 @@
|
|||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <linux/if.h> /* IFNAMSIZ */
|
||||
#include "utils.h"
|
||||
#include "tc_util.h"
|
||||
|
||||
|
|
@ -70,6 +70,24 @@ static int fw_parse_opt(struct filter_util *qu, char *handle, int argc, char **a
|
|||
return -1;
|
||||
}
|
||||
continue;
|
||||
} else if (matches(*argv, "action") == 0) {
|
||||
NEXT_ARG();
|
||||
if (parse_action(&argc, &argv, TCA_FW_ACT, n)) {
|
||||
fprintf(stderr, "Illegal fw \"action\"\n");
|
||||
return -1;
|
||||
}
|
||||
continue;
|
||||
} else if (strcmp(*argv, "indev") == 0) {
|
||||
char d[IFNAMSIZ+1];
|
||||
memset(d, 0, sizeof (d));
|
||||
argc--;
|
||||
argv++;
|
||||
if (argc < 1) {
|
||||
fprintf(stderr, "Illegal indev\n");
|
||||
return -1;
|
||||
}
|
||||
strncpy(d, *argv, sizeof (d) - 1);
|
||||
addattr_l(n, MAX_MSG, TCA_FW_INDEV, d, strlen(d) + 1);
|
||||
} else if (strcmp(*argv, "help") == 0) {
|
||||
explain();
|
||||
return -1;
|
||||
|
|
@ -105,6 +123,15 @@ static int fw_print_opt(struct filter_util *qu, FILE *f, struct rtattr *opt, __u
|
|||
|
||||
if (tb[TCA_FW_POLICE])
|
||||
tc_print_police(f, tb[TCA_FW_POLICE]);
|
||||
if (tb[TCA_FW_INDEV]) {
|
||||
struct rtattr *idev = tb[TCA_FW_INDEV];
|
||||
fprintf(f, "input dev %s ",(char *)RTA_DATA(idev));
|
||||
}
|
||||
|
||||
if (tb[TCA_FW_ACT]) {
|
||||
fprintf(f, "\n");
|
||||
tc_print_action(f, tb[TCA_FW_ACT]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue