talos/pkg/machinery/nethelpers/arpvalidate.go
Andrey Smirnov 5811f4dda1 feat: implement link (interface) controllers
The structure of the controllers is really similar to addresses and
routes:

* `LinkSpec` resource describes desired link state
* `LinkConfig` controller generates `LinkSpecs` based on machine
configuration and kernel cmdline
* `LinkMerge` controller merges multiple configuration sources into a
single `LinkSpec` paying attention to the config layer priority
* `LinkSpec` controller applies the specs to the kernel state

Controller `LinkStatus` (which was implemented before) watches the
kernel state and publishes current link status.

Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
2021-06-01 09:36:25 -07:00

42 lines
1.1 KiB
Go

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
package nethelpers
import "fmt"
//go:generate stringer -type=ARPValidate -linecomment
// ARPValidate is an ARP Validation mode.
type ARPValidate uint32
// MarshalYAML implements yaml.Marshaler.
func (v ARPValidate) MarshalYAML() (interface{}, error) {
return v.String(), nil
}
// ARPValidate constants.
const (
ARPValidateNone ARPValidate = iota // none
ARPValidateActive // active
ARPValidateBackup // backup
ARPValidateAll // all
)
// ARPValidateByName parses ARPValidate.
func ARPValidateByName(a string) (ARPValidate, error) {
switch a {
case "", "none":
return ARPValidateNone, nil
case "active":
return ARPValidateActive, nil
case "backup":
return ARPValidateBackup, nil
case "all":
return ARPValidateAll, nil
default:
return 0, fmt.Errorf("invalid arp_validate mode %v", a)
}
}