{"id":37105340,"url":"https://github.com/arroyonetworks/splice","last_synced_at":"2026-01-14T12:42:28.358Z","repository":{"id":57565412,"uuid":"122240743","full_name":"arroyonetworks/splice","owner":"arroyonetworks","description":"A high-level and multi-os Golang library for manipulating network interfaces, links, and routes.","archived":false,"fork":false,"pushed_at":"2023-02-25T04:05:10.000Z","size":48,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-14T07:35:00.512Z","etag":null,"topics":["darwin","go","golang","interfaces","linux","macos","networking","route-manipulation","routing"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arroyonetworks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-02-20T18:51:16.000Z","updated_at":"2023-05-22T02:28:14.000Z","dependencies_parsed_at":"2024-06-20T09:30:44.862Z","dependency_job_id":null,"html_url":"https://github.com/arroyonetworks/splice","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/arroyonetworks/splice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arroyonetworks%2Fsplice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arroyonetworks%2Fsplice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arroyonetworks%2Fsplice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arroyonetworks%2Fsplice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arroyonetworks","download_url":"https://codeload.github.com/arroyonetworks/splice/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arroyonetworks%2Fsplice/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28420814,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:47:48.104Z","status":"ssl_error","status_checked_at":"2026-01-14T10:46:19.031Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["darwin","go","golang","interfaces","linux","macos","networking","route-manipulation","routing"],"created_at":"2026-01-14T12:42:27.496Z","updated_at":"2026-01-14T12:42:28.342Z","avatar_url":"https://github.com/arroyonetworks.png","language":"Go","readme":"# Splice\n### A high-level and multi-os library for manipulating network interfaces, links, and routes.\n\n\n[![GoDoc](https://godoc.org/github.com/ArroyoNetworks/splice?status.svg)](https://godoc.org/github.com/ArroyoNetworks/splice)\n\n**This library is still considered beta, the interfaces may change until 1.0 is released.**\n\nSplice provides a high-level library for manipulating network interfaces, network links, and routes. Splice provides a common interface\nfor multiple operating systems.\n\n## Getting Started\n\n### Add Splice to Your Workspace\n\n    go get github.com/arroyonetworks/splice\n\n### Examples\n\n#### Add an Address to an Interface\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    \"net\"\n    \"gitlab.com/ArroyoNetworks/splice\"\n)\n\nfunc main() {\n\n    var err error\n\n    _, address, err := net.ParseCIDR(\"127.1.1.0/24\")\n    intf, err := net.InterfaceByName(\"eth0\")    \n    err = splice.AddressAdd(intf, address)\n\n    if err != nil {\n        fmt.Println(\"Failed to Add Address\")\n        fmt.Println(err)\n    }\n\n}\n```\n\n#### Bring an Interface Down\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    \"net\"\n    \"gitlab.com/ArroyoNetworks/splice\"\n)\n\nfunc main() {\n\n    var err error\n\n    intf, err := net.InterfaceByName(\"wlan0\")    \n    err = splice.LinkBringDown(intf)\n\n    if err != nil {\n        fmt.Println(\"Failed to Bring Down Interface\")\n        fmt.Println(err)\n    }\n\n}\n```\n\n#### Add a Route to the Routing Table\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    \"net\"\n    \"gitlab.com/ArroyoNetworks/splice\"\n)\n\nfunc main() {\n\n    var err error\n\n    _, dest, err := net.ParseCIDR(\"172.10.0.0/24\")\n    intf, err := net.InterfaceByName(\"wlan0\")    \n\n    err = splice.RouteAddViaInterface(dest, intf)\n\n    if err != nil {\n        fmt.Println(\"Failed to Add Route\")\n        fmt.Println(err)\n    }\n\n}\n```\n\n## Supported Operating Systems\n\n### Linux\n\nThe following are supported on Linux systems:\n\n- IP Address Configuration\n- Interface Link Manipulation\n- Route Manipulation\n\n##### Dependencies\n\nThe following are third-party dependencies used for providing Linux support:\n\n- [github.com/vishvananda/netlink](https://github.com/vishvananda/netlink)\n\n##### Unit Tests\n\n\u003e Linux unit tests are automatically ran in a temporary networking namespace in order to prevent\n\u003e accidental alteration of the system's networking configuration. Because of this, test for\n\u003e Linux require the `cap_net_admin` capability.\n\n1. Download the Test Dependencies\n\n        go get -t github.com/ArroyoNetworks/splice\n\n2. Run the Unit Tests\n\n        sudo -E go test github.com/ArroyoNetworks/splice\n\n### macOS\n\nThe following are supported on Darwin systems:\n\n- IP Address Configuration\n- Interface Link Manipulation\n\nThe following are *NOT* yet supported:\n\n- Route Manipulation (Accepting Merge Requests)\n\n##### Dependencies\n\nThe following are third-party dependencies used for providing Darwin support:\n\n- [golang.org/x/sys/unix](https://godoc.org/golang.org/x/sys/unix)\n\n##### Unit Tests\n\nUnit tests are not yet available for Darwin.\n\n### Windows\n\nNot yet implemented.\n\n## License\n\nCopyright 2018 Arroyo Networks, LLC. All rights reserved.\u003cbr/\u003e\nThis project is governed by a BSD-style license. See [LICENSE](https://github.com/ArroyoNetworks/splice/raw/master/LICENSE) for the full license text.\n\n## Related Projects\n\n- [github.com/songgao/water](https://github.com/songgao/water): A native Go library for TUN/TAP interfaces. Includes support for Linux, macOS, and Windows.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farroyonetworks%2Fsplice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farroyonetworks%2Fsplice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farroyonetworks%2Fsplice/lists"}