mirror of
git://git.code.sf.net/p/xtables-addons/xtables-addons
synced 2025-09-07 05:05:12 +02:00
xt_CHECKSUM: remove the module
This is available in upstream Linux 2.6.36+.
This commit is contained in:
@@ -4,6 +4,7 @@ HEAD
|
||||
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)
|
||||
|
@@ -7,7 +7,6 @@ obj-m += compat_xtables.o
|
||||
|
||||
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
|
||||
|
@@ -2,7 +2,6 @@
|
||||
|
||||
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
|
||||
|
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* (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);
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
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.
|
@@ -1,73 +0,0 @@
|
||||
/*
|
||||
* (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);
|
@@ -1,18 +0,0 @@
|
||||
/* 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 */
|
Reference in New Issue
Block a user