xref: /lighttpd1.4/src/sock_addr.h (revision f7018e3d)
1 #ifndef INCLUDED_SOCK_ADDR_H
2 #define INCLUDED_SOCK_ADDR_H
3 #include "first.h"
4 
5 #include <sys/types.h>
6 #include "sys-socket.h"
7 
8 #include "base_decls.h"
9 #include "buffer.h"
10 
11 
12 union sock_addr {
13 #ifdef HAVE_IPV6
14 	struct sockaddr_in6 ipv6;
15 #endif
16 	struct sockaddr_in ipv4;
17 #ifdef HAVE_SYS_UN_H
18 	struct sockaddr_un un;
19 #endif
20 	struct sockaddr plain;
21 };
22 
23 
24 __attribute_pure__
25 static inline int sock_addr_get_family (const sock_addr *saddr);
sock_addr_get_family(const sock_addr * saddr)26 static inline int sock_addr_get_family (const sock_addr *saddr) {
27 	return saddr->plain.sa_family;
28 }
29 
30 __attribute_pure__
31 unsigned short sock_addr_get_port (const sock_addr *saddr);
32 
33 __attribute_pure__
34 int sock_addr_is_addr_wildcard (const sock_addr *saddr);
35 
36 __attribute_pure__
37 int sock_addr_is_family_eq (const sock_addr *saddr1, const sock_addr *saddr2);
38 
39 __attribute_pure__
40 int sock_addr_is_port_eq (const sock_addr *saddr1, const sock_addr *saddr2);
41 
42 __attribute_pure__
43 int sock_addr_is_addr_eq (const sock_addr *saddr1, const sock_addr *saddr2);
44 
45 #if 0
46 __attribute_pure__
47 int sock_addr_is_addr_port_eq (const sock_addr *saddr1, const sock_addr *saddr2);
48 #endif
49 
50 __attribute_pure__
51 int sock_addr_is_addr_eq_bits(const sock_addr * restrict a, const sock_addr * restrict b, int bits);
52 
53 void sock_addr_set_port (sock_addr * restrict saddr, unsigned short port);
54 
55 int sock_addr_assign (sock_addr * restrict saddr, int family, unsigned short nport, const void * restrict naddr);
56 
57 int sock_addr_inet_pton(sock_addr * restrict saddr, const char * restrict str, int family, unsigned short port);
58 
59 const char * sock_addr_inet_ntop(const sock_addr * restrict saddr, char * restrict buf, socklen_t sz);
60 int sock_addr_inet_ntop_copy_buffer(buffer * restrict b, const sock_addr * restrict saddr);
61 int sock_addr_inet_ntop_append_buffer(buffer * restrict b, const sock_addr * restrict saddr);
62 int sock_addr_stringify_append_buffer(buffer * restrict b, const sock_addr * restrict saddr);
63 int sock_addr_nameinfo_append_buffer(buffer * restrict b, const sock_addr * restrict saddr, log_error_st * restrict errh);
64 
65 int sock_addr_from_buffer_hints_numeric(sock_addr * restrict saddr, socklen_t * restrict len, const buffer * restrict b, int family, unsigned short port, log_error_st * restrict errh);
66 int sock_addr_from_str_hints(sock_addr * restrict saddr, socklen_t * restrict len, const char * restrict str, int family, unsigned short port, log_error_st * restrict errh);
67 int sock_addr_from_str_numeric(sock_addr * restrict saddr, const char * restrict str, log_error_st * restrict errh);
68 
69 
70 #endif
71