]>
Commit | Line | Data |
---|---|---|
53e1b683 | 1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
fc2f9534 LP |
2 | #pragma once |
3 | ||
f2000933 YW |
4 | #include <linux/if_bonding.h> |
5 | ||
fc2f9534 | 6 | #include "in-addr-util.h" |
634f0f98 | 7 | #include "list.h" |
f2000933 | 8 | #include "netdev.h" |
3be1d7e0 | 9 | |
dd906398 DH |
10 | /* |
11 | * Maximum number of targets supported by the kernel for a single | |
12 | * bond netdev. | |
13 | */ | |
14 | #define NETDEV_BOND_ARP_TARGETS_MAX 16 | |
15 | ||
3be1d7e0 | 16 | typedef enum BondMode { |
f2000933 YW |
17 | NETDEV_BOND_MODE_BALANCE_RR = BOND_MODE_ROUNDROBIN, |
18 | NETDEV_BOND_MODE_ACTIVE_BACKUP = BOND_MODE_ACTIVEBACKUP, | |
19 | NETDEV_BOND_MODE_BALANCE_XOR = BOND_MODE_XOR, | |
20 | NETDEV_BOND_MODE_BROADCAST = BOND_MODE_BROADCAST, | |
21 | NETDEV_BOND_MODE_802_3AD = BOND_MODE_8023AD, | |
22 | NETDEV_BOND_MODE_BALANCE_TLB = BOND_MODE_TLB, | |
23 | NETDEV_BOND_MODE_BALANCE_ALB = BOND_MODE_ALB, | |
3be1d7e0 | 24 | _NETDEV_BOND_MODE_MAX, |
f2000933 | 25 | _NETDEV_BOND_MODE_INVALID = -1 |
3be1d7e0 TG |
26 | } BondMode; |
27 | ||
227cdf2c | 28 | typedef enum BondXmitHashPolicy { |
f2000933 YW |
29 | NETDEV_BOND_XMIT_HASH_POLICY_LAYER2 = BOND_XMIT_POLICY_LAYER2, |
30 | NETDEV_BOND_XMIT_HASH_POLICY_LAYER34 = BOND_XMIT_POLICY_LAYER34, | |
31 | NETDEV_BOND_XMIT_HASH_POLICY_LAYER23 = BOND_XMIT_POLICY_LAYER23, | |
32 | NETDEV_BOND_XMIT_HASH_POLICY_ENCAP23 = BOND_XMIT_POLICY_ENCAP23, | |
33 | NETDEV_BOND_XMIT_HASH_POLICY_ENCAP34 = BOND_XMIT_POLICY_ENCAP34, | |
227cdf2c SS |
34 | _NETDEV_BOND_XMIT_HASH_POLICY_MAX, |
35 | _NETDEV_BOND_XMIT_HASH_POLICY_INVALID = -1 | |
36 | } BondXmitHashPolicy; | |
37 | ||
fb1021a2 SS |
38 | typedef enum BondLacpRate { |
39 | NETDEV_BOND_LACP_RATE_SLOW, | |
40 | NETDEV_BOND_LACP_RATE_FAST, | |
41 | _NETDEV_BOND_LACP_RATE_MAX, | |
42 | _NETDEV_BOND_LACP_RATE_INVALID = -1, | |
43 | } BondLacpRate; | |
44 | ||
81bd37a8 SS |
45 | typedef enum BondAdSelect { |
46 | NETDEV_BOND_AD_SELECT_STABLE, | |
47 | NETDEV_BOND_AD_SELECT_BANDWIDTH, | |
48 | NETDEV_BOND_AD_SELECT_COUNT, | |
49 | _NETDEV_BOND_AD_SELECT_MAX, | |
50 | _NETDEV_BOND_AD_SELECT_INVALID = -1, | |
51 | } BondAdSelect; | |
52 | ||
53 | typedef enum BondFailOverMac { | |
54 | NETDEV_BOND_FAIL_OVER_MAC_NONE, | |
55 | NETDEV_BOND_FAIL_OVER_MAC_ACTIVE, | |
56 | NETDEV_BOND_FAIL_OVER_MAC_FOLLOW, | |
57 | _NETDEV_BOND_FAIL_OVER_MAC_MAX, | |
58 | _NETDEV_BOND_FAIL_OVER_MAC_INVALID = -1, | |
59 | } BondFailOverMac; | |
60 | ||
61 | typedef enum BondArpValidate { | |
62 | NETDEV_BOND_ARP_VALIDATE_NONE, | |
63 | NETDEV_BOND_ARP_VALIDATE_ACTIVE, | |
64 | NETDEV_BOND_ARP_VALIDATE_BACKUP, | |
65 | NETDEV_BOND_ARP_VALIDATE_ALL, | |
66 | _NETDEV_BOND_ARP_VALIDATE_MAX, | |
67 | _NETDEV_BOND_ARP_VALIDATE_INVALID = -1, | |
68 | } BondArpValidate; | |
69 | ||
70 | typedef enum BondArpAllTargets { | |
71 | NETDEV_BOND_ARP_ALL_TARGETS_ANY, | |
72 | NETDEV_BOND_ARP_ALL_TARGETS_ALL, | |
73 | _NETDEV_BOND_ARP_ALL_TARGETS_MAX, | |
74 | _NETDEV_BOND_ARP_ALL_TARGETS_INVALID = -1, | |
75 | } BondArpAllTargets; | |
76 | ||
77 | typedef enum BondPrimaryReselect { | |
78 | NETDEV_BOND_PRIMARY_RESELECT_ALWAYS, | |
79 | NETDEV_BOND_PRIMARY_RESELECT_BETTER, | |
80 | NETDEV_BOND_PRIMARY_RESELECT_FAILURE, | |
81 | _NETDEV_BOND_PRIMARY_RESELECT_MAX, | |
82 | _NETDEV_BOND_PRIMARY_RESELECT_INVALID = -1, | |
83 | } BondPrimaryReselect; | |
84 | ||
85 | typedef struct ArpIpTarget { | |
86 | union in_addr_union ip; | |
87 | ||
88 | LIST_FIELDS(struct ArpIpTarget, arp_ip_target); | |
89 | } ArpIpTarget; | |
90 | ||
634f0f98 | 91 | typedef struct Bond { |
aa9f1140 TG |
92 | NetDev meta; |
93 | ||
94 | BondMode mode; | |
227cdf2c | 95 | BondXmitHashPolicy xmit_hash_policy; |
fb1021a2 | 96 | BondLacpRate lacp_rate; |
81bd37a8 SS |
97 | BondAdSelect ad_select; |
98 | BondFailOverMac fail_over_mac; | |
99 | BondArpValidate arp_validate; | |
100 | BondArpAllTargets arp_all_targets; | |
101 | BondPrimaryReselect primary_reselect; | |
102 | ||
fde60a42 SS |
103 | int tlb_dynamic_lb; |
104 | ||
81bd37a8 SS |
105 | bool all_slaves_active; |
106 | ||
107 | unsigned resend_igmp; | |
108 | unsigned packets_per_slave; | |
109 | unsigned num_grat_arp; | |
110 | unsigned min_links; | |
d9c52fa0 | 111 | |
99f68ef0 TJ |
112 | uint16_t ad_actor_sys_prio; |
113 | uint16_t ad_user_port_key; | |
1e2a490e | 114 | struct ether_addr ad_actor_system; |
99f68ef0 | 115 | |
d9c52fa0 SS |
116 | usec_t miimon; |
117 | usec_t updelay; | |
118 | usec_t downdelay; | |
81bd37a8 SS |
119 | usec_t arp_interval; |
120 | usec_t lp_interval; | |
121 | ||
122 | int n_arp_ip_targets; | |
123 | ArpIpTarget *arp_ip_targets; | |
634f0f98 | 124 | } Bond; |
aa9f1140 | 125 | |
634f0f98 | 126 | DEFINE_NETDEV_CAST(BOND, Bond); |
aa9f1140 TG |
127 | extern const NetDevVTable bond_vtable; |
128 | ||
3be1d7e0 TG |
129 | const char *bond_mode_to_string(BondMode d) _const_; |
130 | BondMode bond_mode_from_string(const char *d) _pure_; | |
131 | ||
227cdf2c SS |
132 | const char *bond_xmit_hash_policy_to_string(BondXmitHashPolicy d) _const_; |
133 | BondXmitHashPolicy bond_xmit_hash_policy_from_string(const char *d) _pure_; | |
134 | ||
fb1021a2 SS |
135 | const char *bond_lacp_rate_to_string(BondLacpRate d) _const_; |
136 | BondLacpRate bond_lacp_rate_from_string(const char *d) _pure_; | |
137 | ||
81bd37a8 SS |
138 | const char *bond_fail_over_mac_to_string(BondFailOverMac d) _const_; |
139 | BondFailOverMac bond_fail_over_mac_from_string(const char *d) _pure_; | |
140 | ||
141 | const char *bond_ad_select_to_string(BondAdSelect d) _const_; | |
142 | BondAdSelect bond_ad_select_from_string(const char *d) _pure_; | |
143 | ||
144 | const char *bond_arp_validate_to_string(BondArpValidate d) _const_; | |
145 | BondArpValidate bond_arp_validate_from_string(const char *d) _pure_; | |
146 | ||
147 | const char *bond_arp_all_targets_to_string(BondArpAllTargets d) _const_; | |
148 | BondArpAllTargets bond_arp_all_targets_from_string(const char *d) _pure_; | |
149 | ||
150 | const char *bond_primary_reselect_to_string(BondPrimaryReselect d) _const_; | |
151 | BondPrimaryReselect bond_primary_reselect_from_string(const char *d) _pure_; | |
152 | ||
538f15cf YW |
153 | CONFIG_PARSER_PROTOTYPE(config_parse_bond_mode); |
154 | CONFIG_PARSER_PROTOTYPE(config_parse_bond_xmit_hash_policy); | |
155 | CONFIG_PARSER_PROTOTYPE(config_parse_bond_lacp_rate); | |
156 | CONFIG_PARSER_PROTOTYPE(config_parse_bond_ad_select); | |
157 | CONFIG_PARSER_PROTOTYPE(config_parse_bond_fail_over_mac); | |
158 | CONFIG_PARSER_PROTOTYPE(config_parse_bond_arp_validate); | |
159 | CONFIG_PARSER_PROTOTYPE(config_parse_bond_arp_all_targets); | |
160 | CONFIG_PARSER_PROTOTYPE(config_parse_bond_primary_reselect); | |
161 | CONFIG_PARSER_PROTOTYPE(config_parse_arp_ip_target_address); | |
162 | CONFIG_PARSER_PROTOTYPE(config_parse_ad_actor_sys_prio); | |
163 | CONFIG_PARSER_PROTOTYPE(config_parse_ad_user_port_key); | |
164 | CONFIG_PARSER_PROTOTYPE(config_parse_ad_actor_system); |