* [PATCH] Resend: Add inversion to multiport match
@ 2005-01-22 17:41 Phil Oester
2005-01-22 19:25 ` Martin Josefsson
0 siblings, 1 reply; 3+ messages in thread
From: Phil Oester @ 2005-01-22 17:41 UTC (permalink / raw)
To: netfilter-devel
[-- Attachment #1: Type: text/plain, Size: 179 bytes --]
2.6.11 is theoretically around the corner, and I'd
like to get inversion added to multiport rev1. Could
I get an ack/nack/i'm an idiot regarding the patch below?
Thanks,
Phil
[-- Attachment #2: patch-mport-ipt --]
[-- Type: text/plain, Size: 1738 bytes --]
diff -ru iptables-orig/extensions/libipt_multiport.c iptables-new/extensions/libipt_multiport.c
--- iptables-orig/extensions/libipt_multiport.c 2005-01-03 04:51:58.000000000 -0500
+++ iptables-new/extensions/libipt_multiport.c 2005-01-07 20:08:07.000000000 -0500
@@ -31,13 +31,13 @@
{
printf(
"multiport v%s options:\n"
-" --source-ports port[,port:port,port...]\n"
+" --source-ports [!] port[,port:port,port...]\n"
" --sports ...\n"
" match source port(s)\n"
-" --destination-ports port[,port:port,port...]\n"
+" --destination-ports [!] port[,port:port,port...]\n"
" --dports ...\n"
" match destination port(s)\n"
-" --ports port[,port:port,port]\n"
+" --ports [!] port[,port:port,port]\n"
" match both source and destination port(s)\n",
IPTABLES_VERSION);
}
@@ -255,8 +255,7 @@
}
if (invert)
- exit_error(PARAMETER_PROBLEM,
- "multiport does not support invert");
+ multiinfo->invert = 1;
if (*flags)
exit_error(PARAMETER_PROBLEM,
@@ -362,6 +361,9 @@
break;
}
+ if (multiinfo->invert)
+ printf("! ");
+
for (i=0; i < multiinfo->count; i++) {
printf("%s", i ? "," : "");
print_port(multiinfo->ports[i], ip->proto, numeric);
diff -ru iptables-orig/include/linux/netfilter_ipv4/ipt_multiport.h iptables-new/include/linux/netfilter_ipv4/ipt_multiport.h
--- iptables-orig/include/linux/netfilter_ipv4/ipt_multiport.h 2005-01-03 04:37:07.000000000 -0500
+++ iptables-new/include/linux/netfilter_ipv4/ipt_multiport.h 2005-01-06 20:37:38.000000000 -0500
@@ -24,5 +24,6 @@
u_int8_t count; /* Number of ports */
u_int16_t ports[IPT_MULTI_PORTS]; /* Ports */
u_int8_t pflags[IPT_MULTI_PORTS]; /* Port flags */
+ u_int8_t invert; /* Invert flag */
};
#endif /*_IPT_MULTIPORT_H*/
[-- Attachment #3: patch-mport-kern --]
[-- Type: text/plain, Size: 1774 bytes --]
diff -ru linux-orig/include/linux/netfilter_ipv4/ipt_multiport.h linux-mport/include/linux/netfilter_ipv4/ipt_multiport.h
--- linux-orig/include/linux/netfilter_ipv4/ipt_multiport.h 2005-01-07 20:51:06.293435976 -0500
+++ linux-mport/include/linux/netfilter_ipv4/ipt_multiport.h 2005-01-06 19:55:28.000000000 -0500
@@ -25,5 +25,6 @@
u_int8_t count; /* Number of ports */
u_int16_t ports[IPT_MULTI_PORTS]; /* Ports */
u_int8_t pflags[IPT_MULTI_PORTS]; /* Port flags */
+ u_int8_t invert; /* Invert flag */
};
#endif /*_IPT_MULTIPORT_H*/
diff -ru linux-orig/net/ipv4/netfilter/ipt_multiport.c linux-mport/net/ipv4/netfilter/ipt_multiport.c
--- linux-orig/net/ipv4/netfilter/ipt_multiport.c 2005-01-07 20:51:06.404419104 -0500
+++ linux-mport/net/ipv4/netfilter/ipt_multiport.c 2005-01-07 20:53:23.468582184 -0500
@@ -64,30 +64,31 @@
if (minfo->flags == IPT_MULTIPORT_SOURCE
&& src >= s && src <= e)
- return 1;
+ return 1 ^ minfo->invert;
if (minfo->flags == IPT_MULTIPORT_DESTINATION
&& dst >= s && dst <= e)
- return 1;
+ return 1 ^ minfo->invert;
if (minfo->flags == IPT_MULTIPORT_EITHER
&& ((dst >= s && dst <= e)
|| (src >= s && src <= e)))
- return 1;
+ return 1 ^ minfo->invert;
} else {
/* exact port matching */
duprintf("src or dst matches with %d?\n", s);
+
if (minfo->flags == IPT_MULTIPORT_SOURCE
&& src == s)
- return 1;
+ return 1 ^ minfo->invert;
if (minfo->flags == IPT_MULTIPORT_DESTINATION
&& dst == s)
- return 1;
+ return 1 ^ minfo->invert;
if (minfo->flags == IPT_MULTIPORT_EITHER
&& (src == s || dst == s))
- return 1;
+ return 1 ^ minfo->invert;
}
}
- return 0;
+ return minfo->invert;
}
static int
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] Resend: Add inversion to multiport match
2005-01-22 17:41 [PATCH] Resend: Add inversion to multiport match Phil Oester
@ 2005-01-22 19:25 ` Martin Josefsson
2005-01-22 20:45 ` Phil Oester
0 siblings, 1 reply; 3+ messages in thread
From: Martin Josefsson @ 2005-01-22 19:25 UTC (permalink / raw)
To: Phil Oester; +Cc: Netfilter-devel, Patrick McHardy
[-- Attachment #1: Type: text/plain, Size: 561 bytes --]
On Sat, 2005-01-22 at 09:41 -0800, Phil Oester wrote:
> 2.6.11 is theoretically around the corner, and I'd
> like to get inversion added to multiport rev1. Could
> I get an ack/nack/i'm an idiot regarding the patch below?
Patrick, could you add the kernelpart to your tree together with the
other changes that need to go into 2.6.11 ?
Phil, the userspace part only adds inverted printout to print_v1() not
to save_v1()
Either send an updated patch or I'll fix that up when applying it after
Patrick has submitted the kernel part.
--
/Martin
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Resend: Add inversion to multiport match
2005-01-22 19:25 ` Martin Josefsson
@ 2005-01-22 20:45 ` Phil Oester
0 siblings, 0 replies; 3+ messages in thread
From: Phil Oester @ 2005-01-22 20:45 UTC (permalink / raw)
To: Martin Josefsson; +Cc: Netfilter-devel, Patrick McHardy
[-- Attachment #1: Type: text/plain, Size: 340 bytes --]
On Sat, Jan 22, 2005 at 08:25:39PM +0100, Martin Josefsson wrote:
> Phil, the userspace part only adds inverted printout to print_v1() not
> to save_v1()
> Either send an updated patch or I'll fix that up when applying it after
> Patrick has submitted the kernel part.
Indeed -- appologies. Attached is corrected userspace patch.
Phil
[-- Attachment #2: patch-mport-ipt2 --]
[-- Type: text/plain, Size: 1940 bytes --]
diff -ru iptables-orig/extensions/libipt_multiport.c iptables-new/extensions/libipt_multiport.c
--- iptables-orig/extensions/libipt_multiport.c 2005-01-03 04:51:58.000000000 -0500
+++ iptables-new/extensions/libipt_multiport.c 2005-01-22 15:33:44.637388800 -0500
@@ -31,13 +31,13 @@
{
printf(
"multiport v%s options:\n"
-" --source-ports port[,port:port,port...]\n"
+" --source-ports [!] port[,port:port,port...]\n"
" --sports ...\n"
" match source port(s)\n"
-" --destination-ports port[,port:port,port...]\n"
+" --destination-ports [!] port[,port:port,port...]\n"
" --dports ...\n"
" match destination port(s)\n"
-" --ports port[,port:port,port]\n"
+" --ports [!] port[,port:port,port]\n"
" match both source and destination port(s)\n",
IPTABLES_VERSION);
}
@@ -255,8 +255,7 @@
}
if (invert)
- exit_error(PARAMETER_PROBLEM,
- "multiport does not support invert");
+ multiinfo->invert = 1;
if (*flags)
exit_error(PARAMETER_PROBLEM,
@@ -362,6 +361,9 @@
break;
}
+ if (multiinfo->invert)
+ printf("! ");
+
for (i=0; i < multiinfo->count; i++) {
printf("%s", i ? "," : "");
print_port(multiinfo->ports[i], ip->proto, numeric);
@@ -422,6 +424,9 @@
break;
}
+ if (multiinfo->invert)
+ printf("! ");
+
for (i=0; i < multiinfo->count; i++) {
printf("%s", i ? "," : "");
print_port(multiinfo->ports[i], ip->proto, 1);
diff -ru iptables-orig/include/linux/netfilter_ipv4/ipt_multiport.h iptables-new/include/linux/netfilter_ipv4/ipt_multiport.h
--- iptables-orig/include/linux/netfilter_ipv4/ipt_multiport.h 2005-01-03 04:37:07.000000000 -0500
+++ iptables-new/include/linux/netfilter_ipv4/ipt_multiport.h 2005-01-22 15:30:21.372289792 -0500
@@ -24,5 +24,6 @@
u_int8_t count; /* Number of ports */
u_int16_t ports[IPT_MULTI_PORTS]; /* Ports */
u_int8_t pflags[IPT_MULTI_PORTS]; /* Port flags */
+ u_int8_t invert; /* Invert flag */
};
#endif /*_IPT_MULTIPORT_H*/
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2005-01-22 20:45 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-22 17:41 [PATCH] Resend: Add inversion to multiport match Phil Oester
2005-01-22 19:25 ` Martin Josefsson
2005-01-22 20:45 ` Phil Oester
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.