From 2610769f25b06eb87004dfe5fb3238bdab3ecbce Mon Sep 17 00:00:00 2001 From: Tom D <40675700+twitchy-jsonp@users.noreply.github.com> Date: Sun, 6 Jan 2019 14:08:33 -0800 Subject: [PATCH] Implement DelTable (#6) --- nftables.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/nftables.go b/nftables.go index 591fe98..3c93f65 100644 --- a/nftables.go +++ b/nftables.go @@ -329,6 +329,21 @@ func (cc *Conn) FlushRuleset() { }) } +// DelTable deletes a specific table, along with all chains/rules it contains. +func (cc *Conn) DelTable(t *Table) { + data := cc.marshalAttr([]netlink.Attribute{ + {Type: unix.NFTA_TABLE_NAME, Data: []byte(t.Name + "\x00")}, + {Type: unix.NFTA_TABLE_FLAGS, Data: []byte{0, 0, 0, 0}}, + }) + cc.messages = append(cc.messages, netlink.Message{ + Header: netlink.Header{ + Type: netlink.HeaderType((unix.NFNL_SUBSYS_NFTABLES << 8) | unix.NFT_MSG_DELTABLE), + Flags: netlink.HeaderFlagsRequest | netlink.HeaderFlagsAcknowledge, + }, + Data: append(extraHeader(uint8(t.Family), 0), data...), + }) +} + // AddTable adds the specified Table. See also // https://wiki.nftables.org/wiki-nftables/index.php/Configuring_tables func (cc *Conn) AddTable(t *Table) *Table {