mirror of
https://github.com/bol-van/zapret.git
synced 2024-11-11 17:29:16 +05:00
fixing -Wstrict-aliasing (part 1)
This commit is contained in:
parent
a6aff5c0c7
commit
9af54b09dd
@ -154,7 +154,7 @@ bool saconvmapped(struct sockaddr_storage *a)
|
||||
{
|
||||
if ((a->ss_family == AF_INET6) && saismapped((struct sockaddr_in6*)a))
|
||||
{
|
||||
uint32_t ip4 = *(uint32_t*)(((struct sockaddr_in6*)a)->sin6_addr.s6_addr+12);
|
||||
uint32_t ip4 = IN6_EXTRACT_MAP4(((struct sockaddr_in6*)a)->sin6_addr.s6_addr);
|
||||
uint16_t port = ((struct sockaddr_in6*)a)->sin6_port;
|
||||
a->ss_family = AF_INET;
|
||||
((struct sockaddr_in*)a)->sin_addr.s_addr = ip4;
|
||||
|
@ -55,3 +55,16 @@ typedef struct
|
||||
} port_filter;
|
||||
bool pf_in_range(uint16_t port, const port_filter *pf);
|
||||
bool pf_parse(const char *s, port_filter *pf);
|
||||
|
||||
#ifndef IN_LOOPBACK
|
||||
#define IN_LOOPBACK(a) ((((uint32_t) (a)) & 0xff000000) == 0x7f000000)
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define IN6_EXTRACT_MAP4(a) \
|
||||
(__extension__ \
|
||||
({ const struct in6_addr *__a = (const struct in6_addr *) (a); \
|
||||
(((const uint32_t *) (__a))[3]); }))
|
||||
#else
|
||||
#define IN6_EXTRACT_MAP4(a) (((const uint32_t *) (a))[3])
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user