1:
2:
3: /*************
4: * *
5: * SENTINEL *
6: * *
7: *************/
8:
9:
10: #ifndef WWWI_MIND_RESOLVER_H
11: #define WWWI_MIND_RESOLVER_H
12:
13:
14: /*********************
15: * *
16: * PROJECT INCLUDES *
17: * *
18: *********************/
19:
20:
21: #include "mind.h"
22: #include "dnssocket.h"
23: #include "question.h"
24: #include "response.h"
25: #include "rrcache.h"
26:
27:
28: /**********************
29: * *
30: * TYPE DECLARATIONS *
31: * *
32: **********************/
33:
34:
35: class RRCache;
36: typedef RRCache* RRCachePtr;
37:
38:
39: /*******************
40: * *
41: * CLASS RESOLVER *
42: * *
43: *******************/
44:
45:
46: /*
47: * The Resolver class performs all the real work associated with resolving
48: * an unknown DNS name.
49: *
50: * Properties
51: *
52: * RRCachePtr m_cap
53: * This property points to the global cache of RRs.
54: *
55: * Methods
56: *
57: */
58:
59: class Resolver {
60: public:
61: Resolver(void);
62: ResponsePtr QueryAuthority(QuestionConstPtr ci_qnp, DNSSocketPtr i_dspAuthority, IPAddress i_ipAuthority);
63: ResponsePtr QueryRecursive(const char *i_strName, RRType i_ty, RRClass i_cl, unsigned i_uSteps);
64: ResponsePtr QueryRecursive(QuestionConstPtr ci_qnp, unsigned i_uSteps);
65: inline IPAddress SimpleResolve(const char *i_strName, unsigned i_uSteps);
66: inline IPAddress SimpleResolve(LabelListConstPtr i_llpName, unsigned i_uSteps);
67:
68: protected:
69: RRCachePtr m_cap;
70: unsigned short m_usID; // STUB: should go to random to stop prediction
71:
72: };
73: typedef Resolver* ResolverPtr;
74:
75:
76: /*********************
77: * *
78: * INLINE FUNCTIONS *
79: * *
80: *********************/
81:
82:
83: /************
84: * *
85: * THE END *
86: * *
87: ************/
88:
89:
90: #endif
91:
92:
93: