2017-05-05 05:02:54 +00:00
|
|
|
package nl
|
|
|
|
|
|
|
|
import (
|
|
|
|
"unsafe"
|
|
|
|
)
|
|
|
|
|
|
|
|
const SizeofGenlmsg = 4
|
|
|
|
|
|
|
|
const (
|
|
|
|
GENL_ID_CTRL = 0x10
|
|
|
|
GENL_CTRL_VERSION = 2
|
|
|
|
GENL_CTRL_NAME = "nlctrl"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
GENL_CTRL_CMD_GETFAMILY = 3
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
GENL_CTRL_ATTR_UNSPEC = iota
|
|
|
|
GENL_CTRL_ATTR_FAMILY_ID
|
|
|
|
GENL_CTRL_ATTR_FAMILY_NAME
|
|
|
|
GENL_CTRL_ATTR_VERSION
|
|
|
|
GENL_CTRL_ATTR_HDRSIZE
|
|
|
|
GENL_CTRL_ATTR_MAXATTR
|
|
|
|
GENL_CTRL_ATTR_OPS
|
|
|
|
GENL_CTRL_ATTR_MCAST_GROUPS
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
GENL_CTRL_ATTR_OP_UNSPEC = iota
|
|
|
|
GENL_CTRL_ATTR_OP_ID
|
|
|
|
GENL_CTRL_ATTR_OP_FLAGS
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
GENL_ADMIN_PERM = 1 << iota
|
|
|
|
GENL_CMD_CAP_DO
|
|
|
|
GENL_CMD_CAP_DUMP
|
|
|
|
GENL_CMD_CAP_HASPOL
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
GENL_CTRL_ATTR_MCAST_GRP_UNSPEC = iota
|
|
|
|
GENL_CTRL_ATTR_MCAST_GRP_NAME
|
|
|
|
GENL_CTRL_ATTR_MCAST_GRP_ID
|
|
|
|
)
|
|
|
|
|
2017-05-05 09:02:53 +00:00
|
|
|
const (
|
|
|
|
GENL_GTP_VERSION = 0
|
|
|
|
GENL_GTP_NAME = "gtp"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
GENL_GTP_CMD_NEWPDP = iota
|
|
|
|
GENL_GTP_CMD_DELPDP
|
|
|
|
GENL_GTP_CMD_GETPDP
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
GENL_GTP_ATTR_UNSPEC = iota
|
|
|
|
GENL_GTP_ATTR_LINK
|
|
|
|
GENL_GTP_ATTR_VERSION
|
|
|
|
GENL_GTP_ATTR_TID
|
|
|
|
GENL_GTP_ATTR_PEER_ADDRESS
|
|
|
|
GENL_GTP_ATTR_MS_ADDRESS
|
|
|
|
GENL_GTP_ATTR_FLOW
|
|
|
|
GENL_GTP_ATTR_NET_NS_FD
|
|
|
|
GENL_GTP_ATTR_I_TEI
|
|
|
|
GENL_GTP_ATTR_O_TEI
|
|
|
|
GENL_GTP_ATTR_PAD
|
|
|
|
)
|
|
|
|
|
2017-05-05 05:02:54 +00:00
|
|
|
type Genlmsg struct {
|
|
|
|
Command uint8
|
|
|
|
Version uint8
|
|
|
|
}
|
|
|
|
|
|
|
|
func (msg *Genlmsg) Len() int {
|
|
|
|
return SizeofGenlmsg
|
|
|
|
}
|
|
|
|
|
|
|
|
func DeserializeGenlmsg(b []byte) *Genlmsg {
|
|
|
|
return (*Genlmsg)(unsafe.Pointer(&b[0:SizeofGenlmsg][0]))
|
|
|
|
}
|
|
|
|
|
|
|
|
func (msg *Genlmsg) Serialize() []byte {
|
|
|
|
return (*(*[SizeofGenlmsg]byte)(unsafe.Pointer(msg)))[:]
|
|
|
|
}
|