Re: Invalid arguments when using '-j TEE'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jan 12, 2012 at 3:30 AM, Jan Engelhardt <jengelh@xxxxxxxxxx> wrote:
>
>>I did more researches, and one thread in this list suggested I should
>>use iptables < 1.4.8 for kernel < 2.6.35, so I tried iptables 1.4.7,
>>but got the same result. Here is command-line output:
>>
>>$ iptables -t mangle -A PREROUTING -j TEE --gateway 192.9.200.29 -v
>>TEE  all opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0   TEE gw:192.9.200.29
>>iptables: Invalid argument. Run `dmesg' for more information.
>
> Here is the fix I have come up with. Upload to SF is currently
> out of order, so it is not yet in the git repository.
>
> parent aee5aedc63d0bc2d9a826c5e936b83295de20aa9 (v1.41)
> commit a6b06502cace4f921a6b4f56cce81f09446cc34b
> Author: Jan Engelhardt <jengelh@xxxxxxxxxx>
> Date:   Thu Jan 12 09:21:39 2012 +0100
>
> compat_xtables: fixed mistranslation of checkentry return values
> ---
>  doc/api/2.6.17.c            |    4 ++--
>  doc/api/2.6.19.c            |    4 ++--
>  doc/changelog.txt           |    3 +++
>  extensions/compat_xtables.c |    8 --------
>  4 files changed, 7 insertions(+), 12 deletions(-)
>
> diff --git a/doc/api/2.6.17.c b/doc/api/2.6.17.c
> index 3b56e47..08a431d 100644
> --- a/doc/api/2.6.17.c
> +++ b/doc/api/2.6.17.c
> @@ -13,7 +13,7 @@ match:
>                int *hotdrop,
>        );
>
> -       /* error code */
> +       /* true/false */
>        int
>        (*checkentry)(
>                const char *tablename,
> @@ -45,7 +45,7 @@ target:
>                void *userdata,
>        );
>
> -       /* error code */
> +       /* true/false */
>        int
>        (*checkentry)(
>                const char *tablename,
> diff --git a/doc/api/2.6.19.c b/doc/api/2.6.19.c
> index 9bc658f..5fd48da 100644
> --- a/doc/api/2.6.19.c
> +++ b/doc/api/2.6.19.c
> @@ -13,7 +13,7 @@ match:
>                int *hotdrop,
>        );
>
> -       /* error code */
> +       /* true/false */
>        int
>        (*checkentry)(
>                const char *tablename,
> @@ -42,7 +42,7 @@ target:
>                const void *targinfo,
>        );
>
> -       /* error code */
> +       /* true/false */
>        int
>        (*checkentry)(
>                const char *tablename,
> diff --git a/doc/changelog.txt b/doc/changelog.txt
> index 2ece6be..48d5436 100644
> --- a/doc/changelog.txt
> +++ b/doc/changelog.txt
> @@ -1,6 +1,9 @@
>
>  HEAD
>  ====
> +Fixes:
> +- compat_xtables: fixed mistranslation of checkentry return values
> +  (affected kernels < 2.6.23)
>
>
>  v1.41 (2012-01-04)
> diff --git a/extensions/compat_xtables.c b/extensions/compat_xtables.c
> index c5b67a4..26f6a00 100644
> --- a/extensions/compat_xtables.c
> +++ b/extensions/compat_xtables.c
> @@ -110,11 +110,7 @@ static bool xtnu_match_check(const char *table, const void *entry,
>                return false;
>        if (nm->checkentry == NULL)
>                return true;
> -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 23)
> -       return nm->checkentry(&local_par);
> -#else
>        return nm->checkentry(&local_par) == 0;
> -#endif
>  }
>  #endif
>  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28) && \
> @@ -322,11 +318,7 @@ static bool xtnu_target_check(const char *table, const void *entry,
>        if (nt->checkentry == NULL)
>                /* this is valid, just like if there was no function */
>                return true;
> -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 23)
> -       return nt->checkentry(&local_par);
> -#else
>        return nt->checkentry(&local_par) == 0;
> -#endif
>  }
>  #endif
>
> --
> # Created with git-export-patch

The fix is working! Thank you, Jan!
--
To unsubscribe from this list: send the line "unsubscribe netfilter" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux