nl

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 16, 2018 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Overview

Package nl has low level primitives for making Netlink calls.

Index

Constants

View Source
const (
	BRIDGE_FLAGS_MASTER = iota /* Bridge command to/from master */
	BRIDGE_FLAGS_SELF          /* Bridge command to/from lowerdev */
)

Bridge Flags

View Source
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 * }

View Source
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
)
View Source
const (
	RTEXT_FILTER_VF = 1 << iota
	RTEXT_FILTER_BRVLAN
	RTEXT_FILTER_BRVLAN_COMPRESSED
)

New extended info filters for IFLA_EXT_MASK

View Source
const (
	SizeofNfgenmsg      = 4
	SizeofNfattr        = 4
	SizeofNfConntrack   = 376
	SizeofNfctTupleHead = 52
)

Track the message sizes for the correct serialization/deserialization

View Source
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
};
View Source
const (
	CTA_TUPLE_ORIG  = 1
	CTA_TUPLE_REPLY = 2
	CTA_STATUS      = 3
	CTA_TIMEOUT     = 7
	CTA_MARK        = 8
	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
};
View Source
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)

View Source
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)

View Source
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)

View Source
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)

View Source
const (
	GENL_ID_CTRL      = 0x10
	GENL_CTRL_VERSION = 2
	GENL_CTRL_NAME    = "nlctrl"
)
View Source
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
)
View Source
const (
	GENL_CTRL_ATTR_OP_UNSPEC = iota
	GENL_CTRL_ATTR_OP_ID
	GENL_CTRL_ATTR_OP_FLAGS
)
View Source
const (
	GENL_ADMIN_PERM = 1 << iota
	GENL_CMD_CAP_DO
	GENL_CMD_CAP_DUMP
	GENL_CMD_CAP_HASPOL
)
View Source
const (
	GENL_CTRL_ATTR_MCAST_GRP_UNSPEC = iota
	GENL_CTRL_ATTR_MCAST_GRP_NAME
	GENL_CTRL_ATTR_MCAST_GRP_ID
)
View Source
const (
	GENL_GTP_VERSION = 0
	GENL_GTP_NAME    = "gtp"
)
View Source
const (
	GENL_GTP_CMD_NEWPDP = iota
	GENL_GTP_CMD_DELPDP
	GENL_GTP_CMD_GETPDP
)
View Source
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
)
View Source
const (
	IFLA_INFO_UNSPEC = iota
	IFLA_INFO_KIND
	IFLA_INFO_DATA
	IFLA_INFO_XSTATS
	IFLA_INFO_MAX = IFLA_INFO_XSTATS
)
View Source
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
)
View Source
const (
	VETH_INFO_UNSPEC = iota
	VETH_INFO_PEER
	VETH_INFO_MAX = VETH_INFO_PEER
)
View Source
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
)
View Source
const (
	BRIDGE_MODE_UNSPEC = iota
	BRIDGE_MODE_HAIRPIN
)
View Source
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
)
View Source
const (
	IFLA_IPVLAN_UNSPEC = iota
	IFLA_IPVLAN_MODE
	IFLA_IPVLAN_MAX = IFLA_IPVLAN_MODE
)
View Source
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
)
View Source
const (
	MACVLAN_MODE_PRIVATE  = 1
	MACVLAN_MODE_VEPA     = 2
	MACVLAN_MODE_BRIDGE   = 4
	MACVLAN_MODE_PASSTHRU = 8
	MACVLAN_MODE_SOURCE   = 16
)
View Source
const (
	MACVLAN_MACADDR_ADD = iota
	MACVLAN_MACADDR_DEL
	MACVLAN_MACADDR_FLUSH
	MACVLAN_MACADDR_SET
)
View Source
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
)
View Source
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
)
View Source
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
)
View Source
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
)
View Source
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
)
View Source
const (
	IFLA_VF_INFO_UNSPEC = iota
	IFLA_VF_INFO
	IFLA_VF_INFO_MAX = IFLA_VF_INFO
)
View Source
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_MAX   = IFLA_VF_TRUST
)
View Source
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
)
View Source
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
)
View Source
const (
	SizeofVfMac        = 0x24
	SizeofVfVlan       = 0x0c
	SizeofVfTxRate     = 0x08
	SizeofVfRate       = 0x0c
	SizeofVfSpoofchk   = 0x08
	SizeofVfLinkState  = 0x08
	SizeofVfRssQueryEn = 0x08
	SizeofVfTrust      = 0x08
)
View Source
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
)
View Source
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
)
View Source
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
)
View Source
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
)
View Source
const (
	IFLA_VRF_UNSPEC = iota
	IFLA_VRF_TABLE
)
View Source
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
)
View Source
const (
	IFLA_GTP_UNSPEC = iota
	IFLA_GTP_FD0
	IFLA_GTP_FD1
	IFLA_GTP_PDP_HASHSIZE
	IFLA_GTP_ROLE
)
View Source
const (
	GTP_ROLE_GGSN = iota
	GTP_ROLE_SGSN
)
View Source
const (
	MPLS_LS_LABEL_SHIFT = 12
	MPLS_LS_S_SHIFT     = 8
)
View Source
const (
	// Family type definitions
	FAMILY_ALL  = unix.AF_UNSPEC
	FAMILY_V4   = unix.AF_INET
	FAMILY_V6   = unix.AF_INET6
	FAMILY_MPLS = AF_MPLS
)
View Source
const (
	SEG6_IPTUN_MODE_INLINE = iota
	SEG6_IPTUN_MODE_ENCAP
)

