@@ -26,20 +26,31 @@ public sealed class DNSResolver
2626 private readonly HashSet < IPAddress > globalNameservers = [ ] ;
2727 private ResolverCache cache = new ResolverCache ( ) ;
2828 private ResolutionMode resolutionMode ;
29+ /// <summary>
30+ /// Create a new DNS resolver
31+ /// </summary>
32+ /// <param name="mode">Which strategy to use to resolve queries</param>
2933 public DNSResolver ( ResolutionMode mode = ResolutionMode . InsecureOnly )
3034 {
3135 this . resolutionMode = mode ;
3236 ReloadNameservers ( ) ;
3337 NetworkChange . NetworkAddressChanged += ( s , e ) => ReloadNameservers ( ) ;
3438 }
35-
39+ /// <summary>
40+ /// Create a new DNS resolver
41+ /// </summary>
42+ /// <param name="nameservers">the nameservers to query</param>
43+ /// <param name="mode">Which strategy to use to resolve queries</param>
3644 public DNSResolver ( List < IPAddress > nameservers , ResolutionMode mode = ResolutionMode . InsecureOnly )
3745 {
3846 this . resolutionMode = mode ;
3947 foreach ( IPAddress nameserver in nameservers )
4048 this . globalNameservers . Add ( nameserver ) ;
4149 }
4250
51+ /// <summary>
52+ /// The nameservers to query
53+ /// </summary>
4354 public List < IPAddress > NameServers
4455 {
4556 get
@@ -68,6 +79,11 @@ private void ReloadNameservers()
6879 }
6980 }
7081
82+ /// <summary>
83+ /// Resolve a hostname to it's IP addresses
84+ /// </summary>
85+ /// <param name="hostname">domain name</param>
86+ /// <returns>domain's IPs</returns>
7187 public async Task < List < IPAddress > > ResolveHost ( string hostname )
7288 {
7389 ArgumentNullException . ThrowIfNullOrEmpty ( hostname , nameof ( hostname ) ) ;
@@ -79,6 +95,11 @@ .. await ResolveHostV6(hostname)
7995 return addresses ;
8096 }
8197
98+ /// <summary>
99+ /// Resolve a hostname to it's IP v4 addresses
100+ /// </summary>
101+ /// <param name="hostname">domain name</param>
102+ /// <returns>domain's IPs</returns>
82103 public async Task < List < IPAddress > > ResolveHostV4 ( string hostname )
83104 {
84105 ArgumentNullException . ThrowIfNullOrEmpty ( hostname , nameof ( hostname ) ) ;
@@ -100,6 +121,11 @@ public async Task<List<IPAddress>> ResolveHostV4(string hostname)
100121 return addresses ;
101122 }
102123
124+ /// <summary>
125+ /// Resolve a hostname to it's IPv6 addresses
126+ /// </summary>
127+ /// <param name="hostname">domain name</param>
128+ /// <returns>domain's IPs</returns>
103129 public async Task < List < IPAddress > > ResolveHostV6 ( string hostname )
104130 {
105131 ArgumentNullException . ThrowIfNullOrEmpty ( hostname , nameof ( hostname ) ) ;
@@ -121,6 +147,12 @@ public async Task<List<IPAddress>> ResolveHostV6(string hostname)
121147 return addresses ;
122148 }
123149
150+ /// <summary>
151+ /// Lookup the domain name for an IP address
152+ /// </summary>
153+ /// <param name="address"></param>
154+ /// <returns>The response message</returns>
155+ /// <exception cref="ArgumentNullException"></exception>
124156 public async Task < Message ? > ResolveIPRecord ( IPAddress address )
125157 {
126158 if ( address == null )
@@ -129,6 +161,12 @@ public async Task<List<IPAddress>> ResolveHostV6(string hostname)
129161 bool privateQuery = IsPrivate ( address , addressBytes ) ;
130162 return await ResolveQuery ( new QuestionRecord ( DomainParser . FromIP ( addressBytes ) , DNSRecordType . PTR , false ) , privateQuery ) ;
131163 }
164+
165+ /// <summary>
166+ /// Lookup the domain name for an IP address
167+ /// </summary>
168+ /// <param name="address"></param>
169+ /// <returns>The domain</returns>
132170 public async Task < string ? > ResolveIP ( IPAddress address )
133171 {
134172 Message ? response = await ResolveIPRecord ( address ) ;
@@ -143,6 +181,11 @@ public async Task<List<IPAddress>> ResolveHostV6(string hostname)
143181 return null ;
144182 }
145183
184+ /// <summary>
185+ /// Sends a query and returns the response message
186+ /// </summary>
187+ /// <param name="question"></param>
188+ /// <returns></returns>
146189 public async Task < Message ? > ResolveQuery ( QuestionRecord question )
147190 {
148191 bool privateQuery = ( question . Name . Last ( ) == "local" ) ;
0 commit comments