Annotation of libwww/Library/src/HTDNS.html, revision 2.18
2.1 frystyk 1: <HTML>
2: <HEAD>
2.13 frystyk 3: <!-- Changed by: Henrik Frystyk Nielsen, 2-Apr-1996 -->
2.17 frystyk 4: <TITLE>W3C Sample Code Library libwww DNS Class</TITLE>
2.1 frystyk 5: </HEAD>
6: <BODY>
2.13 frystyk 7: <H1>
8: Domain Name Service Class
9: </H1>
2.1 frystyk 10: <PRE>
11: /*
12: ** (c) COPYRIGHT MIT 1995.
13: ** Please first read the full copyright statement in the file COPYRIGH.
14: */
15: </PRE>
2.13 frystyk 16: <P>
17: The DNS Class defines generic access to the DNS system. It maintains
18: a cache of all visited hosts so that subsequent connects to the same host
19: doesn't imply a new request to the DNS every time. Multihomed hosts are treated
20: specially in that the time spend on every connect is measured and kept in
21: the cache. On the next request to the same host, the IP-address with the
22: lowest average connect time is chosen. If one IP-address fails completely,
23: e.g. <EM>connection refused</EM> then it disabled and HTDoConnect tries one
24: of the other IP-addresses to the same host.
25: <P>
26: Every entry in the cache has its own time to live (TTL) and hence the cache
27: manages its own automatic garbage collection. Currently the TTL is <B>not</B>
28: bound to the DNS records which should be changed. You can set the DNS object
29: TTL
30: <P>
31: This module is implemented by <A HREF="HTDNS.c">HTDNS.c</A>, and it is a
2.18 ! frystyk 32: part of the <A HREF="http://www.w3.org/Library/"> W3C Sample Code
2.13 frystyk 33: Library</A>.
2.1 frystyk 34: <PRE>
35: #ifndef HTDNS_H
36: #define HTDNS_H
2.13 frystyk 37:
2.1 frystyk 38: </PRE>
2.13 frystyk 39: <PRE>typedef struct _HTdns HTdns;
2.1 frystyk 40: </PRE>
2.13 frystyk 41: <H2>
42: DNS Cache Expiration Time
43: </H2>
44: <P>
2.12 frystyk 45: When to remove an entry in the cache. The default value is 12h.
2.1 frystyk 46: <PRE>
47: extern void HTDNS_setTimeout (time_t timeout);
48: extern time_t HTDNS_timeout (time_t timeout);
49: </PRE>
2.13 frystyk 50: <H2>
51: Creation and Deletion Methods
52: </H2>
53: <H3>
54: Add a DNS Object
55: </H3>
56: <P>
57: Add an element to the cache of visited hosts. The <CODE>homes</CODE> variable
58: indicates the number of IP addresses found when looking up the name. A host
59: name must <B>NOT</B> contain a port number.
60: <PRE>
61: extern HTdns * HTDNS_add (HTList * list, struct hostent * element,
62: char * host, int * homes);
63: </PRE>
64: <H3>
65: Delete a DNS object
66: </H3>
67: <P>
68: This function flushes the DNS object from the cache and frees up memory
2.1 frystyk 69: <PRE>
2.9 frystyk 70: extern BOOL HTDNS_delete (const char * host);
2.1 frystyk 71: </PRE>
2.13 frystyk 72: <H3>
73: Delete ALL DNS objects
74: </H3>
75: <P>
2.14 frystyk 76: This function is called from <A HREF="HTLib.html">
2.13 frystyk 77: HTLibTerminate</A>. It can be called at any point in time if the DNS cache
78: is going to be flushed.
2.1 frystyk 79: <PRE>
80: extern BOOL HTDNS_deleteAll (void);
81: </PRE>
2.13 frystyk 82: <H2>
83: DNS Class Methods
84: </H2>
85: <H3>
86: Recalculating the Time Weights on Multihomed Host
87: </H3>
88: <P>
89: On every connect to a multihomed host, the average connect time is updated
90: exponentially for all the entries.
91: <PRE>
2.16 frystyk 92: extern BOOL HTDNS_updateWeigths (HTdns *dns, int cur, ms_t deltatime);
2.13 frystyk 93: </PRE>
94: <H2>
95: Resolver Functions
96: </H2>
97: <P>
98: These are the functions that resolve a host name
99: <H3>
100: Get Host By Socket
101: </H3>
102: <P>
103: This function should have been called HTGetHostByAddr but for historical
104: reasons this is not the case.
2.1 frystyk 105: <PRE>
2.7 frystyk 106: extern char * HTGetHostBySock (int soc);
2.1 frystyk 107: </PRE>
2.13 frystyk 108: <H3>
109: Get Host By Name
110: </H3>
111: <P>
112: This function gets the address of the host and puts it in to the socket
113: structure. It maintains its own cache of connections so that the communication
114: to the Domain Name Server is minimized. Returns the number of homes or -1
115: if error.
2.1 frystyk 116: <PRE>
2.15 frystyk 117: extern int HTGetHostByName (HTHost * host, char *hostname, HTRequest * request);
2.1 frystyk 118: </PRE>
119: <PRE>
120: #endif
121: </PRE>
2.13 frystyk 122: <P>
123: <HR>
2.12 frystyk 124: <ADDRESS>
2.18 ! frystyk 125: @(#) $Id: HTDNS.html,v 2.17 1997/02/16 18:42:06 frystyk Exp $
2.12 frystyk 126: </ADDRESS>
2.13 frystyk 127: </BODY></HTML>
Webmaster