mirror of
https://github.com/bol-van/zapret.git
synced 2025-01-06 08:20:34 +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))
|
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;
|
uint16_t port = ((struct sockaddr_in6*)a)->sin6_port;
|
||||||
a->ss_family = AF_INET;
|
a->ss_family = AF_INET;
|
||||||
((struct sockaddr_in*)a)->sin_addr.s_addr = ip4;
|
((struct sockaddr_in*)a)->sin_addr.s_addr = ip4;
|
||||||
|
@ -55,3 +55,16 @@ typedef struct
|
|||||||
} port_filter;
|
} port_filter;
|
||||||
bool pf_in_range(uint16_t port, const port_filter *pf);
|
bool pf_in_range(uint16_t port, const port_filter *pf);
|
||||||
bool pf_parse(const char *s, 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