| @ -1,80 +0,0 @@ | |||
| /* gcc -O2 -Wall -shared -o libipt_MEDIAPROXY.so libipt_MEDIAPROXY.c */ | |||
| #include <stdio.h> | |||
| #include <stdlib.h> | |||
| #include <getopt.h> | |||
| #include <sys/socket.h> | |||
| #include <netinet/in.h> | |||
| #include <arpa/inet.h> | |||
| #include <iptables.h> | |||
| #include <linux/netfilter_ipv4/ip_tables.h> | |||
| #include "../kernel-module/ipt_MEDIAPROXY.h" | |||
| static void help(void) { | |||
| printf( | |||
| "MEDIAPROXY target options:\n" | |||
| " --id <id>\n" | |||
| " Unique ID for this instance\n" | |||
| ); | |||
| } | |||
| static int parse(int c, | |||
| char **argv, | |||
| int invert, | |||
| unsigned int *flags, | |||
| const struct ipt_entry *entry, | |||
| struct ipt_entry_target **target) { | |||
| struct ipt_mediaproxy_info *info = (void *) (*target)->data; | |||
| if (c == '1') { | |||
| info->id = atoi(optarg); | |||
| if (flags) | |||
| *flags = 1; | |||
| } | |||
| else | |||
| return 0; | |||
| return 1; | |||
| } | |||
| static void final_check(unsigned int flags) { | |||
| if (!flags) | |||
| exit_error(PARAMETER_PROBLEM, "You must specify --id"); | |||
| } | |||
| static void print(const struct ipt_ip *ip, const struct ipt_entry_target *target, int numeric) { | |||
| struct ipt_mediaproxy_info *info = (void *) target->data; | |||
| printf("id %u", info->id); | |||
| } | |||
| static void save(const struct ipt_ip *ip, const struct ipt_entry_target *target) { | |||
| struct ipt_mediaproxy_info *info = (void *) target->data; | |||
| printf("--id %u", info->id); | |||
| } | |||
| static struct option opts[] = { | |||
| { "id", 1, NULL, '1' }, | |||
| { NULL, }, | |||
| }; | |||
| static struct iptables_target mediaproxy = { | |||
| .name = "MEDIAPROXY", | |||
| .version = "1.3.6", | |||
| .size = IPT_ALIGN(sizeof(struct ipt_mediaproxy_info)), | |||
| .userspacesize = IPT_ALIGN(sizeof(struct ipt_mediaproxy_info)), | |||
| .help = help, | |||
| .parse = parse, | |||
| .final_check = final_check, | |||
| .print = print, | |||
| .save = save, | |||
| .extra_opts = opts, | |||
| }; | |||
| void _init(void) { | |||
| register_target(&mediaproxy); | |||
| } | |||