Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Dec 2004 12:53:21 -0800
From:      Brooks Davis <brooks@one-eyed-alien.net>
To:        Ken Smith <kensmith@cse.Buffalo.EDU>
Cc:        src-committers@FreeBSD.org
Subject:   Re: cvs commit: src/sbin/ifconfig ifconfig.c src/sys/net if.c if.h
Message-ID:  <20041212205321.GA28802@odin.ac.hmc.edu>
In-Reply-To: <20041212204111.GB5503@electra.cse.Buffalo.EDU>
References:  <200412122012.iBCKCou6068020@repoman.freebsd.org> <20041212204111.GB5503@electra.cse.Buffalo.EDU>

next in thread | previous in thread | raw e-mail | index | archive | help

--CE+1k2dSO48ffgeK
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sun, Dec 12, 2004 at 03:41:11PM -0500, Ken Smith wrote:
> On Sun, Dec 12, 2004 at 08:12:50PM +0000, Brooks Davis wrote:
> > brooks      2004-12-12 20:12:50 UTC
> >=20
> >   FreeBSD src repository
> >=20
> >   Modified files:        (Branch: RELENG_4)
> >     sbin/ifconfig        ifconfig.c=20
> >     sys/net              if.c if.h=20
> >   Log:
> >   MFC the addition of ifi_datalen to struct if_data and ifconfig support
> >   for it.  The change to struct if_data differs slightly from the one in
> >   5.3 in that a pad is added after ifi_xmitquota rather then adding
> >   ifi_link_state before ifi_recvquota.  This is necessicary to maintain
> >   the 4.x ABI.
> >  =20
> >   Revision   Changes    Path
> >   1.51.2.23  +4 -1      src/sbin/ifconfig/ifconfig.c
> >   1.85.2.28  +2 -0      src/sys/net/if.c
> >   1.58.2.12  +2 -0      src/sys/net/if.h
>=20
> In if.h you are adding new fields that didn't exist before:
>=20
>  #ifndef _NET_IF_H_
> @@ -97,6 +97,8 @@ struct if_data {
>  	u_char	ifi_hdrlen;		/* media header length */
>  	u_char	ifi_recvquota;		/* polling quota for receive intrs */
>  	u_char	ifi_xmitquota;		/* polling quota for xmit intrs */
> +	u_char	ifi_do_no_use;		/* pad for ifi_datalen's position */
> +	u_char	ifi_datalen;		/* length of this data struct */
>  	u_long	ifi_mtu;		/* maximum transmission unit */
>  	u_long	ifi_metric;		/* routing metric (external only) */
>  	u_long	ifi_baudrate;		/* linespeed */
>=20
> So any already compiled executables that use the if_data structure would
> be looking for ifi_mtu/ifi_metric/ifi_baudrate in the wrong place after
> this change.  Are you absolutely sure this is not breaking ABI?

ifi_mtu, etc remain in the same location because the two new variables
fill in the hidden padding required to align ifi_mtu.  I've verified
that old and new ifconfigs work with old and new kernels.  The change
will allow 4.11 ifconfigs to work with 6.x if we add fields to struct
if_data (fairly probable).

-- Brooks

--=20
Any statement of the form "X is the one, true Y" is FALSE.
PGP fingerprint 655D 519C 26A7 82E7 2529  9BF0 5D8E 8BE9 F238 1AD4

--CE+1k2dSO48ffgeK
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQFBvK+/XY6L6fI4GtQRAiAGAJsEXvLVnqQAHhc80Bs0Qegot5pLuQCgmDjK
W3wDYVxEy9AmmYUBBhMzV2A=
=WdjF
-----END PGP SIGNATURE-----

--CE+1k2dSO48ffgeK--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041212205321.GA28802>