Ʊ̾饤֥ ƥ 갷

0. Ϥ

0.1. 饤֥

Υ饤֥ϡbind named ° resolver ƥ󶡤
뤳ȤˡؿȤäƤ롣Ǥ
  Linux (libc5)
  Linux (libc6)
  SunOS 4
  Solaris 2
ưǧƤ롣ǤɸϤɸ२顼Ϥ
ǥХååĤΤαդ줿 :>

0.2. 󥱡ʤɤβ

§ȤƤΥ饤֥Ƥδؿ C 󥱡줹뤳Ȥ
տޤƤ뤬Ŭѹ C++ 󥱡ˤ뤳Ȥ
ʤȻפ롣

1. 饤֥꤫ƤӽФ륽åȴƻΥ󥿥եؿ

Ʊϴƻ뵡ϡΥ饤֥ˤȤ߹ޤƤʤ
ϡ¸δƻ뵡Ȥ߹碌ƻȤȤտޤ
뤫Ǥ롣Τᡢ桼ϴ¸εȤΥ󥿥ե
ܥ饤֥󶡤ɬפ롣

δؿϡҤΥ饤֥κݤ˰Ȥƥݥ󥿤Ϥ
ä̾ڤ extern, static ̤ǤդǤ롣

δؿƤӽФܥ饤֥ΥХåƱˤ1
¹ԤƤϤʤ餺Ĥ줬ƤФ줿ˤϥ桼¦ǤդΥ
Хå¹ԲǽǤʤФʤʤ

1.1. åȤƻоݤɲäؿ
  void *somefunc(asyncdns_libentry_t entry, int fd);

δؿϡ fd ɽ륽åȤƻоݤɲäǡ
ˤϰ entry Ϳ줿ؿ fd ˸ƤӽФ褦
ꤷʤФʤʤδؿ֤ͤϡϿä
ƤӽФ륤󥿥եϤǤ롣

ŪˤϡδؿʣƤФ뤳Ȥꡢκݤˤ entry ؿ
϶̤Ǥ롣âǤϸƤӽФϺǽΣΤߤǤ롣

1.2. åȤƻоݤ鳰ؿ
  void somefunc(void *id, int fd);

δؿϡδؿꤷƻä id ˤϴƻоݤ
Ͽκݤ˥饤֥֤줿ͤfd ˤоݤΥåֹͿ
ƤӽФ롣
âǤϤδؿϻȤƤʤ

1.3. ॢȤꤹؿ

  void *somefunc(asyncdns_libtentry_t entry, int id, int timeout);

δؿϡtimeout ÷вˡentry ؿ id ǸƤӽФ褦
ʤФʤʤ֤ͤϡΥॢȤäݤѤ ID 
Ǥ롣ॢȤˤ entry ؿƤӽФ줿ݤˤϡॢ
ȤؿϸƤӽФʤΤǡưŪϿä뤳ȡ
entry ؿϡ饤֥μ¹Τ̤ưդǤ롣

1.4. ॢäؿ

  void *somefunc(void *id);

δؿϡδؿꤷॢȤä id ϡ
δؿ饤֥֤ ID Ǥ롣

2. 󥿥ե

2.1 

extern int asyncdns_init(regfunc, remfunc, tregfunc, tremfunc);

Υ饤֥롣4Ĥΰϡ줾嵭 1.11.4 Υ桼
ؿؤΥݥ󥿤򤳤νϤȡδؿƤӽФǰ
δؿƤФ뤳ȤΤդ뤳ȡ

# СǤϥॢȤνϾά뤳ȤǤξ
# tregfunc  tremfunc ˤ NULL Ϥξ硢ॢȤ¾
# ¹ԤʤΤαդ뤳ȡμ갷Ͽ侩ʤ

ˤ 0 ʳͤ򡢼Իˤ 0 ֤

2.1.1 X Toolkit ؿ

extern int asyncdns_X_init(XtAppContext app);

Υ饤֥롣ϥץꥱ󥳥ƥȤǤ롣
δؿŬڤ glue routine ˤƾδؿƤӽФΤǤ롣

Хåν뤿ˤϡXtAppMainLoop ʤɤˤ륤٥ȥ롼
פ¹ԤƤɬפ롣

ˤ 0 ʳͤ򡢼Իˤ 0 ֤

2.2. ̾νϿ

extern int asyncdns_gethostbyname(asyncdns_callback_t f, void *closure,
				  struct hostent **r, char *name);
extern int asyncdns_gethostbyaddr(asyncdns_callback_t f, void *closure, 
				  struct hostent **r, const char *, int, int);

ϥƥؿ gethostby{name,addr} б롣
ɤξ⡢ f Ϥη̤줿ݤ˸ƤӽФ
ХåؿǤꡢclosure ϤϤǤդΥǡǤ롣
ΥХåϡҤ id,  ent (struct hostent ؤΥݥ)
Ȥơ (*f)(closure, id, ent) ȤǸƤӽФ롣
3̾¨εͤǼݥ󥿤Ǥ롣
4ʹߤϥƥؿƱͤǤ롣

ent ڤ *r λؤ̤ϸΰؤΥݥ󥿤ǤΤǡ

callback ¹桢뤤ϼ̾ϢδؿƤӽФɬפ
  ǡϥԡ٤Ǥ
ǥǡ򥳥ԡ롢뤤ͤɬפǤʤʤˤϡܥ饤֥
  Υǡ롼(ƻϿؿϤ줿) ϸƤǤϤ
  ʤ

Ȥαդ뤳ȡ

ϡν򼨤 ID ͤȤ֤â̾
¨ˤϡID Ȥ 0 ֤*r ˷̤ؤΥݥ󥿤
Ǽ롣

Ԥϥ顼θ h_errno ڤ errno ˳Ǽ-1 ֤

2.3. ̾

extern int asyncdns_abort_request(int id);

id Ǽ ID Ľߤ롣

ˤ 0 ʳͤ򡢼Իˤ 0 ֤

3. »

Υ饤֥ MT safe ǤϤʤ

IPv6 ؤбϤƤʤ

̾ɥ쥹ѴǤΥɥᥤ̾䴰ϡԴʼǤ롣

ǡ礭᤮ݤ TCP ؤ fallback ϼƤʤ

adnstest.c μϤøǤΤǻͤˤǤʤ

4. Ԥȥ饤

ܥ饤֥Ԥ
  Yutaka Oiwa <oiwa@is.s.u-tokyo.ac.jp>
Ǥ롣

ܥ饤֥ϥץ󥽡եȥǤꡢѾϤ
BSD פȤäƤ롣ŪѾ LICENCE ե˵Ҥ
Ƥ롣

ܥ饤֥桢async_dns_from_named.c Υ롼ϡbind named  
resolver 򸵤ԽΤǤꡢʬϥꥫ
Υե˥ؤݻƤ롣ʬκѾϡ
եƬεҤ򻲾Ȥ뤳ȡ

ޤasync_dns.c ΥνˡˤĤƤ⡢BIND named Υ
饢르ꥺžѤƤʬ롣

[ End of Document ]
