Subject: Re: your recent ARP changes...
To: Jonathan Stone <jonathan@DSG.Stanford.EDU>
From: Fred L. Templin <>
List: tech-net
Date: 04/18/1997 16:22:45
>From jonathan@DSG.Stanford.EDU  Fri Apr 18 15:42:36 1997
To: templin (Fred L. Templin)
Subject: Re: your recent ARP changes...
Cc: thorpej, kml,
Date: Fri, 18 Apr 1997 15:41:36 -0700
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>


Thanks for your input. A couple of comments:

> it looks to me like a substantial chunk of the problemsa you describe
> would be subsumed by
> 	#include <net/if_ether.h>
> 	#define ac_if	ec_if
> What happens when you try creating a <netinet/if_ether.h> containing
> the above?

Good suggestion, but I needed to add a couple of extra lines to make
it look like this:

  #include <net/if_ether.h>
  #include <netinet/if_inarp.h>
  #define arpcom ethercom
  #define ac_if   ec_if

Even then, I immediately got the following compile-time warnings:

  cc1: warnings being treated as errors
  if_ess.c: In function `ifess_if_ioctl':
  if_ess.c:159: warning: passing arg 1 of `arp_ifinit' from incompatible pointer type
  if_ess.c: In function `ifess_if_output':
  if_ess.c:304: warning: passing arg 1 of `arpresolve' from incompatible pointer type

because the arguments to the arp* routines have changed from "struct arpcom *"
to "struct ifnet *". So, it's not quite so simple (but do-able) in the
drivers, and who know what sort of compatibility issues are likely to
pop up in applications which traditionally included "<netinet/if_ether.h>"??

> But now the changes are done, I for one agree that better backwards
> compatibility with both NetBSD 1.2 and with other 4.4BSD-based systems
> is a good idea, and something NetBSD should at least aim for.  If
> people have gone to the effort of porting third-party drivers to
> NetBSD, the least we can do is ease the pain of supporting both 1.2
> and current in such drivers.

I agree, and I would extend this to easing the pain of supporting 1.2,
current, *and* all the myriad 4.*BSD-derivative OS's out there which
still have the legacy framework.