mirror of
https://github.com/Ylianst/MeshAgent
synced 2025-12-13 14:53:46 +00:00
Fixed byte order when parsing gatway address on BigEndian platforms
This commit is contained in:
@@ -298,6 +298,7 @@ int info_GetDefaultGateway(char* ifname, char** gateway)
|
|||||||
struct parser_result_field* p;
|
struct parser_result_field* p;
|
||||||
struct parser_result* parse2;
|
struct parser_result* parse2;
|
||||||
struct parser_result_field* p2;
|
struct parser_result_field* p2;
|
||||||
|
int16_t test = 0x0001;
|
||||||
|
|
||||||
*gateway = NULL;
|
*gateway = NULL;
|
||||||
len = utilx_readfile2("/proc/net/route", &route);
|
len = utilx_readfile2("/proc/net/route", &route);
|
||||||
@@ -320,6 +321,13 @@ int info_GetDefaultGateway(char* ifname, char** gateway)
|
|||||||
temp = p2->NextResult->NextResult->data;
|
temp = p2->NextResult->NextResult->data;
|
||||||
for (i = 0; i < r; i++) { (*gateway)[r - (i + 1)] = util_hexToint(temp + (i * 2), 2); }
|
for (i = 0; i < r; i++) { (*gateway)[r - (i + 1)] = util_hexToint(temp + (i * 2), 2); }
|
||||||
ILibDestructParserResults(parse2);
|
ILibDestructParserResults(parse2);
|
||||||
|
if (r == 4 && ((char*)&test)[0] == 0)
|
||||||
|
{
|
||||||
|
// Swap Byte Order
|
||||||
|
int j = ((int*)*gateway)[0];
|
||||||
|
j = (j & 0x000000FFU) << 24 | (j & 0x0000FF00U) << 8 | (j & 0x00FF0000U) >> 8 | (j & 0xFF000000U) >> 24;
|
||||||
|
((int*)*gateway)[0] = j;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2177,7 +2177,15 @@ void ILibDuktape_ScriptContainer_OS_Push(duk_context *ctx, void *chain)
|
|||||||
tokens = lines[i].split('\\t');\
|
tokens = lines[i].split('\\t');\
|
||||||
if (tokens[headers['Mask']] == '00000000')\
|
if (tokens[headers['Mask']] == '00000000')\
|
||||||
{\
|
{\
|
||||||
var gw = Buffer.from(tokens[headers['Gateway']], 'hex').readUInt32LE();\
|
var gw;\
|
||||||
|
if(require('os').endianness()=='LE')\
|
||||||
|
{\
|
||||||
|
gw = Buffer.from(tokens[headers['Gateway']], 'hex').readUInt32LE();\
|
||||||
|
}\
|
||||||
|
else\
|
||||||
|
{\
|
||||||
|
gw = Buffer.from(tokens[headers['Gateway']], 'hex').readUInt32BE();\
|
||||||
|
}\
|
||||||
var gwAddr = ((gw >> 24) & 255) + '.' + ((gw >> 16) & 255) + '.' + ((gw >> 8) & 255) + '.' + (gw & 255);\
|
var gwAddr = ((gw >> 24) & 255) + '.' + ((gw >> 16) & 255) + '.' + ((gw >> 8) & 255) + '.' + (gw & 255);\
|
||||||
defaultGateways[tokens[headers['Iface']]] = gwAddr;\
|
defaultGateways[tokens[headers['Iface']]] = gwAddr;\
|
||||||
}\
|
}\
|
||||||
|
|||||||
Reference in New Issue
Block a user