From bc00e4686565eef058615b57cdff5c1a2fa896af Mon Sep 17 00:00:00 2001 From: Leonid Nikitin Date: Sun, 26 Apr 2026 16:05:58 +0500 Subject: [PATCH] Add chain implementation with Add, Create, Delete, Clear, and Rename methods --- internal/batch/chain/chain.go | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 internal/batch/chain/chain.go diff --git a/internal/batch/chain/chain.go b/internal/batch/chain/chain.go new file mode 100644 index 0000000..04c37c4 --- /dev/null +++ b/internal/batch/chain/chain.go @@ -0,0 +1,44 @@ +package chain + +import ( + chain2 "git.kor-elf.net/kor-elf-shield/go-nftables-client/chain" + "git.kor-elf.net/kor-elf-shield/go-nftables-client/contract" + "git.kor-elf.net/kor-elf-shield/go-nftables-client/contract/nft" + "git.kor-elf.net/kor-elf-shield/go-nftables-client/family" + nftCommand "git.kor-elf.net/kor-elf-shield/go-nftables-client/internal/pkg/nft" +) + +type chain struct { + command contract.CommandRun +} + +func New(command contract.CommandRun) nft.Chain { + return &chain{ + command: command, + } +} + +func (c *chain) Add(family family.Type, tableName string, chainName string, baseChain chain2.ChainOptions) error { + args := nftCommand.ChainAdd(family, tableName, chainName, baseChain) + return c.command.Run(args...) +} + +func (c *chain) Create(family family.Type, tableName string, chainName string, baseChain chain2.ChainOptions) error { + args := nftCommand.ChainCreate(family, tableName, chainName, baseChain) + return c.command.Run(args...) +} + +func (c *chain) Delete(family family.Type, tableName string, chainName string) error { + args := nftCommand.ChainDelete(family, tableName, chainName) + return c.command.Run(args...) +} + +func (c *chain) Clear(family family.Type, tableName string, chainName string) error { + args := nftCommand.ChainClear(family, tableName, chainName) + return c.command.Run(args...) +} + +func (c *chain) Rename(family family.Type, tableName string, oldChainName string, newChainName string) error { + args := nftCommand.ChainRename(family, tableName, oldChainName, newChainName) + return c.command.Run(args...) +}