mirror of
https://github.com/cloudnativelabs/kube-router.git
synced 2025-10-09 00:41:05 +02:00
107 lines
2.0 KiB
Go
Executable File
107 lines
2.0 KiB
Go
Executable File
// +build linux
|
|
|
|
package nlgo
|
|
|
|
import (
|
|
"syscall"
|
|
"unsafe"
|
|
)
|
|
|
|
const (
|
|
GENL_ADMIN_PERM = 1 << iota
|
|
GENL_CMD_CAP_DO
|
|
GENL_CMD_CAP_DUMP
|
|
GENL_CMD_CAP_HASPOL
|
|
)
|
|
|
|
// GenlConnect is same with libnl genl_connect.
|
|
func GenlConnect(sk *NlSock) error {
|
|
return NlConnect(sk, syscall.NETLINK_GENERIC)
|
|
}
|
|
|
|
// GenlSendSimple is same with libnl genl_send_simple.
|
|
func GenlSendSimple(sk *NlSock, family uint16, cmd, version uint8, flags uint16) error {
|
|
hdr := (*[SizeofGenlMsghdr]byte)(unsafe.Pointer(&GenlMsghdr{
|
|
Cmd: cmd,
|
|
Version: version,
|
|
}))
|
|
return NlSendSimple(sk, family, flags, hdr[:])
|
|
}
|
|
|
|
const (
|
|
GENL_ID_GENERATE = 0
|
|
GENL_ID_CTRL = 0x10
|
|
)
|
|
|
|
const CTRL_VERSION = 0x0001
|
|
|
|
const (
|
|
CTRL_CMD_UNSPEC = iota
|
|
CTRL_CMD_NEWFAMILY
|
|
CTRL_CMD_DELFAMILY
|
|
CTRL_CMD_GETFAMILY
|
|
CTRL_CMD_NEWOPS
|
|
CTRL_CMD_DELOPS
|
|
CTRL_CMD_GETOPS
|
|
CTRL_CMD_NEWMCAST_GRP
|
|
CTRL_CMD_DELMCAST_GRP
|
|
CTRL_CMD_GETMCAST_GRP
|
|
)
|
|
|
|
// CTRL
|
|
|
|
const (
|
|
CTRL_ATTR_UNSPEC = iota
|
|
CTRL_ATTR_FAMILY_ID
|
|
CTRL_ATTR_FAMILY_NAME
|
|
CTRL_ATTR_VERSION
|
|
CTRL_ATTR_HDRSIZE
|
|
CTRL_ATTR_MAXATTR
|
|
CTRL_ATTR_OPS
|
|
CTRL_ATTR_MCAST_GROUPS
|
|
)
|
|
|
|
const (
|
|
CTRL_ATTR_OP_UNSPEC = iota
|
|
CTRL_ATTR_OP_ID
|
|
CTRL_ATTR_OP_FLAGS // GENL_CMD_CAP_DUMP, etc.,
|
|
)
|
|
|
|
const (
|
|
CTRL_ATTR_MCAST_GRP_UNSPEC = iota
|
|
CTRL_ATTR_MCAST_GRP_NAME
|
|
CTRL_ATTR_MCAST_GRP_ID
|
|
)
|
|
|
|
var CtrlPolicy MapPolicy = MapPolicy{
|
|
Prefix: "CTRL_ATTR",
|
|
Names: CTRL_ATTR_itoa,
|
|
Rule: map[uint16]Policy{
|
|
CTRL_ATTR_FAMILY_ID: U16Policy,
|
|
CTRL_ATTR_FAMILY_NAME: NulStringPolicy,
|
|
CTRL_ATTR_VERSION: U32Policy,
|
|
CTRL_ATTR_HDRSIZE: U32Policy,
|
|
CTRL_ATTR_MAXATTR: U32Policy,
|
|
CTRL_ATTR_OPS: ListPolicy{
|
|
Nested: MapPolicy{
|
|
Prefix: "OP",
|
|
Names: CTRL_ATTR_OP_itoa,
|
|
Rule: map[uint16]Policy{
|
|
CTRL_ATTR_OP_ID: U32Policy,
|
|
CTRL_ATTR_OP_FLAGS: U32Policy,
|
|
},
|
|
},
|
|
},
|
|
CTRL_ATTR_MCAST_GROUPS: ListPolicy{
|
|
Nested: MapPolicy{
|
|
Prefix: "MCAST_GRP",
|
|
Names: CTRL_ATTR_MCAST_GRP_itoa,
|
|
Rule: map[uint16]Policy{
|
|
CTRL_ATTR_MCAST_GRP_NAME: NulStringPolicy,
|
|
CTRL_ATTR_MCAST_GRP_ID: U32Policy,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|