diff options
Diffstat (limited to 'package/iptables/patches/1.4.3.2/005-imq1.patch')
| -rw-r--r-- | package/iptables/patches/1.4.3.2/005-imq1.patch | 198 | 
1 files changed, 198 insertions, 0 deletions
| diff --git a/package/iptables/patches/1.4.3.2/005-imq1.patch b/package/iptables/patches/1.4.3.2/005-imq1.patch new file mode 100644 index 000000000..3c96a3bc3 --- /dev/null +++ b/package/iptables/patches/1.4.3.2/005-imq1.patch @@ -0,0 +1,198 @@ +--- iptables-1.4.1-rc3.orig/extensions/.IMQ-test	1970-01-01 10:00:00.000000000 +1000 ++++ iptables-1.4.1-rc3/extensions/.IMQ-test	2008-06-08 22:41:49.000000000 +1000 +@@ -0,0 +1,3 @@ ++#!/bin/sh ++# True if IMQ target patch is applied. ++[ -f $KERNEL_DIR/include/linux/netfilter_ipv4/ipt_IMQ.h ] && echo IMQ +diff -pruN iptables-1.4.1-rc3.orig/extensions/.IMQ-test6 iptables-1.4.1-rc3/extensions/.IMQ-test6 +--- iptables-1.4.1-rc3.orig/extensions/.IMQ-test6	1970-01-01 10:00:00.000000000 +1000 ++++ iptables-1.4.1-rc3/extensions/.IMQ-test6	2008-06-08 22:41:49.000000000 +1000 +@@ -0,0 +1,3 @@ ++#!/bin/sh ++# True if IMQ target patch is applied. ++[ -f $KERNEL_DIR/include/linux/netfilter_ipv6/ip6t_IMQ.h ] && echo IMQ +diff -pruN iptables-1.4.1-rc3.orig/extensions/libip6t_IMQ.c iptables-1.4.1-rc3/extensions/libip6t_IMQ.c +--- iptables-1.4.1-rc3.orig/extensions/libip6t_IMQ.c	1970-01-01 10:00:00.000000000 +1000 ++++ iptables-1.4.1-rc3/extensions/libip6t_IMQ.c	2008-06-08 22:46:57.000000000 +1000 +@@ -0,0 +1,89 @@ ++/* Shared library add-on to iptables to add IMQ target support. */ ++#include <stdio.h> ++#include <string.h> ++#include <stdlib.h> ++#include <getopt.h> ++ ++#include <ip6tables.h> ++#include <linux/netfilter_ipv6/ip6_tables.h> ++#include <linux/netfilter_ipv6/ip6t_IMQ.h> ++ ++/* Function which prints out usage message. */ ++static void IMQ_help(void) ++{ ++	printf( ++"IMQ target v%s options:\n" ++"  --todev <N>		enqueue to imq<N>, defaults to 0\n",  ++XTABLES_VERSION); ++} ++ ++static struct option IMQ_opts[] = { ++	{ "todev", 1, 0, '1' }, ++	{ 0 } ++}; ++ ++/* Initialize the target. */ ++static void IMQ_init(struct xt_entry_target *t) ++{ ++	struct ip6t_imq_info *mr = (struct ip6t_imq_info*)t->data; ++ ++	mr->todev = 0; ++} ++ ++/* Function which parses command options; returns true if it ++   ate an option */ ++static int IMQ_parse(int c, char **argv, int invert, unsigned int *flags, ++      const void *entry, ++      struct xt_entry_target **target) ++{ ++	struct ip6t_imq_info *mr = (struct ip6t_imq_info*)(*target)->data; ++	 ++	switch(c) { ++	case '1': ++		if (check_inverse(optarg, &invert, NULL, 0)) ++			exit_error(PARAMETER_PROBLEM, ++				   "Unexpected `!' after --todev"); ++		mr->todev=atoi(optarg); ++		break; ++	default: ++		return 0; ++	} ++	return 1; ++} ++ ++/* Prints out the targinfo. */ ++static void IMQ_print(const void *ip, ++      const struct xt_entry_target *target, ++      int numeric) ++{ ++	struct ip6t_imq_info *mr = (struct ip6t_imq_info*)target->data; ++ ++	printf("IMQ: todev %u ", mr->todev); ++} ++ ++/* Saves the union ipt_targinfo in parsable form to stdout. */ ++static void IMQ_save(const void *ip, const struct xt_entry_target *target) ++{ ++	struct ip6t_imq_info *mr = (struct ip6t_imq_info*)target->data; ++ ++	printf("--todev %u", mr->todev); ++} ++ ++static struct xtables_target imq = { ++	.name		= "IMQ", ++	.version	= XTABLES_VERSION, ++	.family		= PF_INET6, ++	.size		= XT_ALIGN(sizeof(struct ip6t_imq_info)), ++	.userspacesize	= XT_ALIGN(sizeof(struct ip6t_imq_info)), ++	.help		= IMQ_help, ++	.init		= IMQ_init, ++	.parse		= IMQ_parse, ++	.print		= IMQ_print, ++	.save		= IMQ_save, ++	.extra_opts	= IMQ_opts, ++}; ++ ++void _init(void) ++{ ++	xtables_register_target(&imq); ++} +diff -pruN iptables-1.4.1-rc3.orig/extensions/libipt_IMQ.c iptables-1.4.1-rc3/extensions/libipt_IMQ.c +--- iptables-1.4.1-rc3.orig/extensions/libipt_IMQ.c	1970-01-01 10:00:00.000000000 +1000 ++++ iptables-1.4.1-rc3/extensions/libipt_IMQ.c	2008-06-08 22:46:25.000000000 +1000 +@@ -0,0 +1,88 @@ ++/* Shared library add-on to iptables to add IMQ target support. */ ++#include <stdio.h> ++#include <string.h> ++#include <stdlib.h> ++#include <getopt.h> ++ ++#include <iptables.h> ++#include <linux/netfilter_ipv4/ip_tables.h> ++#include <linux/netfilter_ipv4/ipt_IMQ.h> ++ ++/* Function which prints out usage message. */ ++static void IMQ_help(void) ++{ ++	printf( ++"IMQ target v%s options:\n" ++"  --todev <N>		enqueue to imq<N>, defaults to 0\n",  ++XTABLES_VERSION); ++} ++ ++static struct option IMQ_opts[] = { ++	{ "todev", 1, 0, '1' }, ++	{ 0 } ++}; ++ ++/* Initialize the target. */ ++static void IMQ_init(struct xt_entry_target *t) ++{ ++	struct ipt_imq_info *mr = (struct ipt_imq_info*)t->data; ++ ++	mr->todev = 0; ++} ++ ++/* Function which parses command options; returns true if it ++   ate an option */ ++static int IMQ_parse(int c, char **argv, int invert, unsigned int *flags, ++      const void *entry, struct xt_entry_target **target) ++{ ++	struct ipt_imq_info *mr = (struct ipt_imq_info*)(*target)->data; ++	 ++	switch(c) { ++	case '1': ++		if (check_inverse(optarg, &invert, NULL, 0)) ++			exit_error(PARAMETER_PROBLEM, ++				   "Unexpected `!' after --todev"); ++		mr->todev=atoi(optarg); ++		break; ++	default: ++		return 0; ++	} ++	return 1; ++} ++ ++/* Prints out the targinfo. */ ++static void IMQ_print(const void *ip, ++      const struct xt_entry_target *target, ++      int numeric) ++{ ++	struct ipt_imq_info *mr = (struct ipt_imq_info*)target->data; ++ ++	printf("IMQ: todev %u ", mr->todev); ++} ++ ++/* Saves the union ipt_targinfo in parsable form to stdout. */ ++static void IMQ_save(const void *ip, const struct xt_entry_target *target) ++{ ++	struct ipt_imq_info *mr = (struct ipt_imq_info*)target->data; ++ ++	printf("--todev %u", mr->todev); ++} ++ ++static struct xtables_target imq = { ++	.name		= "IMQ", ++	.version	= XTABLES_VERSION, ++	.family		= PF_INET, ++	.size		= XT_ALIGN(sizeof(struct ipt_imq_info)), ++	.userspacesize	= XT_ALIGN(sizeof(struct ipt_imq_info)), ++	.help		= IMQ_help, ++	.init		= IMQ_init, ++	.parse		= IMQ_parse, ++	.print		= IMQ_print, ++	.save		= IMQ_save, ++	.extra_opts	= IMQ_opts, ++}; ++ ++void _init(void) ++{ ++	xtables_register_target(&imq); ++} | 
