Date: Tue, 29 Feb 2000 11:36:19 +1100 From: Gregory Bond <gnb@itga.com.au> To: Jim Bloom <bloom@acm.org> Cc: Kai =?iso-8859-1?Q?Gro=DFjohann?= <Kai.Grossjohann@CS.Uni-Dortmund.DE>, freebsd-current@FreeBSD.ORG, freebsd-ipfw@FreeBSD.ORG Subject: Re: cpp change breaks ipfw Message-ID: <200002290036.LAA23453@lightning.itga.com.au> In-Reply-To: Your message of Mon, 28 Feb 2000 09:18:44 -0500.
index | next in thread | raw e-mail
> #define addr 192.186.2.5 > #define mask 255.255.240.0 > > #define rule(ADDR,MASK) add pass tcp from ADDR ## : ## MASK to any 25 setup > rule(addr,mask) This is a well-known artifact of the ANSI C rules. You need to do two levels of macro in order to get the macro args expanded in the paste operator: #define addr 1.2.3.4 #define mask 255.255.255.0 #define hn(A,M) A ## : ## M #define rule(A,M) add pass tcp from hn(A,M) to any 25 setup rule(addr, mask) which produces add pass tcp from 1.2.3.4:255.255.255.0 to any 25 setup when fed through an ANSI preprocessor (i.e. not "gcc -E" and not /usr/bin/cpp on 3.x!). This also works if (e.g.) addr is defined on the command line. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the messagehome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200002290036.LAA23453>
