{"id":13712115,"url":"https://github.com/mdlayher/netlink","last_synced_at":"2026-02-28T17:08:32.565Z","repository":{"id":41040050,"uuid":"76995624","full_name":"mdlayher/netlink","owner":"mdlayher","description":"Package netlink provides low-level access to Linux netlink sockets (AF_NETLINK). MIT Licensed.","archived":false,"fork":false,"pushed_at":"2025-01-13T17:19:57.000Z","size":636,"stargazers_count":986,"open_issues_count":18,"forks_count":101,"subscribers_count":24,"default_branch":"main","last_synced_at":"2025-05-12T13:12:36.126Z","etag":null,"topics":["af-netlink","go","golang","linux","netlink"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdlayher.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-20T22:13:34.000Z","updated_at":"2025-05-08T09:24:15.000Z","dependencies_parsed_at":"2024-10-30T13:00:39.189Z","dependency_job_id":"e3f04175-044f-4723-babc-23d394da6079","html_url":"https://github.com/mdlayher/netlink","commit_stats":{"total_commits":366,"total_committers":21,"mean_commits":"17.428571428571427","dds":"0.16120218579234968","last_synced_commit":"13a521f2e362e22897bd873548d4a4aee0dc0a7d"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdlayher%2Fnetlink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdlayher%2Fnetlink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdlayher%2Fnetlink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdlayher%2Fnetlink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdlayher","download_url":"https://codeload.github.com/mdlayher/netlink/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253745195,"owners_count":21957319,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["af-netlink","go","golang","linux","netlink"],"created_at":"2024-08-02T23:01:15.076Z","updated_at":"2026-02-28T17:08:32.510Z","avatar_url":"https://github.com/mdlayher.png","language":"Go","readme":"# netlink [![Test Status](https://github.com/mdlayher/netlink/workflows/Linux%20Test/badge.svg)](https://github.com/mdlayher/netlink/actions) [![Go Reference](https://pkg.go.dev/badge/github.com/mdlayher/netlink.svg)](https://pkg.go.dev/github.com/mdlayher/netlink)  [![Go Report Card](https://goreportcard.com/badge/github.com/mdlayher/netlink)](https://goreportcard.com/report/github.com/mdlayher/netlink)\n\nPackage `netlink` provides low-level access to Linux netlink sockets\n(`AF_NETLINK`). MIT Licensed.\n\nFor more information about how netlink works, check out my blog series\non [Linux, Netlink, and Go](https://mdlayher.com/blog/linux-netlink-and-go-part-1-netlink/).\n\nIf you have any questions or you'd like some guidance, please join us on\n[Gophers Slack](https://invite.slack.golangbridge.org) in the `#networking`\nchannel!\n\n## Stability\n\nSee the [CHANGELOG](./CHANGELOG.md) file for a description of changes between\nreleases.\n\nThis package has a stable v1 API and any future breaking changes will prompt\nthe release of a new major version. Features and bug fixes will continue to\noccur in the v1.x.x series.\n\nThis package only supports the two most recent major versions of Go, mirroring\nGo's own release policy. Older versions of Go may lack critical features and bug\nfixes which are necessary for this package to function correctly.\n\n## Design\n\nA number of netlink packages are already available for Go, but I wasn't able to\nfind one that aligned with what I wanted in a netlink package:\n\n- Straightforward, idiomatic API\n- Well tested\n- Well documented\n- Doesn't use package/global variables or state\n- Doesn't necessarily need root to work\n\nMy goal for this package is to use it as a building block for the creation\nof other netlink family packages.\n\n## Ecosystem\n\nOver time, an ecosystem of Go packages has developed around package `netlink`.\nMany of these packages provide building blocks for further interactions with\nvarious netlink families, such as `NETLINK_GENERIC` or `NETLINK_ROUTE`.\n\nTo have your package included in this diagram, please send a pull request!\n\n```mermaid\nflowchart LR\n    netlink[\"github.com/mdlayher/netlink\"]\n    click netlink \"https://github.com/mdlayher/netlink\"\n\n    subgraph \"NETLINK_CONNECTOR\"\n        direction LR\n\n        garlic[\"github.com/fearful-symmetry/garlic\"]\n        click garlic \"https://github.com/fearful-symmetry/garlic\"\n    end\n\n    subgraph \"NETLINK_CRYPTO\"\n        direction LR\n\n        cryptonl[\"github.com/mdlayher/cryptonl\"]\n        click cryptonl \"https://github.com/mdlayher/cryptonl\"\n    end\n\n    subgraph \"NETLINK_GENERIC\"\n        direction LR\n\n        genetlink[\"github.com/mdlayher/genetlink\"]\n        click genetlink \"https://github.com/mdlayher/genetlink\"\n\n        devlink[\"github.com/mdlayher/devlink\"]\n        click devlink \"https://github.com/mdlayher/devlink\"\n\n        ethtool[\"github.com/mdlayher/ethtool\"]\n        click ethtool \"https://github.com/mdlayher/ethtool\"\n\n        go-openvswitch[\"github.com/digitalocean/go-openvswitch\"]\n        click go-openvswitch \"https://github.com/digitalocean/go-openvswitch\"\n\n        ipvs[\"github.com/cloudflare/ipvs\"]\n        click ipvs \"https://github.com/cloudflare/ipvs\"\n\n        l2tp[\"github.com/axatrax/l2tp\"]\n        click l2tp \"https://github.com/axatrax/l2tp\"\n\n        nbd[\"github.com/Merovius/nbd\"]\n        click nbd \"https://github.com/Merovius/nbd\"\n\n        quota[\"github.com/mdlayher/quota\"]\n        click quota \"https://github.com/mdlayher/quota\"\n\n        router7[\"github.com/rtr7/router7\"]\n        click router7 \"https://github.com/rtr7/router7\"\n\n        taskstats[\"github.com/mdlayher/taskstats\"]\n        click taskstats \"https://github.com/mdlayher/taskstats\"\n\n        u-bmc[\"github.com/u-root/u-bmc\"]\n        click u-bmc \"https://github.com/u-root/u-bmc\"\n\n        wgctrl[\"golang.zx2c4.com/wireguard/wgctrl\"]\n        click wgctrl \"https://golang.zx2c4.com/wireguard/wgctrl\"\n\n        wifi[\"github.com/mdlayher/wifi\"]\n        click wifi \"https://github.com/mdlayher/wifi\"\n\n        devlink \u0026 ethtool \u0026 go-openvswitch \u0026 ipvs --\u003e genetlink\n        l2tp \u0026 nbd \u0026 quota \u0026 router7 \u0026 taskstats --\u003e genetlink\n        u-bmc \u0026 wgctrl \u0026 wifi --\u003e genetlink\n    end\n\n    subgraph \"NETLINK_KOBJECT_UEVENT\"\n        direction LR\n\n        kobject[\"github.com/mdlayher/kobject\"]\n        click kobject \"https://github.com/mdlayher/kobject\"\n    end\n\n    subgraph \"NETLINK_NETFILTER\"\n        direction LR\n\n        go-conntrack[\"github.com/florianl/go-conntrack\"]\n        click go-conntrack \"https://github.com/florianl/go-conntrack\"\n\n        go-nflog[\"github.com/florianl/go-nflog\"]\n        click go-nflog \"https://github.com/florianl/go-nflog\"\n\n        go-nfqueue[\"github.com/florianl/go-nfqueue\"]\n        click go-nfqueue \"https://github.com/florianl/go-nfqueue\"\n\n        netfilter[\"github.com/ti-mo/netfilter\"]\n        click netfilter \"https://github.com/ti-mo/netfilter\"\n\n        nftables[\"github.com/google/nftables\"]\n        click nftables \"https://github.com/google/nftables\"\n\n        conntrack[\"github.com/ti-mo/conntrack\"]\n        click conntrack \"https://github.com/ti-mo/conntrack\"\n\n        conntrack --\u003e netfilter\n    end\n\n    subgraph \"NETLINK_ROUTE\"\n        direction LR\n\n        go-tc[\"github.com/florianl/go-tc\"]\n        click go-tc \"https://github.com/florianl/go-tc\"\n\n        qdisc[\"github.com/ema/qdisc\"]\n        click qdisc \"https://github.com/ema/qdisc\"\n\n        rtnetlink[\"github.com/jsimonetti/rtnetlink\"]\n        click rtnetlink \"https://github.com/jsimonetti/rtnetlink\"\n\n        rtnl[\"gitlab.com/mergetb/tech/rtnl\"]\n        click rtnl \"https://gitlab.com/mergetb/tech/rtnl\"\n    end\n\n    subgraph \"NETLINK_W1\"\n        direction LR\n\n        go-onewire[\"github.com/SpComb/go-onewire\"]\n        click go-onewire \"https://github.com/SpComb/go-onewire\"\n    end\n\n    subgraph \"NETLINK_SOCK_DIAG\"\n        direction LR\n\n        go-diag[\"github.com/florianl/go-diag\"]\n        click go-diag \"https://github.com/florianl/go-diag\"\n    end\n\n    NETLINK_CONNECTOR --\u003e netlink\n    NETLINK_CRYPTO --\u003e netlink\n    NETLINK_GENERIC --\u003e netlink\n    NETLINK_KOBJECT_UEVENT --\u003e netlink\n    NETLINK_NETFILTER --\u003e netlink\n    NETLINK_ROUTE --\u003e netlink\n    NETLINK_SOCK_DIAG --\u003e netlink\n    NETLINK_W1 --\u003e netlink\n```\n","funding_links":[],"categories":["Go","Repositories"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdlayher%2Fnetlink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmdlayher%2Fnetlink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdlayher%2Fnetlink/lists"}