@@ -137,7 +137,7 @@ DDTRACE_PUBLIC zend_string *ddtrace_ip_extraction_find(zval *server) {
137
137
}
138
138
139
139
ipaddr out ;
140
- __auto_type res = dd_parse_forwarded (value , & out );
140
+ struct extract_res res = dd_parse_forwarded (value , & out );
141
141
if (res .success ) {
142
142
return dd_ipaddr_to_zstr (& out );
143
143
}
@@ -160,7 +160,7 @@ DDTRACE_PUBLIC zend_string *ddtrace_ip_extraction_find(zval *server) {
160
160
zval * val = zend_hash_find (Z_ARR_P (server ), priority_header_map [i ].key );
161
161
if (val && Z_TYPE_P (val ) == IS_STRING && Z_STRLEN_P (val ) > 0 ) {
162
162
ipaddr out ;
163
- __auto_type res = (priority_header_map [i ].parse_fn )(Z_STR_P (val ), & out );
163
+ struct extract_res res = (priority_header_map [i ].parse_fn )(Z_STR_P (val ), & out );
164
164
if (res .success ) {
165
165
if (!res .is_private ) {
166
166
return dd_ipaddr_to_zstr (& out );
@@ -176,7 +176,7 @@ DDTRACE_PUBLIC zend_string *ddtrace_ip_extraction_find(zval *server) {
176
176
zend_string * value = dd_fetch_arr_str (server , _remote_addr_key );
177
177
if (value ) {
178
178
ipaddr out ;
179
- __auto_type res = dd_parse_plain (value , & out );
179
+ struct extract_res res = dd_parse_plain (value , & out );
180
180
if (res .success ) {
181
181
if (!res .is_private ) {
182
182
return dd_ipaddr_to_zstr (& out );
@@ -223,7 +223,6 @@ static zend_string *dd_ipaddr_to_zstr(const ipaddr *ipaddr) {
223
223
char buf [INET6_ADDRSTRLEN ];
224
224
const char * res = inet_ntop (ipaddr -> af , (char * )& ipaddr -> v4 , buf , sizeof (buf ));
225
225
if (!res ) {
226
- LOG (Warn , "inet_ntop failed" );
227
226
return NULL ;
228
227
}
229
228
return zend_string_init (res , strlen (res ), 0 );
@@ -459,11 +458,11 @@ static bool dd_is_private_v6(const struct in6_addr *addr) {
459
458
static const struct {
460
459
union {
461
460
struct in6_addr base ;
462
- unsigned __int128 base_i ;
461
+ uint64_t base_i [ 2 ] ;
463
462
};
464
463
union {
465
464
struct in6_addr mask ;
466
- unsigned __int128 mask_i ;
465
+ uint64_t mask_i [ 2 ] ;
467
466
};
468
467
} priv_ranges [] = {
469
468
{
@@ -489,12 +488,12 @@ static bool dd_is_private_v6(const struct in6_addr *addr) {
489
488
};
490
489
// clang-format on
491
490
492
- unsigned __int128 addr_i ;
493
- memcpy (& addr_i , addr -> s6_addr , sizeof (addr_i ));
491
+ uint64_t addr_i [ 2 ] ;
492
+ memcpy (& addr_i [ 0 ] , addr -> s6_addr , sizeof (addr_i ));
494
493
495
494
for (unsigned i = 0 ; i < ARRAY_SIZE (priv_ranges ); i ++ ) {
496
- __auto_type range = & priv_ranges [i ];
497
- if (( addr_i & range -> mask_i ) == range -> base_i ) {
495
+ if (( addr_i [ 0 ] & priv_ranges [ i ]. mask_i [ 0 ]) == priv_ranges [i ]. base_i [ 0 ] &&
496
+ ( addr_i [ 1 ] & priv_ranges [ i ]. mask_i [ 1 ] ) == priv_ranges [ i ]. base_i [ 1 ] ) {
498
497
return true;
499
498
}
500
499
}
0 commit comments