Documentation ¶
Overview ¶
Package nl has low level primitives for making Netlink calls.
Index ¶
- Constants
- Variables
- func BytesToString(b []byte) string
- func DecodeMPLSStack(buf []byte) []int
- func DecodeSEG6Encap(buf []byte) (int, []net.IP, error)
- func DecodeSEG6Srh(buf []byte) ([]net.IP, error)
- func EncodeMPLSStack(labels ...int) []byte
- func EncodeSEG6Encap(mode int, segments []net.IP) ([]byte, error)
- func EncodeSEG6Srh(segments []net.IP) ([]byte, error)
- func GetIPFamily(ip net.IP) int
- func NativeEndian() binary.ByteOrder
- func NonZeroTerminated(s string) []byte
- func ParseRouteAttr(b []byte) ([]syscall.NetlinkRouteAttr, error)
- func SEG6EncapModeString(mode int) string
- func SEG6LocalActionString(action int) string
- func SerializeHfscCurve(c *Curve) (b []byte)
- func Swap16(i uint16) uint16
- func Swap32(i uint32) uint32
- func Uint16Attr(v uint16) []byte
- func Uint32Attr(v uint32) []byte
- func Uint64Attr(v uint64) []byte
- func Uint8Attr(v uint8) []byte
- func ZeroTerminated(s string) []byte
- type BridgeVlanInfo
- type Curve
- type Genlmsg
- type HfscCopt
- type IPv6SrHdr
- type IfAddrmsg
- type IfInfomsg
- type IfaCacheInfo
- type NetlinkRequest
- type NetlinkRequestData
- type NetlinkSocket
- func (s *NetlinkSocket) Close()
- func (s *NetlinkSocket) GetFd() int
- func (s *NetlinkSocket) GetPid() (uint32, error)
- func (s *NetlinkSocket) Receive() ([]syscall.NetlinkMessage, error)
- func (s *NetlinkSocket) Send(request *NetlinkRequest) error
- func (s *NetlinkSocket) SetReceiveTimeout(timeout *unix.Timeval) error
- func (s *NetlinkSocket) SetSendTimeout(timeout *unix.Timeval) error
- type Nfgenmsg
- type RtAttr
- type RtGenMsg
- type RtMsg
- type RtNexthop
- type SocketHandle
- type TcActionMsg
- type TcBpf
- type TcGact
- type TcGen
- type TcHfscOpt
- type TcHtbCopt
- type TcHtbGlob
- type TcMirred
- type TcMsg
- type TcNetemCorr
- type TcNetemCorrupt
- type TcNetemQopt
- type TcNetemReorder
- type TcPolice
- type TcPrioMap
- type TcRateSpec
- type TcTbfQopt
- type TcU32Key
- type TcU32Sel
- type VfGUID
- type VfLinkState
- type VfMac
- type VfRate
- type VfRssQueryEn
- type VfSpoofchk
- type VfTrust
- type VfTxRate
- type VfVlan
- type XfrmAddress
- type XfrmAlgo
- type XfrmAlgoAEAD
- type XfrmAlgoAuth
- type XfrmEncapTmpl
- type XfrmId
- type XfrmLifetimeCfg
- type XfrmLifetimeCur
- type XfrmMark
- type XfrmMsg
- type XfrmMsgType
- type XfrmReplayStateEsn
- type XfrmSelector
- type XfrmStats
- type XfrmUserExpire
- type XfrmUserSpiInfo
- type XfrmUserTmpl
- type XfrmUserpolicyId
- type XfrmUserpolicyInfo
- type XfrmUsersaFlush
- type XfrmUsersaId
- type XfrmUsersaInfo
Constants ¶
const ( BRIDGE_FLAGS_MASTER = iota + 1 /* Bridge command to/from master */ BRIDGE_FLAGS_SELF /* Bridge command to/from lowerdev */ )
Bridge Flags
const ( IFLA_BRIDGE_FLAGS = iota IFLA_BRIDGE_MODE IFLA_BRIDGE_VLAN_INFO )
Bridge management nested attributes * [IFLA_AF_SPEC] = { * IFLA_BRIDGE_FLAGS * IFLA_BRIDGE_MODE * IFLA_BRIDGE_VLAN_INFO * }
const ( BRIDGE_VLAN_INFO_MASTER = 1 << iota BRIDGE_VLAN_INFO_PVID BRIDGE_VLAN_INFO_UNTAGGED BRIDGE_VLAN_INFO_RANGE_BEGIN BRIDGE_VLAN_INFO_RANGE_END )
const ( RTEXT_FILTER_VF = 1 << iota RTEXT_FILTER_BRVLAN RTEXT_FILTER_BRVLAN_COMPRESSED )
New extended info filters for IFLA_EXT_MASK
const ( SizeofNfgenmsg = 4 SizeofNfattr = 4 SizeofNfConntrack = 376 SizeofNfctTupleHead = 52 )
Track the message sizes for the correct serialization/deserialization
const ( IPCTNL_MSG_CT_GET = 1 IPCTNL_MSG_CT_DELETE = 2 )
enum cntl_msg_types { IPCTNL_MSG_CT_NEW, IPCTNL_MSG_CT_GET, IPCTNL_MSG_CT_DELETE, IPCTNL_MSG_CT_GET_CTRZERO, IPCTNL_MSG_CT_GET_STATS_CPU, IPCTNL_MSG_CT_GET_STATS, IPCTNL_MSG_CT_GET_DYING, IPCTNL_MSG_CT_GET_UNCONFIRMED, IPCTNL_MSG_MAX };
const ( CTA_TUPLE_ORIG = 1 CTA_TUPLE_REPLY = 2 CTA_STATUS = 3 CTA_TIMEOUT = 7 CTA_MARK = 8 CTA_COUNTERS_ORIG = 9 CTA_COUNTERS_REPLY = 10 CTA_PROTOINFO = 4 )
enum ctattr_type { CTA_UNSPEC, CTA_TUPLE_ORIG, CTA_TUPLE_REPLY, CTA_STATUS, CTA_PROTOINFO, CTA_HELP, CTA_NAT_SRC,
#define CTA_NAT CTA_NAT_SRC /* backwards compatibility */
CTA_TIMEOUT, CTA_MARK, CTA_COUNTERS_ORIG, CTA_COUNTERS_REPLY, CTA_USE, CTA_ID, CTA_NAT_DST, CTA_TUPLE_MASTER, CTA_SEQ_ADJ_ORIG, CTA_NAT_SEQ_ADJ_ORIG = CTA_SEQ_ADJ_ORIG, CTA_SEQ_ADJ_REPLY, CTA_NAT_SEQ_ADJ_REPLY = CTA_SEQ_ADJ_REPLY, CTA_SECMARK, /* obsolete */ CTA_ZONE, CTA_SECCTX, CTA_TIMESTAMP, CTA_MARK_MASK, CTA_LABELS, CTA_LABELS_MASK, __CTA_MAX };
const ( CTA_TUPLE_IP = 1 CTA_TUPLE_PROTO = 2 )
enum ctattr_tuple { CTA_TUPLE_UNSPEC, CTA_TUPLE_IP, CTA_TUPLE_PROTO, CTA_TUPLE_ZONE, __CTA_TUPLE_MAX };
#define CTA_TUPLE_MAX (__CTA_TUPLE_MAX - 1)
const ( CTA_IP_V4_SRC = 1 CTA_IP_V4_DST = 2 CTA_IP_V6_SRC = 3 CTA_IP_V6_DST = 4 )
enum ctattr_ip { CTA_IP_UNSPEC, CTA_IP_V4_SRC, CTA_IP_V4_DST, CTA_IP_V6_SRC, CTA_IP_V6_DST, __CTA_IP_MAX };
#define CTA_IP_MAX (__CTA_IP_MAX - 1)
const ( CTA_PROTO_NUM = 1 CTA_PROTO_SRC_PORT = 2 CTA_PROTO_DST_PORT = 3 )
enum ctattr_l4proto { CTA_PROTO_UNSPEC, CTA_PROTO_NUM, CTA_PROTO_SRC_PORT, CTA_PROTO_DST_PORT, CTA_PROTO_ICMP_ID, CTA_PROTO_ICMP_TYPE, CTA_PROTO_ICMP_CODE, CTA_PROTO_ICMPV6_ID, CTA_PROTO_ICMPV6_TYPE, CTA_PROTO_ICMPV6_CODE, __CTA_PROTO_MAX };
#define CTA_PROTO_MAX (__CTA_PROTO_MAX - 1)
const ( CTA_PROTOINFO_TCP_STATE = 1 CTA_PROTOINFO_TCP_WSCALE_ORIGINAL = 2 CTA_PROTOINFO_TCP_WSCALE_REPLY = 3 CTA_PROTOINFO_TCP_FLAGS_ORIGINAL = 4 CTA_PROTOINFO_TCP_FLAGS_REPLY = 5 )
enum ctattr_protoinfo_tcp { CTA_PROTOINFO_TCP_UNSPEC, CTA_PROTOINFO_TCP_STATE, CTA_PROTOINFO_TCP_WSCALE_ORIGINAL, CTA_PROTOINFO_TCP_WSCALE_REPLY, CTA_PROTOINFO_TCP_FLAGS_ORIGINAL, CTA_PROTOINFO_TCP_FLAGS_REPLY, __CTA_PROTOINFO_TCP_MAX };
#define CTA_PROTOINFO_TCP_MAX (__CTA_PROTOINFO_TCP_MAX - 1)
const ( CTA_COUNTERS_PACKETS = 1 CTA_COUNTERS_BYTES = 2 )
enum ctattr_counters { CTA_COUNTERS_UNSPEC, CTA_COUNTERS_PACKETS, /* 64bit counters */ CTA_COUNTERS_BYTES, /* 64bit counters */ CTA_COUNTERS32_PACKETS, /* old 32bit counters, unused */ CTA_COUNTERS32_BYTES, /* old 32bit counters, unused */ CTA_COUNTERS_PAD, __CTA_COUNTERS_M };
#define CTA_COUNTERS_MAX (__CTA_COUNTERS_MAX - 1)
const ( GENL_DEVLINK_VERSION = 1 GENL_DEVLINK_NAME = "devlink" )
const ( DEVLINK_CMD_GET = 1 DEVLINK_CMD_ESWITCH_GET = 29 )
const ( DEVLINK_ATTR_BUS_NAME = 1 DEVLINK_ATTR_DEV_NAME = 2 DEVLINK_ATTR_ESWITCH_MODE = 25 DEVLINK_ATTR_ESWITCH_INLINE_MODE = 26 DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 62 )
const ( DEVLINK_ESWITCH_MODE_LEGACY = 0 DEVLINK_ESWITCH_MODE_SWITCHDEV = 1 )
const ( DEVLINK_ESWITCH_INLINE_MODE_NONE = 0 DEVLINK_ESWITCH_INLINE_MODE_LINK = 1 DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 2 DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 3 )
const ( DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0 DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 1 )
const ( GENL_ID_CTRL = 0x10 GENL_CTRL_VERSION = 2 GENL_CTRL_NAME = "nlctrl" )
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 )
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 )
const ( IFLA_INFO_UNSPEC = iota IFLA_INFO_KIND IFLA_INFO_DATA IFLA_INFO_XSTATS IFLA_INFO_MAX = IFLA_INFO_XSTATS )
const ( IFLA_VLAN_UNSPEC = iota IFLA_VLAN_ID IFLA_VLAN_FLAGS IFLA_VLAN_EGRESS_QOS IFLA_VLAN_INGRESS_QOS IFLA_VLAN_PROTOCOL IFLA_VLAN_MAX = IFLA_VLAN_PROTOCOL )
const ( VETH_INFO_UNSPEC = iota VETH_INFO_PEER VETH_INFO_MAX = VETH_INFO_PEER )
const ( IFLA_VXLAN_UNSPEC = iota IFLA_VXLAN_ID IFLA_VXLAN_GROUP IFLA_VXLAN_LINK IFLA_VXLAN_LOCAL IFLA_VXLAN_TTL IFLA_VXLAN_TOS IFLA_VXLAN_LEARNING IFLA_VXLAN_AGEING IFLA_VXLAN_LIMIT IFLA_VXLAN_PORT_RANGE IFLA_VXLAN_PROXY IFLA_VXLAN_RSC IFLA_VXLAN_L2MISS IFLA_VXLAN_L3MISS IFLA_VXLAN_PORT IFLA_VXLAN_GROUP6 IFLA_VXLAN_LOCAL6 IFLA_VXLAN_UDP_CSUM IFLA_VXLAN_UDP_ZERO_CSUM6_TX IFLA_VXLAN_UDP_ZERO_CSUM6_RX IFLA_VXLAN_REMCSUM_TX IFLA_VXLAN_REMCSUM_RX IFLA_VXLAN_GBP IFLA_VXLAN_REMCSUM_NOPARTIAL IFLA_VXLAN_FLOWBASED IFLA_VXLAN_MAX = IFLA_VXLAN_FLOWBASED )
const ( BRIDGE_MODE_UNSPEC = iota BRIDGE_MODE_HAIRPIN )
const ( IFLA_BRPORT_UNSPEC = iota IFLA_BRPORT_STATE IFLA_BRPORT_PRIORITY IFLA_BRPORT_COST IFLA_BRPORT_MODE IFLA_BRPORT_GUARD IFLA_BRPORT_PROTECT IFLA_BRPORT_FAST_LEAVE IFLA_BRPORT_LEARNING IFLA_BRPORT_UNICAST_FLOOD IFLA_BRPORT_PROXYARP IFLA_BRPORT_LEARNING_SYNC IFLA_BRPORT_PROXYARP_WIFI IFLA_BRPORT_MAX = IFLA_BRPORT_PROXYARP_WIFI )
const ( IFLA_IPVLAN_UNSPEC = iota IFLA_IPVLAN_MODE IFLA_IPVLAN_MAX = IFLA_IPVLAN_MODE )
const ( IFLA_MACVLAN_UNSPEC = iota IFLA_MACVLAN_MODE IFLA_MACVLAN_FLAGS IFLA_MACVLAN_MACADDR_MODE IFLA_MACVLAN_MACADDR IFLA_MACVLAN_MACADDR_DATA IFLA_MACVLAN_MACADDR_COUNT IFLA_MACVLAN_MAX = IFLA_MACVLAN_FLAGS )
const ( MACVLAN_MODE_PRIVATE = 1 MACVLAN_MODE_VEPA = 2 MACVLAN_MODE_BRIDGE = 4 MACVLAN_MODE_PASSTHRU = 8 MACVLAN_MODE_SOURCE = 16 )
const ( MACVLAN_MACADDR_ADD = iota MACVLAN_MACADDR_DEL MACVLAN_MACADDR_FLUSH MACVLAN_MACADDR_SET )
const ( IFLA_BOND_UNSPEC = iota IFLA_BOND_MODE IFLA_BOND_ACTIVE_SLAVE IFLA_BOND_MIIMON IFLA_BOND_UPDELAY IFLA_BOND_DOWNDELAY IFLA_BOND_USE_CARRIER IFLA_BOND_ARP_INTERVAL IFLA_BOND_ARP_IP_TARGET IFLA_BOND_ARP_VALIDATE IFLA_BOND_ARP_ALL_TARGETS IFLA_BOND_PRIMARY IFLA_BOND_PRIMARY_RESELECT IFLA_BOND_FAIL_OVER_MAC IFLA_BOND_XMIT_HASH_POLICY IFLA_BOND_RESEND_IGMP IFLA_BOND_NUM_PEER_NOTIF IFLA_BOND_ALL_SLAVES_ACTIVE IFLA_BOND_MIN_LINKS IFLA_BOND_LP_INTERVAL IFLA_BOND_PACKETS_PER_SLAVE IFLA_BOND_AD_LACP_RATE IFLA_BOND_AD_SELECT IFLA_BOND_AD_INFO IFLA_BOND_AD_ACTOR_SYS_PRIO IFLA_BOND_AD_USER_PORT_KEY IFLA_BOND_AD_ACTOR_SYSTEM IFLA_BOND_TLB_DYNAMIC_LB )
const ( IFLA_BOND_AD_INFO_UNSPEC = iota IFLA_BOND_AD_INFO_AGGREGATOR IFLA_BOND_AD_INFO_NUM_PORTS IFLA_BOND_AD_INFO_ACTOR_KEY IFLA_BOND_AD_INFO_PARTNER_KEY IFLA_BOND_AD_INFO_PARTNER_MAC )
const ( IFLA_BOND_SLAVE_UNSPEC = iota IFLA_BOND_SLAVE_STATE IFLA_BOND_SLAVE_MII_STATUS IFLA_BOND_SLAVE_LINK_FAILURE_COUNT IFLA_BOND_SLAVE_PERM_HWADDR IFLA_BOND_SLAVE_QUEUE_ID IFLA_BOND_SLAVE_AD_AGGREGATOR_ID )
const ( IFLA_GRE_UNSPEC = iota IFLA_GRE_LINK IFLA_GRE_IFLAGS IFLA_GRE_OFLAGS IFLA_GRE_IKEY IFLA_GRE_OKEY IFLA_GRE_LOCAL IFLA_GRE_REMOTE IFLA_GRE_TTL IFLA_GRE_TOS IFLA_GRE_PMTUDISC IFLA_GRE_ENCAP_LIMIT IFLA_GRE_FLOWINFO IFLA_GRE_FLAGS IFLA_GRE_ENCAP_TYPE IFLA_GRE_ENCAP_FLAGS IFLA_GRE_ENCAP_SPORT IFLA_GRE_ENCAP_DPORT IFLA_GRE_COLLECT_METADATA IFLA_GRE_MAX = IFLA_GRE_COLLECT_METADATA )
const ( GRE_CSUM = 0x8000 GRE_ROUTING = 0x4000 GRE_KEY = 0x2000 GRE_SEQ = 0x1000 GRE_STRICT = 0x0800 GRE_REC = 0x0700 GRE_FLAGS = 0x00F8 GRE_VERSION = 0x0007 )
const ( IFLA_VF_INFO_UNSPEC = iota IFLA_VF_INFO IFLA_VF_INFO_MAX = IFLA_VF_INFO )
const ( IFLA_VF_UNSPEC = iota IFLA_VF_MAC /* Hardware queue specific attributes */ IFLA_VF_VLAN IFLA_VF_TX_RATE /* Max TX Bandwidth Allocation */ IFLA_VF_SPOOFCHK /* Spoof Checking on/off switch */ IFLA_VF_LINK_STATE /* link state enable/disable/auto switch */ IFLA_VF_RATE /* Min and Max TX Bandwidth Allocation */ IFLA_VF_RSS_QUERY_EN /* RSS Redirection Table and Hash Key query * on/off switch */ IFLA_VF_STATS /* network device statistics */ IFLA_VF_TRUST /* Trust state of VF */ IFLA_VF_IB_NODE_GUID /* VF Infiniband node GUID */ IFLA_VF_IB_PORT_GUID /* VF Infiniband port GUID */ IFLA_VF_MAX = IFLA_VF_IB_PORT_GUID )
const ( IFLA_VF_LINK_STATE_AUTO = iota /* link state of the uplink */ IFLA_VF_LINK_STATE_ENABLE /* link always up */ IFLA_VF_LINK_STATE_DISABLE /* link always down */ IFLA_VF_LINK_STATE_MAX = IFLA_VF_LINK_STATE_DISABLE )
const ( IFLA_VF_STATS_RX_PACKETS = iota IFLA_VF_STATS_TX_PACKETS IFLA_VF_STATS_RX_BYTES IFLA_VF_STATS_TX_BYTES IFLA_VF_STATS_BROADCAST IFLA_VF_STATS_MULTICAST IFLA_VF_STATS_MAX = IFLA_VF_STATS_MULTICAST )
const ( SizeofVfMac = 0x24 SizeofVfVlan = 0x0c SizeofVfTxRate = 0x08 SizeofVfRate = 0x0c SizeofVfSpoofchk = 0x08 SizeofVfLinkState = 0x08 SizeofVfRssQueryEn = 0x08 SizeofVfTrust = 0x08 SizeofVfGUID = 0x10 )
const ( XDP_FLAGS_UPDATE_IF_NOEXIST = 1 << iota XDP_FLAGS_SKB_MODE XDP_FLAGS_DRV_MODE XDP_FLAGS_MASK = XDP_FLAGS_UPDATE_IF_NOEXIST | XDP_FLAGS_SKB_MODE | XDP_FLAGS_DRV_MODE )
const ( IFLA_XDP_UNSPEC = iota IFLA_XDP_FD /* fd of xdp program to attach, or -1 to remove */ IFLA_XDP_ATTACHED /* read-only bool indicating if prog is attached */ IFLA_XDP_FLAGS /* xdp prog related flags */ IFLA_XDP_PROG_ID /* xdp prog id */ IFLA_XDP_MAX = IFLA_XDP_PROG_ID )
const ( IFLA_IPTUN_UNSPEC = iota IFLA_IPTUN_LINK IFLA_IPTUN_LOCAL IFLA_IPTUN_REMOTE IFLA_IPTUN_TTL IFLA_IPTUN_TOS IFLA_IPTUN_ENCAP_LIMIT IFLA_IPTUN_FLOWINFO IFLA_IPTUN_FLAGS IFLA_IPTUN_PROTO IFLA_IPTUN_PMTUDISC IFLA_IPTUN_6RD_PREFIX IFLA_IPTUN_6RD_RELAY_PREFIX IFLA_IPTUN_6RD_PREFIXLEN IFLA_IPTUN_6RD_RELAY_PREFIXLEN IFLA_IPTUN_ENCAP_TYPE IFLA_IPTUN_ENCAP_FLAGS IFLA_IPTUN_ENCAP_SPORT IFLA_IPTUN_ENCAP_DPORT IFLA_IPTUN_COLLECT_METADATA IFLA_IPTUN_MAX = IFLA_IPTUN_COLLECT_METADATA )
const ( IFLA_VTI_UNSPEC = iota IFLA_VTI_LINK IFLA_VTI_IKEY IFLA_VTI_OKEY IFLA_VTI_LOCAL IFLA_VTI_REMOTE IFLA_VTI_MAX = IFLA_VTI_REMOTE )
const ( IFLA_VRF_UNSPEC = iota IFLA_VRF_TABLE )
const ( IFLA_BR_UNSPEC = iota IFLA_BR_FORWARD_DELAY IFLA_BR_HELLO_TIME IFLA_BR_MAX_AGE IFLA_BR_AGEING_TIME IFLA_BR_STP_STATE IFLA_BR_PRIORITY IFLA_BR_VLAN_FILTERING IFLA_BR_VLAN_PROTOCOL IFLA_BR_GROUP_FWD_MASK IFLA_BR_ROOT_ID IFLA_BR_BRIDGE_ID IFLA_BR_ROOT_PORT IFLA_BR_ROOT_PATH_COST IFLA_BR_TOPOLOGY_CHANGE IFLA_BR_TOPOLOGY_CHANGE_DETECTED IFLA_BR_HELLO_TIMER IFLA_BR_TCN_TIMER IFLA_BR_TOPOLOGY_CHANGE_TIMER IFLA_BR_GC_TIMER IFLA_BR_GROUP_ADDR IFLA_BR_FDB_FLUSH IFLA_BR_MCAST_ROUTER IFLA_BR_MCAST_SNOOPING IFLA_BR_MCAST_QUERY_USE_IFADDR IFLA_BR_MCAST_QUERIER IFLA_BR_MCAST_HASH_ELASTICITY IFLA_BR_MCAST_HASH_MAX IFLA_BR_MCAST_LAST_MEMBER_CNT IFLA_BR_MCAST_STARTUP_QUERY_CNT IFLA_BR_MCAST_LAST_MEMBER_INTVL IFLA_BR_MCAST_MEMBERSHIP_INTVL IFLA_BR_MCAST_QUERIER_INTVL IFLA_BR_MCAST_QUERY_INTVL IFLA_BR_MCAST_QUERY_RESPONSE_INTVL IFLA_BR_MCAST_STARTUP_QUERY_INTVL IFLA_BR_NF_CALL_IPTABLES IFLA_BR_NF_CALL_IP6TABLES IFLA_BR_NF_CALL_ARPTABLES IFLA_BR_VLAN_DEFAULT_PVID IFLA_BR_PAD IFLA_BR_VLAN_STATS_ENABLED IFLA_BR_MCAST_STATS_ENABLED IFLA_BR_MCAST_IGMP_VERSION IFLA_BR_MCAST_MLD_VERSION IFLA_BR_MAX = IFLA_BR_MCAST_MLD_VERSION )
const ( IFLA_GTP_UNSPEC = iota IFLA_GTP_FD0 IFLA_GTP_FD1 IFLA_GTP_PDP_HASHSIZE IFLA_GTP_ROLE )
const ( GTP_ROLE_GGSN = iota GTP_ROLE_SGSN )
const ( IFLA_XFRM_UNSPEC = iota IFLA_XFRM_LINK IFLA_XFRM_IF_ID IFLA_XFRM_MAX = iota - 1 )
const ( MPLS_LS_LABEL_SHIFT = 12 MPLS_LS_S_SHIFT = 8 )
const ( // Family type definitions FAMILY_ALL = unix.AF_UNSPEC FAMILY_V4 = unix.AF_INET FAMILY_V6 = unix.AF_INET6 FAMILY_MPLS = AF_MPLS // Arbitrary set value (greater than default 4k) to allow receiving // from kernel more verbose messages e.g. for statistics, // tc rules or filters, or other more memory requiring data. RECEIVE_BUFFER_SIZE = 65536 )
const ( RDMA_NLDEV_CMD_GET = 1 RDMA_NLDEV_CMD_SET = 2 )
const ( RDMA_NLDEV_ATTR_DEV_INDEX = 1 RDMA_NLDEV_ATTR_DEV_NAME = 2 RDMA_NLDEV_ATTR_PORT_INDEX = 3 RDMA_NLDEV_ATTR_CAP_FLAGS = 4 RDMA_NLDEV_ATTR_FW_VERSION = 5 RDMA_NLDEV_ATTR_NODE_GUID = 6 RDMA_NLDEV_ATTR_SYS_IMAGE_GUID = 7 RDMA_NLDEV_ATTR_SUBNET_PREFIX = 8 RDMA_NLDEV_ATTR_LID = 9 RDMA_NLDEV_ATTR_SM_LID = 10 RDMA_NLDEV_ATTR_LMC = 11 RDMA_NLDEV_ATTR_PORT_STATE = 12 RDMA_NLDEV_ATTR_PORT_PHYS_STATE = 13 RDMA_NLDEV_ATTR_DEV_NODE_TYPE = 14 )
const ( SEG6_IPTUN_MODE_INLINE = iota SEG6_IPTUN_MODE_ENCAP )
seg6 encap mode
const ( SEG6_IPTUNNEL_UNSPEC = iota SEG6_IPTUNNEL_SRH )
number of nested RTATTR from include/uapi/linux/seg6_iptunnel.h
const ( SEG6_LOCAL_UNSPEC = iota SEG6_LOCAL_ACTION SEG6_LOCAL_SRH SEG6_LOCAL_TABLE SEG6_LOCAL_NH4 SEG6_LOCAL_NH6 SEG6_LOCAL_IIF SEG6_LOCAL_OIF )
seg6local parameters
const ( SEG6_LOCAL_ACTION_END = iota + 1 // 1 SEG6_LOCAL_ACTION_END_X // 2 SEG6_LOCAL_ACTION_END_T // 3 SEG6_LOCAL_ACTION_END_DX2 // 4 SEG6_LOCAL_ACTION_END_DX6 // 5 SEG6_LOCAL_ACTION_END_DX4 // 6 SEG6_LOCAL_ACTION_END_DT6 // 7 SEG6_LOCAL_ACTION_END_DT4 // 8 SEG6_LOCAL_ACTION_END_B6 // 9 SEG6_LOCAL_ACTION_END_B6_ENCAPS // 10 SEG6_LOCAL_ACTION_END_BM // 11 SEG6_LOCAL_ACTION_END_S // 12 SEG6_LOCAL_ACTION_END_AS // 13 SEG6_LOCAL_ACTION_END_AM // 14 )
seg6local actions
const ( FRA_UNSPEC = iota FRA_DST /* destination address */ FRA_SRC /* source address */ FRA_IIFNAME /* interface name */ FRA_GOTO /* target to jump to (FR_ACT_GOTO) */ FRA_UNUSED2 FRA_PRIORITY /* priority/preference */ FRA_UNUSED3 FRA_UNUSED4 FRA_UNUSED5 FRA_FWMARK /* mark */ FRA_FLOW /* flow/class id */ FRA_TUN_ID FRA_SUPPRESS_IFGROUP FRA_SUPPRESS_PREFIXLEN FRA_TABLE /* Extended table id */ FRA_FWMASK /* mask for netfilter mark */ FRA_OIFNAME FRA_PAD FRA_L3MDEV /* iif or oif is l3mdev goto its table */ FRA_UID_RANGE /* UID range */ )
syscall package lack of rule atributes type. Thus there are defined below
const ( FR_ACT_UNSPEC = iota FR_ACT_TO_TBL /* Pass to fixed table */ FR_ACT_GOTO /* Jump to another rule */ FR_ACT_NOP /* No operation */ FR_ACT_RES3 FR_ACT_RES4 FR_ACT_BLACKHOLE /* Drop without notification */ FR_ACT_UNREACHABLE /* Drop with ENETUNREACH */ FR_ACT_PROHIBIT /* Drop with EACCES */ )
ip rule netlink request types
const ( SOCK_DIAG_BY_FAMILY = 20 /* linux.sock_diag.h */ TCPDIAG_NOCOOKIE = 0xFFFFFFFF /* TCPDIAG_NOCOOKIE in net/ipv4/tcp_diag.h*/ )
socket diags related
const ( RTA_NEWDST = 0x13 RTA_ENCAP_TYPE = 0x15 RTA_ENCAP = 0x16 )
const ( MPLS_IPTUNNEL_UNSPEC = iota MPLS_IPTUNNEL_DST )
RTA_ENCAP subtype
const ( LWTUNNEL_ENCAP_NONE = iota LWTUNNEL_ENCAP_MPLS LWTUNNEL_ENCAP_IP LWTUNNEL_ENCAP_ILA LWTUNNEL_ENCAP_IP6 LWTUNNEL_ENCAP_SEG6 LWTUNNEL_ENCAP_BPF LWTUNNEL_ENCAP_SEG6_LOCAL )
light weight tunnel encap types
const ( IPV6_SRCRT_STRICT = 0x01 // Deprecated; will be removed IPV6_SRCRT_TYPE_0 = 0 // Deprecated; will be removed IPV6_SRCRT_TYPE_2 = 2 // IPv6 type 2 Routing Header IPV6_SRCRT_TYPE_4 = 4 // Segment Routing with IPv6 )
routing header types
const ( LINKLAYER_UNSPEC = iota LINKLAYER_ETHERNET LINKLAYER_ATM )
LinkLayer
const ( ATM_CELL_PAYLOAD = 48 ATM_CELL_SIZE = 53 )
ATM
const ( TCA_POLICE_UNSPEC = iota TCA_POLICE_TBF TCA_POLICE_RATE TCA_POLICE_PEAKRATE TCA_POLICE_AVRATE TCA_POLICE_RESULT TCA_POLICE_MAX = TCA_POLICE_RESULT )
Police
const ( TCA_UNSPEC = iota TCA_KIND TCA_OPTIONS TCA_STATS TCA_XSTATS TCA_RATE TCA_FCNT TCA_STATS2 TCA_STAB TCA_MAX = TCA_STAB )
Message types
const ( TCA_ACT_TAB = 1 TCAA_MAX = 1 )
const ( TCA_ACT_UNSPEC = iota TCA_ACT_KIND TCA_ACT_OPTIONS TCA_ACT_INDEX TCA_ACT_STATS TCA_ACT_MAX )
const ( TCA_PRIO_UNSPEC = iota TCA_PRIO_MQ TCA_PRIO_MAX = TCA_PRIO_MQ )
const ( TCA_STATS_UNSPEC = iota TCA_STATS_BASIC TCA_STATS_RATE_EST TCA_STATS_QUEUE TCA_STATS_APP TCA_STATS_MAX = TCA_STATS_APP )
const ( SizeofTcMsg = 0x14 SizeofTcActionMsg = 0x04 SizeofTcPrioMap = 0x14 SizeofTcRateSpec = 0x0c SizeofTcNetemQopt = 0x18 SizeofTcNetemCorr = 0x0c SizeofTcNetemReorder = 0x08 SizeofTcNetemCorrupt = 0x08 SizeofTcTbfQopt = 2*SizeofTcRateSpec + 0x0c SizeofTcHtbCopt = 2*SizeofTcRateSpec + 0x14 SizeofTcHtbGlob = 0x14 SizeofTcU32Key = 0x10 SizeofTcU32Sel = 0x10 // without keys SizeofTcGen = 0x14 SizeofTcMirred = SizeofTcGen + 0x08 SizeofTcPolice = 2*SizeofTcRateSpec + 0x20 )
const ( TCA_TBF_UNSPEC = iota TCA_TBF_PARMS TCA_TBF_RTAB TCA_TBF_PTAB TCA_TBF_RATE64 TCA_TBF_PRATE64 TCA_TBF_BURST TCA_TBF_PBURST TCA_TBF_MAX = TCA_TBF_PBURST )
const ( TCA_NETEM_UNSPEC = iota TCA_NETEM_CORR TCA_NETEM_DELAY_DIST TCA_NETEM_REORDER TCA_NETEM_CORRUPT TCA_NETEM_LOSS TCA_NETEM_RATE TCA_NETEM_ECN TCA_NETEM_RATE64 TCA_NETEM_MAX = TCA_NETEM_RATE64 )
const ( TCA_HTB_UNSPEC = iota TCA_HTB_PARMS TCA_HTB_INIT TCA_HTB_CTAB TCA_HTB_RTAB TCA_HTB_DIRECT_QLEN TCA_HTB_RATE64 TCA_HTB_CEIL64 TCA_HTB_MAX = TCA_HTB_CEIL64 )
const ( TCA_U32_UNSPEC = iota TCA_U32_CLASSID TCA_U32_HASH TCA_U32_LINK TCA_U32_DIVISOR TCA_U32_SEL TCA_U32_POLICE TCA_U32_ACT TCA_U32_INDEV TCA_U32_PCNT TCA_U32_MARK TCA_U32_MAX = TCA_U32_MARK )
const ( TC_U32_TERMINAL = 1 << iota TC_U32_OFFSET = 1 << iota TC_U32_VAROFFSET = 1 << iota TC_U32_EAT = 1 << iota )
const ( TCA_GACT_UNSPEC = iota TCA_GACT_TM TCA_GACT_PARMS TCA_GACT_PROB TCA_GACT_MAX = TCA_GACT_PROB )
const ( TCA_ACT_BPF_UNSPEC = iota TCA_ACT_BPF_TM TCA_ACT_BPF_PARMS TCA_ACT_BPF_OPS_LEN TCA_ACT_BPF_OPS TCA_ACT_BPF_FD TCA_ACT_BPF_NAME TCA_ACT_BPF_MAX = TCA_ACT_BPF_NAME )
const ( TCA_BPF_UNSPEC = iota TCA_BPF_ACT TCA_BPF_POLICE TCA_BPF_CLASSID TCA_BPF_OPS_LEN TCA_BPF_OPS TCA_BPF_FD TCA_BPF_NAME TCA_BPF_FLAGS TCA_BPF_MAX = TCA_BPF_FLAGS )
const ( TCA_MIRRED_UNSPEC = iota TCA_MIRRED_TM TCA_MIRRED_PARMS TCA_MIRRED_MAX = TCA_MIRRED_PARMS )
const ( TCA_FW_UNSPEC = iota TCA_FW_CLASSID TCA_FW_POLICE TCA_FW_INDEV TCA_FW_ACT TCA_FW_MASK TCA_FW_MAX = TCA_FW_MASK )
const ( TCA_MATCHALL_UNSPEC = iota TCA_MATCHALL_CLASSID TCA_MATCHALL_ACT TCA_MATCHALL_FLAGS )
const ( TCA_FQ_UNSPEC = iota TCA_FQ_PLIMIT // limit of total number of packets in queue TCA_FQ_FLOW_PLIMIT // limit of packets per flow TCA_FQ_QUANTUM // RR quantum TCA_FQ_INITIAL_QUANTUM // RR quantum for new flow TCA_FQ_RATE_ENABLE // enable/disable rate limiting TCA_FQ_FLOW_DEFAULT_RATE // obsolete do not use TCA_FQ_FLOW_MAX_RATE // per flow max rate TCA_FQ_BUCKETS_LOG // log2(number of buckets) TCA_FQ_FLOW_REFILL_DELAY // flow credit refill delay in usec TCA_FQ_ORPHAN_MASK // mask applied to orphaned skb hashes TCA_FQ_LOW_RATE_THRESHOLD // per packet delay under this rate )
const ( TCA_FQ_CODEL_UNSPEC = iota TCA_FQ_CODEL_TARGET TCA_FQ_CODEL_LIMIT TCA_FQ_CODEL_INTERVAL TCA_FQ_CODEL_ECN TCA_FQ_CODEL_FLOWS TCA_FQ_CODEL_QUANTUM TCA_FQ_CODEL_CE_THRESHOLD TCA_FQ_CODEL_DROP_BATCH_SIZE TCA_FQ_CODEL_MEMORY_LIMIT )
const ( TCA_HFSC_UNSPEC = iota TCA_HFSC_RSC TCA_HFSC_FSC TCA_HFSC_USC )
const ( XFRM_MSG_BASE XfrmMsgType = 0x10 XFRM_MSG_NEWSA = 0x10 XFRM_MSG_DELSA = 0x11 XFRM_MSG_GETSA = 0x12 XFRM_MSG_NEWPOLICY = 0x13 XFRM_MSG_DELPOLICY = 0x14 XFRM_MSG_GETPOLICY = 0x15 XFRM_MSG_ALLOCSPI = 0x16 XFRM_MSG_ACQUIRE = 0x17 XFRM_MSG_EXPIRE = 0x18 XFRM_MSG_UPDPOLICY = 0x19 XFRM_MSG_UPDSA = 0x1a XFRM_MSG_POLEXPIRE = 0x1b XFRM_MSG_FLUSHSA = 0x1c XFRM_MSG_FLUSHPOLICY = 0x1d XFRM_MSG_NEWAE = 0x1e XFRM_MSG_GETAE = 0x1f XFRM_MSG_REPORT = 0x20 XFRM_MSG_MIGRATE = 0x21 XFRM_MSG_NEWSADINFO = 0x22 XFRM_MSG_GETSADINFO = 0x23 XFRM_MSG_NEWSPDINFO = 0x24 XFRM_MSG_GETSPDINFO = 0x25 XFRM_MSG_MAPPING = 0x26 XFRM_MSG_MAX = 0x26 XFRM_NR_MSGTYPES = 0x17 )
Message Types
const ( /* Netlink message attributes. */ XFRMA_UNSPEC = iota XFRMA_ALG_AUTH /* struct xfrm_algo */ XFRMA_ALG_CRYPT /* struct xfrm_algo */ XFRMA_ALG_COMP /* struct xfrm_algo */ XFRMA_ENCAP /* struct xfrm_algo + struct xfrm_encap_tmpl */ XFRMA_TMPL /* 1 or more struct xfrm_user_tmpl */ XFRMA_SA /* struct xfrm_usersa_info */ XFRMA_POLICY /* struct xfrm_userpolicy_info */ XFRMA_SEC_CTX /* struct xfrm_sec_ctx */ XFRMA_LTIME_VAL XFRMA_REPLAY_VAL XFRMA_REPLAY_THRESH XFRMA_ETIMER_THRESH XFRMA_SRCADDR /* xfrm_address_t */ XFRMA_COADDR /* xfrm_address_t */ XFRMA_LASTUSED /* unsigned long */ XFRMA_POLICY_TYPE /* struct xfrm_userpolicy_type */ XFRMA_MIGRATE XFRMA_ALG_AEAD /* struct xfrm_algo_aead */ XFRMA_KMADDRESS /* struct xfrm_user_kmaddress */ XFRMA_ALG_AUTH_TRUNC /* struct xfrm_algo_auth */ XFRMA_MARK /* struct xfrm_mark */ XFRMA_TFCPAD /* __u32 */ XFRMA_REPLAY_ESN_VAL /* struct xfrm_replay_esn */ XFRMA_SA_EXTRA_FLAGS /* __u32 */ XFRMA_PROTO /* __u8 */ XFRMA_ADDRESS_FILTER /* struct xfrm_address_filter */ XFRMA_PAD XFRMA_OFFLOAD_DEV /* struct xfrm_state_offload */ XFRMA_SET_MARK /* __u32 */ XFRMA_SET_MARK_MASK /* __u32 */ XFRMA_IF_ID /* __u32 */ XFRMA_MAX = iota - 1 )
Attribute types
const ( SizeofXfrmAddress = 0x10 SizeofXfrmSelector = 0x38 SizeofXfrmLifetimeCfg = 0x40 SizeofXfrmLifetimeCur = 0x20 SizeofXfrmId = 0x18 SizeofXfrmMark = 0x08 )
const ( XFRMNLGRP_NONE = 0x0 XFRMNLGRP_ACQUIRE = 0x1 XFRMNLGRP_EXPIRE = 0x2 XFRMNLGRP_SA = 0x3 XFRMNLGRP_POLICY = 0x4 XFRMNLGRP_AEVENTS = 0x5 XFRMNLGRP_REPORT = 0x6 XFRMNLGRP_MIGRATE = 0x7 XFRMNLGRP_MAPPING = 0x8 )
Netlink groups
const ( SizeofXfrmUserpolicyId = 0x40 SizeofXfrmUserpolicyInfo = 0xa8 SizeofXfrmUserTmpl = 0x40 )
const ( SizeofXfrmUsersaId = 0x18 SizeofXfrmStats = 0x0c SizeofXfrmUsersaInfo = 0xe0 SizeofXfrmUserSpiInfo = 0xe8 SizeofXfrmAlgo = 0x44 SizeofXfrmAlgoAuth = 0x48 SizeofXfrmAlgoAEAD = 0x48 SizeofXfrmEncapTmpl = 0x18 SizeofXfrmUsersaFlush = 0x8 SizeofXfrmReplayStateEsn = 0x18 )
const ( XFRM_STATE_NOECN = 1 XFRM_STATE_DECAP_DSCP = 2 XFRM_STATE_NOPMTUDISC = 4 XFRM_STATE_WILDRECV = 8 XFRM_STATE_ICMP = 16 XFRM_STATE_AF_UNSPEC = 32 XFRM_STATE_ALIGN4 = 64 XFRM_STATE_ESN = 128 )
const (
AF_MPLS = 28
)
const (
CTA_PROTOINFO_TCP = 1
)
enum ctattr_protoinfo { CTA_PROTOINFO_UNSPEC, CTA_PROTOINFO_TCP, CTA_PROTOINFO_DCCP, CTA_PROTOINFO_SCTP, __CTA_PROTOINFO_MAX };
#define CTA_PROTOINFO_MAX (__CTA_PROTOINFO_MAX - 1)
const (
DEFAULT_CHANGE = 0xFFFFFFFF
)
const (
GENL_CTRL_CMD_GETFAMILY = 3
)
const IFA_CACHEINFO = 6
const (
NFNETLINK_V0 = 0
)
#define NFNETLINK_V0 0
const (
NLA_F_NESTED = (1 << 15)
)
#define NLA_F_NESTED (1 << 15)
const (
RDMA_NL_GET_CLIENT_SHIFT = 10
)
const (
RDMA_NL_NLDEV = 5
)
const (
SEG6_IPTUNNEL_MAX = __SEG6_IPTUNNEL_MAX - 1
)
const (
SEG6_LOCAL_ACTION_MAX = __SEG6_LOCAL_ACTION_MAX - 1
)
const (
SEG6_LOCAL_MAX = __SEG6_LOCAL_MAX
)
const (
SizeofBridgeVlanInfo = 0x04
)
const SizeofGenlmsg = 4
const SizeofIfaCacheInfo = 0x10
const (
SizeofXfrmUserExpire = 0xe8
)
const (
TCA_ACT_BPF = 13
)
const (
TCA_ACT_GACT = 5
)
const (
TCA_ACT_MIRRED = 8
)
const (
TCA_BPF_FLAG_ACT_DIRECT uint32 = 1 << iota
)
const TC_LINKLAYER_MASK = 0x0F
const (
TC_PRIO_MAX = 15
)
const (
XFRM_INF = ^uint64(0)
)
Infinity for packet and byte counts
Variables ¶
var L4ProtoMap = map[uint8]string{
6: "tcp",
17: "udp",
}
var SupportedNlFamilies = []int{unix.NETLINK_ROUTE, unix.NETLINK_XFRM, unix.NETLINK_NETFILTER}
SupportedNlFamilies contains the list of netlink families this netlink package supports
Functions ¶
func BytesToString ¶
func DecodeMPLSStack ¶
func EncodeMPLSStack ¶
func NonZeroTerminated ¶
func ParseRouteAttr ¶
func ParseRouteAttr(b []byte) ([]syscall.NetlinkRouteAttr, error)
func SEG6LocalActionString ¶ added in v1.0.1
Helper functions
func SerializeHfscCurve ¶ added in v1.0.1
func Uint16Attr ¶
func Uint32Attr ¶
func Uint64Attr ¶
func ZeroTerminated ¶
Types ¶
type BridgeVlanInfo ¶
func DeserializeBridgeVlanInfo ¶
func DeserializeBridgeVlanInfo(b []byte) *BridgeVlanInfo
func (*BridgeVlanInfo) EngressUntag ¶
func (b *BridgeVlanInfo) EngressUntag() bool
func (*BridgeVlanInfo) PortVID ¶
func (b *BridgeVlanInfo) PortVID() bool
func (*BridgeVlanInfo) Serialize ¶
func (b *BridgeVlanInfo) Serialize() []byte
func (*BridgeVlanInfo) String ¶
func (b *BridgeVlanInfo) String() string
type Curve ¶ added in v1.0.1
type Curve struct {
// contains filtered or unexported fields
}
func DeserializeHfscCurve ¶ added in v1.0.1
type Genlmsg ¶
func DeserializeGenlmsg ¶
type IfInfomsg ¶
IfInfomsg is related to links, but it is used for list requests as well
func DeserializeIfInfomsg ¶
func NewIfInfomsg ¶
Create an IfInfomsg with family specified
func NewIfInfomsgChild ¶
type IfaCacheInfo ¶
func DeserializeIfaCacheInfo ¶
func DeserializeIfaCacheInfo(b []byte) *IfaCacheInfo
func (*IfaCacheInfo) Len ¶
func (msg *IfaCacheInfo) Len() int
func (*IfaCacheInfo) Serialize ¶
func (msg *IfaCacheInfo) Serialize() []byte
type NetlinkRequest ¶
type NetlinkRequest struct { unix.NlMsghdr Data []NetlinkRequestData RawData []byte Sockets map[int]*SocketHandle }
func NewNetlinkRequest ¶
func NewNetlinkRequest(proto, flags int) *NetlinkRequest
Create a new netlink request from proto and flags Note the Len value will be inaccurate once data is added until the message is serialized
func (*NetlinkRequest) AddData ¶
func (req *NetlinkRequest) AddData(data NetlinkRequestData)
func (*NetlinkRequest) AddRawData ¶
func (req *NetlinkRequest) AddRawData(data []byte)
AddRawData adds raw bytes to the end of the NetlinkRequest object during serialization
func (*NetlinkRequest) Execute ¶
func (req *NetlinkRequest) Execute(sockType int, resType uint16) ([][]byte, error)
Execute the request against a the given sockType. Returns a list of netlink messages in serialized format, optionally filtered by resType.
func (*NetlinkRequest) Serialize ¶
func (req *NetlinkRequest) Serialize() []byte
Serialize the Netlink Request into a byte array
type NetlinkRequestData ¶
type NetlinkSocket ¶
func GetNetlinkSocketAt ¶
func GetNetlinkSocketAt(newNs, curNs netns.NsHandle, protocol int) (*NetlinkSocket, error)
GetNetlinkSocketAt opens a netlink socket in the network namespace newNs and positions the thread back into the network namespace specified by curNs, when done. If curNs is close, the function derives the current namespace and moves back into it when done. If newNs is close, the socket will be opened in the current network namespace.
func Subscribe ¶
func Subscribe(protocol int, groups ...uint) (*NetlinkSocket, error)
Create a netlink socket with a given protocol (e.g. NETLINK_ROUTE) and subscribe it to multicast groups passed in variable argument list. Returns the netlink socket on which Receive() method can be called to retrieve the messages from the kernel.
func SubscribeAt ¶
SubscribeAt works like Subscribe plus let's the caller choose the network namespace in which the socket would be opened (newNs). Then control goes back to curNs if open, otherwise to the netns at the time this function was called.
func (*NetlinkSocket) Close ¶
func (s *NetlinkSocket) Close()
func (*NetlinkSocket) GetFd ¶
func (s *NetlinkSocket) GetFd() int
func (*NetlinkSocket) GetPid ¶
func (s *NetlinkSocket) GetPid() (uint32, error)
func (*NetlinkSocket) Receive ¶
func (s *NetlinkSocket) Receive() ([]syscall.NetlinkMessage, error)
func (*NetlinkSocket) Send ¶
func (s *NetlinkSocket) Send(request *NetlinkRequest) error
func (*NetlinkSocket) SetReceiveTimeout ¶
func (s *NetlinkSocket) SetReceiveTimeout(timeout *unix.Timeval) error
SetReceiveTimeout allows to set a receive timeout on the socket
func (*NetlinkSocket) SetSendTimeout ¶
func (s *NetlinkSocket) SetSendTimeout(timeout *unix.Timeval) error
SetSendTimeout allows to set a send timeout on the socket
type Nfgenmsg ¶
/* General form of address family dependent message.
*/
struct nfgenmsg { __u8 nfgen_family; /* AF_xxx */ __u8 version; /* nfnetlink version */ __be16 res_id; /* resource id */ };
func DeserializeNfgenmsg ¶
type RtAttr ¶
Extend RtAttr to handle data and children
func NewRtAttrChild
deprecated
func (*RtAttr) AddChild ¶
func (a *RtAttr) AddChild(attr NetlinkRequestData)
AddChild adds an existing NetlinkRequestData as a child.
type RtGenMsg ¶ added in v1.0.1
func DeserializeRtGenMsg ¶ added in v1.0.1
func NewRtGenMsg ¶ added in v1.0.1
func NewRtGenMsg() *RtGenMsg
type RtNexthop ¶
type RtNexthop struct { unix.RtNexthop Children []NetlinkRequestData }
func DeserializeRtNexthop ¶
type SocketHandle ¶
type SocketHandle struct { Seq uint32 Socket *NetlinkSocket }
SocketHandle contains the netlink socket and the associated sequence counter for a specific netlink family
type TcActionMsg ¶
func DeserializeTcActionMsg ¶
func DeserializeTcActionMsg(b []byte) *TcActionMsg
func (*TcActionMsg) Len ¶
func (msg *TcActionMsg) Len() int
func (*TcActionMsg) Serialize ¶
func (x *TcActionMsg) Serialize() []byte
type TcGen ¶
func DeserializeTcGen ¶
type TcHtbCopt ¶
type TcHtbCopt struct { Rate TcRateSpec Ceil TcRateSpec Buffer uint32 Cbuffer uint32 Quantum uint32 Level uint32 Prio uint32 }
func DeserializeTcHtbCopt ¶
type TcHtbGlob ¶
type TcHtbGlob struct { Version uint32 Rate2Quantum uint32 Defcls uint32 Debug uint32 DirectPkts uint32 }
func DeserializeTcHtbGlob ¶
type TcMirred ¶
func DeserializeTcMirred ¶
type TcMsg ¶
type TcMsg struct { Family uint8 Pad [3]byte Ifindex int32 Handle uint32 Parent uint32 Info uint32 }
func DeserializeTcMsg ¶
type TcNetemCorr ¶
func DeserializeTcNetemCorr ¶
func DeserializeTcNetemCorr(b []byte) *TcNetemCorr
func (*TcNetemCorr) Len ¶
func (msg *TcNetemCorr) Len() int
func (*TcNetemCorr) Serialize ¶
func (x *TcNetemCorr) Serialize() []byte
type TcNetemCorrupt ¶
func DeserializeTcNetemCorrupt ¶
func DeserializeTcNetemCorrupt(b []byte) *TcNetemCorrupt
func (*TcNetemCorrupt) Len ¶
func (msg *TcNetemCorrupt) Len() int
func (*TcNetemCorrupt) Serialize ¶
func (x *TcNetemCorrupt) Serialize() []byte
type TcNetemQopt ¶
type TcNetemQopt struct { Latency uint32 Limit uint32 Loss uint32 Gap uint32 Duplicate uint32 Jitter uint32 }
func DeserializeTcNetemQopt ¶
func DeserializeTcNetemQopt(b []byte) *TcNetemQopt
func (*TcNetemQopt) Len ¶
func (msg *TcNetemQopt) Len() int
func (*TcNetemQopt) Serialize ¶
func (x *TcNetemQopt) Serialize() []byte
type TcNetemReorder ¶
func DeserializeTcNetemReorder ¶
func DeserializeTcNetemReorder(b []byte) *TcNetemReorder
func (*TcNetemReorder) Len ¶
func (msg *TcNetemReorder) Len() int
func (*TcNetemReorder) Serialize ¶
func (x *TcNetemReorder) Serialize() []byte
type TcPolice ¶
type TcPolice struct { Index uint32 Action int32 Limit uint32 Burst uint32 Mtu uint32 Rate TcRateSpec PeakRate TcRateSpec Refcnt int32 Bindcnt int32 Capab uint32 }
func DeserializeTcPolice ¶
type TcPrioMap ¶
type TcPrioMap struct { Bands int32 Priomap [TC_PRIO_MAX + 1]uint8 }
func DeserializeTcPrioMap ¶
type TcRateSpec ¶
type TcRateSpec struct { CellLog uint8 Linklayer uint8 Overhead uint16 CellAlign int16 Mpu uint16 Rate uint32 }
func DeserializeTcRateSpec ¶
func DeserializeTcRateSpec(b []byte) *TcRateSpec
func (*TcRateSpec) Len ¶
func (msg *TcRateSpec) Len() int
func (*TcRateSpec) Serialize ¶
func (x *TcRateSpec) Serialize() []byte
type TcTbfQopt ¶
type TcTbfQopt struct { Rate TcRateSpec Peakrate TcRateSpec Limit uint32 Buffer uint32 Mtu uint32 }
func DeserializeTcTbfQopt ¶
type TcU32Key ¶
func DeserializeTcU32Key ¶
type TcU32Sel ¶
type TcU32Sel struct { Flags uint8 Offshift uint8 Nkeys uint8 Pad uint8 Offmask uint16 // big endian Off uint16 Offoff int16 Hoff int16 Hmask uint32 // big endian Keys []TcU32Key }
func DeserializeTcU32Sel ¶
type VfGUID ¶ added in v1.0.1
func DeserializeVfGUID ¶ added in v1.0.1
type VfLinkState ¶
func DeserializeVfLinkState ¶
func DeserializeVfLinkState(b []byte) *VfLinkState
func (*VfLinkState) Len ¶
func (msg *VfLinkState) Len() int
func (*VfLinkState) Serialize ¶
func (msg *VfLinkState) Serialize() []byte
type VfMac ¶
func DeserializeVfMac ¶
type VfRate ¶
func DeserializeVfRate ¶
type VfRssQueryEn ¶
func DeserializeVfRssQueryEn ¶
func DeserializeVfRssQueryEn(b []byte) *VfRssQueryEn
func (*VfRssQueryEn) Len ¶
func (msg *VfRssQueryEn) Len() int
func (*VfRssQueryEn) Serialize ¶
func (msg *VfRssQueryEn) Serialize() []byte
type VfSpoofchk ¶
func DeserializeVfSpoofchk ¶
func DeserializeVfSpoofchk(b []byte) *VfSpoofchk
func (*VfSpoofchk) Len ¶
func (msg *VfSpoofchk) Len() int
func (*VfSpoofchk) Serialize ¶
func (msg *VfSpoofchk) Serialize() []byte
type VfTrust ¶
func DeserializeVfTrust ¶
type VfTxRate ¶
func DeserializeVfTxRate ¶
type VfVlan ¶
func DeserializeVfVlan ¶
type XfrmAddress ¶
type XfrmAddress [SizeofXfrmAddress]byte
func DeserializeXfrmAddress ¶
func DeserializeXfrmAddress(b []byte) *XfrmAddress
func (*XfrmAddress) FromIP ¶
func (x *XfrmAddress) FromIP(ip net.IP)
func (*XfrmAddress) Serialize ¶
func (x *XfrmAddress) Serialize() []byte
func (*XfrmAddress) ToIP ¶
func (x *XfrmAddress) ToIP() net.IP
type XfrmAlgo ¶
func DeserializeXfrmAlgo ¶
type XfrmAlgoAEAD ¶
func DeserializeXfrmAlgoAEAD ¶
func DeserializeXfrmAlgoAEAD(b []byte) *XfrmAlgoAEAD
func (*XfrmAlgoAEAD) Len ¶
func (msg *XfrmAlgoAEAD) Len() int
func (*XfrmAlgoAEAD) Serialize ¶
func (msg *XfrmAlgoAEAD) Serialize() []byte
type XfrmAlgoAuth ¶
func DeserializeXfrmAlgoAuth ¶
func DeserializeXfrmAlgoAuth(b []byte) *XfrmAlgoAuth
func (*XfrmAlgoAuth) Len ¶
func (msg *XfrmAlgoAuth) Len() int
func (*XfrmAlgoAuth) Serialize ¶
func (msg *XfrmAlgoAuth) Serialize() []byte
type XfrmEncapTmpl ¶
type XfrmEncapTmpl struct { EncapType uint16 EncapSport uint16 // big endian EncapDport uint16 // big endian Pad [2]byte EncapOa XfrmAddress }
func DeserializeXfrmEncapTmpl ¶
func DeserializeXfrmEncapTmpl(b []byte) *XfrmEncapTmpl
func (*XfrmEncapTmpl) Len ¶
func (msg *XfrmEncapTmpl) Len() int
func (*XfrmEncapTmpl) Serialize ¶
func (msg *XfrmEncapTmpl) Serialize() []byte
type XfrmId ¶
type XfrmId struct { Daddr XfrmAddress Spi uint32 // big endian Proto uint8 Pad [3]byte }
func DeserializeXfrmId ¶
type XfrmLifetimeCfg ¶
type XfrmLifetimeCfg struct { SoftByteLimit uint64 HardByteLimit uint64 SoftPacketLimit uint64 HardPacketLimit uint64 SoftAddExpiresSeconds uint64 HardAddExpiresSeconds uint64 SoftUseExpiresSeconds uint64 HardUseExpiresSeconds uint64 }
func DeserializeXfrmLifetimeCfg ¶
func DeserializeXfrmLifetimeCfg(b []byte) *XfrmLifetimeCfg
func (*XfrmLifetimeCfg) Len ¶
func (msg *XfrmLifetimeCfg) Len() int
func (*XfrmLifetimeCfg) Serialize ¶
func (msg *XfrmLifetimeCfg) Serialize() []byte
type XfrmLifetimeCur ¶
func DeserializeXfrmLifetimeCur ¶
func DeserializeXfrmLifetimeCur(b []byte) *XfrmLifetimeCur
func (*XfrmLifetimeCur) Len ¶
func (msg *XfrmLifetimeCur) Len() int
func (*XfrmLifetimeCur) Serialize ¶
func (msg *XfrmLifetimeCur) Serialize() []byte
type XfrmMark ¶
func DeserializeXfrmMark ¶
type XfrmMsg ¶
type XfrmMsg interface {
Type() XfrmMsgType
}
type XfrmMsgType ¶
type XfrmMsgType uint8
type XfrmReplayStateEsn ¶
type XfrmReplayStateEsn struct { BmpLen uint32 OSeq uint32 Seq uint32 OSeqHi uint32 SeqHi uint32 ReplayWindow uint32 Bmp []uint32 }
func (*XfrmReplayStateEsn) Serialize ¶
func (msg *XfrmReplayStateEsn) Serialize() []byte
type XfrmSelector ¶
type XfrmSelector struct { Daddr XfrmAddress Saddr XfrmAddress Dport uint16 // big endian DportMask uint16 // big endian Sport uint16 // big endian SportMask uint16 // big endian Family uint16 PrefixlenD uint8 PrefixlenS uint8 Proto uint8 Pad [3]byte Ifindex int32 User uint32 }
func DeserializeXfrmSelector ¶
func DeserializeXfrmSelector(b []byte) *XfrmSelector
func (*XfrmSelector) Len ¶
func (msg *XfrmSelector) Len() int
func (*XfrmSelector) Serialize ¶
func (msg *XfrmSelector) Serialize() []byte
type XfrmStats ¶
func DeserializeXfrmStats ¶
type XfrmUserExpire ¶
type XfrmUserExpire struct { XfrmUsersaInfo XfrmUsersaInfo Hard uint8 Pad [7]byte }
func DeserializeXfrmUserExpire ¶
func DeserializeXfrmUserExpire(b []byte) *XfrmUserExpire
func (*XfrmUserExpire) Len ¶
func (msg *XfrmUserExpire) Len() int
func (*XfrmUserExpire) Serialize ¶
func (msg *XfrmUserExpire) Serialize() []byte
type XfrmUserSpiInfo ¶
type XfrmUserSpiInfo struct { XfrmUsersaInfo XfrmUsersaInfo Min uint32 Max uint32 }
func DeserializeXfrmUserSpiInfo ¶
func DeserializeXfrmUserSpiInfo(b []byte) *XfrmUserSpiInfo
func (*XfrmUserSpiInfo) Len ¶
func (msg *XfrmUserSpiInfo) Len() int
func (*XfrmUserSpiInfo) Serialize ¶
func (msg *XfrmUserSpiInfo) Serialize() []byte
type XfrmUserTmpl ¶
type XfrmUserTmpl struct { XfrmId XfrmId Family uint16 Pad1 [2]byte Saddr XfrmAddress Reqid uint32 Mode uint8 Optional uint8 Pad2 byte Aalgos uint32 Ealgos uint32 Calgos uint32 }
func DeserializeXfrmUserTmpl ¶
func DeserializeXfrmUserTmpl(b []byte) *XfrmUserTmpl
func (*XfrmUserTmpl) Len ¶
func (msg *XfrmUserTmpl) Len() int
func (*XfrmUserTmpl) Serialize ¶
func (msg *XfrmUserTmpl) Serialize() []byte
type XfrmUserpolicyId ¶
type XfrmUserpolicyId struct { Sel XfrmSelector Index uint32 Dir uint8 Pad [3]byte }
func DeserializeXfrmUserpolicyId ¶
func DeserializeXfrmUserpolicyId(b []byte) *XfrmUserpolicyId
func (*XfrmUserpolicyId) Len ¶
func (msg *XfrmUserpolicyId) Len() int
func (*XfrmUserpolicyId) Serialize ¶
func (msg *XfrmUserpolicyId) Serialize() []byte
type XfrmUserpolicyInfo ¶
type XfrmUserpolicyInfo struct { Sel XfrmSelector Lft XfrmLifetimeCfg Curlft XfrmLifetimeCur Priority uint32 Index uint32 Dir uint8 Action uint8 Flags uint8 Pad [4]byte }
func DeserializeXfrmUserpolicyInfo ¶
func DeserializeXfrmUserpolicyInfo(b []byte) *XfrmUserpolicyInfo
func (*XfrmUserpolicyInfo) Len ¶
func (msg *XfrmUserpolicyInfo) Len() int
func (*XfrmUserpolicyInfo) Serialize ¶
func (msg *XfrmUserpolicyInfo) Serialize() []byte
type XfrmUsersaFlush ¶
type XfrmUsersaFlush struct {
Proto uint8
}
func DeserializeXfrmUsersaFlush ¶
func DeserializeXfrmUsersaFlush(b []byte) *XfrmUsersaFlush
func (*XfrmUsersaFlush) Len ¶
func (msg *XfrmUsersaFlush) Len() int
func (*XfrmUsersaFlush) Serialize ¶
func (msg *XfrmUsersaFlush) Serialize() []byte
type XfrmUsersaId ¶
type XfrmUsersaId struct { Daddr XfrmAddress Spi uint32 // big endian Family uint16 Proto uint8 Pad byte }
func DeserializeXfrmUsersaId ¶
func DeserializeXfrmUsersaId(b []byte) *XfrmUsersaId
func (*XfrmUsersaId) Len ¶
func (msg *XfrmUsersaId) Len() int
func (*XfrmUsersaId) Serialize ¶
func (msg *XfrmUsersaId) Serialize() []byte
type XfrmUsersaInfo ¶
type XfrmUsersaInfo struct { Sel XfrmSelector Id XfrmId Saddr XfrmAddress Lft XfrmLifetimeCfg Curlft XfrmLifetimeCur Stats XfrmStats Seq uint32 Reqid uint32 Family uint16 Mode uint8 ReplayWindow uint8 Flags uint8 Pad [7]byte }
func DeserializeXfrmUsersaInfo ¶
func DeserializeXfrmUsersaInfo(b []byte) *XfrmUsersaInfo
func (*XfrmUsersaInfo) Len ¶
func (msg *XfrmUsersaInfo) Len() int
func (*XfrmUsersaInfo) Serialize ¶
func (msg *XfrmUsersaInfo) Serialize() []byte