vishvananda/netlink

Simple netlink library for go.

View on GitHub ↗Jump to charts ↓

Data as of . Signed-in members get hourly updates — create a free account.

Summary Information

Updated 2 hours ago
Added to GitGenius on September 21st, 2026
Created on September 1st, 2014
Open Issues & Pull Requests: 248 (+0)
GitHub issues: Enabled
Number of forks: 842
Total Stargazers: 3,309 (+0)
Total Subscribers: 57 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 2.9 days
Mean response time: 108.1 days
90th percentile: 337.4 days
Tracked items: 55

How this project is maintained

98% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Three people close 66% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 43
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 865 days
Stale 30+ days: 38
Stale 90+ days: 35

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

Sign in to see which issues are moving.
Sign in

Detailed Description

netlink is a Go library that provides a simple interface for communicating with the Linux kernel through netlink sockets.

The library solves the problem of managing network configuration from user-space Go programs. Netlink is the standard Linux mechanism for user-space applications to communicate with the kernel to add and remove network interfaces, configure IP addresses and routes, and set up IPsec. The library wraps low-level netlink messages with a higher-level API modeled on the iproute2 command-line tool, so operations like adding a link correspond to similarly named functions such as AddLink(). This approach makes netlink communication accessible without requiring developers to construct raw netlink messages. The library originated as a fork of netlink functionality from docker/libcontainer but was substantially rewritten to improve testability, performance, and to add support for IPsec xfrm handling.

Developers should know that netlink operations require elevated privileges and typically must run as root. The library is suitable for infrastructure tools, container runtimes, and network management applications that need to programmatically configure Linux networking from Go. The API design follows iproute2 conventions, making it intuitive for developers familiar with standard Linux networking tools.

The project shows active maintenance with a structured approach to expanding functionality. The README acknowledges that many aspects of netlink are not yet fully supported in the high-level interface, indicating ongoing development to add missing fields and link types. The codebase includes testing infrastructure, though tests require root privileges to run. The library maintains low-level netlink primitives as a foundation, positioning future work as a matter of exposing additional fields through the high-level objects and ensuring proper serialization and deserialization in existing methods.