seg6 encap mode

View Source
const (
	SEG6_IPTUNNEL_UNSPEC = iota
	SEG6_IPTUNNEL_SRH
)

number of nested RTATTR from include/uapi/linux/seg6_iptunnel.h

View Source
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
)

syscall package lack of rule atributes type. Thus there are defined below

View Source
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

View Source
const (
	SOCK_DIAG_BY_FAMILY = 20         /* linux.sock_diag.h */
	TCPDIAG_NOCOOKIE    = 0xFFFFFFFF /* TCPDIAG_NOCOOKIE in net/ipv4/tcp_diag.h*/
)

socket diags related

View Source
const (
	RTA_NEWDST     = 0x13
	RTA_ENCAP_TYPE = 0x15
	RTA_ENCAP      = 0x16
)
View Source
const (
	MPLS_IPTUNNEL_UNSPEC = iota
	MPLS_IPTUNNEL_DST
)

RTA_ENCAP subtype

View Source
const (
	LWTUNNEL_ENCAP_NONE = iota
	LWTUNNEL_ENCAP_MPLS
	LWTUNNEL_ENCAP_IP
	LWTUNNEL_ENCAP_ILA
	LWTUNNEL_ENCAP_IP6
	LWTUNNEL_ENCAP_SEG6
	LWTUNNEL_ENCAP_BPF
)

light weight tunnel encap types

View Source
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

View Source
const (
	LINKLAYER_UNSPEC = iota
	LINKLAYER_ETHERNET
	LINKLAYER_ATM
)

LinkLayer

View Source
const (
	ATM_CELL_PAYLOAD = 48
	ATM_CELL_SIZE    = 53
)

ATM

View Source
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

View Source
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

View Source
const (
	TCA_ACT_TAB = 1
	TCAA_MAX    = 1
)
View Source
const (
	TCA_ACT_UNSPEC = iota
	TCA_ACT_KIND
	TCA_ACT_OPTIONS
	TCA_ACT_INDEX
	TCA_ACT_STATS
	TCA_ACT_MAX
)
View Source
const (
	TCA_PRIO_UNSPEC = iota
	TCA_PRIO_MQ
	TCA_PRIO_MAX = TCA_PRIO_MQ
)
View Source
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
)
View Source
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
)
View Source
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
)
View Source
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
)
View Source
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
)
View Source
const (
	TC_U32_TERMINAL  = 1 << iota
	TC_U32_OFFSET    = 1 << iota
	TC_U32_VAROFFSET = 1 << iota
	TC_U32_EAT       = 1 << iota
)
View Source
const (
	TCA_GACT_UNSPEC = iota
	TCA_GACT_TM
	TCA_GACT_PARMS
	TCA_GACT_PROB
	TCA_GACT_MAX = TCA_GACT_PROB
)
View Source
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
)
View Source
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
)
View Source
const (
	TCA_MIRRED_UNSPEC = iota
	TCA_MIRRED_TM
	TCA_MIRRED_PARMS
	TCA_MIRRED_MAX = TCA_MIRRED_PARMS
)
View Source
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
)
View Source
const (
	TCA_MATCHALL_UNSPEC = iota
	TCA_MATCHALL_CLASSID
	TCA_MATCHALL_ACT
	TCA_MATCHALL_FLAGS
)
View Source
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
)
View Source
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
)
View Source
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

