diff --git a/internal/pkg/nft/rule.go b/internal/pkg/nft/rule.go new file mode 100644 index 0000000..178edc2 --- /dev/null +++ b/internal/pkg/nft/rule.go @@ -0,0 +1,30 @@ +package nft + +import ( + "strconv" + + "git.kor-elf.net/kor-elf-shield/go-nftables-client/family" +) + +func RuleAdd(family family.Type, tableName string, chainName string, expr ...string) []string { + args := []string{"add", "rule", family.String(), tableName, chainName} + args = append(args, expr...) + return args +} + +func RuleInsert(family family.Type, tableName string, chainName string, expr ...string) []string { + args := []string{"insert", "rule", family.String(), tableName, chainName} + args = append(args, expr...) + return args +} + +func RuleReplace(family family.Type, tableName string, chainName string, handle uint64, expr ...string) []string { + args := []string{"replace", "rule", family.String(), tableName, chainName, "handle", strconv.Itoa(int(handle))} + args = append(args, expr...) + return args +} + +func RuleDelete(family family.Type, tableName string, chainName string, handle uint64) []string { + args := []string{"delete", "rule", family.String(), tableName, chainName, "handle", strconv.Itoa(int(handle))} + return args +} diff --git a/internal/rule/rule.go b/internal/rule/rule.go index 8ab2b51..1a072a5 100644 --- a/internal/rule/rule.go +++ b/internal/rule/rule.go @@ -1,11 +1,10 @@ package rule import ( - "strconv" - "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 rule struct { @@ -19,24 +18,21 @@ func New(command contract.Command) nft.Rule { } func (r *rule) Add(family family.Type, tableName string, chainName string, expr ...string) error { - args := []string{"add", "rule", family.String(), tableName, chainName} - args = append(args, expr...) + args := nftCommand.RuleAdd(family, tableName, chainName, expr...) return r.command.Run(args...) } func (r *rule) Insert(family family.Type, tableName string, chainName string, expr ...string) error { - args := []string{"insert", "rule", family.String(), tableName, chainName} - args = append(args, expr...) + args := nftCommand.RuleInsert(family, tableName, chainName, expr...) return r.command.Run(args...) } func (r *rule) Replace(family family.Type, tableName string, chainName string, handle uint64, expr ...string) error { - args := []string{"replace", "rule", family.String(), tableName, chainName, "handle", strconv.Itoa(int(handle))} - args = append(args, expr...) + args := nftCommand.RuleReplace(family, tableName, chainName, handle, expr...) return r.command.Run(args...) } func (r *rule) Delete(family family.Type, tableName string, chainName string, handle uint64) error { - args := []string{"delete", "rule", family.String(), tableName, chainName, "handle", strconv.Itoa(int(handle))} + args := nftCommand.RuleDelete(family, tableName, chainName, handle) return r.command.Run(args...) }