All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch] iptables version defines
@ 2008-06-02 13:49 Thomas Jarosch
  2008-06-02 14:54 ` Jan Engelhardt
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Jarosch @ 2008-06-02 13:49 UTC (permalink / raw)
  To: Patrick McHardy; +Cc: netfilter-devel, Jan Engelhardt

[-- Attachment #1: Type: text/plain, Size: 1126 bytes --]

Hi Patrick,

[resent as I somehow sent an HTML email at first]

> >>>> #ifdef _XTABLES_H
> >>>> init(struct xt_entry_target *t)
> >>>> #else
> >>>> init(struct ipt_entry_target *t, unsigned int *nfcache)
> >>>> #endif
> >
> > Woah this is ridiculously ugly. (Remember, such constructs were
> > just eliminated from the kernel in the past years.)
>
> I don't care about uglyness as long as it stays in external
> code. So if someone sends me a patch to add this version
> define, I'll add it.

External code has to be "ugly" if you want to keep the user experience high.
I don't feel like breaking ipt_ACCOUNT for older iptables versions without
any real gain, it should work out of the box with iptables 1.4.0 and 1.4.1.

Attached is a patch to add the new defines. The macro XTABLES_VERSION
is already in use, so I named it XTABLES_VERSION_CHECK. I've also tested
that an empty XTABLES_VERSION_EXTRA in configure.ac works.

Now we can write code like this:

#if XTABLES_VERSION_CODE < XTABLES_VERSION_CHECK(1,5,0)
    #warning You are obselete and will be assimilated.
#endif

Cheers,
Thomas

[-- Attachment #2: iptables-add-version.patch --]
[-- Type: text/x-diff, Size: 1795 bytes --]

Add xtables version defines.

Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>

--- iptables-1.4.1-rc2/configure.ac	Mon May 26 14:23:58 2008
+++ iptables.version/configure.ac	Mon Jun  2 15:05:57 2008
@@ -1,5 +1,11 @@
+define([_XTABLES_VERSION_MAJOR], 1)
+define([_XTABLES_VERSION_MINOR], 4)
+define([_XTABLES_VERSION_PATCH], 1)
+define([_XTABLES_VERSION_EXTRA], -rc2)
 
-AC_INIT([iptables], [1.4.1-rc2])
+define([_XTABLES_VERSION],_XTABLES_VERSION_MAJOR._XTABLES_VERSION_MINOR._XTABLES_VERSION_PATCH[]_XTABLES_VERSION_EXTRA)
+
+AC_INIT([iptables], _XTABLES_VERSION)
 AC_CONFIG_HEADERS([config.h])
 AC_PROG_INSTALL
 AM_INIT_AUTOMAKE
@@ -56,4 +62,14 @@
 AC_SUBST([kbuilddir])
 AC_SUBST([ksourcedir])
 AC_SUBST([xtlibdir])
+
+XTABLES_VERSION_MAJOR=_XTABLES_VERSION_MAJOR
+XTABLES_VERSION_MINOR=_XTABLES_VERSION_MINOR
+XTABLES_VERSION_PATCH=_XTABLES_VERSION_PATCH
+XTABLES_VERSION_EXTRA=_XTABLES_VERSION_EXTRA
+AC_SUBST([XTABLES_VERSION_MAJOR])
+AC_SUBST([XTABLES_VERSION_MINOR])
+AC_SUBST([XTABLES_VERSION_PATCH])
+AC_SUBST([XTABLES_VERSION_EXTRA])
+
 AC_OUTPUT([Makefile extensions/GNUmakefile libipq/Makefile include/xtables.h])
--- iptables-1.4.1-rc2/include/xtables.h.in	Mon May 26 14:15:40 2008
+++ iptables.version/include/xtables.h.in	Mon Jun  2 15:03:46 2008
@@ -18,6 +18,12 @@
 #endif
 
 #define XTABLES_VERSION "@PACKAGE_VERSION@"
+#define XTABLES_VERSION_CODE (0x10000 * @XTABLES_VERSION_MAJOR@ + 0x100 * @XTABLES_VERSION_MINOR@ + @XTABLES_VERSION_PATCH@)
+
+#define XTABLES_VERSION_CHECK(x,y,z)    (0x10000*(x) + 0x100*(y) + z)
+#define XTABLES_VERSION_MAJOR(x)  (((x)>>16) & 0xFF)
+#define XTABLES_VERSION_MINOR(x)  (((x)>> 8) & 0xFF)
+#define XTABLES_VERSION_PATCH(x)  ( (x)      & 0xFF)
 
 /* Include file for additions: new matches and targets. */
 struct xtables_match

^ permalink raw reply	[flat|nested] 6+ messages in thread
* iptables version defines
@ 2008-05-30  8:16 Thomas Jarosch
  2008-05-30 10:53 ` Jan Engelhardt
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Jarosch @ 2008-05-30  8:16 UTC (permalink / raw)
  To: netfilter-devel

Hello netfilter coreteam,

I'm currently looking for a way to support ipt_ACCOUNT
both for iptables 1.4.0 and iptables 1.4.1. Some function
names changed (addr_to_dotted() -> ipaddr_to_numeric())
and it would be easy to #ifdef around them.

The linux kernel provides multiple defines for its version number,
while iptables only supports a char* version string.

Would it make sense to add something like the kernel version defines
so one could write code like this:

#if IPTABLES_VERSION_CODE < IPTABLES_VERSION(1,4,1)
	abc
#else
	xyz
#endif

?

Another solution would be to have an "iptables" and "iptables-1.4.1"
directory in the pom archive, though I don't know if that is supported.
(and would lead to code duplication.)

Thanks,
Thomas

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-06-03 13:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-02 13:49 [patch] iptables version defines Thomas Jarosch
2008-06-02 14:54 ` Jan Engelhardt
2008-06-02 15:32   ` Thomas Jarosch
2008-06-02 17:03     ` Jan Engelhardt
2008-06-03 13:02     ` Patrick McHardy
  -- strict thread matches above, loose matches on Subject: below --
2008-05-30  8:16 Thomas Jarosch
2008-05-30 10:53 ` Jan Engelhardt
2008-06-01 21:13   ` Patrick McHardy
     [not found]     ` <200806021545.23690.thomas.jarosch@intra2net.com>
2008-06-02 13:50       ` [patch] " Patrick McHardy

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.