Lines 29-83
Link Here
|
29 |
#include <mailutils/cidr.h> |
29 |
#include <mailutils/cidr.h> |
30 |
#include <mailutils/errno.h> |
30 |
#include <mailutils/errno.h> |
31 |
static void |
|
|
32 |
uint32_to_bytes (unsigned char *bytes, uint32_t u) |
33 |
{ |
34 |
int i; |
35 |
|
36 |
for (i = 0; i < 4; i++) |
37 |
{ |
38 |
bytes[i] = u & 0xff; |
39 |
u >>= 8; |
40 |
} |
41 |
} |
42 |
|
43 |
int |
31 |
int |
44 |
_mu_inaddr_to_bytes (int af, void *buf, unsigned char *bytes) |
32 |
_mu_inaddr_to_bytes (int af, void *buf, unsigned char *bytes) |
45 |
{ |
33 |
{ |
46 |
uint32_t u; |
34 |
size_t len; |
47 |
switch (af) |
35 |
switch (af) |
48 |
{ |
36 |
{ |
49 |
case AF_INET: |
37 |
case AF_INET: |
50 |
memcpy (&u, buf, sizeof u); |
38 |
len = 4; |
51 |
uint32_to_bytes (bytes, u); |
39 |
break; |
52 |
return 4; |
40 |
|
53 |
|
|
|
54 |
#ifdef MAILUTILS_IPV6 |
41 |
#ifdef MAILUTILS_IPV6 |
55 |
case AF_INET6: |
42 |
case AF_INET6: |
56 |
memcpy (bytes, buf, 16); |
43 |
len = 16; |
57 |
return 16; |
44 |
break; |
58 |
#endif |
45 |
#endif |
|
|
46 |
|
47 |
default: |
48 |
len = 0; |
59 |
} |
49 |
} |
60 |
return 0; |
50 |
memcpy (bytes, buf, len); |
|
|
51 |
return len; |
61 |
} |
52 |
} |
62 |
int |
53 |
int |
63 |
_mu_sockaddr_to_bytes (unsigned char *bytes, struct sockaddr const *sa) |
54 |
_mu_sockaddr_to_bytes (unsigned char *bytes, struct sockaddr const *sa) |
64 |
{ |
55 |
{ |
|
|
56 |
void *buf; |
65 |
switch (sa->sa_family) |
57 |
switch (sa->sa_family) |
66 |
{ |
58 |
{ |
67 |
case AF_INET: |
59 |
case AF_INET: |
68 |
uint32_to_bytes (bytes, ((struct sockaddr_in*)sa)->sin_addr.s_addr); |
60 |
buf = &(((struct sockaddr_in*)sa)->sin_addr.s_addr); |
69 |
return 4; |
61 |
break; |
70 |
#ifdef MAILUTILS_IPV6 |
62 |
#ifdef MAILUTILS_IPV6 |
71 |
case AF_INET6: |
63 |
case AF_INET6: |
72 |
memcpy (bytes, &((struct sockaddr_in6*)sa)->sin6_addr, 16); |
64 |
buf = &(((struct sockaddr_in6*)sa)->sin6_addr); |
73 |
return 16; |
65 |
break; |
74 |
#endif |
66 |
#endif |
|
|
67 |
|
68 |
default: |
69 |
return 0; |
75 |
} |
70 |
} |
76 |
return 0; |
71 |
return _mu_inaddr_to_bytes (sa->sa_family, buf, bytes); |
77 |
} |
72 |
} |
78 |
int |
73 |
int |