mirror of
https://github.com/cloudnativelabs/kube-router.git
synced 2025-10-09 00:41:05 +02:00
275 lines
5.5 KiB
Go
Executable File
275 lines
5.5 KiB
Go
Executable File
// +build linux
|
|
|
|
package nlgo
|
|
|
|
const (
|
|
IFLA_UNSPEC = iota
|
|
IFLA_ADDRESS
|
|
IFLA_BROADCAST
|
|
IFLA_IFNAME
|
|
IFLA_MTU
|
|
IFLA_LINK // used with 8021q, for example
|
|
IFLA_QDISC
|
|
IFLA_STATS
|
|
IFLA_COST
|
|
IFLA_PRIORITY
|
|
IFLA_MASTER
|
|
IFLA_WIRELESS
|
|
IFLA_PROTINFO
|
|
IFLA_TXQLEN
|
|
IFLA_MAP
|
|
IFLA_WEIGHT
|
|
IFLA_OPERSTATE
|
|
IFLA_LINKMODE
|
|
IFLA_LINKINFO
|
|
IFLA_NET_NS_PID
|
|
IFLA_IFALIAS
|
|
IFLA_NUM_VF
|
|
IFLA_VFINFO_LIST
|
|
IFLA_STATS64
|
|
IFLA_VF_PORTS
|
|
IFLA_PORT_SELF
|
|
IFLA_AF_SPEC
|
|
IFLA_GROUP
|
|
IFLA_NET_NS_FD
|
|
IFLA_EXT_MASK
|
|
IFLA_PROMISCUITY
|
|
IFLA_NUM_TX_QUEUES
|
|
IFLA_NUM_RX_QUEUES
|
|
IFLA_CARRIER
|
|
IFLA_PHYS_PORT_ID
|
|
IFLA_CARRIER_CHANGES
|
|
)
|
|
|
|
const (
|
|
IFLA_INFO_UNSPEC = iota
|
|
IFLA_INFO_KIND
|
|
IFLA_INFO_DATA
|
|
IFLA_INFO_XSTATS
|
|
IFLA_INFO_SLAVE_KIND
|
|
IFLA_INFO_SLAVE_DATA
|
|
)
|
|
|
|
const (
|
|
IFLA_VF_UNSPEC = iota
|
|
IFLA_VF_MAC
|
|
IFLA_VF_VLAN
|
|
IFLA_VF_TX_RATE
|
|
IFLA_VF_SPOOFCHK
|
|
IFLA_VF_LINK_STATE
|
|
IFLA_VF_RATE
|
|
)
|
|
|
|
const (
|
|
IFLA_VF_PORT_UNSPEC = iota
|
|
IFLA_VF_PORT
|
|
)
|
|
|
|
const (
|
|
IFLA_PORT_UNSPEC = iota
|
|
IFLA_PORT_VF
|
|
IFLA_PORT_PROFILE
|
|
IFLA_PORT_VSI_TYPE
|
|
IFLA_PORT_INSTANCE_UUID
|
|
IFLA_PORT_HOST_UUID
|
|
IFLA_PORT_REQUEST
|
|
IFLA_PORT_RESPONSE
|
|
)
|
|
|
|
// RtnlLinkStats64 will be the contents for IFLA_STATS64.
|
|
type RtnlLinkStats64 struct {
|
|
RxPackets uint64
|
|
TxPackets uint64
|
|
RxBytes uint64
|
|
TxBytes uint64
|
|
RxErrors uint64
|
|
TxErrors uint64
|
|
RxDropped uint64
|
|
TxDropped uint64
|
|
Multicast uint64
|
|
Collisions uint64
|
|
// detailed rx_errors
|
|
RxLengthErrors uint64
|
|
RxOverErrors uint64
|
|
RxCrcErrors uint64
|
|
RxFrameErrors uint64
|
|
RxFifoErrors uint64
|
|
RxMissedErrors uint64
|
|
// detailed tx_errors
|
|
TxAbortedErrors uint64
|
|
TxCarrierErrors uint64
|
|
TxFifoErrors uint64
|
|
TxHeartbeatErrors uint64
|
|
TxWindowErrors uint64
|
|
// cslip etc.
|
|
RxCompressed uint64
|
|
TxCompressed uint64
|
|
}
|
|
|
|
var portPolicy Policy = MapPolicy{
|
|
Prefix: "IFLA_PORT",
|
|
Names: IFLA_PORT_itoa,
|
|
Rule: map[uint16]Policy{
|
|
IFLA_PORT_VF: U32Policy,
|
|
IFLA_PORT_PROFILE: BinaryPolicy,
|
|
IFLA_PORT_VSI_TYPE: BinaryPolicy,
|
|
IFLA_PORT_INSTANCE_UUID: BinaryPolicy,
|
|
IFLA_PORT_HOST_UUID: BinaryPolicy,
|
|
IFLA_PORT_REQUEST: U8Policy,
|
|
IFLA_PORT_RESPONSE: U16Policy,
|
|
},
|
|
}
|
|
|
|
var RouteLinkPolicy MapPolicy = MapPolicy{
|
|
Prefix: "IFLA",
|
|
Names: IFLA_itoa,
|
|
Rule: map[uint16]Policy{
|
|
IFLA_IFNAME: NulStringPolicy,
|
|
IFLA_ADDRESS: BinaryPolicy,
|
|
IFLA_BROADCAST: BinaryPolicy,
|
|
IFLA_MAP: BinaryPolicy,
|
|
IFLA_MTU: U32Policy,
|
|
IFLA_LINK: U32Policy,
|
|
IFLA_MASTER: U32Policy,
|
|
IFLA_CARRIER: U8Policy,
|
|
IFLA_TXQLEN: U32Policy,
|
|
IFLA_WEIGHT: U32Policy,
|
|
IFLA_OPERSTATE: U8Policy,
|
|
IFLA_LINKMODE: U8Policy,
|
|
IFLA_LINKINFO: MapPolicy{
|
|
Prefix: "INFO",
|
|
Names: IFLA_INFO_itoa,
|
|
Rule: map[uint16]Policy{
|
|
IFLA_INFO_KIND: NulStringPolicy,
|
|
IFLA_INFO_DATA: BinaryPolicy, // depends on the kind
|
|
IFLA_INFO_SLAVE_KIND: BinaryPolicy,
|
|
IFLA_INFO_SLAVE_DATA: BinaryPolicy, // depends on the kind
|
|
},
|
|
},
|
|
IFLA_NET_NS_PID: U32Policy,
|
|
IFLA_NET_NS_FD: U32Policy,
|
|
IFLA_IFALIAS: NulStringPolicy,
|
|
IFLA_VFINFO_LIST: ListPolicy{
|
|
Nested: MapPolicy{
|
|
Prefix: "VF",
|
|
Names: IFLA_VF_itoa,
|
|
Rule: map[uint16]Policy{
|
|
IFLA_VF_MAC: BinaryPolicy,
|
|
IFLA_VF_VLAN: BinaryPolicy,
|
|
IFLA_VF_TX_RATE: BinaryPolicy,
|
|
IFLA_VF_SPOOFCHK: BinaryPolicy,
|
|
IFLA_VF_LINK_STATE: BinaryPolicy,
|
|
IFLA_VF_RATE: BinaryPolicy,
|
|
},
|
|
},
|
|
},
|
|
IFLA_VF_PORTS: ListPolicy{
|
|
Nested: MapPolicy{
|
|
Prefix: "VF_PORT",
|
|
Names: IFLA_VF_PORT_itoa,
|
|
Rule: map[uint16]Policy{
|
|
IFLA_VF_PORT: portPolicy,
|
|
},
|
|
},
|
|
},
|
|
IFLA_PORT_SELF: portPolicy,
|
|
IFLA_AF_SPEC: BinaryPolicy, // depends on spec
|
|
IFLA_EXT_MASK: U32Policy,
|
|
IFLA_PROMISCUITY: U32Policy,
|
|
IFLA_NUM_TX_QUEUES: U32Policy,
|
|
IFLA_NUM_RX_QUEUES: U32Policy,
|
|
IFLA_PHYS_PORT_ID: BinaryPolicy,
|
|
IFLA_CARRIER_CHANGES: U32Policy,
|
|
|
|
IFLA_QDISC: BinaryPolicy,
|
|
IFLA_STATS: BinaryPolicy, // struct rtnl_link_stats
|
|
IFLA_STATS64: BinaryPolicy, // struct rtnl_link_stats64
|
|
IFLA_WIRELESS: BinaryPolicy,
|
|
IFLA_PROTINFO: BinaryPolicy, // depends on prot
|
|
IFLA_NUM_VF: U32Policy,
|
|
IFLA_GROUP: U32Policy,
|
|
},
|
|
}
|
|
|
|
const (
|
|
RTA_UNSPEC = iota
|
|
RTA_DST
|
|
RTA_SRC
|
|
RTA_IIF
|
|
RTA_OIF
|
|
RTA_GATEWAY
|
|
RTA_PRIORITY
|
|
RTA_PREFSRC
|
|
RTA_METRICS
|
|
RTA_MULTIPATH
|
|
RTA_PROTOINFO
|
|
RTA_FLOW
|
|
RTA_CACHEINFO
|
|
RTA_SESSION
|
|
RTA_MP_ALGO
|
|
RTA_TABLE
|
|
RTA_MARK
|
|
RTA_MFC_STATS
|
|
)
|
|
|
|
var RoutePolicy MapPolicy = MapPolicy{
|
|
Prefix: "RTA",
|
|
Names: RTA_itoa,
|
|
Rule: map[uint16]Policy{
|
|
RTA_DST: BinaryPolicy,
|
|
RTA_SRC: BinaryPolicy,
|
|
RTA_IIF: U32Policy,
|
|
RTA_OIF: U32Policy,
|
|
RTA_GATEWAY: BinaryPolicy,
|
|
RTA_PRIORITY: U32Policy,
|
|
RTA_PREFSRC: BinaryPolicy,
|
|
RTA_METRICS: ListPolicy{
|
|
Nested: U32Policy,
|
|
},
|
|
RTA_MULTIPATH: BinaryPolicy,
|
|
RTA_FLOW: U32Policy,
|
|
RTA_CACHEINFO: BinaryPolicy,
|
|
RTA_TABLE: U32Policy,
|
|
RTA_MARK: U32Policy,
|
|
RTA_MFC_STATS: BinaryPolicy,
|
|
},
|
|
}
|
|
|
|
const (
|
|
RTEXT_FILTER_VF = 1 << iota
|
|
RTEXT_FILTER_BRVLAN
|
|
RTEXT_FILTER_BRVLAN_COMPRESSED
|
|
RTEXT_FILTER_SKIP_STATS
|
|
)
|
|
|
|
const (
|
|
NDA_UNSPEC = iota
|
|
NDA_DST
|
|
NDA_LLADDR
|
|
NDA_CACHEINFO
|
|
NDA_PROBES
|
|
NDA_VLAN
|
|
NDA_PORT
|
|
NDA_VNI
|
|
NDA_IFINDEX
|
|
NDA_MASTER
|
|
NDA_LINK_NETNSID
|
|
)
|
|
|
|
var NeighPolicy = MapPolicy{
|
|
Prefix: "NDA",
|
|
Names: NDA_itoa,
|
|
Rule: map[uint16]Policy{
|
|
NDA_DST: BinaryPolicy,
|
|
NDA_LLADDR: BinaryPolicy,
|
|
NDA_CACHEINFO: BinaryPolicy, // nda_cacheinfo
|
|
NDA_PROBES: U32Policy,
|
|
NDA_VLAN: U16Policy,
|
|
NDA_PORT: U16Policy,
|
|
NDA_VNI: U32Policy,
|
|
NDA_IFINDEX: U32Policy,
|
|
NDA_MASTER: U32Policy,
|
|
NDA_LINK_NETNSID: U32Policy,
|
|
},
|
|
}
|