From a714468636176819f77098e7bf92d69629ad8ab6 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Wed, 18 Mar 2020 16:41:21 -0700 Subject: [PATCH] Added gateway support to MeshAGent.NetInfo and OS.networkInterfaces() for macOS --- meshcore/agentcore.c | 1 + microscript/ILibDuktape_ScriptContainer.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/meshcore/agentcore.c b/meshcore/agentcore.c index afca018..463d0c3 100644 --- a/meshcore/agentcore.c +++ b/meshcore/agentcore.c @@ -1486,6 +1486,7 @@ duk_ret_t ILibDuktape_MeshAgent_NetInfo(duk_context *ctx) if(ni[tmp[0]][i].family == 'IPv4')\ {\ var ret = {v4addr: ni[tmp[0]][i].address, v4mask: ni[tmp[0]][i].netmask, mac: ni[tmp[0]][i].mac.split(':').join(''), gatewaymac: tmp[1], name: tmp[0]};\ + if(ni[tmp[0]][i].gateway != null) { ret['gateway'] = ni[tmp[0]][i].gateway; }\ if(dvname != '') {ret['desc'] = dvname;}\ return({netif: {0: ret}});\ }\ diff --git a/microscript/ILibDuktape_ScriptContainer.c b/microscript/ILibDuktape_ScriptContainer.c index 6e6e25e..b552883 100644 --- a/microscript/ILibDuktape_ScriptContainer.c +++ b/microscript/ILibDuktape_ScriptContainer.c @@ -2007,6 +2007,12 @@ void ILibDuktape_ScriptContainer_OS_Push(duk_context *ctx, void *chain) var child = child_process.execFile('/bin/sh', ['sh']);\ child.stdout._lines = '';\ child.stdout.on('data', function (chunk) { this._lines += chunk.toString(); });\ + child.stdin.write(\"route get default | grep : | tr '\\\\n' '`' | awk -F'`' '{\" + ' printf \"{\"; for(i=1;i1?\", \":\"\"),B[1], B[2]; } printf \"}\"; ' + \"}'\\nexit\\n\");\ + child.waitExit();\ + var gwinfo=JSON.parse(child.stdout._lines.trim());\ + child = child_process.execFile('/bin/sh', ['sh']);\ + child.stdout._lines = '';\ + child.stdout.on('data', function (chunk) { this._lines += chunk.toString(); });\ child.stdin.write('ifconfig\\nexit\\n');\ child.waitExit();\ var adapters = [];\ @@ -2064,7 +2070,11 @@ void ILibDuktape_ScriptContainer_OS_Push(duk_context *ctx, void *chain) retval[adapter.device] = [];\ if (adapter.inet)\ {\ - retval[adapter.device].push({ address: adapter.inet, netmask : adapter.netmask, mac : adapter.mac, family : 'IPv4' });\ + if(adapter.device == gwinfo.interface && gwinfo.gateway != null)\ + {\ + adapter.gateway = gwinfo.gateway;\ + }\ + retval[adapter.device].push({ address: adapter.inet, netmask : adapter.netmask, mac : adapter.mac, gateway: adapter.gateway, family : 'IPv4' });\ }\ if (adapter.inet6)\ {\