iPXE
|
DNS protocol. More...
Go to the source code of this file.
Data Structures | |
struct | dns_name |
An RFC1035-encoded DNS name. More... | |
struct | dns_header |
A DNS packet header. More... | |
struct | dns_question |
A DNS question. More... | |
struct | dns_rr_common |
A DNS resource record. More... | |
struct | dns_rr_a |
A DNS "A" record. More... | |
struct | dns_rr_aaaa |
A DNS "AAAA" record. More... | |
struct | dns_rr_cname |
A DNS "CNAME" record. More... | |
union | dns_rr |
A DNS resource record. More... | |
Macros | |
#define | DNS_PORT 53 |
DNS server port. More... | |
#define | DNS_IS_COMPRESSED(byte) ( (byte) & 0xc0 ) |
Test for a DNS compression pointer. More... | |
#define | DNS_COMPRESSED_OFFSET(word) ( (word) & ~0xc000 ) |
Extract DNS compression pointer. More... | |
#define | DNS_LABEL_LEN(byte) ( (byte) & ~0xc0 ) |
Extract DNS label length. More... | |
#define | DNS_MAX_LABEL_LEN 0x3f |
Maximum length of a single DNS label. More... | |
#define | DNS_MAX_NAME_LEN 255 |
Maximum length of a DNS name (mandated by RFC1035 section 2.3.4) More... | |
#define | DNS_MAX_CNAME_RECURSION 32 |
Maximum depth of CNAME recursion. More... | |
#define | DNS_FLAG_RD 0x0100 |
Recursion desired flag. More... | |
#define | DNS_CLASS_IN 1 |
DNS class "IN". More... | |
#define | DNS_TYPE_A 1 |
Type of a DNS "A" record. More... | |
#define | DNS_TYPE_AAAA 28 |
Type of a DNS "AAAA" record. More... | |
#define | DNS_TYPE_CNAME 5 |
Type of a DNS "NAME" record. More... | |
Functions | |
FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
int | dns_encode (const char *string, struct dns_name *name) |
Encode a DNS name using RFC1035 encoding. More... | |
int | dns_decode (struct dns_name *name, char *data, size_t len) |
Decode RFC1035-encoded DNS name. More... | |
int | dns_compare (struct dns_name *first, struct dns_name *second) |
Compare DNS names for equality. More... | |
int | dns_copy (struct dns_name *src, struct dns_name *dst) |
Copy a DNS name. More... | |
int | dns_skip (struct dns_name *name) |
Skip RFC1035-encoded DNS name. More... | |
DNS protocol.
Definition in file dns.h.
#define DNS_MAX_LABEL_LEN 0x3f |
#define DNS_MAX_NAME_LEN 255 |
#define DNS_MAX_CNAME_RECURSION 32 |
FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
int dns_encode | ( | const char * | string, |
struct dns_name * | name | ||
) |
Encode a DNS name using RFC1035 encoding.
string | DNS name as a string |
name | DNS name to fill in |
len | Length of DNS name, or negative error |
Definition at line 100 of file dns.c.
References c, DNS_MAX_LABEL_LEN, EINVAL, end, len, name, and start.
Referenced by apply_dns_search(), dns_encode_fail_okx(), dns_encode_okx(), and dns_resolv().
Decode RFC1035-encoded DNS name.
name | DNS name |
data | Output buffer |
len | Length of output buffer |
len | Length of decoded DNS name, or negative error |
Definition at line 216 of file dns.c.
References data, dns_label(), EINVAL, len, memcpy(), name, and offset.
Referenced by dns_decode_fail_okx(), dns_decode_okx(), dns_list_okx(), dns_name(), dns_progress(), and format_dnssl_setting().
Compare DNS names for equality.
first | First DNS name |
second | Second DNS name |
rc | Return status code |
Definition at line 267 of file dns.c.
References dns_label(), EINVAL, ENOENT, first, len, second, and tolower().
Referenced by dns_compare_fail_okx(), dns_compare_okx(), and dns_xfer_deliver().
Copy a DNS name.
src | Source DNS name |
dst | Destination DNS name |
len | Length of copied DNS name, or negative error |
Definition at line 321 of file dns.c.
References dns_name::data, dns_label(), EINVAL, len, dns_name::len, memcpy(), dns_name::offset, and src.
Referenced by dns_copy_fail_okx(), dns_copy_okx(), dns_question(), and dns_xfer_deliver().
int dns_skip | ( | struct dns_name * | name | ) |
Skip RFC1035-encoded DNS name.
name | DNS name |
offset | Offset to next name, or negative error |
Definition at line 364 of file dns.c.
References dns_label(), EINVAL, name, and offset.
Referenced by dns_list_okx(), dns_skip_search(), and dns_xfer_deliver().