diff options
| author | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-04-15 06:11:23 +0000 | 
|---|---|---|
| committer | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-04-15 06:11:23 +0000 | 
| commit | a58eaf210a223672f67c03d2070fa2fefdb2595b (patch) | |
| tree | afa05fc32fd52e099867c546d48d880948f8be5a /package/iptables/patches/1.3.8/005-imq1.patch | |
| parent | 3a26d2990b9a481e44f1ddd36dfc84536c2ab39f (diff) | |
update iptables to 1.4.0 (2.6 kernels only), refresh kernel patches
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@10843 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/iptables/patches/1.3.8/005-imq1.patch')
| -rw-r--r-- | package/iptables/patches/1.3.8/005-imq1.patch | 228 | 
1 files changed, 228 insertions, 0 deletions
| diff --git a/package/iptables/patches/1.3.8/005-imq1.patch b/package/iptables/patches/1.3.8/005-imq1.patch new file mode 100644 index 000000000..f17ddeafd --- /dev/null +++ b/package/iptables/patches/1.3.8/005-imq1.patch @@ -0,0 +1,228 @@ +Index: iptables-1.3.8/extensions/.IMQ-test6 +=================================================================== +--- /dev/null ++++ iptables-1.3.8/extensions/.IMQ-test6 +@@ -0,0 +1,3 @@ ++#!/bin/sh ++# True if IMQ target patch is applied. ++[ -f $KERNEL_DIR/net/ipv6/netfilter/ip6t_IMQ.c ] && echo IMQ +Index: iptables-1.3.8/extensions/libip6t_IMQ.c +=================================================================== +--- /dev/null ++++ iptables-1.3.8/extensions/libip6t_IMQ.c +@@ -0,0 +1,101 @@ ++/* 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 ++help(void) ++{ ++	printf( ++"IMQ target v%s options:\n" ++"  --todev <N>		enqueue to imq<N>, defaults to 0\n",  ++IPTABLES_VERSION); ++} ++ ++static struct option opts[] = { ++	{ "todev", 1, 0, '1' }, ++	{ 0 } ++}; ++ ++/* Initialize the target. */ ++static void ++init(struct ip6t_entry_target *t, unsigned int *nfcache) ++{ ++	struct ip6t_imq_info *mr = (struct ip6t_imq_info*)t->data; ++ ++	mr->todev = 0; ++	*nfcache |= NFC_UNKNOWN; ++} ++ ++/* Function which parses command options; returns true if it ++   ate an option */ ++static int ++parse(int c, char **argv, int invert, unsigned int *flags, ++      const struct ip6t_entry *entry, ++      struct ip6t_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; ++} ++ ++static void ++final_check(unsigned int flags) ++{ ++} ++ ++/* Prints out the targinfo. */ ++static void ++print(const struct ip6t_ip6 *ip, ++      const struct ip6t_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 ++save(const struct ip6t_ip6 *ip, const struct ip6t_entry_target *target) ++{ ++	struct ip6t_imq_info *mr = (struct ip6t_imq_info*)target->data; ++ ++	printf("--todev %u", mr->todev); ++} ++ ++static struct ip6tables_target imq = { ++	.next		= NULL, ++	.name		= "IMQ", ++	.version	= IPTABLES_VERSION, ++	.size		= IP6T_ALIGN(sizeof(struct ip6t_imq_info)), ++	.userspacesize	= IP6T_ALIGN(sizeof(struct ip6t_imq_info)), ++	.help		= &help, ++	.init		= &init, ++	.parse		= &parse, ++	.final_check	= &final_check, ++	.print		= &print, ++	.save		= &save, ++	.extra_opts	= opts ++}; ++ ++static __attribute__((constructor)) void _init(void) ++{ ++	register_target6(&imq); ++} +Index: iptables-1.3.8/extensions/.IMQ-test +=================================================================== +--- /dev/null ++++ iptables-1.3.8/extensions/.IMQ-test +@@ -0,0 +1,3 @@ ++#!/bin/sh ++# True if IMQ target patch is applied. ++[ -f $KERNEL_DIR/net/ipv4/netfilter/ipt_IMQ.c ] && echo IMQ +Index: iptables-1.3.8/extensions/libipt_IMQ.c +=================================================================== +--- /dev/null ++++ iptables-1.3.8/extensions/libipt_IMQ.c +@@ -0,0 +1,101 @@ ++/* 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 ++help(void) ++{ ++	printf( ++"IMQ target v%s options:\n" ++"  --todev <N>		enqueue to imq<N>, defaults to 0\n",  ++IPTABLES_VERSION); ++} ++ ++static struct option opts[] = { ++	{ "todev", 1, 0, '1' }, ++	{ 0 } ++}; ++ ++/* Initialize the target. */ ++static void ++init(struct ipt_entry_target *t, unsigned int *nfcache) ++{ ++	struct ipt_imq_info *mr = (struct ipt_imq_info*)t->data; ++ ++	mr->todev = 0; ++	*nfcache |= NFC_UNKNOWN; ++} ++ ++/* Function which parses command options; returns true if it ++   ate an option */ ++static int ++parse(int c, char **argv, int invert, unsigned int *flags, ++      const struct ipt_entry *entry, ++      struct ipt_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; ++} ++ ++static void ++final_check(unsigned int flags) ++{ ++} ++ ++/* Prints out the targinfo. */ ++static void ++print(const struct ipt_ip *ip, ++      const struct ipt_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 ++save(const struct ipt_ip *ip, const struct ipt_entry_target *target) ++{ ++	struct ipt_imq_info *mr = (struct ipt_imq_info*)target->data; ++ ++	printf("--todev %u", mr->todev); ++} ++ ++static struct iptables_target imq = { ++	.next		= NULL, ++	.name		= "IMQ", ++	.version	= IPTABLES_VERSION, ++	.size		= IPT_ALIGN(sizeof(struct ipt_imq_info)), ++	.userspacesize	= IPT_ALIGN(sizeof(struct ipt_imq_info)), ++	.help		= &help, ++	.init		= &init, ++	.parse		= &parse, ++	.final_check	= &final_check, ++	.print		= &print, ++	.save		= &save, ++	.extra_opts	= opts ++}; ++ ++static __attribute__((constructor)) void _init(void) ++{ ++	register_target(&imq); ++} | 
