diff --git a/README.md b/README.md
index 3b84853..9fa10d1 100644
--- a/README.md
+++ b/README.md
@@ -435,6 +435,7 @@ I also created a nice little command line tool called [mmon][mmon-github-url] (
| | [0].speed | X | | X | X | | speed in MBit / s |
| | [0].carrierChanges | X | | | | | # changes up/down |
| si.networkInterfaceDefault(cb) | : string | X | X | X | X | X | get name of default network interface |
+| si.networkGatewayDefault(cb) | : string | X | X | X | X | X | get default network gateway |
| si.networkStats(ifaces,cb) | [{...}] | X | X | X | X | | current network stats of given interfaces
iface list: space or comma separated
iface parameter is optional
defaults to first external network interface,
Pass '*' for all interfaces |
| | [0].iface | X | X | X | X | | interface |
| | [0].operstate | X | X | X | X | | up / down |
diff --git a/docs/index.html b/docs/index.html
index 536300b..ad733b3 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -191,7 +191,7 @@
-
9,371
+
9,445
Lines of code
diff --git a/docs/network.html b/docs/network.html
index a55f65c..89865b7 100644
--- a/docs/network.html
+++ b/docs/network.html
@@ -215,6 +215,16 @@
X |
get name of default network interface |
+
+ | si.networkGatewayDefault(cb) |
+ : string |
+ X |
+ X |
+ X |
+ X |
+ X |
+ get default network gateway |
+
| si.networkStats(iface,cb) |
[{...}] |
diff --git a/lib/index.d.ts b/lib/index.d.ts
index c4991bf..f7f5435 100644
--- a/lib/index.d.ts
+++ b/lib/index.d.ts
@@ -643,6 +643,7 @@ export function disksIO(cb?: (data: Systeminformation.DisksIoData) => any): Prom
export function diskLayout(cb?: (data: Systeminformation.DiskLayoutData[]) => any): Promise;
export function networkInterfaceDefault(cb?: (data: string) => any): Promise;
+export function networkGatewayDefault(cb?: (data: string) => any): Promise;
export function networkInterfaces(cb?: (data: Systeminformation.NetworkInterfacesData[]) => any): Promise;
export function networkStats(ifaces?: string, cb?: (data: Systeminformation.NetworkStatsData[]) => any): Promise;
diff --git a/lib/index.js b/lib/index.js
index c2057be..07e62a0 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -347,6 +347,7 @@ exports.disksIO = filesystem.disksIO;
exports.diskLayout = filesystem.diskLayout;
exports.networkInterfaceDefault = network.networkInterfaceDefault;
+exports.networkGatewayDefault = network.networkGatewayDefault;
exports.networkInterfaces = network.networkInterfaces;
exports.networkStats = network.networkStats;
exports.networkConnections = network.networkConnections;
diff --git a/lib/network.js b/lib/network.js
index eb073f1..61afdb5 100644
--- a/lib/network.js
+++ b/lib/network.js
@@ -1002,3 +1002,73 @@ function networkConnections(callback) {
}
exports.networkConnections = networkConnections;
+
+function networkGatewayDefault(callback) {
+
+ return new Promise((resolve) => {
+ process.nextTick(() => {
+ let result = '';
+ if (_linux || _freebsd || _openbsd || _netbsd) {
+ let cmd = 'ip route get 1';
+ try {
+ exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {
+ if (!error) {
+ let lines = stdout.toString().split('\n');
+ const line = lines && lines[0] ? lines[0] : '';
+ let parts = line.split(' via ');
+ if (parts && parts[1]) {
+ parts = parts[1].split(' ');
+ result = parts[0];
+ }
+ if (callback) {
+ callback(result);
+ }
+ resolve(result);
+ }
+ });
+ } catch (e) {
+ if (callback) { callback(result); }
+ resolve(result);
+ }
+ }
+ if (_darwin) {
+ let cmd = 'route -n get default';
+ try {
+ exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) {
+ if (!error) {
+ let lines = stdout.toString().split('\n').map(line => line.trim());
+ result = util.getValue(lines, 'gateway');
+ if (callback) {
+ callback(result);
+ }
+ resolve(result);
+ }
+ });
+ } catch (e) {
+ if (callback) { callback(result); }
+ resolve(result);
+ }
+ }
+ if (_windows) {
+ try {
+ util.powerShell('Get-CimInstance -ClassName Win32_IP4RouteTable | Where-Object { $_.Destination -eq \'0.0.0.0\' -and $_.Mask -eq \'0.0.0.0\' }).InterfaceIndex')
+ .then(data => {
+ let lines = data.toString().split('\r\n');
+ result = lines && lines[0] ? lines[0] : '';
+ if (callback) {
+ callback(result);
+ }
+ resolve(result);
+
+ });
+ } catch (e) {
+ if (callback) { callback(result); }
+ resolve(result);
+ }
+ }
+ });
+ });
+}
+
+
+exports.networkGatewayDefault = networkGatewayDefault;