-
Notifications
You must be signed in to change notification settings - Fork 155
Description
Nftable cmd supports lookup of elements within a set given the inputs, it supports CIDR, range.
root [ /home/user ]# nft get element inet filter_table SET_IP6_netRuleCollection_Allow_0 { tcp . 10:0:1::10 . 11:0:1::10 . 8003}
table inet filter_table {
set SET_IP6_netRuleCollection_Allow_0 {
type inet_proto . ipv6_addr . ipv6_addr . inet_service
flags interval
elements = { tcp . 10:0:1::10 . ::/0 . 8003 }
}
}
root [ /home/user ]#
Does this nftable go package support this?
I see below code for GetSetElements but in the Data field it is passed as empty, so I guess currently it will list all the elements.
Is there a plan to support it in future? I would assume it will be trivial to add lookup element in the Data field?
func
(cc *Conn) GetSetElements(s *Set) ([]SetElement, error) {
conn, closer, err := cc.netlinkConn()
if err != nil {
return nil, err
}
defer func() { _ = closer() }()
data, err := netlink.MarshalAttributes([]netlink.Attribute{
{Type: unix.NFTA_SET_TABLE, Data: []byte(s.Table.Name + "\x00")},
{Type: unix.NFTA_SET_NAME, Data: []byte(s.Name + "\x00")},
})
if err != nil {
return nil, err
}
message := netlink.Message{
Header: netlink.Header{
Type: netlink.HeaderType((unix.NFNL_SUBSYS_NFTABLES << 8) | unix.NFT_MSG_GETSETELEM),
Flags: netlink.Request | netlink.Acknowledge | netlink.Dump,
},
Data: append(extraHeader(uint8(s.Table.Family), 0), data...),
}`