talos
39 строк · 1.2 Кб
1// This Source Code Form is subject to the terms of the Mozilla Public
2// License, v. 2.0. If a copy of the MPL was not distributed with this
3// file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
5package nethelpers
6
7import "fmt"
8
9// BondXmitHashPolicy is a bond hash policy.
10type BondXmitHashPolicy uint8
11
12// Bond hash policy constants.
13//
14//structprotogen:gen_enum
15const (
16BondXmitPolicyLayer2 BondXmitHashPolicy = iota // layer2
17BondXmitPolicyLayer34 // layer3+4
18BondXmitPolicyLayer23 // layer2+3
19BondXmitPolicyEncap23 // encap2+3
20BondXmitPolicyEncap34 // encap3+4
21)
22
23// BondXmitHashPolicyByName parses bond hash policy.
24func BondXmitHashPolicyByName(policy string) (BondXmitHashPolicy, error) {
25switch policy {
26case "", "layer2":
27return BondXmitPolicyLayer2, nil
28case "layer3+4":
29return BondXmitPolicyLayer34, nil
30case "layer2+3":
31return BondXmitPolicyLayer23, nil
32case "encap2+3":
33return BondXmitPolicyEncap23, nil
34case "encap3+4":
35return BondXmitPolicyEncap34, nil
36default:
37return 0, fmt.Errorf("invalid xmit hash policy %v", policy)
38}
39}
40