/* gcc -O2 -Wall -shared -o libipt_MEDIAPROXY.so libipt_MEDIAPROXY.c */ #include #include #include #include #include #include #include #include #include "../kernel-module/ipt_MEDIAPROXY.h" static void help(void) { printf( "MEDIAPROXY target options:\n" " --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); }