package table import ( "git.kor-elf.net/kor-elf-shield/go-nftables-client/family" "git.kor-elf.net/kor-elf-shield/go-nftables-client/internal/command" ) // API for working with tables. type API interface { // AddTable adds a new table. // // This command is equivalent to: // nft add table (ip|ip6|inet|arp|bridge) {table_name} Add(family family.Type, tableName string) error // DeleteTable deletes a table. // // This command is equivalent to: // nft delete table (ip|ip6|inet|arp|bridge) {table_name} Delete(family family.Type, tableName string) error // ClearTable clears all rules in a table. // // This command is equivalent to: // nft flush table (ip|ip6|inet|arp|bridge) {table_name} Clear(family family.Type, tableName string) error } type table struct { command command.NFT } func New(command command.NFT) API { return &table{ command: command, } } func (t *table) Add(family family.Type, tableName string) error { args := []string{"add", "table", family.String(), tableName} return t.command.Run(args...) } func (t *table) Delete(family family.Type, tableName string) error { args := []string{"delete", "table", family.String(), tableName} return t.command.Run(args...) } func (t *table) Clear(family family.Type, tableName string) error { args := []string{"flush", "table", family.String(), tableName} return t.command.Run(args...) }