LeoBorai/local-ip-address

Retrieve system's local IP address and Network Interfaces/Adapters on FreeBSD, Linux, macOS and Windows

Rust

148

143 commits

updated Jun 29, 2026

See the code

README

local-ip-address

Retrieve system's local IP address and Network Interfaces/Adapters on Linux, Windows, and macOS (and other BSD-based systems).

Crates.io Documentation Build Clippy Formatter

Usage

Get the local IP address of your system by executing the local_ip function:

use local_ip_address::local_ip;

fn main() {
    let my_local_ip = local_ip().unwrap();

    println!("This is my local IP address: {:?}", my_local_ip);
}

Retrieve all the available network interfaces from both, the AF_INET and the AF_INET6 family by executing the list_afinet_netifas function:

use local_ip_address::list_afinet_netifas;

fn main() {
    let network_interfaces = list_afinet_netifas().unwrap();

    for (name, ip) in network_interfaces.iter() {
        println!("{}:\t{:?}", name, ip);
    }
}

Underlying approach on retrieving network interfaces or the local IP address may differ based on the running operative system.

OSApproach
LinuxEstablishes a Netlink socket interchange to retrieve network interfaces
BSD-basedUses of getifaddrs to retrieve network interfaces
WindowsConsumes Win32 API's to retrieve the network adapters table

Operating System Support

Current supported platforms include:

  • Linux (requires at least v0.1.0);
  • macOS (requires at least v0.1.0);
  • Windows (requires at least v0.3.0);
  • Other BSD-based (requires at least v0.5.0); including:
    • FreeBSD
    • OpenBSD
    • NetBSD
    • DragonFly

Please note that we only test the BSD implementation of this on macOS and FreeBSD, under the assumption that other BSD-based systems will behave similarly. If you have any complications using this library on the other BSD-based, please create an issue.

Release

In order to create a release you must push a Git tag as follows

git tag -a <version> -m <message>

Example

git tag -a v0.1.0 -m "First release"

Tags must follow semver conventions Tags must be prefixed with a lowercase v letter.

Then push tags as follows:

git push origin main --follow-tags

Contributing

Every contribution to this project is welcome. Feel free to open a pull request, an issue or just by starting this project.

License

Distributed under the terms of both the MIT license and the Apache License (Version 2.0)

bsd
dhcp
freebsd
ip
linux
local-ip
macos
network
rust
windows

LeoBorai/local-ip-address

Retrieve system's local IP address and Network Interfaces/Adapters on FreeBSD, Linux, macOS and Windows

Rust

148

143 commits

updated Jun 29, 2026

See the code

README

local-ip-address

Retrieve system's local IP address and Network Interfaces/Adapters on Linux, Windows, and macOS (and other BSD-based systems).

Crates.io Documentation Build Clippy Formatter

Usage

Get the local IP address of your system by executing the local_ip function:

use local_ip_address::local_ip;

fn main() {
    let my_local_ip = local_ip().unwrap();

    println!("This is my local IP address: {:?}", my_local_ip);
}

Retrieve all the available network interfaces from both, the AF_INET and the AF_INET6 family by executing the list_afinet_netifas function:

use local_ip_address::list_afinet_netifas;

fn main() {
    let network_interfaces = list_afinet_netifas().unwrap();

    for (name, ip) in network_interfaces.iter() {
        println!("{}:\t{:?}", name, ip);
    }
}

Underlying approach on retrieving network interfaces or the local IP address may differ based on the running operative system.

OSApproach
LinuxEstablishes a Netlink socket interchange to retrieve network interfaces
BSD-basedUses of getifaddrs to retrieve network interfaces
WindowsConsumes Win32 API's to retrieve the network adapters table

Operating System Support

Current supported platforms include:

  • Linux (requires at least v0.1.0);
  • macOS (requires at least v0.1.0);
  • Windows (requires at least v0.3.0);
  • Other BSD-based (requires at least v0.5.0); including:
    • FreeBSD
    • OpenBSD
    • NetBSD
    • DragonFly

Please note that we only test the BSD implementation of this on macOS and FreeBSD, under the assumption that other BSD-based systems will behave similarly. If you have any complications using this library on the other BSD-based, please create an issue.

Release

In order to create a release you must push a Git tag as follows

git tag -a <version> -m <message>

Example

git tag -a v0.1.0 -m "First release"

Tags must follow semver conventions Tags must be prefixed with a lowercase v letter.

Then push tags as follows:

git push origin main --follow-tags

Contributing

Every contribution to this project is welcome. Feel free to open a pull request, an issue or just by starting this project.

License

Distributed under the terms of both the MIT license and the Apache License (Version 2.0)

bsd
dhcp
freebsd
ip
linux
local-ip
macos
network
rust
windows

Project health

Latest release

0.6.13 · May 19, 2026

Releases this year

8

Significant stargazers

SamTV12345

25 followers · starred Nov 2023