New routers supported
[tomato.git] / release / src / router / ipset / libipt_set.h
blob771a0fe99d85e9e9be006465ea4d2bdbcf866e07
1 #ifndef _LIBIPT_SET_H
2 #define _LIBIPT_SET_H
4 #include <sys/types.h>
5 #include <sys/socket.h>
6 #include <errno.h>
8 static int get_set_getsockopt(void *data, size_t * size)
10 int sockfd = -1;
11 sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
12 if (sockfd < 0)
13 exit_error(OTHER_PROBLEM,
14 "Can't open socket to ipset.\n");
15 /* Send! */
16 return getsockopt(sockfd, SOL_IP, SO_IP_SET, data, size);
19 static void
20 parse_bindings(const char *optarg, struct ipt_set_info *info)
22 char *saved = strdup(optarg);
23 char *ptr, *tmp = saved;
24 int i = 0;
26 while (i < IP_SET_MAX_BINDINGS && tmp != NULL) {
27 ptr = strsep(&tmp, ",");
28 if (strncmp(ptr, "src", 3) == 0)
29 info->flags[i++] |= IPSET_SRC;
30 else if (strncmp(ptr, "dst", 3) == 0)
31 info->flags[i++] |= IPSET_DST;
32 else
33 exit_error(PARAMETER_PROBLEM,
34 "You must spefify (the comma separated list of) 'src' or 'dst'.");
37 if (tmp)
38 exit_error(PARAMETER_PROBLEM,
39 "Can't follow bindings deeper than %d.",
40 IP_SET_MAX_BINDINGS);
42 free(saved);
45 #endif /*_LIBIPT_SET_H*/