avahi
0.7
|
Domain name handling functions. More...
#include <inttypes.h>
#include <sys/types.h>
#include <avahi-common/cdecl.h>
Go to the source code of this file.
Macros | |
#define | AVAHI_DOMAIN_NAME_MAX 1014 |
The maximum length of a a fully escaped domain name C string. More... | |
#define | AVAHI_LABEL_MAX 64 |
Maximum size of an unescaped label. More... | |
Functions | |
Normalization | |
char * | avahi_normalize_name (const char *s, char *ret_s, size_t size) |
Normalize a domain name into canonical form. More... | |
char * | avahi_normalize_name_strdup (const char *s) |
Normalize a domain name into canonical form. More... | |
Comparison | |
int | avahi_domain_equal (const char *a, const char *b) |
Return 1 when the specified domain names are equal, 0 otherwise. More... | |
unsigned | avahi_domain_hash (const char *name) |
Return some kind of hash value for the domain, useful for using domains as hash table keys. More... | |
Escaping | |
char * | avahi_unescape_label (const char **name, char *dest, size_t size) |
Read the first label from the textual domain name *name, unescape it and write it to dest, *name is changed to point to the next label. More... | |
char * | avahi_escape_label (const char *src, size_t src_length, char **ret_name, size_t *ret_size) |
Escape the domain name in *src and write it to *ret_name. More... | |
Validity Checks | |
int | avahi_is_valid_service_type_generic (const char *t) |
Return 1 when the specified string contains a valid generic DNS-SD service type (i.e. More... | |
int | avahi_is_valid_service_type_strict (const char *t) |
Return 1 when the specified string contains a valid strict DNS-SD service type (i.e. More... | |
int | avahi_is_valid_service_subtype (const char *t) |
Return 1 when the specified string contains a valid DNS-SD service subtype, 0 otherwise. More... | |
int | avahi_is_valid_domain_name (const char *t) |
Return 1 when the specified string contains a valid domain name, 0 otherwise. More... | |
int | avahi_is_valid_service_name (const char *t) |
Return 1 when the specified string contains a valid DNS-SD service name, 0 otherwise. More... | |
int | avahi_is_valid_host_name (const char *t) |
Return 1 when the specified string contains a valid non-FQDN host name (i.e. More... | |
int | avahi_is_valid_fqdn (const char *t) |
Return 1 when the specified string contains a valid FQDN host name (i.e. More... | |
DNS-SD service name handling | |
int | avahi_service_name_join (char *p, size_t size, const char *name, const char *type, const char *domain) |
Construct a valid complete DNS-SD service name from a name, a type and a domain. More... | |
int | avahi_service_name_split (const char *p, char *name, size_t name_size, char *type, size_t type_size, char *domain, size_t domain_size) |
Split a full service name into name, type and domain. More... | |
DNS-SD Subtype handling | |
const char * | avahi_get_type_from_subtype (const char *t) |
Return a pointer to the type section of a subtype i.e. More... | |
Domain name handling functions.
Definition in file domain.h.
#define AVAHI_DOMAIN_NAME_MAX 1014 |
The maximum length of a a fully escaped domain name C string.
This is calculated like this: RFC1034 mandates maximum length of FQDNs is 255. The maximum label length is 63. To minimize the number of (non-escaped) dots, we comprise our maximum-length domain name of four labels á 63 characters plus three inner dots. Escaping the four labels quadruples their length at maximum. An escaped domain name has the therefore the maximum length of 63*4*4+3=1011. A trailing NUL and perhaps two unnecessary dots leading and trailing the string brings us to 1014.
#define AVAHI_LABEL_MAX 64 |
int avahi_domain_equal | ( | const char * | a, |
const char * | b | ||
) |
Return 1 when the specified domain names are equal, 0 otherwise.
unsigned avahi_domain_hash | ( | const char * | name | ) |
Return some kind of hash value for the domain, useful for using domains as hash table keys.
char* avahi_escape_label | ( | const char * | src, |
size_t | src_length, | ||
char ** | ret_name, | ||
size_t * | ret_size | ||
) |
Escape the domain name in *src and write it to *ret_name.
const char* avahi_get_type_from_subtype | ( | const char * | t | ) |
Return a pointer to the type section of a subtype i.e.
_foo._sub._bar._tcp => _bar._tcp
int avahi_is_valid_domain_name | ( | const char * | t | ) |
Return 1 when the specified string contains a valid domain name, 0 otherwise.
int avahi_is_valid_fqdn | ( | const char * | t | ) |
Return 1 when the specified string contains a valid FQDN host name (i.e.
with more than one label and non-numerical), 0 otherwise.
int avahi_is_valid_host_name | ( | const char * | t | ) |
Return 1 when the specified string contains a valid non-FQDN host name (i.e.
without dots), 0 otherwise
int avahi_is_valid_service_name | ( | const char * | t | ) |
Return 1 when the specified string contains a valid DNS-SD service name, 0 otherwise.
int avahi_is_valid_service_subtype | ( | const char * | t | ) |
Return 1 when the specified string contains a valid DNS-SD service subtype, 0 otherwise.
int avahi_is_valid_service_type_generic | ( | const char * | t | ) |
Return 1 when the specified string contains a valid generic DNS-SD service type (i.e.
a series of words starting with "_"), 0 otherwise
int avahi_is_valid_service_type_strict | ( | const char * | t | ) |
Return 1 when the specified string contains a valid strict DNS-SD service type (i.e.
consisting of only two words, the latter being either _udp or _tcp), 0 otherwise
char* avahi_normalize_name | ( | const char * | s, |
char * | ret_s, | ||
size_t | size | ||
) |
Normalize a domain name into canonical form.
This drops trailing dots and removes useless backslash escapes.
char* avahi_normalize_name_strdup | ( | const char * | s | ) |
Normalize a domain name into canonical form.
This drops trailing dots and removes useless backslash escapes. avahi_free() the result!
int avahi_service_name_join | ( | char * | p, |
size_t | size, | ||
const char * | name, | ||
const char * | type, | ||
const char * | domain | ||
) |
Construct a valid complete DNS-SD service name from a name, a type and a domain.
int avahi_service_name_split | ( | const char * | p, |
char * | name, | ||
size_t | name_size, | ||
char * | type, | ||
size_t | type_size, | ||
char * | domain, | ||
size_t | domain_size | ||
) |
Split a full service name into name, type and domain.
char* avahi_unescape_label | ( | const char ** | name, |
char * | dest, | ||
size_t | size | ||
) |
Read the first label from the textual domain name *name, unescape it and write it to dest, *name is changed to point to the next label.