Date: Tue, 13 Apr 2004 01:47:20 -0700 From: Luigi Rizzo <rizzo@icir.org> To: net@freebsd.org Subject: multiple definitions of ROUNDUP macro Message-ID: <20040413014720.A57543@xorpc.icir.org>
next in thread | raw e-mail | index | archive | help
The ROUNDUP macro, used to account for the space occupied by a sockaddr when passed through a routing socket, is defined in a zillion places: src/usr.sbin/IPXrouted/startup.c:#define ROUNDUP(a) \ src/usr.sbin/arp/arp.c:#define ROUNDUP(a) \ src/usr.sbin/ndp/ndp.c:#define ROUNDUP(a) \ src/usr.sbin/ppp/defs.h:#define ROUNDUP(x) ((x) ? (1 + (((x) - 1) | (sizeof(longsrc/usr.sbin/route6d/route6d.c:#define ROUNDUP(a) \ src/usr.sbin/rwhod/rwhod.c:#define ROUNDUP(a) \ src/sys/net/route.c.orig:#define ROUNDUP(a) (a>0 ? (1 + (((a) - 1) | (sizeof(lonsrc/sys/net/rtsock.c:#define ROUNDUP(a) \ A similar macro, ADVANCE, has similar problems. This is confusing at best, and a likely source of trouble. If there are no objections I would like to replace it with a centralised macro (possibly with a suitable name) which takes a sockaddr * as argument and returns the rounded-up size of the object as a result. BTW, i notice that the rounding is to multiples of "sizeof(long)", and i wonder if this is intentional, especially on 64-bit architectures. cheers luigi
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040413014720.A57543>