View Source
const (
	/* Netlink message attributes.  */
	XFRMA_UNSPEC         = 0x00
	XFRMA_ALG_AUTH       = 0x01 /* struct xfrm_algo */
	XFRMA_ALG_CRYPT      = 0x02 /* struct xfrm_algo */
	XFRMA_ALG_COMP       = 0x03 /* struct xfrm_algo */
	XFRMA_ENCAP          = 0x04 /* struct xfrm_algo + struct xfrm_encap_tmpl */
	XFRMA_TMPL           = 0x05 /* 1 or more struct xfrm_user_tmpl */
	XFRMA_SA             = 0x06 /* struct xfrm_usersa_info  */
	XFRMA_POLICY         = 0x07 /* struct xfrm_userpolicy_info */
	XFRMA_SEC_CTX        = 0x08 /* struct xfrm_sec_ctx */
	XFRMA_LTIME_VAL      = 0x09
	XFRMA_REPLAY_VAL     = 0x0a
	XFRMA_REPLAY_THRESH  = 0x0b
	XFRMA_ETIMER_THRESH  = 0x0c
	XFRMA_SRCADDR        = 0x0d /* xfrm_address_t */
	XFRMA_COADDR         = 0x0e /* xfrm_address_t */
	XFRMA_LASTUSED       = 0x0f /* unsigned long  */
	XFRMA_POLICY_TYPE    = 0x10 /* struct xfrm_userpolicy_type */
	XFRMA_MIGRATE        = 0x11
	XFRMA_ALG_AEAD       = 0x12 /* struct xfrm_algo_aead */
	XFRMA_KMADDRESS      = 0x13 /* struct xfrm_user_kmaddress */
	XFRMA_ALG_AUTH_TRUNC = 0x14 /* struct xfrm_algo_auth */
	XFRMA_MARK           = 0x15 /* struct xfrm_mark */
	XFRMA_TFCPAD         = 0x16 /* __u32 */
	XFRMA_REPLAY_ESN_VAL = 0x17 /* struct xfrm_replay_esn */
	XFRMA_SA_EXTRA_FLAGS = 0x18 /* __u32 */
	XFRMA_MAX            = 0x18
)

Attribute types

View Source
const (
	SizeofXfrmAddress     = 0x10
	SizeofXfrmSelector    = 0x38
	SizeofXfrmLifetimeCfg = 0x40
	SizeofXfrmLifetimeCur = 0x20
	SizeofXfrmId          = 0x18
	SizeofXfrmMark        = 0x08
)
View Source
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

View Source
const (
	SizeofXfrmUserpolicyId   = 0x40
	SizeofXfrmUserpolicyInfo = 0xa8
	SizeofXfrmUserTmpl       = 0x40
)
View Source
const (
	SizeofXfrmUsersaId       = 0x18
	SizeofXfrmStats          = 0x0c
	SizeofXfrmUsersaInfo     = 0xe0
	SizeofXfrmUserSpiInfo    = 0xe8
	SizeofXfrmAlgo           = 0x44
	SizeofXfrmAlgoAuth       = 0x48
	SizeofXfrmAlgoAEAD       = 0x48
	SizeofXfrmEncapTmpl      = 0x18
	SizeofXfrmUsersaFlush    = 0x8
	SizeofXfrmReplayStateEsn = 0x18
)
View Source
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
)
View Source
const (
	AF_MPLS = 28
)
View Source
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)

