This is available in upstream Linux 2.6.36+.
Changes:
- remove support for Linux 2.6.17–2.6.35
- remove xt_TEE (this is available upstream since 2.6.35)
+- remove xt_CHECKSUM (this is available upstream since 2.6.36)
v1.47.1 (2010-10-15)
obj-${build_ACCOUNT} += ACCOUNT/
obj-${build_CHAOS} += xt_CHAOS.o
-obj-${build_CHECKSUM} += xt_CHECKSUM.o
obj-${build_DELUDE} += xt_DELUDE.o
obj-${build_DHCPMAC} += xt_DHCPMAC.o
obj-${build_DNETMAP} += xt_DNETMAP.o
obj-${build_ACCOUNT} += ACCOUNT/
obj-${build_CHAOS} += libxt_CHAOS.so
-obj-${build_CHECKSUM} += libxt_CHECKSUM.so
obj-${build_DELUDE} += libxt_DELUDE.so
obj-${build_DHCPMAC} += libxt_DHCPMAC.so libxt_dhcpmac.so
obj-${build_DNETMAP} += libxt_DNETMAP.so
+++ /dev/null
-/*
- * (C) 2002 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 by Red Hat, Inc
- * Author: Michael S. Tsirkin <mst@redhat.com>
- *
- * This program is distributed under the terms of GNU GPL v2, 1991
- */
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <getopt.h>
-
-#include <xtables.h>
-#include "xt_CHECKSUM.h"
-#include "compat_user.h"
-
-static void CHECKSUM_help(void)
-{
- printf(
-"CHECKSUM target options\n"
-" --checksum-fill Fill in packet checksum.\n");
-}
-
-static const struct option CHECKSUM_opts[] = {
- { "checksum-fill", 0, NULL, 'F' },
- { .name = NULL }
-};
-
-static int CHECKSUM_parse(int c, char **argv, int invert, unsigned int *flags,
- const void *entry, struct xt_entry_target **target)
-{
- struct xt_CHECKSUM_info *einfo
- = (struct xt_CHECKSUM_info *)(*target)->data;
-
- switch (c) {
- case 'F':
- xtables_param_act(XTF_ONLY_ONCE, "CHECKSUM", "--checksum-fill",
- *flags & XT_CHECKSUM_OP_FILL);
- einfo->operation = XT_CHECKSUM_OP_FILL;
- *flags |= XT_CHECKSUM_OP_FILL;
- break;
- default:
- return 0;
- }
-
- return 1;
-}
-
-static void CHECKSUM_check(unsigned int flags)
-{
- if (!flags)
- xtables_error(PARAMETER_PROBLEM,
- "CHECKSUM target: Parameter --checksum-fill is required");
-}
-
-static void CHECKSUM_print(const void *ip, const struct xt_entry_target *target,
- int numeric)
-{
- const struct xt_CHECKSUM_info *einfo =
- (const struct xt_CHECKSUM_info *)target->data;
-
- printf("CHECKSUM ");
-
- if (einfo->operation & XT_CHECKSUM_OP_FILL)
- printf(" fill ");
-}
-
-static void CHECKSUM_save(const void *ip, const struct xt_entry_target *target)
-{
- const struct xt_CHECKSUM_info *einfo =
- (const struct xt_CHECKSUM_info *)target->data;
-
- if (einfo->operation & XT_CHECKSUM_OP_FILL)
- printf(" --checksum-fill ");
-}
-
-static struct xtables_target checksum_tg_reg = {
- .name = "CHECKSUM",
- .version = XTABLES_VERSION,
- .family = NFPROTO_UNSPEC,
- .size = XT_ALIGN(sizeof(struct xt_CHECKSUM_info)),
- .userspacesize = XT_ALIGN(sizeof(struct xt_CHECKSUM_info)),
- .help = CHECKSUM_help,
- .parse = CHECKSUM_parse,
- .final_check = CHECKSUM_check,
- .print = CHECKSUM_print,
- .save = CHECKSUM_save,
- .extra_opts = CHECKSUM_opts,
-};
-
-static __attribute__((constructor)) void _init(void)
-{
- xtables_register_target(&checksum_tg_reg);
-}
+++ /dev/null
-This target allows to selectively work around broken/old applications.
-It can only be used in the mangle table.
-.TP
-\fB\-\-checksum\-fill\fP
-Compute and fill in the checksum in a packet that lacks a checksum.
-This is particularly useful, if you need to work around old applications
-such as dhcp clients, that do not work well with checksum offloads,
-but don't want to disable checksum offload in your device.
+++ /dev/null
-/*
- * (C) 2002 by Harald Welte <laforge@netfilter.org>
- * (C) 2010 Red Hat, Inc.
- *
- * Author: Michael S. Tsirkin <mst@redhat.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-#include <linux/module.h>
-#include <linux/skbuff.h>
-#include <linux/version.h>
-
-#include <linux/netfilter/x_tables.h>
-#include "xt_CHECKSUM.h"
-#include "compat_xtables.h"
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Michael S. Tsirkin <mst@redhat.com>");
-MODULE_DESCRIPTION("Xtables: checksum modification");
-MODULE_ALIAS("ipt_CHECKSUM");
-MODULE_ALIAS("ip6t_CHECKSUM");
-
-static unsigned int
-checksum_tg(struct sk_buff **pskb, const struct xt_action_param *par)
-{
- struct sk_buff *skb = *pskb;
-
- if (skb->ip_summed == CHECKSUM_PARTIAL)
- skb_checksum_help(skb);
-
- return XT_CONTINUE;
-}
-
-static int checksum_tg_check(const struct xt_tgchk_param *par)
-{
- const struct xt_CHECKSUM_info *einfo = par->targinfo;
-
- if (einfo->operation & ~XT_CHECKSUM_OP_FILL) {
- pr_info("unsupported CHECKSUM operation %x\n", einfo->operation);
- return -EINVAL;
- }
- if (!einfo->operation) {
- pr_info("no CHECKSUM operation enabled\n");
- return -EINVAL;
- }
- return 0;
-}
-
-static struct xt_target checksum_tg_reg __read_mostly = {
- .name = "CHECKSUM",
- .family = NFPROTO_UNSPEC,
- .target = checksum_tg,
- .targetsize = sizeof(struct xt_CHECKSUM_info),
- .table = "mangle",
- .checkentry = checksum_tg_check,
- .me = THIS_MODULE,
-};
-
-static int __init checksum_tg_init(void)
-{
- return xt_register_target(&checksum_tg_reg);
-}
-
-static void __exit checksum_tg_exit(void)
-{
- xt_unregister_target(&checksum_tg_reg);
-}
-
-module_init(checksum_tg_init);
-module_exit(checksum_tg_exit);
+++ /dev/null
-/* Header file for iptables ipt_CHECKSUM target
- *
- * (C) 2002 by Harald Welte <laforge@gnumonks.org>
- * (C) 2010 Red Hat Inc
- * Author: Michael S. Tsirkin <mst@redhat.com>
- *
- * This software is distributed under GNU GPL v2, 1991
-*/
-#ifndef _IPT_CHECKSUM_TARGET_H
-#define _IPT_CHECKSUM_TARGET_H
-
-#define XT_CHECKSUM_OP_FILL 0x01 /* fill in checksum in IP header */
-
-struct xt_CHECKSUM_info {
- __u8 operation; /* bitset of operations */
-};
-
-#endif /* _IPT_CHECKSUM_TARGET_H */
#
build_ACCOUNT=m
build_CHAOS=m
-build_CHECKSUM=
build_DELUDE=m
build_DHCPMAC=m
build_DNETMAP=m