Skip to content

Commit 3e13999

Browse files
committed
Add structures for interface bonding information
Update net_class.go with new structures to handle bonding driver information References: torvalds/linux/drivers/net/bonding/bond_sysfs.c torvalds/linux/drivers/net/bonding/bond_sysfs_slave.c torvalds/linux/include/net/bonding.h torvalds/linux/include/net/bond_options.h torvalds/linux/include/net/bond_3ad.h Signed-off-by: Brandon Ewing <[email protected]>
1 parent 5f46783 commit 3e13999

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

sysfs/net_class.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@
1111
// See the License for the specific language governing permissions and
1212
// limitations under the License.
1313

14+
//go:build linux
1415
// +build linux
1516

1617
package sysfs
1718

1819
import (
1920
"fmt"
2021
"io/ioutil"
22+
"net"
2123
"os"
2224
"path/filepath"
2325

@@ -26,6 +28,59 @@ import (
2628

2729
const netclassPath = "class/net"
2830

31+
// NetClassBondAttrs contains info from files in /sys/class/net/<iface>/bonding
32+
// for a bonding controller interface (iface)
33+
type NetClassBondAttrs struct {
34+
ActiveDevice string // /sys/class/net/<iface>/bonding/active_slave
35+
AdActorKey uint16 // /sys/class/net/<iface>/bonding/ad_actor_key (Requires CAP_NET_ADMIN)
36+
AdActorSysPriority uint16 // /sys/class/net/<iface>/bonding/ad_actor_sys_prio (Requires CAP_NET_ADMIN)
37+
AdActorSystem net.HardwareAddr // /sys/class/net/<iface>/bonding/ad_actor_system (Requires CAP_NET_ADMIN)
38+
AdAggregator uint16 // /sys/class/net/<iface>/bonding/ad_aggregator
39+
AdNumPorts uint16 // /sys/class/net/<iface>/bonding/ad_num_ports
40+
AdPartnerKey uint16 // /sys/class/net/<iface>/bonding/ad_partner_key (Requires CAP_NET_ADMIN)
41+
AdPartnerMac net.HardwareAddr // /sys/class/net/<iface>/bonding/ad_partner_mac (Requires CAP_NET_ADMIN)
42+
AdSelect string // /sys/class/net/<iface>/bonding/ad_select
43+
AdUserPortKey uint16 // /sys/class/net/<iface>/bonding/ad_user_port_key (Requires CAP_NET_ADMIN)
44+
AllDevicesActive bool // /sys/class/net/<iface>/bonding/all_slaves_active
45+
ARPAllTargets string // /sys/class/net/<iface>/bonding/arp_all_targets
46+
ARPInterval int64 // /sys/class/net/<iface>/bonding/arp_interval
47+
ARPIPTarget net.IP // /sys/class/net/<iface>/bonding/arp_ip_target
48+
ARPValidate string // /sys/class/net/<iface>/bonding/arp_validate
49+
DownDelay int64 // /sys/class/net/<iface>/bonding/downdelay
50+
FailoverMac string // /sys/class/net/<iface>/bonding/failover_mac
51+
LACPRate string // /sys/class/net/<iface>/bonding/lacp_rate
52+
LPInterval int64 // /sys/class/net/<iface>/bonding/lp_interval
53+
MIIMon int64 // /sys/class/net/<iface>/bonding/miimon
54+
MIIStatus bool // /sys/class/net/<iface>/bonding/mii_status
55+
MinLinks uint64 // /sys/class/net/<iface>/bonding/min_links
56+
Mode string // /sys/class/net/<iface>/bonding/mode
57+
NumberGratuitousArp uint8 // /sys/class/net/<iface>/bonding/num_grat_arp
58+
NumberUnsolicitedNeighborAdvertisement uint8 // /sys/class/net/<iface>/bonding/num_unsol_na
59+
PacketsPerDevice int64 // /sys/class/net/<iface>/bonding/packets_per_slave
60+
PrimaryDevice string // /sys/class/net/<iface>/bonding/primary
61+
PrimaryReselect string // /sys/class/net/<iface>/bonding/primary_reselect
62+
DeviceQueueIDs map[string]uint16 // /sys/class/net/<iface>/bonding/queue_id
63+
ResendIgmp int64 // /sys/class/net/<iface>/bonding/resend_igmp
64+
Devices string // /sys/class/net/<iface>/bonding/slaves
65+
TLBDynamicLB int64 // /sys/class/net/<iface>/bonding/tlb_dynamic_lb
66+
UpDelay int64 // /sys/class/net/<iface>/bonding/updelay
67+
UseCarrier int64 // /sys/class/net/<iface>/bonding/use_carrier
68+
TransmitHashPolicy string // /sys/class/net/<iface>/bonding/xmit_hash_policy
69+
}
70+
71+
// NetClassBondSlaveAttrs contains info from files in /sys/class/net/<iface>/bonding_slave
72+
// for a bonding device interface (iface)
73+
type NetClassBondDeviceAttrs struct {
74+
AdActorOperationalPortState uint8 // /sys/class/net/<iface>/bonding_slave/ad_actor_oper_port_state
75+
AdAggregatorId uint16 // /sys/class/net/<iface>/bonding_slave/ad_aggregator_id
76+
AdPartnerOperationalPortState uint16 // /sys/class/net/<iface>/bonding_slave/ad_partner_oper_port_state
77+
LinkFailureCount uint32 // /sys/class/net/<iface>/bonding_slave/link_failure_count
78+
MiiStatus bool // /sys/class/net/<iface>/bonding_slave/mii_status
79+
PermamentHWAddress net.HardwareAddr // /sys/class/net/<iface>/bonding_slave/perm_hwaddr
80+
QueueID uint16 // /sys/class/net/<iface>/bonding_slave/queue_id
81+
State uint8 // /sys/class/net/<iface>/bonding_slave/state
82+
}
83+
2984
// NetClassIface contains info from files in /sys/class/net/<iface>
3085
// for single interface (iface).
3186
type NetClassIface struct {
@@ -34,6 +89,8 @@ type NetClassIface struct {
3489
AddrLen *int64 // /sys/class/net/<iface>/addr_len
3590
Address string // /sys/class/net/<iface>/address
3691
Broadcast string // /sys/class/net/<iface>/broadcast
92+
BondAttrs NetClassBondAttrs
93+
BondDeviceAttrs NetClassBondDeviceAttrs
3794
Carrier *int64 // /sys/class/net/<iface>/carrier
3895
CarrierChanges *int64 // /sys/class/net/<iface>/carrier_changes
3996
CarrierUpCount *int64 // /sys/class/net/<iface>/carrier_up_count

0 commit comments

Comments
 (0)