blob: 03eae9c835998f2249027d163d4df4d3576ae87a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#ifndef SH_IPVX_H
#define SH_IPVX_H
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#if defined(USE_IPVX)
#define SH_SSP_LEN(a) ((a)->ss_family == AF_INET) ? \
sizeof(struct sockaddr_in) : \
sizeof(struct sockaddr_in6)
#define SH_SS_LEN(a) ((a).ss_family == AF_INET) ? \
sizeof(struct sockaddr_in) : \
sizeof(struct sockaddr_in6)
#else
#define SH_SSP_LEN(a) sizeof(struct sockaddr_in)
#define SH_SS_LEN(a) sizeof(struct sockaddr_in)
#endif
struct sh_sockaddr {
int ss_family;
struct sockaddr_in sin;
#if defined(USE_IPVX)
struct sockaddr_in6 sin6;
#endif
};
/* Cast a sockaddress
*/
struct sockaddr * sh_ipvx_sockaddr_cast (struct sh_sockaddr * ss);
/* Compare with any_address
*/
int sh_ipvx_isany (struct sh_sockaddr * a);
/* Compare two addresses
*/
int sh_ipvx_cmp(struct sh_sockaddr * a, struct sh_sockaddr * b);
/* Set the port
*/
int sh_ipvx_set_port(struct sh_sockaddr * ss, int port);
/* Get the port
*/
int sh_ipvx_get_port(struct sh_sockaddr * ss);
/* Save a sockaddress
*/
void sh_ipvx_save(struct sh_sockaddr * ss, int sa_family, struct sockaddr * sa);
/* Ascii numerical sockaddress
*/
char * sh_ipvx_print_sockaddr (struct sockaddr * sa, int sa_family);
/* Determine whether the given address is numeric
*/
int sh_ipvx_is_numeric (const char * addr);
/* Convert a network address to an ascii numeric address
*/
int sh_ipvx_ntoa (char * name, size_t name_size, struct sh_sockaddr * ss);
/* Convert an ascii numeric address to a network address
*/
int sh_ipvx_aton (const char * name, struct sh_sockaddr * ss);
/* Try to find canonical hostname
*/
char * sh_ipvx_canonical(const char * hostname, char * numeric, size_t nlen);
/* Convert address to hostname
*/
char * sh_ipvx_addrtoname(struct sh_sockaddr * ss);
/* Try a reverse lookup
*/
int sh_ipvx_reverse_check_ok (char * peer, int port, struct sh_sockaddr * ss);
#endif
|