X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=extensions%2Flibipt_SNAT.c;fp=extensions%2Flibipt_SNAT.c;h=867c9d010336fe59a3156dd7e80c9d3eeb442357;hb=782ed68bce7c9b3cc29eb4351ec13ede40a7ee49;hp=a893a47d1a5ddf221b0b3367383b9a26c08a8b2d;hpb=2e293f94e43325cb8cc719e27b43e647842c046d;p=iptables.git diff --git a/extensions/libipt_SNAT.c b/extensions/libipt_SNAT.c index a893a47..867c9d0 100644 --- a/extensions/libipt_SNAT.c +++ b/extensions/libipt_SNAT.c @@ -143,7 +143,8 @@ parse(int c, char **argv, int invert, unsigned int *flags, int portok; if (entry->ip.proto == IPPROTO_TCP - || entry->ip.proto == IPPROTO_UDP) + || entry->ip.proto == IPPROTO_UDP + || entry->ip.proto == IPPROTO_ICMP) portok = 1; else portok = 0; @@ -154,6 +155,13 @@ parse(int c, char **argv, int invert, unsigned int *flags, exit_error(PARAMETER_PROBLEM, "Unexpected `!' after --to-source"); + if (*flags) { + if (!kernel_version) + get_kernel_version(); + if (kernel_version > LINUX_VERSION(2, 6, 10)) + exit_error(PARAMETER_PROBLEM, + "Multiple --to-source not supported"); + } *target = parse_to(optarg, portok, info); *flags = 1; return 1;