Documentation ¶
Overview ¶
Package netlink provides a simple library for netlink. Netlink is the interface a user-space program in linux uses to communicate with the kernel. It can be used to add and remove interfaces, set up ip addresses and routes, and confiugre ipsec. Netlink communication requires elevated privileges, so in most cases this code needs to be run as root. The low level primitives for netlink are contained in the nl subpackage. This package attempts to provide a high-level interface that is loosly modeled on the iproute2 cli.
Index ¶
- Constants
- Variables
- func AddrAdd(link Link, addr *Addr) error
- func AddrDel(link Link, addr *Addr) error
- func AddrReplace(link Link, addr *Addr) error
- func ConntrackDeleteFilter(table ConntrackTableType, family InetFamily, filter *ConntrackFilter) (uint, error)deprecated
- func ConntrackDeleteFilters(table ConntrackTableType, family InetFamily, filters ...CustomConntrackFilter) (uint, error)
- func ConntrackTableFlush(table ConntrackTableType) error
- func FouAdd(f Fou) error
- func FouDel(f Fou) error
- func GetNetNsIdByFd(fd int) (int, error)
- func GetNetNsIdByPid(pid int) (int, error)
- func HandleStr(handle uint32) string
- func LinkAdd(link Link) error
- func LinkDel(link Link) error
- func LinkSetARPOff(link Link) error
- func LinkSetARPOn(link Link) error
- func LinkSetAlias(link Link, name string) error
- func LinkSetDown(link Link) error
- func LinkSetFastLeave(link Link, mode bool) error
- func LinkSetFlood(link Link, mode bool) error
- func LinkSetGROIPv4MaxSize(link Link, maxSize int) error
- func LinkSetGROMaxSize(link Link, maxSize int) error
- func LinkSetGSOIPv4MaxSize(link Link, maxSize int) error
- func LinkSetGSOMaxSize(link Link, maxSize int) error
- func LinkSetGuard(link Link, mode bool) error
- func LinkSetHairpin(link Link, mode bool) error
- func LinkSetHardwareAddr(link Link, hwaddr net.HardwareAddr) error
- func LinkSetLearning(link Link, mode bool) error
- func LinkSetMTU(link Link, mtu int) error
- func LinkSetMaster(link Link, master Link) error
- func LinkSetMasterByIndex(link Link, masterIndex int) error
- func LinkSetName(link Link, name string) error
- func LinkSetNoMaster(link Link) error
- func LinkSetNsFd(link Link, fd int) error
- func LinkSetNsPid(link Link, nspid int) error
- func LinkSetRootBlock(link Link, mode bool) error
- func LinkSetTxQLen(link Link, qlen int) error
- func LinkSetUp(link Link) error
- func LinkSetVfHardwareAddr(link Link, vf int, hwaddr net.HardwareAddr) error
- func LinkSetVfRate(link Link, vf, minRate, maxRate int) error
- func LinkSetVfTxRate(link Link, vf, rate int) error
- func LinkSetVfVlan(link Link, vf, vlan int) error
- func LinkSetVfVlanQos(link Link, vf, vlan, qos int) error
- func LinkSetVfVlanQosProto(link Link, vf, vlan, qos, proto int) error
- func LinkSetXdpFd(link Link, fd int) error
- func LinkSetXdpFdWithFlags(link Link, fd, flags int) error
- func MajorMinor(handle uint32) (uint16, uint16)
- func MakeHandle(major, minor uint16) uint32
- func NeighAdd(neigh *Neigh) error
- func NeighAppend(neigh *Neigh) error
- func NeighDel(neigh *Neigh) error
- func NeighSet(neigh *Neigh) error
- func NewIPNet(ip net.IP) *net.IPNet
- func ParseIPNet(s string) (*net.IPNet, error)
- func Percentage2u32(percentage float32) uint32
- func RouteAdd(route *Route) error
- func RouteAppend(route *Route) error
- func RouteChange(route *Route) error
- func RouteDel(route *Route) error
- func RouteReplace(route *Route) error
- func SetFastLeave(link Link, mode bool) error
- func SetFlood(link Link, mode bool) error
- func SetGuard(link Link, mode bool) error
- func SetHairpin(link Link, mode bool) error
- func SetLearning(link Link, mode bool) error
- func SetNetNsIdByFd(fd, nsid int) error
- func SetNetNsIdByPid(pid, nsid int) error
- func SetRootBlock(link Link, mode bool) error
- func TcActExtCmp(combined int32, opcode int32) bool
- func XfrmPolicyAdd(policy *XfrmPolicy) error
- func XfrmPolicyDel(policy *XfrmPolicy) error
- func XfrmStateAdd(policy *XfrmState) error
- func XfrmStateDel(policy *XfrmState) error
- type Action
- type ActionAttrs
- type ActionStatistic
- type ActionTimestamp
- type Addr
- type BareUDP
- type Bond
- type BondAdInfo
- type BondAdSelect
- type BondArpAllTargets
- type BondArpValidate
- type BondFailOverMac
- type BondLacpRate
- type BondMode
- type BondPrimaryReselect
- type BondSlave
- type BondSlaveMiiStatus
- type BondSlaveState
- type BondXmitHashPolicy
- type BpfAction
- type BpfFilter
- type Bridge
- type Can
- type Chain
- type Class
- type ClassAttrs
- type ClassStatistics
- type Clsact
- type ConnmarkAction
- type ConntrackFilter
- type ConntrackFlow
- type ConntrackTableType
- type CsumAction
- type CsumUpdateFlags
- type CustomConntrackFilter
- type Destination
- type Device
- type Dummy
- type Encap
- type Filter
- type FilterAttrs
- type Fou
- type Fq
- type FqCodel
- type FwFilter
- type GTP
- type GenericAction
- type GenericClass
- type GenericFilter
- type GenericLink
- type GenericQdisc
- type Geneve
- type GeneveDf
- type GenlFamily
- type GenlMulticastGroup
- type GenlOp
- type GnetStatsBasic
- type GnetStatsQueue
- type GnetStatsRateEst
- type GnetStatsRateEst64
- type Gretap
- type Gretun
- type Handle
- func (h *Handle) AddrAdd(link Link, addr *Addr) error
- func (h *Handle) AddrDel(link Link, addr *Addr) error
- func (h *Handle) AddrList(link Link, family int) ([]Addr, error)
- func (h *Handle) ClassAdd(class Class) error
- func (h *Handle) ClassChange(class Class) error
- func (h *Handle) ClassDel(class Class) error
- func (h *Handle) ClassList(link Link, parent uint32) ([]Class, error)
- func (h *Handle) ClassReplace(class Class) error
- func (h *Handle) Close()
- func (h *Handle) ConntrackDeleteFilter(table ConntrackTableType, family InetFamily, filter *ConntrackFilter) (uint, error)deprecated
- func (h *Handle) ConntrackDeleteFilters(table ConntrackTableType, family InetFamily, filters ...CustomConntrackFilter) (uint, error)
- func (h *Handle) ConntrackTableFlush(table ConntrackTableType) error
- func (h *Handle) ConntrackTableList(table ConntrackTableType, family InetFamily) ([]*ConntrackFlow, error)
- func (h *Handle) Delete()
- func (h *Handle) FilterAdd(filter Filter) error
- func (h *Handle) FilterDel(filter Filter) error
- func (h *Handle) FilterList(link Link, parent uint32) ([]Filter, error)
- func (h *Handle) GenlFamilyGet(name string) (*GenlFamily, error)
- func (h *Handle) GenlFamilyList() ([]*GenlFamily, error)
- func (h *Handle) LinkAdd(link Link) error
- func (h *Handle) LinkByAlias(alias string) (Link, error)
- func (h *Handle) LinkByIndex(index int) (Link, error)
- func (h *Handle) LinkByName(name string) (Link, error)
- func (h *Handle) LinkDel(link Link) error
- func (h *Handle) LinkList() ([]Link, error)
- func (h *Handle) LinkSetAlias(link Link, name string) error
- func (h *Handle) LinkSetDown(link Link) error
- func (h *Handle) LinkSetFastLeave(link Link, mode bool) error
- func (h *Handle) LinkSetFlood(link Link, mode bool) error
- func (h *Handle) LinkSetGROIPv4MaxSize(link Link, maxSize int) error
- func (h *Handle) LinkSetGROMaxSize(link Link, maxSize int) error
- func (h *Handle) LinkSetGSOIPv4MaxSize(link Link, maxSize int) error
- func (h *Handle) LinkSetGSOMaxSize(link Link, maxSize int) error
- func (h *Handle) LinkSetGroup(link Link, group int) error
- func (h *Handle) LinkSetGuard(link Link, mode bool) error
- func (h *Handle) LinkSetHairpin(link Link, mode bool) error
- func (h *Handle) LinkSetHardwareAddr(link Link, hwaddr net.HardwareAddr) error
- func (h *Handle) LinkSetLearning(link Link, mode bool) error
- func (h *Handle) LinkSetMTU(link Link, mtu int) error
- func (h *Handle) LinkSetMaster(link Link, master Link) error
- func (h *Handle) LinkSetMasterByIndex(link Link, masterIndex int) error
- func (h *Handle) LinkSetName(link Link, name string) error
- func (h *Handle) LinkSetNoMaster(link Link) error
- func (h *Handle) LinkSetNsFd(link Link, fd int) error
- func (h *Handle) LinkSetNsPid(link Link, nspid int) error
- func (h *Handle) LinkSetRootBlock(link Link, mode bool) error
- func (h *Handle) LinkSetTxQLen(link Link, qlen int) error
- func (h *Handle) LinkSetUp(link Link) error
- func (h *Handle) LinkSetVfHardwareAddr(link Link, vf int, hwaddr net.HardwareAddr) error
- func (h *Handle) LinkSetVfRate(link Link, vf, minRate, maxRate int) error
- func (h *Handle) LinkSetVfTxRate(link Link, vf, rate int) error
- func (h *Handle) LinkSetVfVlan(link Link, vf, vlan int) error
- func (h *Handle) LinkSetVfVlanQos(link Link, vf, vlan, qos int) error
- func (h *Handle) LinkSetVfVlanQosProto(link Link, vf, vlan, qos, proto int) error
- func (h *Handle) NeighAdd(neigh *Neigh) error
- func (h *Handle) NeighAppend(neigh *Neigh) error
- func (h *Handle) NeighDel(neigh *Neigh) error
- func (h *Handle) NeighList(linkIndex, family int) ([]Neigh, error)
- func (h *Handle) NeighProxyList(linkIndex, family int) ([]Neigh, error)
- func (h *Handle) NeighSet(neigh *Neigh) error
- func (h *Handle) RouteAdd(route *Route) error
- func (h *Handle) RouteAppend(route *Route) error
- func (h *Handle) RouteChange(route *Route) error
- func (h *Handle) RouteDel(route *Route) error
- func (h *Handle) RouteGet(destination net.IP) ([]Route, error)
- func (h *Handle) RouteList(link Link, family int) ([]Route, error)
- func (h *Handle) RouteListFiltered(family int, filter *Route, filterMask uint64) ([]Route, error)
- func (h *Handle) RouteReplace(route *Route) error
- func (h *Handle) RuleAdd(rule *Rule) error
- func (h *Handle) RuleDel(rule *Rule) error
- func (h *Handle) RuleList(family int) ([]Rule, error)
- func (h *Handle) SetPromiscOff(link Link) error
- func (h *Handle) SetPromiscOn(link Link) error
- func (h *Handle) SetSocketTimeout(to time.Duration) error
- func (h *Handle) SupportsNetlinkFamily(nlFamily int) bool
- type Hfsc
- type HfscClass
- func (hfsc *HfscClass) Attrs() *ClassAttrs
- func (hfsc *HfscClass) SetFsc(m1 uint32, d uint32, m2 uint32)
- func (hfsc *HfscClass) SetLS(m1 uint32, d uint32, m2 uint32)
- func (hfsc *HfscClass) SetRsc(m1 uint32, d uint32, m2 uint32)
- func (hfsc *HfscClass) SetSC(m1 uint32, d uint32, m2 uint32)
- func (hfsc *HfscClass) SetUL(m1 uint32, d uint32, m2 uint32)
- func (hfsc *HfscClass) SetUsc(m1 uint32, d uint32, m2 uint32)
- func (hfsc *HfscClass) String() string
- func (hfsc *HfscClass) Type() string
- type Htb
- type HtbClass
- type HtbClassAttrs
- type IP6TunnelFlag
- type IPVlan
- type IPVlanFlag
- type IPVlanMode
- type IPVtap
- type IPoIB
- type IPoIBMode
- type Ifb
- type InetDiagTCPInfoResp
- type InetDiagUDPInfoResp
- type InetFamily
- type Ingress
- type Ip6tnl
- type Iptun
- type Link
- type LinkAttrs
- type LinkNotFoundError
- type LinkOperState
- type LinkSlave
- type LinkStatistics
- type LinkStatistics32
- type LinkStatistics64
- type LinkXdp
- type Macvlan
- type MacvlanMode
- type Macvtap
- type MatchAll
- type MemInfo
- type MirredAct
- type MirredAction
- type Neigh
- type NeighUpdate
- type Netem
- type NetemQdiscAttrs
- type Netkit
- type NetkitMode
- type NetkitPolicy
- type NextHopFlag
- type NexthopInfo
- type NsFd
- type NsPid
- type PeditAction
- type PfifoFast
- type PoliceAction
- type Prio
- type Protinfo
- type Qdisc
- type QdiscAttrs
- type QdiscStatistics
- type QueueInfo
- type Route
- type RouteProtocol
- type RouteUpdate
- type Rule
- type RulePortRange
- type RuleUIDRange
- type Scope
- type ServiceCurve
- type Sfq
- type Sittun
- type SkbEditAction
- type Socket
- type SocketID
- type TCPBBRInfo
- type TCPInfo
- type Tbf
- type TcAct
- type TcPolAct
- type TunnelEncapFlag
- type TunnelEncapType
- type TunnelKeyAct
- type TunnelKeyAction
- type Tuntap
- type TuntapFlag
- type TuntapMode
- type UnixDiagInfoResp
- type UnixSocket
- type Veth
- type VfInfo
- type Vlan
- type VlanProtocol
- type Vrf
- type VrfSlave
- type Vti
- type Vxlan
- type Wireguard
- type XDPDiagInfoResp
- type XDPDiagStats
- type XDPDiagUmem
- type XDPInfo
- type XDPSocket
- type XfrmPolicy
- type XfrmState
- type Xfrmi
Constants ¶
const ( TC_ACT_EXT_SHIFT = 28 TC_ACT_EXT_VAL_MASK = (1 << TC_ACT_EXT_SHIFT) - 1 )
const ( INET_DIAG_NONE = iota INET_DIAG_MEMINFO INET_DIAG_INFO INET_DIAG_VEGASINFO INET_DIAG_CONG INET_DIAG_TOS INET_DIAG_TCLASS INET_DIAG_SKMEMINFO INET_DIAG_SHUTDOWN INET_DIAG_DCTCPINFO INET_DIAG_PROTOCOL INET_DIAG_SKV6ONLY INET_DIAG_LOCALS INET_DIAG_PEERS INET_DIAG_PAD INET_DIAG_MARK INET_DIAG_BBRINFO INET_DIAG_CLASS_ID INET_DIAG_MD5SIG INET_DIAG_ULP_INFO INET_DIAG_SK_BPF_STORAGES INET_DIAG_CGROUP_ID INET_DIAG_SOCKOPT INET_DIAG_MAX )
INET_DIAG constatns
const ( OperUnknown = iota // Status can't be determined. OperNotPresent // Some component is missing. OperDown // Down. OperLowerLayerDown // Down due to state of lower layer. OperTesting // In some test mode. OperDormant // Not up but pending an external event. OperUp // Up, ready to send packets. )
const ( BOND_MODE_MASK uint64 = 1 << (1 + iota) BOND_ACTIVE_SLAVE_MASK BOND_MIIMON_MASK BOND_UPDELAY_MASK BOND_DOWNDELAY_MASK BOND_USE_CARRIER_MASK BOND_ARP_INTERVAL_MASK BOND_ARP_VALIDATE_MASK BOND_ARP_ALL_TARGETS_MASK BOND_PRIMARY_MASK BOND_PRIMARY_RESELECT_MASK BOND_FAIL_OVER_MAC_MASK BOND_XMIT_HASH_POLICY_MASK BOND_RESEND_IGMP_MASK BOND_NUM_PEER_NOTIF_MASK BOND_ALL_SLAVES_ACTIVE_MASK BOND_MIN_LINKS_MASK BOND_LP_INTERVAL_MASK BOND_PACKETS_PER_SLAVE_MASK BOND_LACP_RATE_MASK BOND_AD_SELECT_MASK )
Flag mask for bond options. Bond.Flagmask must be set to on for option to work.
const ( CSum TunnelEncapFlag = 1 << 0 CSum6 = 1 << 1 RemCSum = 1 << 2 )
const ( IP6_TNL_F_IGN_ENCAP_LIMIT IP6TunnelFlag = 1 // don't add encapsulation limit if one isn't present in inner packet IP6_TNL_F_USE_ORIG_TCLASS = 2 // copy the traffic class field from the inner packet IP6_TNL_F_USE_ORIG_FLOWLABEL = 4 // copy the flowlabel from the inner packet IP6_TNL_F_MIP6_DEV = 8 // being used for Mobile IPv6 IP6_TNL_F_RCV_DSCP_COPY = 10 // copy DSCP from the outer packet IP6_TNL_F_USE_ORIG_FWMARK = 20 // copy fwmark from inner packet IP6_TNL_F_ALLOW_LOCAL_REMOTE = 40 // allow remote endpoint on the local node )
const ( IPOIB_MODE_DATAGRAM = iota IPOIB_MODE_CONNECTED )
const ( CAN_STATE_ERROR_ACTIVE = iota CAN_STATE_ERROR_WARNING CAN_STATE_ERROR_PASSIVE CAN_STATE_BUS_OFF CAN_STATE_STOPPED CAN_STATE_SLEEPING )
const ( HANDLE_NONE = 0 HANDLE_INGRESS = 0xFFFFFFF1 HANDLE_CLSACT = HANDLE_INGRESS HANDLE_ROOT = 0xFFFFFFFF PRIORITY_MAP_LEN = 16 )
const ( HANDLE_MIN_INGRESS = 0xFFFFFFF2 HANDLE_MIN_EGRESS = 0xFFFFFFF3 )
const ( HORIZON_DROP_POLICY_CAP = 0 HORIZON_DROP_POLICY_DROP = 1 HORIZON_DROP_POLICY_DEFAULT = 255 )
const ( RT_FILTER_PROTOCOL uint64 = 1 << (1 + iota) RT_FILTER_SCOPE RT_FILTER_TYPE RT_FILTER_TOS RT_FILTER_IIF RT_FILTER_OIF RT_FILTER_DST RT_FILTER_SRC RT_FILTER_GW RT_FILTER_TABLE RT_FILTER_HOPLIMIT RT_FILTER_PRIORITY RT_FILTER_MARK RT_FILTER_MASK RT_FILTER_REALM )
const ( TCP_ESTABLISHED = iota + 0x01 TCP_SYN_SENT TCP_SYN_RECV TCP_FIN_WAIT1 TCP_FIN_WAIT2 TCP_TIME_WAIT TCP_CLOSE TCP_CLOSE_WAIT TCP_LAST_ACK TCP_LISTEN TCP_CLOSING TCP_NEW_SYN_REC TCP_MAX_STATES )
TCP States
const ( UNIX_DIAG_NAME = iota UNIX_DIAG_VFS UNIX_DIAG_PEER UNIX_DIAG_ICONS UNIX_DIAG_RQLEN UNIX_DIAG_MEMINFO UNIX_DIAG_SHUTDOWN UNIX_DIAG_UID UNIX_DIAG_MAX )
According to linux/include/uapi/linux/unix_diag.h
const ( VIRTIO_NET_F_CSUM = 0 // Host handles pkts w/ partial csum VIRTIO_NET_F_GUEST_CSUM = 1 // Guest handles pkts w/ partial csum VIRTIO_NET_F_CTRL_GUEST_OFFLOADS = 2 // Dynamic offload configuration. VIRTIO_NET_F_MTU = 3 // Initial MTU advice VIRTIO_NET_F_MAC = 5 // Host has given MAC address. VIRTIO_NET_F_GUEST_TSO4 = 7 // Guest can handle TSOv4 in. VIRTIO_NET_F_GUEST_TSO6 = 8 // Guest can handle TSOv6 in. VIRTIO_NET_F_GUEST_ECN = 9 // Guest can handle TSO[6] w/ ECN in. VIRTIO_NET_F_GUEST_UFO = 10 // Guest can handle UFO in. VIRTIO_NET_F_HOST_TSO4 = 11 // Host can handle TSOv4 in. VIRTIO_NET_F_HOST_TSO6 = 12 // Host can handle TSOv6 in. VIRTIO_NET_F_HOST_ECN = 13 // Host can handle TSO[6] w/ ECN in. VIRTIO_NET_F_HOST_UFO = 14 // Host can handle UFO in. VIRTIO_NET_F_MRG_RXBUF = 15 // Host can merge receive buffers. VIRTIO_NET_F_STATUS = 16 // virtio_net_config.status available VIRTIO_NET_F_CTRL_VQ = 17 // Control channel available VIRTIO_NET_F_CTRL_RX = 18 // Control channel RX mode support VIRTIO_NET_F_CTRL_VLAN = 19 // Control channel VLAN filtering VIRTIO_NET_F_CTRL_RX_EXTRA = 20 // Extra RX mode control support VIRTIO_NET_F_GUEST_ANNOUNCE = 21 // Guest can announce device on the* network VIRTIO_NET_F_MQ = 22 // Device supports Receive Flow Steering VIRTIO_NET_F_CTRL_MAC_ADDR = 23 // Set MAC address VIRTIO_NET_F_VQ_NOTF_COAL = 52 // Device supports virtqueue notification coalescing VIRTIO_NET_F_NOTF_COAL = 53 // Device supports notifications coalescing VIRTIO_NET_F_GUEST_USO4 = 54 // Guest can handle USOv4 in. VIRTIO_NET_F_GUEST_USO6 = 55 // Guest can handle USOv6 in. VIRTIO_NET_F_HOST_USO = 56 // Host can handle USO in. VIRTIO_NET_F_HASH_REPORT = 57 // Supports hash report VIRTIO_NET_F_GUEST_HDRLEN = 59 // Guest provides the exact hdr_len value. VIRTIO_NET_F_RSS = 60 // Supports RSS RX steering VIRTIO_NET_F_RSC_EXT = 61 // extended coalescing info VIRTIO_NET_F_STANDBY = 62 // Act as standby for another device with the same MAC. VIRTIO_NET_F_SPEED_DUPLEX = 63 // Device set linkspeed and duplex VIRTIO_NET_F_GSO = 6 // Host handles pkts any GSO type )
features for virtio net
const ( VIRTIO_NET_S_LINK_UP = 1 // Link is up VIRTIO_NET_S_ANNOUNCE = 2 // Announcement is needed )
virtio net status
const ( // Do we get callbacks when the ring is completely used, even if we've // suppressed them? VIRTIO_F_NOTIFY_ON_EMPTY = 24 // Can the device handle any descriptor layout? VIRTIO_F_ANY_LAYOUT = 27 // v1.0 compliant VIRTIO_F_VERSION_1 = 32 // If clear - device has the platform DMA (e.g. IOMMU) bypass quirk feature. // If set - use platform DMA tools to access the memory. // Note the reverse polarity (compared to most other features), // this is for compatibility with legacy systems. VIRTIO_F_ACCESS_PLATFORM = 33 // Legacy name for VIRTIO_F_ACCESS_PLATFORM (for compatibility with old userspace) VIRTIO_F_IOMMU_PLATFORM = VIRTIO_F_ACCESS_PLATFORM // This feature indicates support for the packed virtqueue layout. VIRTIO_F_RING_PACKED = 34 // Inorder feature indicates that all buffers are used by the device // in the same order in which they have been made available. VIRTIO_F_IN_ORDER = 35 // This feature indicates that memory accesses by the driver and the // device are ordered in a way described by the platform. VIRTIO_F_ORDER_PLATFORM = 36 // Does the device support Single Root I/O Virtualization? VIRTIO_F_SR_IOV = 37 // This feature indicates that the driver passes extra data (besides // identifying the virtqueue) in its device notifications. VIRTIO_F_NOTIFICATION_DATA = 38 // This feature indicates that the driver uses the data provided by the device // as a virtqueue identifier in available buffer notifications. VIRTIO_F_NOTIF_CONFIG_DATA = 39 // This feature indicates that the driver can reset a queue individually. VIRTIO_F_RING_RESET = 40 )
virtio config
const ( VIRTIO_ID_NET = 1 // virtio net VIRTIO_ID_BLOCK = 2 // virtio block VIRTIO_ID_CONSOLE = 3 // virtio console VIRTIO_ID_RNG = 4 // virtio rng VIRTIO_ID_BALLOON = 5 // virtio balloon VIRTIO_ID_IOMEM = 6 // virtio ioMemory VIRTIO_ID_RPMSG = 7 // virtio remote processor messaging VIRTIO_ID_SCSI = 8 // virtio scsi VIRTIO_ID_9P = 9 // 9p virtio console VIRTIO_ID_MAC80211_WLAN = 10 // virtio WLAN MAC VIRTIO_ID_RPROC_SERIAL = 11 // virtio remoteproc serial link VIRTIO_ID_CAIF = 12 // Virtio caif VIRTIO_ID_MEMORY_BALLOON = 13 // virtio memory balloon VIRTIO_ID_GPU = 16 // virtio GPU VIRTIO_ID_CLOCK = 17 // virtio clock/timer VIRTIO_ID_INPUT = 18 // virtio input VIRTIO_ID_VSOCK = 19 // virtio vsock transport VIRTIO_ID_CRYPTO = 20 // virtio crypto VIRTIO_ID_SIGNAL_DIST = 21 // virtio signal distribution device VIRTIO_ID_PSTORE = 22 // virtio pstore device VIRTIO_ID_IOMMU = 23 // virtio IOMMU VIRTIO_ID_MEM = 24 // virtio mem VIRTIO_ID_SOUND = 25 // virtio sound VIRTIO_ID_FS = 26 // virtio filesystem VIRTIO_ID_PMEM = 27 // virtio pmem VIRTIO_ID_RPMB = 28 // virtio rpmb VIRTIO_ID_MAC80211_HWSIM = 29 // virtio mac80211-hwsim VIRTIO_ID_VIDEO_ENCODER = 30 // virtio video encoder VIRTIO_ID_VIDEO_DECODER = 31 // virtio video decoder VIRTIO_ID_SCMI = 32 // virtio SCMI VIRTIO_ID_NITRO_SEC_MOD = 33 // virtio nitro secure module VIRTIO_ID_I2C_ADAPTER = 34 // virtio i2c adapter VIRTIO_ID_WATCHDOG = 35 // virtio watchdog VIRTIO_ID_CAN = 36 // virtio can VIRTIO_ID_DMABUF = 37 // virtio dmabuf VIRTIO_ID_PARAM_SERV = 38 // virtio parameter server VIRTIO_ID_AUDIO_POLICY = 39 // virtio audio policy VIRTIO_ID_BT = 40 // virtio bluetooth VIRTIO_ID_GPIO = 41 // virtio gpio // Virtio Transitional IDs VIRTIO_TRANS_ID_NET = 0x1000 // transitional virtio net VIRTIO_TRANS_ID_BLOCK = 0x1001 // transitional virtio block VIRTIO_TRANS_ID_BALLOON = 0x1002 // transitional virtio balloon VIRTIO_TRANS_ID_CONSOLE = 0x1003 // transitional virtio console VIRTIO_TRANS_ID_SCSI = 0x1004 // transitional virtio SCSI VIRTIO_TRANS_ID_RNG = 0x1005 // transitional virtio rng VIRTIO_TRANS_ID_9P = 0x1009 // transitional virtio 9p console )
virtio device ids
const ( XDP_SHOW_INFO = 1 << iota XDP_SHOW_RING_CFG XDP_SHOW_UMEM XDP_SHOW_MEMINFO XDP_SHOW_STATS )
XDP diagnosis show flag constants to request particular information elements.
const ( XDP_DIAG_NONE = iota XDP_DIAG_INFO // when using XDP_SHOW_INFO XDP_DIAG_UID // when using XDP_SHOW_INFO XDP_DIAG_RX_RING // when using XDP_SHOW_RING_CFG XDP_DIAG_TX_RING // when using XDP_SHOW_RING_CFG XDP_DIAG_UMEM // when using XDP_SHOW_UMEM XDP_DIAG_UMEM_FILL_RING // when using XDP_SHOW_UMEM XDP_DIAG_UMEM_COMPLETION_RING // when using XDP_SHOW_UMEM XDP_DIAG_MEMINFO // when using XDP_SHOW_MEMINFO XDP_DIAG_STATS // when using XDP_SHOW_STATS )
XDP diag element constants
const SOCK_ANY_COOKIE = uint64(nl.TCPDIAG_NOCOOKIE)<<32 + uint64(nl.TCPDIAG_NOCOOKIE)
const (
XDP_DU_F_ZEROCOPY = 1 << iota
)
Variables ¶
var ( // ErrAttrHeaderTruncated is returned when a netlink attribute's header is // truncated. ErrAttrHeaderTruncated = errors.New("attribute header truncated") // ErrAttrBodyTruncated is returned when a netlink attribute's body is // truncated. ErrAttrBodyTruncated = errors.New("attribute body truncated") )
var ( // ErrNotImplemented is returned when a requested feature is not implemented. ErrNotImplemented = errors.New("not implemented") )
var StringToBondAdSelectMap = map[string]BondAdSelect{ "stable": BOND_AD_SELECT_STABLE, "bandwidth": BOND_AD_SELECT_BANDWIDTH, "count": BOND_AD_SELECT_COUNT, }
var StringToBondArpAllTargetsMap = map[string]BondArpAllTargets{ "any": BOND_ARP_ALL_TARGETS_ANY, "all": BOND_ARP_ALL_TARGETS_ALL, }
var StringToBondArpValidateMap = map[string]BondArpValidate{ "none": BOND_ARP_VALIDATE_NONE, "active": BOND_ARP_VALIDATE_ACTIVE, "backup": BOND_ARP_VALIDATE_BACKUP, "all": BOND_ARP_VALIDATE_ALL, }
var StringToBondFailOverMacMap = map[string]BondFailOverMac{ "none": BOND_FAIL_OVER_MAC_NONE, "active": BOND_FAIL_OVER_MAC_ACTIVE, "follow": BOND_FAIL_OVER_MAC_FOLLOW, }
var StringToBondLacpRateMap = map[string]BondLacpRate{ "slow": BOND_LACP_RATE_SLOW, "fast": BOND_LACP_RATE_FAST, }
var StringToBondModeMap = map[string]BondMode{ "balance-rr": BOND_MODE_BALANCE_RR, "active-backup": BOND_MODE_ACTIVE_BACKUP, "balance-xor": BOND_MODE_BALANCE_XOR, "broadcast": BOND_MODE_BROADCAST, "802.3ad": BOND_MODE_802_3AD, "balance-tlb": BOND_MODE_BALANCE_TLB, "balance-alb": BOND_MODE_BALANCE_ALB, }
var StringToBondPrimaryReselectMap = map[string]BondPrimaryReselect{ "always": BOND_PRIMARY_RESELECT_ALWAYS, "better": BOND_PRIMARY_RESELECT_BETTER, "failure": BOND_PRIMARY_RESELECT_FAILURE, }
var StringToBondXmitHashPolicyMap = map[string]BondXmitHashPolicy{ "layer2": BOND_XMIT_HASH_POLICY_LAYER2, "layer3+4": BOND_XMIT_HASH_POLICY_LAYER3_4, "layer2+3": BOND_XMIT_HASH_POLICY_LAYER2_3, "encap2+3": BOND_XMIT_HASH_POLICY_ENCAP2_3, "encap3+4": BOND_XMIT_HASH_POLICY_ENCAP3_4, "vlan+srcmac": BOND_XMIT_HASH_POLICY_VLAN_SRCMAC, }
var StringToIPoIBMode = map[string]IPoIBMode{ "datagram": IPOIB_MODE_DATAGRAM, "connected": IPOIB_MODE_CONNECTED, }
var StringToVlanProtocolMap = map[string]VlanProtocol{ "802.1q": VLAN_PROTOCOL_8021Q, "802.1ad": VLAN_PROTOCOL_8021AD, }
var VlanProtocolToString = map[VlanProtocol]string{ VLAN_PROTOCOL_8021Q: "802.1q", VLAN_PROTOCOL_8021AD: "802.1ad", }
Functions ¶
func AddrReplace ¶ added in v1.1.0
func ConntrackDeleteFilter
deprecated
func ConntrackDeleteFilter(table ConntrackTableType, family InetFamily, filter *ConntrackFilter) (uint, error)
ConntrackDeleteFilter deletes entries on the specified table on the base of the filter conntrack -D [table] parameters Delete conntrack or expectation
Deprecated: use ConntrackDeleteFilter instead.
func ConntrackDeleteFilters ¶ added in v1.3.0
func ConntrackDeleteFilters(table ConntrackTableType, family InetFamily, filters ...CustomConntrackFilter) (uint, error)
ConntrackDeleteFilters deletes entries on the specified table matching any of the specified filters conntrack -D [table] parameters Delete conntrack or expectation
func ConntrackTableFlush ¶
func ConntrackTableFlush(table ConntrackTableType) error
ConntrackTableFlush flushes all the flows of a specified table conntrack -F [table] Flush table The flush operation applies to all the family types
func GetNetNsIdByFd ¶ added in v1.1.0
func GetNetNsIdByPid ¶ added in v1.1.0
func LinkSetARPOff ¶
func LinkSetARPOn ¶
func LinkSetAlias ¶
func LinkSetDown ¶
func LinkSetFastLeave ¶
func LinkSetFlood ¶
func LinkSetGROIPv4MaxSize ¶ added in v1.2.1
func LinkSetGROMaxSize ¶ added in v1.2.1
func LinkSetGSOIPv4MaxSize ¶ added in v1.2.1
func LinkSetGSOMaxSize ¶ added in v1.2.1
func LinkSetGuard ¶
func LinkSetHairpin ¶
func LinkSetHardwareAddr ¶
func LinkSetHardwareAddr(link Link, hwaddr net.HardwareAddr) error
func LinkSetLearning ¶
func LinkSetMTU ¶
func LinkSetMaster ¶
func LinkSetMasterByIndex ¶
func LinkSetName ¶
func LinkSetNoMaster ¶
func LinkSetNsFd ¶
func LinkSetNsPid ¶
func LinkSetRootBlock ¶
func LinkSetTxQLen ¶
func LinkSetVfHardwareAddr ¶
func LinkSetVfHardwareAddr(link Link, vf int, hwaddr net.HardwareAddr) error
func LinkSetVfRate ¶ added in v1.1.0
func LinkSetVfTxRate ¶
func LinkSetVfVlan ¶
func LinkSetVfVlanQos ¶ added in v1.1.0
func LinkSetVfVlanQosProto ¶ added in v1.2.1
func LinkSetXdpFd ¶
func LinkSetXdpFdWithFlags ¶ added in v1.2.1
func MajorMinor ¶
func MakeHandle ¶
func NeighAppend ¶
func ParseIPNet ¶
ParseIPNet parses a string in ip/net format and returns a net.IPNet. This is valuable because addresses in netlink are often IPNets and ParseCIDR returns an IPNet with the IP part set to the base IP of the range.
func Percentage2u32 ¶
func RouteAppend ¶ added in v1.2.1
func RouteChange ¶ added in v1.2.1
func RouteReplace ¶ added in v1.2.1
func SetFastLeave ¶
func SetHairpin ¶
func SetLearning ¶
func SetNetNsIdByFd ¶ added in v1.1.0
func SetNetNsIdByPid ¶ added in v1.1.0
func SetRootBlock ¶
func TcActExtCmp ¶ added in v1.2.1
func XfrmPolicyAdd ¶
func XfrmPolicyAdd(policy *XfrmPolicy) error
func XfrmPolicyDel ¶
func XfrmPolicyDel(policy *XfrmPolicy) error
func XfrmStateAdd ¶
func XfrmStateDel ¶
Types ¶
type Action ¶
type Action interface { Attrs() *ActionAttrs Type() string }
Action represents an action in any supported filter.
type ActionAttrs ¶
type ActionAttrs struct { Index int Capab int Action TcAct Refcnt int Bindcnt int Statistics *ActionStatistic Timestamp *ActionTimestamp }
func (ActionAttrs) String ¶
func (q ActionAttrs) String() string
type ActionStatistic ¶ added in v1.2.1
type ActionStatistic ClassStatistics
type ActionTimestamp ¶ added in v1.2.1
func (ActionTimestamp) String ¶ added in v1.2.1
func (t ActionTimestamp) String() string
type Addr ¶
type Addr struct { *net.IPNet Label string Flags int Scope int Peer *net.IPNet Broadcast net.IP PreferedLft int ValidLft int LinkIndex int }
Addr represents an IP address from netlink. Netlink ip addresses include a mask, so it stores the address as a net.IPNet.
func ParseAddr ¶
ParseAddr parses the string representation of an address in the form $ip/$netmask $label. The label portion is optional
type Bond ¶
type Bond struct { LinkAttrs Mode BondMode ActiveSlave int Miimon int UpDelay int DownDelay int UseCarrier int ArpInterval int ArpIpTargets []net.IP ArpValidate BondArpValidate ArpAllTargets BondArpAllTargets Primary int PrimaryReselect BondPrimaryReselect FailOverMac BondFailOverMac XmitHashPolicy BondXmitHashPolicy ResendIgmp int NumPeerNotif int AllSlavesActive int MinLinks int LpInterval int PacketsPerSlave int LacpRate BondLacpRate AdSelect BondAdSelect // looking at iproute tool AdInfo can only be retrived. It can't be set. AdInfo *BondAdInfo AdActorSysPrio int AdUserPortKey int AdActorSystem net.HardwareAddr TlbDynamicLb int }
Bond representation
func NewLinkBond ¶
type BondAdInfo ¶
type BondAdInfo struct { AggregatorId int NumPorts int ActorKey int PartnerKey int PartnerMac net.HardwareAddr }
BondAdInfo represents ad info for bond
type BondAdSelect ¶
type BondAdSelect int
BondAdSelect type
const ( BOND_AD_SELECT_STABLE BondAdSelect = iota BOND_AD_SELECT_BANDWIDTH BOND_AD_SELECT_COUNT )
Possible BondAdSelect value
func (BondAdSelect) String ¶ added in v1.2.1
func (b BondAdSelect) String() string
type BondArpAllTargets ¶
type BondArpAllTargets int
BondArpAllTargets type
const ( BOND_ARP_ALL_TARGETS_ANY BondArpAllTargets = iota BOND_ARP_ALL_TARGETS_ALL )
Possible BondArpAllTargets value
func (BondArpAllTargets) String ¶ added in v1.2.1
func (b BondArpAllTargets) String() string
type BondArpValidate ¶
type BondArpValidate int
BondArpValidate type
const ( BOND_ARP_VALIDATE_NONE BondArpValidate = iota BOND_ARP_VALIDATE_ACTIVE BOND_ARP_VALIDATE_BACKUP BOND_ARP_VALIDATE_ALL )
Possible BondArpValidate value
func (BondArpValidate) String ¶ added in v1.2.1
func (b BondArpValidate) String() string
type BondFailOverMac ¶
type BondFailOverMac int
BondFailOverMac type
const ( BOND_FAIL_OVER_MAC_NONE BondFailOverMac = iota BOND_FAIL_OVER_MAC_ACTIVE BOND_FAIL_OVER_MAC_FOLLOW )
Possible BondFailOverMac value
func (BondFailOverMac) String ¶ added in v1.2.1
func (b BondFailOverMac) String() string
type BondLacpRate ¶
type BondLacpRate int
BondLacpRate type
const ( BOND_LACP_RATE_SLOW BondLacpRate = iota BOND_LACP_RATE_FAST BOND_LACP_RATE_UNKNOWN )
Possible BondLacpRate value
func StringToBondLacpRate ¶
func StringToBondLacpRate(s string) BondLacpRate
StringToBondLacpRate returns bond lacp arte, or unknown is the s is invalid.
func (BondLacpRate) String ¶
func (b BondLacpRate) String() string
type BondMode ¶
type BondMode int
BondMode type
const ( BOND_MODE_BALANCE_RR BondMode = iota BOND_MODE_ACTIVE_BACKUP BOND_MODE_BALANCE_XOR BOND_MODE_BROADCAST BOND_MODE_802_3AD BOND_MODE_BALANCE_TLB BOND_MODE_BALANCE_ALB BOND_MODE_UNKNOWN )
Possible BondMode
func StringToBondMode ¶
StringToBondMode returns bond mode, or unknown is the s is invalid.
type BondPrimaryReselect ¶
type BondPrimaryReselect int
BondPrimaryReselect type
const ( BOND_PRIMARY_RESELECT_ALWAYS BondPrimaryReselect = iota BOND_PRIMARY_RESELECT_BETTER BOND_PRIMARY_RESELECT_FAILURE )
Possible BondPrimaryReselect value
func (BondPrimaryReselect) String ¶ added in v1.2.1
func (b BondPrimaryReselect) String() string
type BondSlave ¶ added in v1.1.0
type BondSlave struct { State BondSlaveState MiiStatus BondSlaveMiiStatus LinkFailureCount uint32 PermHardwareAddr net.HardwareAddr QueueId uint16 AggregatorId uint16 AdActorOperPortState uint8 AdPartnerOperPortState uint16 }
type BondSlaveMiiStatus ¶ added in v1.1.0
type BondSlaveMiiStatus uint8
BondSlaveMiiStatus represents the values of the IFLA_BOND_SLAVE_MII_STATUS bond slave attribute, which contains the status of MII link monitoring
const ( //BondLinkUp link is up and running. BondLinkUp BondSlaveMiiStatus = iota //BondLinkFail link has just gone down. BondLinkFail //BondLinkDown link has been down for too long time. BondLinkDown //BondLinkBack link is going back. BondLinkBack )
func (BondSlaveMiiStatus) String ¶ added in v1.1.0
func (s BondSlaveMiiStatus) String() string
type BondSlaveState ¶ added in v1.1.0
type BondSlaveState uint8
BondSlaveState represents the values of the IFLA_BOND_SLAVE_STATE bond slave attribute, which contains the state of the bond slave.
const ( //BondStateActive Link is active. BondStateActive BondSlaveState = iota //BondStateBackup Link is backup. BondStateBackup )
func (BondSlaveState) String ¶ added in v1.1.0
func (s BondSlaveState) String() string
type BondXmitHashPolicy ¶
type BondXmitHashPolicy int
BondXmitHashPolicy type
const ( BOND_XMIT_HASH_POLICY_LAYER2 BondXmitHashPolicy = iota BOND_XMIT_HASH_POLICY_LAYER3_4 BOND_XMIT_HASH_POLICY_LAYER2_3 BOND_XMIT_HASH_POLICY_ENCAP2_3 BOND_XMIT_HASH_POLICY_ENCAP3_4 BOND_XMIT_HASH_POLICY_VLAN_SRCMAC BOND_XMIT_HASH_POLICY_UNKNOWN )
Possible BondXmitHashPolicy value
func StringToBondXmitHashPolicy ¶
func StringToBondXmitHashPolicy(s string) BondXmitHashPolicy
StringToBondXmitHashPolicy returns bond lacp arte, or unknown is the s is invalid.
func (BondXmitHashPolicy) String ¶
func (b BondXmitHashPolicy) String() string
type BpfAction ¶
type BpfAction struct { ActionAttrs Fd int Name string }
func (*BpfAction) Attrs ¶
func (action *BpfAction) Attrs() *ActionAttrs
type BpfFilter ¶
type BpfFilter struct { FilterAttrs ClassId uint32 Fd int Name string DirectAction bool Id int Tag string }
func (*BpfFilter) Attrs ¶
func (filter *BpfFilter) Attrs() *FilterAttrs
type Bridge ¶
type Bridge struct { LinkAttrs MulticastSnooping *bool AgeingTime *uint32 HelloTime *uint32 VlanFiltering *bool VlanDefaultPVID *uint16 GroupFwdMask *uint16 }
Bridge links are simple linux bridges
type Can ¶ added in v1.2.1
type Can struct { LinkAttrs BitRate uint32 SamplePoint uint32 TimeQuanta uint32 PropagationSegment uint32 PhaseSegment1 uint32 PhaseSegment2 uint32 SyncJumpWidth uint32 BitRatePreScaler uint32 Name string TimeSegment1Min uint32 TimeSegment1Max uint32 TimeSegment2Min uint32 TimeSegment2Max uint32 SyncJumpWidthMax uint32 BitRatePreScalerMin uint32 BitRatePreScalerMax uint32 BitRatePreScalerInc uint32 ClockFrequency uint32 State uint32 Mask uint32 Flags uint32 TxError uint16 RxError uint16 RestartMs uint32 }
type Class ¶
type Class interface { Attrs() *ClassAttrs Type() string }
Class interfaces for all classes
type ClassAttrs ¶
type ClassAttrs struct { LinkIndex int Handle uint32 Parent uint32 Leaf uint32 Statistics *ClassStatistics }
ClassAttrs represents a netlink class. A filter is associated with a link, has a handle and a parent. The root filter of a device should have a parent == HANDLE_ROOT.
func (ClassAttrs) String ¶
func (q ClassAttrs) String() string
type ClassStatistics ¶ added in v1.1.0
type ClassStatistics struct { Basic *GnetStatsBasic Queue *GnetStatsQueue RateEst *GnetStatsRateEst BasicHw *GnetStatsBasic // Hardward statistics added in kernel 4.20 }
ClassStatistics representation based on generic networking statistics for netlink. See Documentation/networking/gen_stats.txt in Linux source code for more details.
func NewClassStatistics ¶ added in v1.1.0
func NewClassStatistics() *ClassStatistics
NewClassStatistics Construct a ClassStatistics struct which fields are all initialized by 0.
type Clsact ¶ added in v1.2.1
type Clsact struct {
QdiscAttrs
}
Clsact is a qdisc for adding filters
func (*Clsact) Attrs ¶ added in v1.2.1
func (qdisc *Clsact) Attrs() *QdiscAttrs
type ConnmarkAction ¶ added in v1.1.0
type ConnmarkAction struct { ActionAttrs Zone uint16 }
func NewConnmarkAction ¶ added in v1.1.0
func NewConnmarkAction() *ConnmarkAction
func (*ConnmarkAction) Attrs ¶ added in v1.1.0
func (action *ConnmarkAction) Attrs() *ActionAttrs
func (*ConnmarkAction) Type ¶ added in v1.1.0
func (action *ConnmarkAction) Type() string
type ConntrackFlow ¶
type ConntrackFlow struct{}
ConntrackFlow placeholder
func ConntrackTableList ¶
func ConntrackTableList(table ConntrackTableType, family InetFamily) ([]*ConntrackFlow, error)
ConntrackTableList returns the flow list of a table of a specific family conntrack -L [table] [options] List conntrack or expectation table
type ConntrackTableType ¶
type ConntrackTableType uint8
ConntrackTableType Conntrack table for the netlink operation
type CsumAction ¶ added in v1.2.1
type CsumAction struct { ActionAttrs UpdateFlags CsumUpdateFlags }
func NewCsumAction ¶ added in v1.2.1
func NewCsumAction() *CsumAction
func (*CsumAction) Attrs ¶ added in v1.2.1
func (action *CsumAction) Attrs() *ActionAttrs
func (*CsumAction) Type ¶ added in v1.2.1
func (action *CsumAction) Type() string
type CsumUpdateFlags ¶ added in v1.2.1
type CsumUpdateFlags uint32
const ( TCA_CSUM_UPDATE_FLAG_IPV4HDR CsumUpdateFlags = 1 TCA_CSUM_UPDATE_FLAG_ICMP CsumUpdateFlags = 2 TCA_CSUM_UPDATE_FLAG_IGMP CsumUpdateFlags = 4 TCA_CSUM_UPDATE_FLAG_TCP CsumUpdateFlags = 8 TCA_CSUM_UPDATE_FLAG_UDP CsumUpdateFlags = 16 TCA_CSUM_UPDATE_FLAG_UDPLITE CsumUpdateFlags = 32 TCA_CSUM_UPDATE_FLAG_SCTP CsumUpdateFlags = 64 )
type CustomConntrackFilter ¶ added in v1.3.0
type CustomConntrackFilter struct{}
CustomConntrackFilter placeholder
type Destination ¶
type Device ¶
type Device struct {
LinkAttrs
}
Device links cannot be created via netlink. These links are links created by udev like 'lo' and 'etho0'
type Filter ¶
type Filter interface { Attrs() *FilterAttrs Type() string }
type FilterAttrs ¶
type FilterAttrs struct { LinkIndex int Handle uint32 Parent uint32 Priority uint16 // lower is higher priority Protocol uint16 // unix.ETH_P_* Chain *uint32 }
FilterAttrs represents a netlink filter. A filter is associated with a link, has a handle and a parent. The root filter of a device should have a parent == HANDLE_ROOT.
func (FilterAttrs) String ¶
func (q FilterAttrs) String() string
type Fq ¶
type Fq struct { QdiscAttrs PacketLimit uint32 FlowPacketLimit uint32 // In bytes Quantum uint32 InitialQuantum uint32 // called RateEnable under the hood Pacing uint32 FlowDefaultRate uint32 FlowMaxRate uint32 // called BucketsLog under the hood Buckets uint32 FlowRefillDelay uint32 LowRateThreshold uint32 Horizon uint32 HorizonDropPolicy uint8 }
Fq is a classless packet scheduler meant to be mostly used for locally generated traffic.
func NewFq ¶
func NewFq(attrs QdiscAttrs) *Fq
func (*Fq) Attrs ¶
func (qdisc *Fq) Attrs() *QdiscAttrs
type FqCodel ¶
type FqCodel struct { QdiscAttrs Target uint32 Limit uint32 Interval uint32 ECN uint32 Flows uint32 Quantum uint32 CEThreshold uint32 DropBatchSize uint32 MemoryLimit uint32 }
FQ_Codel (Fair Queuing Controlled Delay) is queuing discipline that combines Fair Queuing with the CoDel AQM scheme.
func NewFqCodel ¶
func NewFqCodel(attrs QdiscAttrs) *FqCodel
func (*FqCodel) Attrs ¶
func (qdisc *FqCodel) Attrs() *QdiscAttrs
type FwFilter ¶ added in v1.2.1
type FwFilter struct { FilterAttrs ClassId uint32 InDev string Mask uint32 Police *PoliceAction Actions []Action }
func (*FwFilter) Attrs ¶ added in v1.2.1
func (filter *FwFilter) Attrs() *FilterAttrs
type GenericAction ¶
type GenericAction struct { ActionAttrs Chain int32 }
func (*GenericAction) Attrs ¶
func (action *GenericAction) Attrs() *ActionAttrs
func (*GenericAction) Type ¶
func (action *GenericAction) Type() string
type GenericClass ¶
type GenericClass struct { ClassAttrs ClassType string }
GenericClass classes represent types that are not currently understood by this netlink library.
func (*GenericClass) Attrs ¶
func (class *GenericClass) Attrs() *ClassAttrs
Attrs return the class attributes
type GenericFilter ¶
type GenericFilter struct { FilterAttrs FilterType string }
GenericFilter filters represent types that are not currently understood by this netlink library.
func (*GenericFilter) Attrs ¶
func (filter *GenericFilter) Attrs() *FilterAttrs
func (*GenericFilter) Type ¶
func (filter *GenericFilter) Type() string
type GenericLink ¶
GenericLink links represent types that are not currently understood by this netlink library.
func (*GenericLink) Attrs ¶
func (generic *GenericLink) Attrs() *LinkAttrs
func (*GenericLink) Type ¶
func (generic *GenericLink) Type() string
type GenericQdisc ¶
type GenericQdisc struct { QdiscAttrs QdiscType string }
GenericQdisc qdiscs represent types that are not currently understood by this netlink library.
func (*GenericQdisc) Attrs ¶
func (qdisc *GenericQdisc) Attrs() *QdiscAttrs
func (*GenericQdisc) Type ¶
func (qdisc *GenericQdisc) Type() string
type Geneve ¶ added in v1.2.1
type Geneve struct { LinkAttrs ID uint32 // vni Remote net.IP Ttl uint8 Tos uint8 Dport uint16 UdpCsum uint8 UdpZeroCsum6Tx uint8 UdpZeroCsum6Rx uint8 Link uint32 FlowBased bool InnerProtoInherit bool Df GeneveDf }
Geneve devices must specify RemoteIP and ID (VNI) on create https://github.com/torvalds/linux/blob/47ec5303d73ea344e84f46660fff693c57641386/drivers/net/geneve.c#L1209-L1223
type GenlFamily ¶
type GenlFamily struct{}
func GenlFamilyGet ¶
func GenlFamilyGet(name string) (*GenlFamily, error)
func GenlFamilyList ¶
func GenlFamilyList() ([]*GenlFamily, error)
type GenlMulticastGroup ¶
type GenlMulticastGroup struct{}
type GnetStatsBasic ¶ added in v1.1.0
type GnetStatsBasic struct { Bytes uint64 // number of seen bytes Packets uint32 // number of seen packets }
GnetStatsBasic Ref: struct gnet_stats_basic { ... }
type GnetStatsQueue ¶ added in v1.1.0
type GnetStatsQueue struct { Qlen uint32 // queue length Backlog uint32 // backlog size of queue Drops uint32 // number of dropped packets Requeues uint32 // number of requues Overlimits uint32 // number of enqueues over the limit }
GnetStatsQueue Ref: struct gnet_stats_queue { ... }
type GnetStatsRateEst ¶ added in v1.1.0
GnetStatsRateEst Ref: struct gnet_stats_rate_est { ... }
type GnetStatsRateEst64 ¶ added in v1.1.0
type GnetStatsRateEst64 struct { Bps uint64 // current byte rate Pps uint64 // current packet rate }
GnetStatsRateEst64 Ref: struct gnet_stats_rate_est64 { ... }
type Gretap ¶
type Gretap struct { LinkAttrs IKey uint32 OKey uint32 EncapSport uint16 EncapDport uint16 Local net.IP Remote net.IP IFlags uint16 OFlags uint16 PMtuDisc uint8 Ttl uint8 Tos uint8 EncapType uint16 EncapFlags uint16 Link uint32 FlowBased bool }
Gretap devices must specify LocalIP and RemoteIP on create
type Gretun ¶
type Handle ¶
type Handle struct{}
func (*Handle) ClassChange ¶
func (*Handle) ClassReplace ¶
func (*Handle) ConntrackDeleteFilter
deprecated
func (h *Handle) ConntrackDeleteFilter(table ConntrackTableType, family InetFamily, filter *ConntrackFilter) (uint, error)
ConntrackDeleteFilter deletes entries on the specified table on the base of the filter using the netlink handle passed conntrack -D [table] parameters Delete conntrack or expectation
Deprecated: use Handle.ConntrackDeleteFilters instead.
func (*Handle) ConntrackDeleteFilters ¶ added in v1.3.0
func (h *Handle) ConntrackDeleteFilters(table ConntrackTableType, family InetFamily, filters ...CustomConntrackFilter) (uint, error)
ConntrackDeleteFilters deletes entries on the specified table matching any of the specified filters using the netlink handle passed conntrack -D [table] parameters Delete conntrack or expectation
func (*Handle) ConntrackTableFlush ¶
func (h *Handle) ConntrackTableFlush(table ConntrackTableType) error
ConntrackTableFlush flushes all the flows of a specified table using the netlink handle passed conntrack -F [table] Flush table The flush operation applies to all the family types
func (*Handle) ConntrackTableList ¶
func (h *Handle) ConntrackTableList(table ConntrackTableType, family InetFamily) ([]*ConntrackFlow, error)
ConntrackTableList returns the flow list of a table of a specific family using the netlink handle passed conntrack -L [table] [options] List conntrack or expectation table
func (*Handle) GenlFamilyGet ¶
func (h *Handle) GenlFamilyGet(name string) (*GenlFamily, error)
func (*Handle) GenlFamilyList ¶
func (h *Handle) GenlFamilyList() ([]*GenlFamily, error)
func (*Handle) LinkSetDown ¶
func (*Handle) LinkSetGROIPv4MaxSize ¶ added in v1.2.1
func (*Handle) LinkSetGROMaxSize ¶ added in v1.2.1
func (*Handle) LinkSetGSOIPv4MaxSize ¶ added in v1.2.1
func (*Handle) LinkSetGSOMaxSize ¶ added in v1.2.1
func (*Handle) LinkSetGroup ¶ added in v1.1.0
func (*Handle) LinkSetHardwareAddr ¶
func (h *Handle) LinkSetHardwareAddr(link Link, hwaddr net.HardwareAddr) error
func (*Handle) LinkSetMasterByIndex ¶
func (*Handle) LinkSetNoMaster ¶
func (*Handle) LinkSetVfHardwareAddr ¶
func (*Handle) LinkSetVfRate ¶ added in v1.1.0
func (*Handle) LinkSetVfVlanQos ¶ added in v1.1.0
func (*Handle) LinkSetVfVlanQosProto ¶ added in v1.2.1
func (*Handle) NeighAppend ¶
func (*Handle) NeighProxyList ¶
func (*Handle) RouteAppend ¶ added in v1.2.1
func (*Handle) RouteChange ¶ added in v1.2.1
func (*Handle) RouteListFiltered ¶
func (*Handle) RouteReplace ¶
func (*Handle) SetPromiscOff ¶
func (*Handle) SetPromiscOn ¶
func (*Handle) SupportsNetlinkFamily ¶
type Hfsc ¶ added in v1.1.0
type Hfsc struct { QdiscAttrs Defcls uint16 }
func NewHfsc ¶ added in v1.1.0
func NewHfsc(attrs QdiscAttrs) *Hfsc
func (*Hfsc) Attrs ¶ added in v1.1.0
func (hfsc *Hfsc) Attrs() *QdiscAttrs
type HfscClass ¶ added in v1.1.0
type HfscClass struct { ClassAttrs Rsc ServiceCurve Fsc ServiceCurve Usc ServiceCurve }
HfscClass is a representation of the HFSC class
func NewHfscClass ¶ added in v1.1.0
func NewHfscClass(attrs ClassAttrs) *HfscClass
NewHfscClass returns a new HFSC struct with the set parameters
func (*HfscClass) Attrs ¶ added in v1.1.0
func (hfsc *HfscClass) Attrs() *ClassAttrs
Attrs return the Hfsc parameters
func (*HfscClass) SetFsc ¶ added in v1.1.0
SetFsc sets the Fsc curve. The bandwidth (m1 and m2) is specified in bits and the delay in seconds.
func (*HfscClass) SetLS ¶ added in v1.1.0
SetLS implements the LS from the `tc` CLI. This function behaves the same as if one would set the USC through the `tc` command-line tool. This means bandwidth (m1 and m2) is specified in bits and the delay in ms.
func (*HfscClass) SetRsc ¶ added in v1.1.0
SetRsc sets the Rsc curve. The bandwidth (m1 and m2) is specified in bits and the delay in seconds.
func (*HfscClass) SetSC ¶ added in v1.1.0
SetSC implements the SC from the `tc` CLI. This function behaves the same as if one would set the USC through the `tc` command-line tool. This means bandwidth (m1 and m2) is specified in bits and the delay in ms.
func (*HfscClass) SetUL ¶ added in v1.1.0
SetUL implements the UL from the `tc` CLI. This function behaves the same as if one would set the USC through the `tc` command-line tool. This means bandwidth (m1 and m2) is specified in bits and the delay in ms.
func (*HfscClass) SetUsc ¶ added in v1.1.0
SetUsc sets the USC curve. The bandwidth (m1 and m2) is specified in bits and the delay in seconds.
type Htb ¶
type Htb struct { QdiscAttrs Version uint32 Rate2Quantum uint32 Defcls uint32 Debug uint32 DirectPkts uint32 DirectQlen *uint32 }
Htb is a classful qdisc that rate limits based on tokens
func NewHtb ¶
func NewHtb(attrs QdiscAttrs) *Htb
func (*Htb) Attrs ¶
func (qdisc *Htb) Attrs() *QdiscAttrs
type HtbClass ¶
type HtbClass struct { ClassAttrs Rate uint64 Ceil uint64 Buffer uint32 Cbuffer uint32 Quantum uint32 Level uint32 Prio uint32 }
HtbClass represents an Htb class
type HtbClassAttrs ¶
type HtbClassAttrs struct { // TODO handle all attributes Rate uint64 Ceil uint64 Buffer uint32 Cbuffer uint32 Quantum uint32 Level uint32 Prio uint32 }
HtbClassAttrs stores the attributes of HTB class
func (HtbClassAttrs) String ¶
func (q HtbClassAttrs) String() string
type IP6TunnelFlag ¶ added in v1.2.1
type IP6TunnelFlag uint16
from https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/ip6_tunnel.h#L12
type IPVlan ¶
type IPVlan struct { LinkAttrs Mode IPVlanMode Flag IPVlanFlag }
type IPVlanFlag ¶ added in v1.1.0
type IPVlanFlag uint16
const ( IPVLAN_FLAG_BRIDGE IPVlanFlag = iota IPVLAN_FLAG_PRIVATE IPVLAN_FLAG_VEPA )
type IPVlanMode ¶
type IPVlanMode uint16
const ( IPVLAN_MODE_L2 IPVlanMode = iota IPVLAN_MODE_L3 IPVLAN_MODE_L3S IPVLAN_MODE_MAX )
type IPVtap ¶ added in v1.2.1
type IPVtap struct {
IPVlan
}
IPVtap - IPVtap is a virtual interfaces based on ipvlan
type InetDiagTCPInfoResp ¶ added in v1.2.1
type InetDiagTCPInfoResp struct { InetDiagMsg *Socket TCPInfo *TCPInfo TCPBBRInfo *TCPBBRInfo }
type InetDiagUDPInfoResp ¶ added in v1.2.1
type Ingress ¶
type Ingress struct {
QdiscAttrs
}
Ingress is a qdisc for adding ingress filters
func (*Ingress) Attrs ¶
func (qdisc *Ingress) Attrs() *QdiscAttrs
type Ip6tnl ¶ added in v1.1.0
type Iptun ¶
type Link ¶
Link represents a link device from netlink. Shared link attributes like name may be retrieved using the Attrs() method. Unique data can be retrieved by casting the object to the proper type.
func LinkByAlias ¶
func LinkByIndex ¶
func LinkByName ¶
type LinkAttrs ¶
type LinkAttrs struct { Index int MTU int TxQLen int // Transmit Queue Length Name string HardwareAddr net.HardwareAddr Flags net.Flags RawFlags uint32 ParentIndex int // index of the parent link device MasterIndex int // must be the index of a bridge Namespace interface{} // nil | NsPid | NsFd Alias string AltNames []string Statistics *LinkStatistics Promisc int Allmulti int Multi int Xdp *LinkXdp EncapType string Protinfo *Protinfo OperState LinkOperState PhysSwitchID int NetNsID int NumTxQueues int NumRxQueues int TSOMaxSegs uint32 TSOMaxSize uint32 GSOMaxSegs uint32 GSOMaxSize uint32 GROMaxSize uint32 GSOIPv4MaxSize uint32 GROIPv4MaxSize uint32 Vfs []VfInfo // virtual functions available on link Group uint32 PermHWAddr net.HardwareAddr Slave LinkSlave }
LinkAttrs represents data shared by most link types
func NewLinkAttrs ¶
func NewLinkAttrs() LinkAttrs
NewLinkAttrs returns LinkAttrs structure filled with default values
type LinkNotFoundError ¶
type LinkNotFoundError struct {
// contains filtered or unexported fields
}
LinkNotFoundError wraps the various not found errors when getting/reading links. This is intended for better error handling by dependent code so that "not found error" can be distinguished from other errors
type LinkOperState ¶
type LinkOperState uint8
LinkOperState represents the values of the IFLA_OPERSTATE link attribute, which contains the RFC2863 state of the interface.
func (LinkOperState) String ¶
func (s LinkOperState) String() string
type LinkSlave ¶ added in v1.1.0
type LinkSlave interface {
SlaveType() string
}
LinkSlave represents a slave device.
type LinkStatistics ¶
type LinkStatistics LinkStatistics64
type LinkStatistics32 ¶
type LinkStatistics32 struct { RxPackets uint32 TxPackets uint32 RxBytes uint32 TxBytes uint32 RxErrors uint32 TxErrors uint32 RxDropped uint32 TxDropped uint32 Multicast uint32 Collisions uint32 RxLengthErrors uint32 RxOverErrors uint32 RxCrcErrors uint32 RxFrameErrors uint32 RxFifoErrors uint32 RxMissedErrors uint32 TxAbortedErrors uint32 TxCarrierErrors uint32 TxFifoErrors uint32 TxHeartbeatErrors uint32 TxWindowErrors uint32 RxCompressed uint32 TxCompressed uint32 }
Ref: struct rtnl_link_stats {...}
type LinkStatistics64 ¶
type LinkStatistics64 struct { RxPackets uint64 TxPackets uint64 RxBytes uint64 TxBytes uint64 RxErrors uint64 TxErrors uint64 RxDropped uint64 TxDropped uint64 Multicast uint64 Collisions uint64 RxLengthErrors uint64 RxOverErrors uint64 RxCrcErrors uint64 RxFrameErrors uint64 RxFifoErrors uint64 RxMissedErrors uint64 TxAbortedErrors uint64 TxCarrierErrors uint64 TxFifoErrors uint64 TxHeartbeatErrors uint64 TxWindowErrors uint64 RxCompressed uint64 TxCompressed uint64 }
Ref: struct rtnl_link_stats64 {...}
type Macvlan ¶
type Macvlan struct { LinkAttrs Mode MacvlanMode // MACAddrs is only populated for Macvlan SOURCE links MACAddrs []net.HardwareAddr BCQueueLen uint32 UsedBCQueueLen uint32 }
Macvlan links have ParentIndex set in their Attrs()
type MacvlanMode ¶
type MacvlanMode uint16
const ( MACVLAN_MODE_DEFAULT MacvlanMode = iota MACVLAN_MODE_PRIVATE MACVLAN_MODE_VEPA MACVLAN_MODE_BRIDGE MACVLAN_MODE_PASSTHRU MACVLAN_MODE_SOURCE )
type Macvtap ¶
type Macvtap struct {
Macvlan
}
Macvtap - macvtap is a virtual interfaces based on macvlan
type MatchAll ¶
type MatchAll struct { FilterAttrs ClassId uint32 Actions []Action }
MatchAll filters match all packets
func (*MatchAll) Attrs ¶
func (filter *MatchAll) Attrs() *FilterAttrs
type MemInfo ¶ added in v1.2.1
According to https://man7.org/linux/man-pages/man7/sock_diag.7.html
type MirredAction ¶
type MirredAction struct { ActionAttrs MirredAction MirredAct Ifindex int }
func NewMirredAction ¶
func NewMirredAction(redirIndex int) *MirredAction
func (*MirredAction) Attrs ¶
func (action *MirredAction) Attrs() *ActionAttrs
func (*MirredAction) Type ¶
func (action *MirredAction) Type() string
type Neigh ¶
type Neigh struct { LinkIndex int Family int State int Type int Flags int FlagsExt int IP net.IP HardwareAddr net.HardwareAddr LLIPAddr net.IP //Used in the case of NHRP Vlan int VNI int MasterIndex int }
Neigh represents a link layer neighbor from netlink.
func NeighDeserialize ¶
type NeighUpdate ¶ added in v1.1.0
NeighUpdate is sent when a neighbor changes - type is RTM_NEWNEIGH or RTM_DELNEIGH.
type Netem ¶
type Netem struct { QdiscAttrs Latency uint32 DelayCorr uint32 Limit uint32 Loss uint32 LossCorr uint32 Gap uint32 Duplicate uint32 DuplicateCorr uint32 Jitter uint32 ReorderProb uint32 ReorderCorr uint32 CorruptProb uint32 CorruptCorr uint32 Rate64 uint64 }
func (*Netem) Attrs ¶
func (qdisc *Netem) Attrs() *QdiscAttrs
type NetemQdiscAttrs ¶
type NetemQdiscAttrs struct { Latency uint32 // in us DelayCorr float32 // in % Limit uint32 Loss float32 // in % LossCorr float32 // in % Gap uint32 Duplicate float32 // in % DuplicateCorr float32 // in % Jitter uint32 // in us ReorderProb float32 // in % ReorderCorr float32 // in % CorruptProb float32 // in % CorruptCorr float32 // in % Rate64 uint64 }
func (NetemQdiscAttrs) String ¶
func (q NetemQdiscAttrs) String() string
type Netkit ¶ added in v1.2.1
type Netkit struct { LinkAttrs Mode NetkitMode Policy NetkitPolicy PeerPolicy NetkitPolicy // contains filtered or unexported fields }
func (*Netkit) SetPeerAttrs ¶ added in v1.2.1
SetPeerAttrs will not take effect if trying to modify an existing netkit device
type NetkitMode ¶ added in v1.2.1
type NetkitMode uint32
const ( NETKIT_MODE_L2 NetkitMode = iota NETKIT_MODE_L3 )
type NetkitPolicy ¶ added in v1.2.1
type NetkitPolicy int
const ( NETKIT_POLICY_FORWARD NetkitPolicy = 0 NETKIT_POLICY_BLACKHOLE NetkitPolicy = 2 )
type NextHopFlag ¶
type NextHopFlag int
type NexthopInfo ¶
type NexthopInfo struct { LinkIndex int Hops int Gw net.IP Flags int NewDst Destination Encap Encap Via Destination }
func (NexthopInfo) Equal ¶
func (n NexthopInfo) Equal(x NexthopInfo) bool
func (*NexthopInfo) ListFlags ¶
func (n *NexthopInfo) ListFlags() []string
func (*NexthopInfo) String ¶
func (n *NexthopInfo) String() string
type PeditAction ¶ added in v1.2.1
type PeditAction struct { ActionAttrs Proto uint8 SrcMacAddr net.HardwareAddr DstMacAddr net.HardwareAddr SrcIP net.IP DstIP net.IP SrcPort uint16 DstPort uint16 }
func NewPeditAction ¶ added in v1.2.1
func NewPeditAction() *PeditAction
func (*PeditAction) Attrs ¶ added in v1.2.1
func (p *PeditAction) Attrs() *ActionAttrs
func (*PeditAction) Type ¶ added in v1.2.1
func (p *PeditAction) Type() string
type PfifoFast ¶
type PfifoFast struct { QdiscAttrs Bands uint8 PriorityMap [PRIORITY_MAP_LEN]uint8 }
PfifoFast is the default qdisc created by the kernel if one has not been defined for the interface
func (*PfifoFast) Attrs ¶
func (qdisc *PfifoFast) Attrs() *QdiscAttrs
type PoliceAction ¶ added in v1.2.1
type PoliceAction struct { ActionAttrs Rate uint32 // in byte per second Burst uint32 // in byte RCellLog int Mtu uint32 Mpu uint16 // in byte PeakRate uint32 // in byte per second PCellLog int AvRate uint32 // in byte per second Overhead uint16 LinkLayer int ExceedAction TcPolAct NotExceedAction TcPolAct }
func NewPoliceAction ¶ added in v1.2.1
func NewPoliceAction() *PoliceAction
func (*PoliceAction) Attrs ¶ added in v1.2.1
func (action *PoliceAction) Attrs() *ActionAttrs
func (*PoliceAction) Type ¶ added in v1.2.1
func (action *PoliceAction) Type() string
type Prio ¶
type Prio struct { QdiscAttrs Bands uint8 PriorityMap [PRIORITY_MAP_LEN]uint8 }
Prio is a basic qdisc that works just like PfifoFast
func NewPrio ¶
func NewPrio(attrs QdiscAttrs) *Prio
func (*Prio) Attrs ¶
func (qdisc *Prio) Attrs() *QdiscAttrs
type Protinfo ¶
type Protinfo struct { Hairpin bool Guard bool FastLeave bool RootBlock bool Learning bool Flood bool ProxyArp bool ProxyArpWiFi bool Isolated bool NeighSuppress bool }
Protinfo represents bridge flags from netlink.
type Qdisc ¶
type Qdisc interface { Attrs() *QdiscAttrs Type() string }
type QdiscAttrs ¶
type QdiscAttrs struct { LinkIndex int Handle uint32 Parent uint32 Refcnt uint32 // read only IngressBlock *uint32 Statistics *QdiscStatistics }
QdiscAttrs represents a netlink qdisc. A qdisc is associated with a link, has a handle, a parent and a refcnt. The root qdisc of a device should have parent == HANDLE_ROOT.
func (QdiscAttrs) String ¶
func (q QdiscAttrs) String() string
type QdiscStatistics ¶ added in v1.2.1
type QdiscStatistics ClassStatistics
type Route ¶
type Route struct { LinkIndex int ILinkIndex int Scope Scope Dst *net.IPNet Src net.IP Gw net.IP MultiPath []*NexthopInfo Protocol RouteProtocol Priority int Family int Table int Type int Tos int Flags int MPLSDst *int NewDst Destination Encap Encap Via Destination Realm int MTU int Window int Rtt int RttVar int Ssthresh int Cwnd int AdvMSS int Reordering int Hoplimit int InitCwnd int Features int RtoMin int InitRwnd int QuickACK int Congctl string FastOpenNoCookie int }
Route represents a netlink route.
func RouteListFiltered ¶ added in v1.2.1
func (*Route) ClearFlag ¶
func (r *Route) ClearFlag(flag NextHopFlag)
func (*Route) SetFlag ¶
func (r *Route) SetFlag(flag NextHopFlag)
type RouteProtocol ¶ added in v1.2.1
type RouteProtocol int
Protocol describe what was the originator of the route
func (RouteProtocol) String ¶ added in v1.2.1
func (p RouteProtocol) String() string
type RouteUpdate ¶
NlFlags is only non-zero for RTM_NEWROUTE, the following flags can be set:
- unix.NLM_F_REPLACE - Replace existing matching config object with this request
- unix.NLM_F_EXCL - Don't replace the config object if it already exists
- unix.NLM_F_CREATE - Create config object if it doesn't already exist
- unix.NLM_F_APPEND - Add to the end of the object list
type Rule ¶
type Rule struct { Priority int Family int Table int Mark uint32 Mask *uint32 Tos uint TunID uint Goto int Src *net.IPNet Dst *net.IPNet Flow int IifName string OifName string SuppressIfgroup int SuppressPrefixlen int Invert bool Dport *RulePortRange Sport *RulePortRange IPProto int UIDRange *RuleUIDRange Protocol uint8 Type uint8 }
Rule represents a netlink rule.
type RulePortRange ¶ added in v1.2.1
RulePortRange represents rule sport/dport range.
func NewRulePortRange ¶ added in v1.2.1
func NewRulePortRange(start, end uint16) *RulePortRange
NewRulePortRange creates rule sport/dport range.
type RuleUIDRange ¶ added in v1.2.1
RuleUIDRange represents rule uid range.
func NewRuleUIDRange ¶ added in v1.2.1
func NewRuleUIDRange(start, end uint32) *RuleUIDRange
NewRuleUIDRange creates rule uid range.
type ServiceCurve ¶ added in v1.1.0
type ServiceCurve struct {
// contains filtered or unexported fields
}
ServiceCurve is a nondecreasing function of some time unit, returning the amount of service (an allowed or allocated amount of bandwidth) at some specific point in time. The purpose of it should be subconsciously obvious: if a class was allowed to transfer not less than the amount specified by its service curve, then the service curve is not violated.
func (*ServiceCurve) Attrs ¶ added in v1.1.0
func (c *ServiceCurve) Attrs() (uint32, uint32, uint32)
Attrs return the parameters of the service curve
func (*ServiceCurve) Burst ¶ added in v1.2.1
func (c *ServiceCurve) Burst() uint32
Burst returns the burst rate (m1) of the curve
func (*ServiceCurve) Delay ¶ added in v1.2.1
func (c *ServiceCurve) Delay() uint32
Delay return the delay (d) of the curve
func (*ServiceCurve) Rate ¶ added in v1.2.1
func (c *ServiceCurve) Rate() uint32
Rate returns the rate (m2) of the curve
type Sfq ¶ added in v1.2.1
type Sfq struct { QdiscAttrs // TODO: Only the simplified options for SFQ are handled here. Support for the extended one can be added later. Quantum uint8 Perturb uint8 Limit uint32 Divisor uint8 }
func (*Sfq) Attrs ¶ added in v1.2.1
func (qdisc *Sfq) Attrs() *QdiscAttrs
type Sittun ¶
type SkbEditAction ¶ added in v1.1.0
type SkbEditAction struct { ActionAttrs QueueMapping *uint16 PType *uint16 Priority *uint32 Mark *uint32 Mask *uint32 }
func NewSkbEditAction ¶ added in v1.1.0
func NewSkbEditAction() *SkbEditAction
func (*SkbEditAction) Attrs ¶ added in v1.1.0
func (action *SkbEditAction) Attrs() *ActionAttrs
func (*SkbEditAction) Type ¶ added in v1.1.0
func (action *SkbEditAction) Type() string
type Socket ¶
type Socket struct { Family uint8 State uint8 Timer uint8 Retrans uint8 ID SocketID Expires uint32 RQueue uint32 WQueue uint32 UID uint32 INode uint32 }
Socket represents a netlink socket.
type SocketID ¶
type SocketID struct { SourcePort uint16 DestinationPort uint16 Source net.IP Destination net.IP Interface uint32 Cookie [2]uint32 }
SocketID identifies a single socket.
type TCPBBRInfo ¶ added in v1.2.1
type TCPInfo ¶ added in v1.2.1
type TCPInfo struct { State uint8 Ca_state uint8 Retransmits uint8 Probes uint8 Backoff uint8 Options uint8 Snd_wscale uint8 // no uint4 Rcv_wscale uint8 Delivery_rate_app_limited uint8 Fastopen_client_fail uint8 Rto uint32 Ato uint32 Snd_mss uint32 Rcv_mss uint32 Unacked uint32 Sacked uint32 Lost uint32 Retrans uint32 Fackets uint32 Last_data_sent uint32 Last_ack_sent uint32 Last_data_recv uint32 Last_ack_recv uint32 Pmtu uint32 Rcv_ssthresh uint32 Rtt uint32 Rttvar uint32 Snd_ssthresh uint32 Snd_cwnd uint32 Advmss uint32 Reordering uint32 Rcv_rtt uint32 Rcv_space uint32 Total_retrans uint32 Pacing_rate uint64 Max_pacing_rate uint64 Bytes_acked uint64 /* RFC4898 tcpEStatsAppHCThruOctetsAcked */ Bytes_received uint64 /* RFC4898 tcpEStatsAppHCThruOctetsReceived */ Segs_out uint32 /* RFC4898 tcpEStatsPerfSegsOut */ Segs_in uint32 /* RFC4898 tcpEStatsPerfSegsIn */ Notsent_bytes uint32 Min_rtt uint32 Data_segs_in uint32 /* RFC4898 tcpEStatsDataSegsIn */ Data_segs_out uint32 /* RFC4898 tcpEStatsDataSegsOut */ Delivery_rate uint64 Busy_time uint64 /* Time (usec) busy sending data */ Rwnd_limited uint64 /* Time (usec) limited by receive window */ Sndbuf_limited uint64 /* Time (usec) limited by send buffer */ Delivered uint32 Delivered_ce uint32 Bytes_sent uint64 /* RFC4898 tcpEStatsPerfHCDataOctetsOut */ Bytes_retrans uint64 /* RFC4898 tcpEStatsPerfOctetsRetrans */ Dsack_dups uint32 /* RFC4898 tcpEStatsStackDSACKDups */ Reord_seen uint32 /* reordering events seen */ Rcv_ooopack uint32 /* Out-of-order packets received */ Snd_wnd uint32 /* peer's advertised receive window after * scaling (bytes) */ }
type Tbf ¶
type Tbf struct { QdiscAttrs Rate uint64 Limit uint32 Buffer uint32 Peakrate uint64 Minburst uint32 }
Tbf is a classless qdisc that rate limits based on tokens
func (*Tbf) Attrs ¶
func (qdisc *Tbf) Attrs() *QdiscAttrs
type TcPolAct ¶
type TcPolAct int32
const ( TC_POLICE_UNSPEC TcPolAct = TcPolAct(TC_ACT_UNSPEC) TC_POLICE_OK TcPolAct = TcPolAct(TC_ACT_OK) TC_POLICE_RECLASSIFY TcPolAct = TcPolAct(TC_ACT_RECLASSIFY) TC_POLICE_SHOT TcPolAct = TcPolAct(TC_ACT_SHOT) TC_POLICE_PIPE TcPolAct = TcPolAct(TC_ACT_PIPE) )
type TunnelEncapFlag ¶ added in v1.2.1
type TunnelEncapFlag uint16
from https://elixir.bootlin.com/linux/v5.15.4/source/include/uapi/linux/if_tunnel.h#L91
type TunnelEncapType ¶ added in v1.2.1
type TunnelEncapType uint16
from https://elixir.bootlin.com/linux/v5.15.4/source/include/uapi/linux/if_tunnel.h#L84
const ( None TunnelEncapType = iota FOU GUE )
type TunnelKeyAct ¶ added in v1.1.0
type TunnelKeyAct int8
const ( TCA_TUNNEL_KEY_SET TunnelKeyAct = 1 // set tunnel key TCA_TUNNEL_KEY_UNSET TunnelKeyAct = 2 // unset tunnel key )
type TunnelKeyAction ¶ added in v1.1.0
type TunnelKeyAction struct { ActionAttrs Action TunnelKeyAct SrcAddr net.IP DstAddr net.IP KeyID uint32 DestPort uint16 }
func NewTunnelKeyAction ¶ added in v1.1.0
func NewTunnelKeyAction() *TunnelKeyAction
func (*TunnelKeyAction) Attrs ¶ added in v1.1.0
func (action *TunnelKeyAction) Attrs() *ActionAttrs
func (*TunnelKeyAction) Type ¶ added in v1.1.0
func (action *TunnelKeyAction) Type() string
type Tuntap ¶
type Tuntap struct { LinkAttrs Mode TuntapMode Flags TuntapFlag NonPersist bool Queues int Fds []*os.File Owner uint32 Group uint32 }
Tuntap links created via /dev/tun/tap, but can be destroyed via netlink
type TuntapFlag ¶
type TuntapFlag uint16
type TuntapMode ¶
type TuntapMode uint16
type UnixDiagInfoResp ¶ added in v1.2.1
type UnixDiagInfoResp struct { DiagMsg *UnixSocket Name *string Peer *uint32 Queue *QueueInfo Shutdown *uint8 }
type UnixSocket ¶ added in v1.2.1
type UnixSocket struct { Type uint8 Family uint8 State uint8 INode uint32 Cookie [2]uint32 // contains filtered or unexported fields }
UnixSocket represents a netlink unix socket.
type Veth ¶
type Veth struct { LinkAttrs PeerName string // veth on create only PeerHardwareAddr net.HardwareAddr PeerNamespace interface{} }
Veth devices must specify PeerName on create
type VfInfo ¶ added in v1.1.0
type VfInfo struct { ID int Mac net.HardwareAddr Vlan int Qos int VlanProto int TxRate int // IFLA_VF_TX_RATE Max TxRate Spoofchk bool LinkState uint32 MaxTxRate uint32 // IFLA_VF_RATE Max TxRate MinTxRate uint32 // IFLA_VF_RATE Min TxRate RxPackets uint64 TxPackets uint64 RxBytes uint64 TxBytes uint64 Multicast uint64 Broadcast uint64 RxDropped uint64 TxDropped uint64 RssQuery uint32 Trust uint32 }
VfInfo represents configuration of virtual function
type Vlan ¶
type Vlan struct { LinkAttrs VlanId int VlanProtocol VlanProtocol }
Vlan links have ParentIndex set in their Attrs()
type VlanProtocol ¶ added in v1.1.0
type VlanProtocol int
VlanProtocol type
const ( VLAN_PROTOCOL_UNKNOWN VlanProtocol = 0 VLAN_PROTOCOL_8021Q VlanProtocol = 0x8100 VLAN_PROTOCOL_8021AD VlanProtocol = 0x88A8 )
VlanProtocol possible values
func StringToVlanProtocol ¶ added in v1.1.0
func StringToVlanProtocol(s string) VlanProtocol
StringToVlanProtocol returns vlan protocol, or unknown is the s is invalid.
func (VlanProtocol) String ¶ added in v1.1.0
func (p VlanProtocol) String() string
type Vxlan ¶
type Vxlan struct { LinkAttrs VxlanId int VtepDevIndex int SrcAddr net.IP Group net.IP TTL int TOS int Learning bool Proxy bool RSC bool L2miss bool L3miss bool UDPCSum bool UDP6ZeroCSumTx bool UDP6ZeroCSumRx bool NoAge bool GBP bool FlowBased bool Age int Limit int Port int PortLow int PortHigh int }
type Wireguard ¶ added in v1.2.1
type Wireguard struct {
LinkAttrs
}
Wireguard represent links of type "wireguard", see https://www.wireguard.com/
type XDPDiagInfoResp ¶ added in v1.2.1
https://elixir.bootlin.com/linux/v6.2/source/include/uapi/linux/xdp_diag.h#L21
type XDPDiagStats ¶ added in v1.2.1
type XDPDiagStats struct { RxDropped uint64 RxInvalid uint64 RxFull uint64 FillRingEmpty uint64 TxInvalid uint64 TxRingEmpty uint64 }
XDPDiagStats contains ring statistics for an XDP socket.
https://elixir.bootlin.com/linux/v6.2/source/include/uapi/linux/xdp_diag.h#L74
type XDPDiagUmem ¶ added in v1.2.1
type XDPDiagUmem struct { Size uint64 ID uint32 NumPages uint32 ChunkSize uint32 Headroom uint32 Ifindex uint32 QueueID uint32 Flags uint32 Refs uint32 }
XDPDiagUmem describes the umem attached to an XDP socket.
https://elixir.bootlin.com/linux/v6.2/source/include/uapi/linux/xdp_diag.h#L62
type XDPInfo ¶ added in v1.2.1
type XDPInfo struct { // XDP_DIAG_INFO/xdp_diag_info // https://elixir.bootlin.com/linux/v6.2/source/include/uapi/linux/xdp_diag.h#L51 Ifindex uint32 QueueID uint32 // XDP_DIAG_UID UID uint32 // XDP_RX_RING // https://elixir.bootlin.com/linux/v6.2/source/include/uapi/linux/xdp_diag.h#L56 RxRingEntries uint32 TxRingEntries uint32 UmemFillRingEntries uint32 UmemCompletionRingEntries uint32 // XDR_DIAG_UMEM Umem *XDPDiagUmem // XDR_DIAG_STATS Stats *XDPDiagStats }
type XDPSocket ¶ added in v1.2.1
type XDPSocket struct { // xdp_diag_msg // https://elixir.bootlin.com/linux/v6.2/source/include/uapi/linux/xdp_diag.h#L21 Family uint8 Type uint8 Ino uint32 Cookie [2]uint32 // contains filtered or unexported fields }
XDPSocket represents an XDP socket (and the common diagnosis part in particular). Please note that in contrast to UnixSocket the XDPSocket type does not feature “State” information.
type XfrmPolicy ¶
type XfrmPolicy struct{}
func XfrmPolicyGet ¶ added in v1.2.1
func XfrmPolicyGet(policy *XfrmPolicy) (*XfrmPolicy, error)
func XfrmPolicyList ¶
func XfrmPolicyList(family int) ([]XfrmPolicy, error)
Source Files ¶
- addr.go
- chain.go
- class.go
- conntrack_unspecified.go
- filter.go
- fou.go
- fou_unspecified.go
- genetlink_unspecified.go
- handle_unspecified.go
- inet_diag.go
- link.go
- neigh.go
- netlink.go
- netlink_unspecified.go
- netns_unspecified.go
- order.go
- protinfo.go
- qdisc.go
- route.go
- route_unspecified.go
- rule.go
- rule_nonlinux.go
- socket.go
- tcp.go
- unix_diag.go
- virtio.go
- xdp_diag.go
- xfrm_unspecified.go
Directories ¶
Path | Synopsis |
---|---|
cmd
|
|
Package nl has low level primitives for making Netlink calls.
|
Package nl has low level primitives for making Netlink calls. |