Skip site navigation (1)Skip section navigation (2)
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>