Date: Sat, 12 Oct 2002 17:13:39 -0700 From: Luigi Rizzo <rizzo@icir.org> To: "M. Warner Losh" <imp@bsdimp.com> Cc: net@FreeBSD.ORG Subject: Re: Comments Please Message-ID: <20021012171339.A92744@carp.icir.org> In-Reply-To: <20021012.171809.93306957.imp@bsdimp.com>; from imp@bsdimp.com on Sat, Oct 12, 2002 at 05:18:09PM -0600 References: <20021012.171809.93306957.imp@bsdimp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Oct 12, 2002 at 05:18:09PM -0600, M. Warner Losh wrote:
> OK. I'm not a network wonk, so I thought I'd run this by people
> here. What do people think.
sounds ok -- removing explicit constants is always good.
On passing:
* While you are at it,
grep etherbroadcastaddr sys/net*/*
reveals the use of an explicit constant (6) in net/if_arp.h and
netinet/if_ether.c; there is more of the same in net/bridge.c
(my fault), net/if_atmsubr.c, netinet/if_ether.c, netncp/ncp_subr.c
* there is no real reason to have etherbroadcastaddr as a
variable. net/bridge.c has a macro, IS_ETHER_BROADCAST,
which is much faster to evaluate on i386, and
could be moved e.g. in net/ethernet.h and be used
to check for ethernet broadcast addresses in
net/if_ethersubr.c
net/if_iso88025subr.c
netatalk/aarp.c
net/if_fddisubr.c
This only leaves some usages of etherbroadcastaddr is in
netinet/if_ether.c to set the address for outgoing broadcast
packets.
cheers
luigi
> Warner
>
> --- //depot/user/imp/freebsd-imp/sys/net/if_ethersubr.c 2002/10/06 21:18:24
> +++ //depot/user/imp/newcard/net/if_ethersubr.c 2002/10/11 22:58:57
> @@ -124,7 +124,8 @@
>
> static int ether_resolvemulti(struct ifnet *, struct sockaddr **,
> struct sockaddr *);
> -u_char etherbroadcastaddr[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
> +u_char etherbroadcastaddr[ETHER_ADDR_LEN] =
> + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
> #define senderr(e) do { error = (e); goto bad;} while (0)
> #define IFP2AC(IFP) ((struct arpcom *)IFP)
>
> @@ -149,7 +150,7 @@
> {
> short type;
> int error = 0, hdrcmplt = 0;
> - u_char esrc[6], edst[6];
> + u_char esrc[ETHER_ADDR_LEN], edst[ETHER_ADDR_LEN];
> register struct rtentry *rt;
> register struct ether_header *eh;
> int loop_copy = 0;
> @@ -859,8 +860,8 @@
> register struct sockaddr_dl *sdl;
>
> ifp->if_type = IFT_ETHER;
> - ifp->if_addrlen = 6;
> - ifp->if_hdrlen = 14;
> + ifp->if_addrlen = ETHER_ADDR_LEN;
> + ifp->if_hdrlen = ETHER_HDR_LEN;
> if_attach(ifp);
> ifp->if_mtu = ETHERMTU;
> ifp->if_resolvemulti = ether_resolvemulti;
>
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-net" in the body of the message
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021012171339.A92744>
