Subject: Re: nsswitch.conf and irs.conf
To: None <itojun@iijlab.net>
From: Noriyuki Soda <soda@sra.co.jp>
List: tech-net
Date: 01/20/2003 19:06:46
>>>>> On Mon, 20 Jan 2003 09:33:21 +0900, itojun@iijlab.net said:

>	do we have such manpower to maintain separate resolver library from
>	BIND8?  this is my fundamental question.

I think we should switch to the BIND8 resolver library.
But what we are now talking about is not a resolver library, but
a name service library built upon the resolver library, isn't it?

>> BTW, I think the way to implement the thread safeness in the IRS library
>> is somewhat lame. gethostbyname(3) should be implemented by a call to
>> gethostbyname_r(3), rather than vice versa as the IRS currently
>> does. Using a thread local strage may make sesne, if you cannot modify

> 	which source code are you looking at?  i guess you are looking at
> 	something wrong.  if you look at BIND8 src/lib/irs/gethostent.c,
> 		gethostbyname() calls gethostbyname_p()
> 		gethostbyname_p() calls gethostbyname2_p()
> 		gethostbyname2_p() does the real thing
> 	so i see no problem here.

For example, please look at either
	BIND8 src/lib/irs/gethostent_r.c
or
	BIND9 lib/bind/irs/gethostent_r.c.
In this file, gethostbyname_r(3) calls gethostbyname(3) internally.
In other words, what the IRS did is to make gethostbyname(3) MT safe
to implement gethostbyname_r(3). :-O
This is what I think wasteful.

It seems the IRS implementation heavily depends on the thread specific 
data feature of the pthread library. But in theory, a name service
library doesn't have to use the TSD feature in its implemetation
(and actually glibc nsswitch implementation doesn't use it).
I think it is better to avoid the use of the thread specific data,
because of efficiency and source code readablity reason.
--
soda