avahi  0.6.31
domain.h File Reference

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...
 

Detailed Description

Domain name handling functions.

Definition in file domain.h.

Macro Definition Documentation

#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.

Definition at line 41 of file domain.h.

#define AVAHI_LABEL_MAX   64

Maximum size of an unescaped label.

Definition at line 44 of file domain.h.

Function Documentation

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.

Since
0.6.9
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.