Get a list of network interfaces:
- { lo0:
- [ { address: 'fe80::1', netmask: 'ffff:ffff:ffff:ffff::',
- family: 'IPv6', internal: true },
- { address: '127.0.0.1', netmask: '255.0.0.0',
- family: 'IPv4', internal: true },
- { address: '::1', netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
- family: 'IPv6', internal: true } ],
- en1:
- [ { address: 'fe80::226:8ff:fedc:1dd', netmask: 'ffff:ffff:ffff:ffff::',
- family: 'IPv6', internal: false },
- { address: '10.0.1.6', netmask: '255.255.255.0',
- family: 'IPv4', internal: false } ],
- vmnet1:
- [ { address: '192.168.252.1', netmask: '255.255.255.0',
- family: 'IPv4', internal: false } ],
- vmnet8:
- [ { address: '192.168.207.1', netmask: '255.255.255.0',
- family: 'IPv4', internal: false } ] }
+ { lo:
+ [ { address: '127.0.0.1',
+ netmask: '255.0.0.0',
+ family: 'IPv4',
+ mac: '00:00:00:00:00:00',
+ internal: true },
+ { address: '::1',
+ netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
+ family: 'IPv6',
+ mac: '00:00:00:00:00:00',
+ internal: true } ],
+ eth0:
+ [ { address: '192.168.1.108',
+ netmask: '255.255.255.0',
+ family: 'IPv4',
+ mac: '01:02:03:0a:0b:0c',
+ internal: false },
+ { address: 'fe80::a00:27ff:fe4e:66a1',
+ netmask: 'ffff:ffff:ffff:ffff::',
+ family: 'IPv6',
+ mac: '01:02:03:0a:0b:0c',
+ internal: false } ] }
## os.EOL
int count, i;
char ip[INET6_ADDRSTRLEN];
char netmask[INET6_ADDRSTRLEN];
+ char mac[18];
Local<Object> ret, o;
Local<String> name, family;
Local<Array> ifarr;
ret->Set(name, ifarr);
}
+ snprintf(mac,
+ 18,
+ "%02x:%02x:%02x:%02x:%02x:%02x",
+ static_cast<unsigned char>(interfaces[i].phys_addr[0]),
+ static_cast<unsigned char>(interfaces[i].phys_addr[1]),
+ static_cast<unsigned char>(interfaces[i].phys_addr[2]),
+ static_cast<unsigned char>(interfaces[i].phys_addr[3]),
+ static_cast<unsigned char>(interfaces[i].phys_addr[4]),
+ static_cast<unsigned char>(interfaces[i].phys_addr[5]));
+
if (interfaces[i].address.address4.sin_family == AF_INET) {
uv_ip4_name(&interfaces[i].address.address4, ip, sizeof(ip));
uv_ip4_name(&interfaces[i].netmask.netmask4, netmask, sizeof(netmask));
o->Set(String::New("address"), String::New(ip));
o->Set(String::New("netmask"), String::New(netmask));
o->Set(String::New("family"), family);
+ o->Set(String::New("mac"), String::New(mac));
const bool internal = interfaces[i].is_internal;
o->Set(String::New("internal"),