Solaris: Programmatic interface to ifconfig?

2019-02-19 01:06发布

问题:

I'm looking for a programmatic interface to the Solaris ifconfig(1M) command.

Apparently Linux has the getifaddrs(3) command, but as far as I can tell this has not been ported to Solaris.

Short of attempting to use the code at the link above, is there any way to determine ifconfig(1M)-type data (network interface presence, state, etc.) without forking the system command and parsing the output?

回答1:

I have an implementation here, IPv4-only based on SIOCGIFCONF ioctl()'s and IP family agnostic version using SIOCGLIFCONF:

http://code.google.com/p/openpgm/source/browse/trunk/openpgm/pgm/getifaddrs.c

Tested on SPARC/Solaris 10 and x86/OpenSolaris 2008.11 & 2009.06, LGPL 2.1 license.



回答2:

getifaddrs() was recently integrated into the source code for future OpenSolaris & Solaris releases, but that doesn't help your code run on current releases:

  • 6731945 need BSD getifaddrs() API
  • OpenSolaris source: usr/src/lib/libsocket/inet/getifaddrs.c

Until then you'll need to use the SIOCGLIFCONF ioctls, which you should find lots of examples of in open source code, including the link you posted.



回答3:

Real men use ioctl ;)

Take a look at if(7P).