https://github.com/ti-mo/conntrack
Pure-Go Conntrack implementation; for humans.
https://github.com/ti-mo/conntrack
conntrack golang-library hacktoberfest netfilter netlink
Last synced: about 1 year ago
JSON representation
Pure-Go Conntrack implementation; for humans.
- Host: GitHub
- URL: https://github.com/ti-mo/conntrack
- Owner: ti-mo
- License: mit
- Created: 2018-09-26T19:17:30.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-05-17T12:29:50.000Z (about 2 years ago)
- Last Synced: 2025-03-28T03:01:44.753Z (about 1 year ago)
- Topics: conntrack, golang-library, hacktoberfest, netfilter, netlink
- Language: Go
- Homepage:
- Size: 318 KB
- Stars: 121
- Watchers: 5
- Forks: 36
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# conntrack [](https://godoc.org/github.com/ti-mo/conntrack)  [](https://coveralls.io/github/ti-mo/conntrack?branch=master) [](https://goreportcard.com/report/github.com/ti-mo/conntrack)
Package `conntrack` implements the Conntrack subsystem of the Netfilter (Netlink) protocol family.
The package is intended to be clear, user-friendly, thoroughly tested and easy to understand.
It is purely written in Go, without any dependency on Cgo or any C library, kernel headers
or userspace tools. It uses a native Netlink implementation (https://github.com/mdlayher/netlink)
and does not parse or scrape any output of the `conntrack` command.
It is designed in a way that makes the user acquainted with the structure of the protocol,
with a clean separation between the Conntrack types/attributes and the Netfilter layer (implemented
in https://github.com/ti-mo/netfilter).
All Conntrack attributes known to the kernel up until version 4.17 are implemented. There is experimental
support for manipulating Conntrack 'expectations', beside listening and dumping. The original focus of the
package was receiving Conntrack events over Netlink multicast sockets, but was since expanded to be a full
implementation supporting queries.
## Features
With this library, the user can:
- Interact with conntrack connections and expectations through Flow and Expect types respectively
- Create, get, update and delete Flows in an idiomatic way (and Expects, to an extent)
- Listen for create/update/destroy events
- Flush (empty) and dump (display) the whole conntrack table, optionally filtering on specific connection marks
There are many usage examples in the [godoc](https://godoc.org/github.com/ti-mo/conntrack).
## Contributing
Contributions are absolutely welcome! Before starting work on large changes, please create an issue first,
or join #networking on Gophers Slack to discuss the design.
If you encounter a problem implementing the library, please open a GitHub issue for help.