/ifaddrs4u

Cross-platform, multi-language access to network interface and address information

Primary LanguageC++Apache License 2.0Apache-2.0

ifaddrs4u - Exploring Network Interfaces, Universally

ifaddrs4u is a universal, platform-independent tool for obtaining information about network interfaces (adapters) and their hardware, IPv4, and IPv6 addresses and properties and configuration flags without knowing the details of getifaddrs, GetAdaptersAddresses, or ioctl, etc.

The name uses a common Java library idiom of the library purpose followed by "4" (an English homonym of "for") followed by the language (normally "j", but "net" is also popular for C#), e.g. log4j, neo4j, log4net, etc. In this case, the "u" means "universal," but you can also think of it as "you." "ifaddrs" refers to the fact that this library primarily wraps the Unix/Linux function getifaddrs and its struct ifaddrs (on Windows, it wraps GetAdaptersAddresses / PIP_ADAPTER_ADDRESSES). See here (or here) for more information on these platform-specific libraries.

This project contains the following language-specific libraries (and more may be added in the future):

This is the core library upon which all the other language-specific libraries depend. It's based on C++17 and can be used directly, if desired, as either a static library (.a / .lib) or a shared/dynamic library (.so / .dylib / .dll). If used as a shared library, you must also load a C++17 or newer standard library. For specific information about building and using this library, see ifaddrs4cpp/README.rst.

This is a Java library that makes use of a combination of standard JDK classes and JNI wrappers around ifaddrs4cpp. It is designed to be API-similar to ifaddrs4cpp, but there are some necessary differences to meet Java rules, requirements, and best practices. For specific information about building and using this library, see ifaddrs4j/README.rst.

This is an incomplete work in progress. More information soon.

This is a Pyton library that majes use of a combination of standard Python classes and Python native wrappers around ifaddrs4cpp. It is designed to be API-similar to ifaddrs4cpp, but there are some necessary differences to meet Python rules, requirements, and best practices. For specific information about building and using this library, see ifaddrs4py/README.rst.

This entire project and all of it language-specific libraries are governed by the Apache License, Version 2.0.