View Source
const (
	DEFAULT_CHANGE = 0xFFFFFFFF
)
View Source
const (
	GENL_CTRL_CMD_GETFAMILY = 3
)
View Source
const IFA_CACHEINFO = 6
View Source
const (
	NFNETLINK_V0 = 0
)

#define NFNETLINK_V0 0

View Source
const (
	NLA_F_NESTED = (1 << 15)
)

#define NLA_F_NESTED (1 << 15)

View Source
const (
	SEG6_IPTUNNEL_MAX = __SEG6_IPTUNNEL_MAX - 1
)
View Source
const (
	SizeofBridgeVlanInfo = 0x04
)
View Source
const SizeofGenlmsg = 4
View Source
const SizeofIfaCacheInfo = 0x10
View Source
const (
	SizeofXfrmUserExpire = 0xe8
)
View Source
const (
	TCA_ACT_BPF = 13
)
View Source
const (
	TCA_ACT_GACT = 5
)
View Source
const (
	TCA_ACT_MIRRED = 8
)
View Source
const (
	TCA_BPF_FLAG_ACT_DIRECT uint32 = 1 << iota
)
View Source
const TC_LINKLAYER_MASK = 0x0F
View Source
const (
	TC_PRIO_MAX = 15
)
View Source
const (
	XFRM_INF = ^uint64(0)
)

Infinity for packet and byte counts

Variables

View Source
var L4ProtoMap = map[uint8]string{
	6:  "tcp",
	17: "udp",
}

SupportedNlFamilies contains the list of netlink families this netlink package supports

Functions

func BytesToString

func BytesToString(b []byte) string

func DecodeMPLSStack

func DecodeMPLSStack(buf []byte) []int

func DecodeSEG6Encap

func DecodeSEG6Encap(buf []byte) (int, []net.IP, error)

func EncodeMPLSStack

func EncodeMPLSStack(labels ...int) []byte

func EncodeSEG6Encap

func EncodeSEG6Encap(mode int, segments []net.IP) ([]byte, error)

func GetIPFamily

func GetIPFamily(ip net.IP) int

GetIPFamily returns the family type of a net.IP.

func NativeEndian

func NativeEndian() binary.ByteOrder

Get native endianness for the system

func NonZeroTerminated

func NonZeroTerminated(s string) []byte

func ParseRouteAttr

func ParseRouteAttr(b []byte) ([]syscall.NetlinkRouteAttr, error)

func SEG6EncapModeString

func SEG6EncapModeString(mode int) string

Helper functions

func Swap16

func Swap16(i uint16) uint16

Byte swap a 16 bit value if we aren't big endian

func Swap32

func Swap32(i uint32) uint32

Byte swap a 32 bit value if aren't big endian

func Uint16Attr

func Uint16Attr(v uint16) []byte

func Uint32Attr

func Uint32Attr(v uint32) []byte

func Uint64Attr

func Uint64Attr(v uint64) []byte

func Uint8Attr

func Uint8Attr(v uint8) []byte

func ZeroTerminated

func ZeroTerminated(s string) []byte

Types

type BridgeVlanInfo

type BridgeVlanInfo struct {
	Flags uint16
	Vid   uint16
}

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 Genlmsg

type Genlmsg struct {
	Command uint8
	Version uint8
}

func DeserializeGenlmsg

func DeserializeGenlmsg(b []byte) *Genlmsg

func (*Genlmsg) Len

func (msg *Genlmsg) Len() int

func (*Genlmsg) Serialize

func (msg *Genlmsg) Serialize() []byte

type IPv6SrHdr

type IPv6SrHdr struct {
	Segments []net.IP
	// contains filtered or unexported fields
}

func (*IPv6SrHdr) Equal

func (s1 *IPv6SrHdr) Equal(s2 IPv6SrHdr) bool

type IfAddrmsg

type IfAddrmsg struct {
	unix.IfAddrmsg
}

func DeserializeIfAddrmsg

func DeserializeIfAddrmsg(b []byte) *IfAddrmsg

func NewIfAddrmsg

func NewIfAddrmsg(family int) *IfAddrmsg

func (*IfAddrmsg) Len

func (msg *IfAddrmsg) Len() int

func (*IfAddrmsg) Serialize

