avahi  0.7
address.h
Go to the documentation of this file.
1 #ifndef fooaddresshfoo
2 #define fooaddresshfoo
3 
4 /***
5  This file is part of avahi.
6 
7  avahi is free software; you can redistribute it and/or modify it
8  under the terms of the GNU Lesser General Public License as
9  published by the Free Software Foundation; either version 2.1 of the
10  License, or (at your option) any later version.
11 
12  avahi is distributed in the hope that it will be useful, but WITHOUT
13  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
15  Public License for more details.
16 
17  You should have received a copy of the GNU Lesser General Public
18  License along with avahi; if not, write to the Free Software
19  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
20  USA.
21 ***/
22 
25 #include <inttypes.h>
26 #include <sys/types.h>
27 
28 #include <avahi-common/cdecl.h>
29 
30 AVAHI_C_DECL_BEGIN
31 
33 typedef int AvahiProtocol;
34 
36 typedef int AvahiIfIndex;
37 
39 enum {
43 };
44 
46 enum {
48 };
49 
51 #define AVAHI_ADDRESS_STR_MAX 40 /* IPv6 Max = 4*8 + 7 + 1 for NUL */
52 
54 #define AVAHI_IF_VALID(ifindex) (((ifindex) >= 0) || ((ifindex) == AVAHI_IF_UNSPEC))
55 
57 #define AVAHI_PROTO_VALID(protocol) (((protocol) == AVAHI_PROTO_INET) || ((protocol) == AVAHI_PROTO_INET6) || ((protocol) == AVAHI_PROTO_UNSPEC))
58 
60 typedef struct AvahiIPv4Address {
61  uint32_t address;
63 
65 typedef struct AvahiIPv6Address {
66  uint8_t address[16];
68 
70 typedef struct AvahiAddress {
73  union {
76  uint8_t data[1];
77  } data;
78 } AvahiAddress;
79 
83 int avahi_address_cmp(const AvahiAddress *a, const AvahiAddress *b);
84 
90 char *avahi_address_snprint(char *ret_s, size_t length, const AvahiAddress *a);
91 
95 AvahiAddress *avahi_address_parse(const char *s, AvahiProtocol af, AvahiAddress *ret_addr);
96 
101 char* avahi_reverse_lookup_name(const AvahiAddress *a, char *ret_s, size_t length);
108 
111 
113 const char* avahi_proto_to_string(AvahiProtocol proto);
114 
117 AVAHI_C_DECL_END
118 
119 #endif
uint32_t address
Address data in network byte order.
Definition: address.h:61
int AvahiIfIndex
Numeric network interface index.
Definition: address.h:36
Protocol (address family) independent address structure.
Definition: address.h:70
AvahiProtocol proto
Address family.
Definition: address.h:71
int AvahiProtocol
Protocol family specification, takes the values AVAHI_PROTO_INET, AVAHI_PROTO_INET6, AVAHI_PROTO_UNSPEC.
Definition: address.h:33
AvahiIPv6Address ipv6
Address when IPv6.
Definition: address.h:74
char * avahi_address_snprint(char *ret_s, size_t length, const AvahiAddress *a)
Convert the specified address *a to a human readable character string, use AVAHI_ADDRESS_STR_MAX to a...
An IPv4 address.
Definition: address.h:60
An IPv6 address.
Definition: address.h:65
struct AvahiAddress AvahiAddress
Protocol (address family) independent address structure.
struct AvahiIPv4Address AvahiIPv4Address
An IPv4 address.
AvahiAddress * avahi_address_parse(const char *s, AvahiProtocol af, AvahiAddress *ret_addr)
Convert the specified human readable character string to an address structure.
int avahi_address_cmp(const AvahiAddress *a, const AvahiAddress *b)
Compare two addresses.
struct AvahiIPv6Address AvahiIPv6Address
An IPv6 address.
AvahiIPv4Address ipv4
Address when IPv4.
Definition: address.h:75
Unspecified/all interface(s)
Definition: address.h:47
int avahi_proto_to_af(AvahiProtocol proto)
Map AVAHI_PROTO_xxx constants to Unix AF_xxx constants.
Unspecified/all protocol(s)
Definition: address.h:42
const char * avahi_proto_to_string(AvahiProtocol proto)
Return a textual representation of the specified protocol number.
AvahiProtocol avahi_af_to_proto(int af)
Map Unix AF_xxx constants to AVAHI_PROTO_xxx constants.