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.