func (msg *IfAddrmsg) Serialize() []byte

type IfInfomsg

type IfInfomsg struct {
	unix.IfInfomsg
}

IfInfomsg is related to links, but it is used for list requests as well

func DeserializeIfInfomsg

func DeserializeIfInfomsg(b []byte) *IfInfomsg

func NewIfInfomsg

func NewIfInfomsg(family int) *IfInfomsg

Create an IfInfomsg with family specified

func NewIfInfomsgChild

func NewIfInfomsgChild(parent *RtAttr, family int) *IfInfomsg

func (*IfInfomsg) EncapType

func (msg *IfInfomsg) EncapType() string

func (*IfInfomsg) Len

func (msg *IfInfomsg) Len() int

func (*IfInfomsg) Serialize

func (msg *IfInfomsg) Serialize() []byte

type IfaCacheInfo

type IfaCacheInfo struct {
	IfaPrefered uint32
	IfaValid    uint32
	Cstamp      uint32
	Tstamp      uint32
}

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 NetlinkRequestData interface {
	Len() int
	Serialize() []byte
}

type NetlinkSocket

type NetlinkSocket struct {
	sync.Mutex
	// contains filtered or unexported fields
}

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

func SubscribeAt(newNs, curNs netns.NsHandle, protocol int, groups ...uint) (*NetlinkSocket, error)

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

type Nfgenmsg struct {
	NfgenFamily uint8
	Version     uint8
	ResId       uint16 // big endian
}

