cvs commit: src/sbin/ifconfig ifconfig.c src/sys/net if.c if.h
Wilko Bulte
wb at freebie.xs4all.nl
Sun Dec 12 13:29:11 PST 2004
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
> > >
> > > FreeBSD src repository
> > >
> > > Modified files: (Branch: RELENG_4)
> > > sbin/ifconfig ifconfig.c
> > > sys/net if.c if.h
> > > 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.
> > >
> > > 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
> >
> > In if.h you are adding new fields that didn't exist before:
> >
> > #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 */
> >
> > 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
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).
--
Wilko Bulte wilko at FreeBSD.org
More information about the cvs-all
mailing list