/go-nft

Go bindings for nft utility.

Primary LanguageGoApache License 2.0Apache-2.0

go-nft

Licensed under Apache License version 2.0 Build Workflow Go Report Card

Go bindings for nft utility.

go-nft wraps invocation of the nft utility with functions to append and delete rules; create, clear and delete tables and chains.

To start using go-nft

go-nft is a library that provides a structured API to nftables.

go-nft uses the libnftables-json specification and exposes a subset of its structures.

  • Apply the configuration:
config := nft.NewConfig()
config.AddTable(nft.NewTable("mytable", nft.FamilyIP))
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
err := nft.ApplyConfigContext(ctx, config)
  • Read the configuration:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
config, err := nft.ReadConfigContext(ctx)
nftVersion := config.Nftables[0].Metainfo.Version

For full setup example, see the integration test examples.

Contribution

We welcome contribution of any kind! Read CONTRIBUTING to learn how to contribute to the project.

Changelog

Please refer to CHANGELOG