/* 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

func DeserializeNfgenmsg(b []byte) *Nfgenmsg

func (*Nfgenmsg) Len

func (msg *Nfgenmsg) Len() int

func (*Nfgenmsg) Serialize

func (msg *Nfgenmsg) Serialize() []byte

type RtAttr

type RtAttr struct {
	unix.RtAttr
	Data []byte
	// contains filtered or unexported fields
}

Extend RtAttr to handle data and children

func NewRtAttr

func NewRtAttr(attrType int, data []byte) *RtAttr

Create a new Extended RtAttr object

func NewRtAttrChild

func NewRtAttrChild(parent *RtAttr, attrType int, data []byte) *RtAttr

Create a new RtAttr obj anc add it as a child of an existing object

func (*RtAttr) AddChild

func (a *RtAttr) AddChild(attr *RtAttr)

AddChild adds an existing RtAttr as a child.

func (*RtAttr) Len

func (a *RtAttr) Len() int

func (*RtAttr) Serialize

func (a *RtAttr) Serialize() []byte

Serialize the RtAttr into a byte array This can't just unsafe.cast because it must iterate through children.

type RtMsg

type RtMsg struct {
	unix.RtMsg
}

func DeserializeRtMsg

func DeserializeRtMsg(b []byte) *RtMsg

func NewRtDelMsg

func NewRtDelMsg() *RtMsg

func NewRtMsg

func NewRtMsg() *RtMsg

func (*RtMsg) Len

func (msg *RtMsg) Len() int

func (*RtMsg) Serialize

func (msg *RtMsg) Serialize() []byte

type RtNexthop

type RtNexthop struct {
	unix.RtNexthop
	Children []NetlinkRequestData
}

func DeserializeRtNexthop

func DeserializeRtNexthop(b []byte) *RtNexthop

func (*RtNexthop) Len

func (msg *RtNexthop) Len() int

func (*RtNexthop) Serialize

func (msg *RtNexthop) Serialize() []byte

type SocketHandle

type SocketHandle struct {
	Seq    uint32
	Socket *NetlinkSocket
}

SocketHandle contains the netlink socket and the associated sequence counter for a specific netlink family

func (*SocketHandle) Close

func (sh *SocketHandle) Close()

Close closes the netlink socket

type TcActionMsg

type TcActionMsg struct {
	Family uint8
	Pad    [3]byte
}

func DeserializeTcActionMsg

func DeserializeTcActionMsg(b []byte) *TcActionMsg

func (*TcActionMsg) Len

func (msg *TcActionMsg) Len() int

func (*TcActionMsg) Serialize

func (x *TcActionMsg) Serialize() []byte

type TcBpf

type TcBpf TcGen

type TcGact

type TcGact TcGen

type TcGen

type TcGen struct {
	Index   uint32
	Capab   uint32
	Action  int32
	Refcnt  int32
	Bindcnt int32
}

func DeserializeTcGen

func DeserializeTcGen(b []byte) *TcGen

func (*TcGen) Len

func (msg *TcGen) Len() int

func (*TcGen) Serialize

func (x *TcGen) Serialize() []byte

type TcHtbCopt

type TcHtbCopt struct {
	Rate    TcRateSpec
	Ceil    TcRateSpec
	Buffer  uint32
	Cbuffer uint32
	Quantum uint32
	Level   uint32
	Prio    uint32
}

func DeserializeTcHtbCopt

func DeserializeTcHtbCopt(b []byte) *TcHtbCopt

func (*TcHtbCopt) Len

func (msg *TcHtbCopt) Len() int

func (*TcHtbCopt) Serialize

func (x *TcHtbCopt) Serialize() []byte

type TcHtbGlob

type TcHtbGlob struct {
	Version      uint32
	Rate2Quantum uint32
	Defcls       uint32
	Debug        uint32
	DirectPkts   uint32
}

func DeserializeTcHtbGlob

func DeserializeTcHtbGlob(b []byte) *TcHtbGlob

func (*TcHtbGlob) Len

func (msg *TcHtbGlob) Len() int

func (*TcHtbGlob) Serialize

func (x *TcHtbGlob) Serialize() []byte

type TcMirred

type TcMirred struct {
	TcGen
	Eaction int32
	Ifindex uint32
}

func DeserializeTcMirred

func DeserializeTcMirred(b []byte) *TcMirred

func (*TcMirred) Len

func (msg *TcMirred) Len() int

func (*TcMirred) Serialize

func (x *TcMirred) Serialize() []byte

type TcMsg

type TcMsg struct {
	Family  uint8
	Pad     [3]byte
	Ifindex int32
	Handle  uint32
	Parent  uint32
	Info    uint32
}

func DeserializeTcMsg

func DeserializeTcMsg(b []byte) *TcMsg

func (*TcMsg) Len

func (msg *TcMsg) Len() int

func (*TcMsg) Serialize

func (x *TcMsg) Serialize() []byte

type TcNetemCorr

type TcNetemCorr struct {
	DelayCorr uint32
	LossCorr  uint32
	DupCorr   uint32
}

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

type TcNetemCorrupt struct {
	Probability uint32
	Correlation uint32
}

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

type TcNetemReorder struct {
	Probability uint32
	Correlation uint32
}

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

func DeserializeTcPolice(b []byte) *TcPolice

func (*TcPolice) Len

func (msg *TcPolice) Len() int

func (*TcPolice) Serialize

func (x *TcPolice) Serialize() []byte

type TcPrioMap

type TcPrioMap struct {
	Bands   int32
	Priomap [TC_PRIO_MAX + 1]uint8
}

func DeserializeTcPrioMap

func DeserializeTcPrioMap(b []byte) *TcPrioMap

func (*TcPrioMap) Len

func (msg *TcPrioMap) Len() int

func (*TcPrioMap) Serialize

func (x *TcPrioMap) Serialize() []byte

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

func DeserializeTcTbfQopt(b []byte) *TcTbfQopt

func (*TcTbfQopt) Len

func (msg *TcTbfQopt) Len() int

func (*TcTbfQopt) Serialize

func (x *TcTbfQopt) Serialize() []byte

type TcU32Key

type TcU32Key struct {
	Mask    uint32 // big endian
	Val     uint32 // big endian
	Off     int32
	OffMask int32
}

func DeserializeTcU32Key

func DeserializeTcU32Key(b []byte) *TcU32Key

func (*TcU32Key) Len

func (msg *TcU32Key) Len() int

func (*TcU32Key) Serialize

func (x *TcU32Key) Serialize() []byte

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

func DeserializeTcU32Sel(b []byte) *TcU32Sel

func (*TcU32Sel) Len

func (msg *TcU32Sel) Len() int

func (*TcU32Sel) Serialize

func (x *TcU32Sel) Serialize() []byte

type VfLinkState

type VfLinkState struct {
	Vf        uint32
	LinkState uint32
}

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

type VfMac struct {
	Vf  uint32
	Mac [32]byte
}

func DeserializeVfMac

func DeserializeVfMac(b []byte) *VfMac

func (*VfMac) Len

func (msg *VfMac) Len() int

func (*VfMac) Serialize

func (msg *VfMac) Serialize() []byte

type VfRate

type VfRate struct {
	Vf        uint32
	MinTxRate uint32
	MaxTxRate uint32
}

func DeserializeVfRate

func DeserializeVfRate(b []byte) *VfRate

func (*VfRate) Len

func (msg *VfRate) Len() int

func (*VfRate) Serialize

func (msg *VfRate) Serialize() []byte

type VfRssQueryEn

type VfRssQueryEn struct {
	Vf      uint32
	Setting uint32
}

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

type VfSpoofchk struct {
	Vf      uint32
	Setting uint32
}

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

type VfTrust struct {
	Vf      uint32
	Setting uint32
}

func DeserializeVfTrust

func DeserializeVfTrust(b []byte) *VfTrust

func (*VfTrust) Len

func (msg *VfTrust) Len() int

func (*VfTrust) Serialize

func (msg *VfTrust) Serialize() []byte

type VfTxRate

type VfTxRate struct {
	Vf   uint32
	Rate uint32
}

func DeserializeVfTxRate

func DeserializeVfTxRate(b []byte) *VfTxRate

func (*VfTxRate) Len

func (msg *VfTxRate) Len() int

func (*VfTxRate) Serialize

func (msg *VfTxRate) Serialize() []byte

type VfVlan

type VfVlan struct {
	Vf   uint32
	Vlan uint32
	Qos  uint32
}

func DeserializeVfVlan

func DeserializeVfVlan(b []byte) *VfVlan

func (*VfVlan) Len

func (msg *VfVlan) Len() int

func (*VfVlan) Serialize

func (msg *VfVlan) Serialize() []byte

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

func (*XfrmAddress) ToIPNet

func (x *XfrmAddress) ToIPNet(prefixlen uint8) *net.IPNet

type XfrmAlgo

type XfrmAlgo struct {
	AlgName   [64]byte
	AlgKeyLen uint32
	AlgKey    []byte
}

func DeserializeXfrmAlgo

func DeserializeXfrmAlgo(b []byte) *XfrmAlgo

func (*XfrmAlgo) Len

func (msg *XfrmAlgo) Len() int

func (*XfrmAlgo) Serialize

func (msg *XfrmAlgo) Serialize() []byte

type XfrmAlgoAEAD

type XfrmAlgoAEAD struct {
	AlgName   [64]byte
	AlgKeyLen uint32
	AlgICVLen uint32
	AlgKey    []byte
}

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

type XfrmAlgoAuth struct {
	AlgName     [64]byte
	AlgKeyLen   uint32
	AlgTruncLen uint32
	AlgKey      []byte
}

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

func DeserializeXfrmId(b []byte) *XfrmId

func (*XfrmId) Len

func (msg *XfrmId) Len() int

func (*XfrmId) Serialize

func (msg *XfrmId) Serialize() []byte

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

type XfrmLifetimeCur struct {
	Bytes   uint64
	Packets uint64
	AddTime uint64
	UseTime uint64
}

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

type XfrmMark struct {
	Value uint32
	Mask  uint32
}

func DeserializeXfrmMark

func DeserializeXfrmMark(b []byte) *XfrmMark

func (*XfrmMark) Len

func (msg *XfrmMark) Len() int

func (*XfrmMark) Serialize

func (msg *XfrmMark) Serialize() []byte

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

type XfrmStats struct {
	ReplayWindow    uint32
	Replay          uint32
	IntegrityFailed uint32
}

func DeserializeXfrmStats

func DeserializeXfrmStats(b []byte) *XfrmStats

func (*XfrmStats) Len

func (msg *XfrmStats) Len() int

func (*XfrmStats) Serialize

func (msg *XfrmStats) Serialize() []byte

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
	Share    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
	Share    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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL