Compare commits
2 Commits
18c7e3c285
...
0f78ef75da
Author | SHA1 | Date |
---|---|---|
|
0f78ef75da | |
|
a0f087f0d8 |
8
set.go
8
set.go
|
@ -587,15 +587,15 @@ func (cc *Conn) AddSet(s *Set, vals []SetElement) error {
|
|||
|
||||
if s.Anonymous || s.Constant || s.Interval || s.KeyByteOrder == binaryutil.BigEndian {
|
||||
// Semantically useless - kept for binary compatability with nft
|
||||
userData = userdata.AppendUint32(userData, 0, 2)
|
||||
userData = userdata.AppendUint32(userData, userdata.NFTNL_UDATA_SET_KEYBYTEORDER, 2)
|
||||
} else if s.KeyByteOrder == binaryutil.NativeEndian {
|
||||
// Per https://git.netfilter.org/nftables/tree/src/mnl.c?id=187c6d01d35722618c2711bbc49262c286472c8f#n1165
|
||||
userData = userdata.AppendUint32(userData, 0, 1)
|
||||
userData = userdata.AppendUint32(userData, userdata.NFTNL_UDATA_SET_KEYBYTEORDER, 1)
|
||||
}
|
||||
|
||||
if s.Interval && s.AutoMerge {
|
||||
// https://git.netfilter.org/nftables/tree/src/mnl.c?id=187c6d01d35722618c2711bbc49262c286472c8f#n1174
|
||||
userData = userdata.AppendUint32(userData, 2, 1)
|
||||
userData = userdata.AppendUint32(userData, userdata.NFTNL_UDATA_SET_MERGE_ELEMENTS, 1)
|
||||
}
|
||||
|
||||
if len(userData) > 0 {
|
||||
|
@ -755,7 +755,7 @@ func setsFromMsg(msg netlink.Message) (*Set, error) {
|
|||
set.DataType.Bytes = binary.BigEndian.Uint32(ad.Bytes())
|
||||
case unix.NFTA_SET_USERDATA:
|
||||
data := ad.Bytes()
|
||||
value, ok := userdata.GetUint32(data, 2)
|
||||
value, ok := userdata.GetUint32(data, userdata.NFTNL_UDATA_SET_MERGE_ELEMENTS)
|
||||
set.AutoMerge = ok && value == 1
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,21 @@ const (
|
|||
TypesCount
|
||||
)
|
||||
|
||||
// TLV type values are defined in:
|
||||
// https://git.netfilter.org/libnftnl/tree/include/libnftnl/udata.h#n39
|
||||
const (
|
||||
NFTNL_UDATA_SET_KEYBYTEORDER Type = iota
|
||||
NFTNL_UDATA_SET_DATABYTEORDER
|
||||
NFTNL_UDATA_SET_MERGE_ELEMENTS
|
||||
NFTNL_UDATA_SET_KEY_TYPEOF
|
||||
NFTNL_UDATA_SET_DATA_TYPEOF
|
||||
NFTNL_UDATA_SET_EXPR
|
||||
NFTNL_UDATA_SET_DATA_INTERVAL
|
||||
NFTNL_UDATA_SET_COMMENT
|
||||
|
||||
NFTNL_UDATA_SET_MAX
|
||||
)
|
||||
|
||||
func Append(udata []byte, typ Type, data []byte) []byte {
|
||||
udata = append(udata, byte(typ), byte(len(data)))
|
||||
udata = append(udata, data...)
|
||||
|
|
Loading…
Reference in New Issue