[backfire] cleanup: remove refs to unsupported "iop32x" target
[openwrt-10.03/.git] / package / iptables / patches / 005-imq.patch
1 --- /dev/null
2 +++ b/extensions/.IMQ-testx
3 @@ -0,0 +1,3 @@
4 +#!/bin/sh
5 +# True if IMQ target patch is applied.
6 +[ -f $KERNEL_DIR/include/linux/netfilter/xt_IMQ.h ] && echo IMQ
7 --- /dev/null
8 +++ b/extensions/libxt_IMQ.c
9 @@ -0,0 +1,103 @@
10 +/* Shared library add-on to iptables to add IMQ target support. */
11 +#include <stdio.h>
12 +#include <string.h>
13 +#include <stdlib.h>
14 +#include <getopt.h>
15 +
16 +#include <xtables.h>
17 +#include <linux/netfilter/x_tables.h>
18 +#include <linux/netfilter/xt_IMQ.h>
19 +
20 +/* Function which prints out usage message. */
21 +static void IMQ_help(void)
22 +{
23 +       printf(
24 +"IMQ target v%s options:\n"
25 +"  --todev <N>         enqueue to imq<N>, defaults to 0\n",
26 +XTABLES_VERSION);
27 +}
28 +
29 +static struct option IMQ_opts[] = {
30 +       { "todev", 1, 0, '1' },
31 +       { 0 }
32 +};
33 +
34 +/* Initialize the target. */
35 +static void IMQ_init(struct xt_entry_target *t)
36 +{
37 +       struct xt_imq_info *mr = (struct xt_imq_info*)t->data;
38 +
39 +       mr->todev = 0;
40 +}
41 +
42 +/* Function which parses command options; returns true if it
43 +   ate an option */
44 +static int IMQ_parse(int c, char **argv, int invert, unsigned int *flags,
45 +      const void *entry, struct xt_entry_target **target)
46 +{
47 +       struct xt_imq_info *mr = (struct xt_imq_info*)(*target)->data;
48 +
49 +       switch(c) {
50 +       case '1':
51 +               if (xtables_check_inverse(optarg, &invert, NULL, 0, argv))
52 +                       xtables_error(PARAMETER_PROBLEM,
53 +                                  "Unexpected `!' after --todev");
54 +               mr->todev=atoi(optarg);
55 +               break;
56 +       default:
57 +               return 0;
58 +       }
59 +       return 1;
60 +}
61 +
62 +/* Prints out the targinfo. */
63 +static void IMQ_print(const void *ip,
64 +      const struct xt_entry_target *target,
65 +      int numeric)
66 +{
67 +       struct xt_imq_info *mr = (struct xt_imq_info*)target->data;
68 +
69 +       printf("IMQ: todev %u ", mr->todev);
70 +}
71 +
72 +/* Saves the union ipt_targinfo in parsable form to stdout. */
73 +static void IMQ_save(const void *ip, const struct xt_entry_target *target)
74 +{
75 +       struct xt_imq_info *mr = (struct xt_imq_info*)target->data;
76 +
77 +       printf("--todev %u", mr->todev);
78 +}
79 +
80 +static struct xtables_target imq_target = {
81 +       .name           = "IMQ",
82 +       .version        = XTABLES_VERSION,
83 +       .family         = NFPROTO_IPV4,
84 +       .size           = XT_ALIGN(sizeof(struct xt_imq_info)),
85 +       .userspacesize  = XT_ALIGN(sizeof(struct xt_imq_info)),
86 +       .help           = IMQ_help,
87 +       .init           = IMQ_init,
88 +       .parse          = IMQ_parse,
89 +       .print          = IMQ_print,
90 +       .save           = IMQ_save,
91 +       .extra_opts     = IMQ_opts,
92 +};
93 +
94 +static struct xtables_target imq_target6 = {
95 +       .name           = "IMQ",
96 +       .version        = XTABLES_VERSION,
97 +       .family         = NFPROTO_IPV6,
98 +       .size           = XT_ALIGN(sizeof(struct xt_imq_info)),
99 +       .userspacesize  = XT_ALIGN(sizeof(struct xt_imq_info)),
100 +       .help           = IMQ_help,
101 +       .init           = IMQ_init,
102 +       .parse          = IMQ_parse,
103 +       .print          = IMQ_print,
104 +       .save           = IMQ_save,
105 +       .extra_opts     = IMQ_opts,
106 +};
107 +
108 +void _init(void)
109 +{
110 +       xtables_register_target(&imq_target);
111 +       xtables_register_target(&imq_target6);
112 +}
113 --- /dev/null
114 +++ b/include/linux/netfilter/xt_IMQ.h
115 @@ -0,0 +1,9 @@
116 +#ifndef _XT_IMQ_H
117 +#define _XT_IMQ_H
118 +
119 +struct xt_imq_info {
120 +       unsigned int todev;     /* target imq device */
121 +};
122 +
123 +#endif /* _XT_IMQ_H */
124 +