Subject: Why some of the changes vs. 4.4?
To: None <tech-net@NetBSD.ORG>
From: Craig Metz <cmetz@inner.net>
List: tech-net
Date: 05/17/1996 09:40:27
	I was looking through some of the networking code in NetBSD
and was wondering where a couple of the changes versus 4.4-Lite
came from. (The answer might be 4.4-Lite2 -- I don't have a copy of
the sources to that yet) Also, I'm looking at the May 11 NetBSD-current
snapshot, in case these are recent changes.

	First, I was wondering why the struct protosw entries for
input, output, and ctlinput were changed to varargs which later
pops off a fixed number of arguments. This seems pretty drain
bamaged to me because it defeats the compiler's ability to do any
reasonable prototype checking (this may be a feature ;), but I'm
probably missing something important.

	Second, I was wondering where the use LIST_* macros for
ethernet multicast address lists came from and the use of TAILQ_*
macros for interface address lists came from. This is definitely
a win in terms of replacing lots of blocks of code all over the
place with generic blocks, but I also noticed that these don't
seem to provide the same exceptional-case handling (well, printfs)
as the 4.4-Lite code that it's replacing.

	Third, a general question: Could anyone think of a reason
off hand that references to a struct in_aliasreq's ifra_broadaddr
field would give me compiler errors (not a member) but ifra_dstaddr
would work fine? I've spent a good deal of time looking for some
random redefinition that would cause this to fail, but it's looking
more and more like time to upgrade my copy of GCC...

	If anyone could clue me in on any of these items, please do.

								-Craig