Module sys/dns
DNS resolution operations.
Provides async DNS resolution wrapping getaddrinfo/getnameinfo, plus
accessors for iterating the linked list of addrinfo results.
All async operations return IoFuture which resolves to:
- 0: success
- a
DNS_ERR_*code below: the runtime classifies the resolver'sEAI_*answer into one stable negative code per kind, the same on every platform (EAI_*values differ per platform, and Linux's are negative and collide with errno). The codes sit above every errno, so they never read as one (plans/ASYNC_IO_API_AUDIT.md A4).
Stability
unstable — a raw wrapper over getaddrinfo/getnameinfo whose results
are a linked list walked through accessor functions and whose errors are
DNS_ERR_* codes, not IoError. std/net/dns's lookup_host is the
typed face and is what callers want.
It is also where a real open question lives rather than just a rough edge: a plaintext connect uses the FIRST address this returns and does not fall back to the next on failure, so a host whose IPv6 route is dead fails instead of reaching its IPv4 address. There is no happy-eyeballs, and the resolver's order decides. Fixing that will change what the typed layer asks of this one.
Functions
Parameters
| Name | Type | Notes |
|---|---|---|
node | *u8 | |
service | ?*u8 | |
hints | ?*u8 | |
result | *?*u8 |
Returns: IoFuture
Parameters
| Name | Type | Notes |
|---|---|---|
addr | *u8 | |
addrlen | u32 | |
host | *u8 | |
hostlen | usize | |
service | *u8 | |
servlen | usize | |
flags | i32 |
Returns: IoFuture
Parameters
| Name | Type | Notes |
|---|---|---|
res | *u8 |
Returns: unit
Returns: *?*u8
Parameters
| Name | Type | Notes |
|---|---|---|
result | *?*u8 |
Returns: ?*u8
Parameters
| Name | Type | Notes |
|---|---|---|
result | *?*u8 |
Returns: unit
Returns: usize
Parameters
| Name | Type | Notes |
|---|---|---|
ai | *u8 |
Returns: i32
Parameters
| Name | Type | Notes |
|---|---|---|
ai | *u8 |
Returns: i32
Parameters
| Name | Type | Notes |
|---|---|---|
ai | *u8 |
Returns: i32
Parameters
| Name | Type | Notes |
|---|---|---|
ai | *u8 |
Returns: i32
Parameters
| Name | Type | Notes |
|---|---|---|
ai | *u8 |
Returns: u32
Parameters
| Name | Type | Notes |
|---|---|---|
ai | *u8 |
Returns: *u8
Parameters
| Name | Type | Notes |
|---|---|---|
ai | *u8 |
Returns: ?*u8
Parameters
| Name | Type | Notes |
|---|---|---|
ai | *u8 |
Returns: ?*u8
Returns: *u8
Parameters
| Name | Type | Notes |
|---|---|---|
hints | *u8 |
Returns: unit
Constants
A resolver failure: the name does not exist (EAI_NONAME, EAI_NODATA).
Value: -4097
A temporary resolver failure; retrying may succeed (EAI_AGAIN).
Value: -4098
A permanent resolver failure (EAI_FAIL).
Value: -4099
The resolver ran out of memory (EAI_MEMORY).
Value: -4100
Any other resolver failure.
Value: -4101