Subject: Re: _res_state_ext in resolv.h
To: None <tech-net@netbsd.org>
From: Atsushi Onoe <onoe@sm.sony.co.jp>
List: tech-net
Date: 03/15/2000 17:42:48
>  > 	KAME team really need to revisit struct res_state_ext in
>  > 	/usr/include/resolv.h.  is it acceptable if I remove it once
>  > 	from the header?  Quite unfortunately, libc contains globally
>  > 	accessible symbol:
>  > >>extern struct __res_state_ext _res_ext;
>  > 	but I believe noone except libc code ever touches this.  This was
>  > 	introduced in sometime June 1999.

I originally introduced this struct into KAME just because there are no room
to extend in struct __res_state.  To keep binary compatibility, I cannot
add members to __res_state.  I was very careless to forget to reserve
some paddings in __res_state_ext.

There are at least two issues raised.
	1.  Update resolver to bind8.
		resolver in bind8 requires some additional members in
		struct __res_state.
		Unlike other platforms, our __res_state has no additional 
		pad at the end of struct.  So we must use some tricks
		to migrate into bind8 with keeping binary compatibility.

	2. Scoped-aware address sort for resolver.
		resolvsort feature in sort_list might be useful to
		specify preferences, though it is not clear defined yet.

So KAME team would like to reconsider the way to extend current __res_state
to allow some future extension without breaking compatibility.

> If nothing outside of libc touches it, then yes, please remove it from
> the header file.

There is only one file in source tree.
	basesrc/usr.sbin/faithd/faithd.c

And at least one in pkgsrc
	pkgsrc/mail/smtpfeed/

Both of them are derived from KAME/WIDE.

Atsushi Onoe