diff --git a/meshcore/meshinfo.c b/meshcore/meshinfo.c index 2988960..d57f588 100644 --- a/meshcore/meshinfo.c +++ b/meshcore/meshinfo.c @@ -298,6 +298,7 @@ int info_GetDefaultGateway(char* ifname, char** gateway) struct parser_result_field* p; struct parser_result* parse2; struct parser_result_field* p2; + int16_t test = 0x0001; *gateway = NULL; len = utilx_readfile2("/proc/net/route", &route); @@ -320,6 +321,13 @@ int info_GetDefaultGateway(char* ifname, char** gateway) temp = p2->NextResult->NextResult->data; for (i = 0; i < r; i++) { (*gateway)[r - (i + 1)] = util_hexToint(temp + (i * 2), 2); } 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; } } diff --git a/microscript/ILibDuktape_ScriptContainer.c b/microscript/ILibDuktape_ScriptContainer.c index 17b49fa..775e47b 100644 --- a/microscript/ILibDuktape_ScriptContainer.c +++ b/microscript/ILibDuktape_ScriptContainer.c @@ -2177,7 +2177,15 @@ void ILibDuktape_ScriptContainer_OS_Push(duk_context *ctx, void *chain) tokens = lines[i].split('\\t');\ 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);\ defaultGateways[tokens[headers['Iface']]] = gwAddr;\ }\