diff options
author | Felix Fietkau <nbd@nbd.name> | 2021-09-02 20:26:33 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2021-09-03 14:16:11 +0200 |
commit | 5ba9744aac6d42da1e56357aca951b52f86cfacb (patch) | |
tree | 0ae045f0f4d9d4bb5abe484b826c3b74ec34232f /system.h | |
parent | 300b1220fab38600f102bb8cfcc59a29ce41b095 (diff) | |
download | netifd-5ba9744aac6d42da1e56357aca951b52f86cfacb.tar.gz |
device: add support for configuring bonding devices
Supported options:
- ports: member devices
- policy: bonding policy
supported values:
- balance-rr
- active-backup
- balance-xor
- broadcast
- 802.3ad
- balance-tlb
- balance-alb
- xmit_hash_policy: slave selection tx hash policy
supported values:
- layer2
- layer2+3
- layer3+4
- encap2+3
- encap3+4
- all_ports_active: allow receiving on inactive ports
- min_links: minimum number of active links
- ad_actor_system: LACPDU exchange MAC address
- ad_actor_sys_prio: LACPDU priority value
- ad_select: 802.3ad aggregation logic
supported values:
- stable
- bandwidth
- count
- lacp_rate: 802.3ad LACPDU packet rate
supported values:
- slow (every 30 seconds)
- fast (every second)
- packets_per_port: number of packets before switching
ports (balance-rr mode).
- lp_interval: number of seconds between sent learning packets
- dynamic_lb: distribute traffic according to port load
- resend_igmp: number if IGMP membership updates after failover event
- num_peer_notif: number of tx unsolicited ARP/NA after failover event
- primary: name of the primary port
- primary_reselect: primary port reselection policy
supported values:
- always
- better
- failure
- failover_mac: MAC address selection policy
supported values:
- none
- active
- follow
- monitor_mode: select ARP or MII link monitor:
supported values:
- arp
- mii
- monitor_interval: link monitor update interval (msec)
- arp_target: ARP monitor target IP address (list)
- arp_all_targets: all targets must be reachable to consider the link valid
- arp_validate: ARP validation policy
supported values:
- none
- active
- backup
- all
- filter
- filter_active
- filter_backup
- use_carrier: use carrier status instead of MII ioctl result
- updelay: delay before enabling port after MII link up event (msec)
- downdelay: delay before disabling port after MII link down event (msec)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'system.h')
-rw-r--r-- | system.h | 43 |
1 files changed, 43 insertions, 0 deletions
@@ -184,6 +184,44 @@ struct vlandev_config { struct vlist_simple_tree egress_qos_mapping_list; /* list of struct vlan_qos_mapping */ }; +enum bonding_mode { + BONDING_MODE_BALANCE_RR, + BONDING_MODE_ACTIVE_BACKUP, + BONDING_MODE_BALANCE_XOR, + BONDING_MODE_BROADCAST, + BONDING_MODE_8023AD, + BONDING_MODE_BALANCE_TLB, + BONDING_MODE_BALANCE_ALB, + __BONDING_MODE_MAX, +}; + +struct bonding_config { + enum bonding_mode policy; + const char *xmit_hash_policy; + bool all_ports_active; + int min_links; + const char *ad_actor_system; + int ad_actor_sys_prio; + const char *ad_select; + const char *lacp_rate; + int packets_per_port; + int lp_interval; + bool dynamic_lb; + int resend_igmp; + int num_peer_notif; + const char *primary; + const char *primary_reselect; + const char *failover_mac; + bool monitor_arp; + int monitor_interval; + struct blob_attr *arp_target; + bool arp_all_targets; + const char *arp_validate; + bool use_carrier; + int updelay; + int downdelay; +}; + static inline int system_get_addr_family(unsigned int flags) { if ((flags & DEVADDR_FAMILY) == DEVADDR_INET6) @@ -200,6 +238,8 @@ static inline int system_get_addr_len(unsigned int flags) return sizeof(struct in6_addr); } +extern const char * const bonding_policy_str[__BONDING_MODE_MAX]; + int system_init(void); int system_bridge_addbr(struct device *bridge, struct bridge_config *cfg); @@ -210,6 +250,9 @@ int system_bridge_vlan(const char *iface, uint16_t vid, bool add, unsigned int v int system_bridge_vlan_check(struct device *dev, char *ifname); void system_bridge_set_stp_state(struct device *dev, bool val); +int system_bonding_set_device(struct device *dev, struct bonding_config *cfg); +int system_bonding_set_port(struct device *dev, struct device *port, bool add, bool primary); + int system_macvlan_add(struct device *macvlan, struct device *dev, struct macvlan_config *cfg); int system_macvlan_del(struct device *macvlan); |