Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Dec 2004 22:28:50 +0100
From:      Wilko Bulte <wb@freebie.xs4all.nl>
To:        Brooks Davis <brooks@one-eyed-alien.net>
Cc:        cvs-src@FreeBSD.ORG
Subject:   Re: cvs commit: src/sbin/ifconfig ifconfig.c src/sys/net if.c if.h
Message-ID:  <20041212212850.GA1493@freebie.xs4all.nl>
In-Reply-To: <20041212205321.GA28802@odin.ac.hmc.edu>
References:  <200412122012.iBCKCou6068020@repoman.freebsd.org> <20041212204111.GB5503@electra.cse.Buffalo.EDU> <20041212205321.GA28802@odin.ac.hmc.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Dec 12, 2004 at 12:53:21PM -0800, Brooks Davis wrote..
> 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 supp=
ort
> > >   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 mainta=
in
> > >   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?
>=20
> 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

Als on 64 bit machines?  Just wondering..

> will allow 4.11 ifconfigs to work with 6.x if we add fields to struct
> if_data (fairly probable).

--=20
Wilko Bulte				wilko@FreeBSD.org



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