While IPv6 were mostly supported already, there was a single segment in
the interface setup which forced everything into an IPv4 route.
This limitation has been removed.
In so doing, route metrics have been cleaned up a small amount.
This change allows the specification of the route metric from the
config.
Fixes#2772
Signed-off-by: Seán C McCord <ulexus@gmail.com>
This PR allows for the ability to specify neither CIDR nor DHCP in the
talos machine config. The result here should allow for things like SLAAC
addressing with ipv6.
Signed-off-by: Spencer Smith <robertspencersmith@gmail.com>
This moves `pkg/config`, `pkg/client` and `pkg/constants`
under `pkg/machinery` umbrella.
And `pkg/machinery` is published as Go module inside Talos repository.
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
This make the config provider a pure interface definition by removing
all concrete internal types, and making them an interface.
Signed-off-by: Andrew Rynhard <andrew@rynhard.io>
This makes `pkg/config` directly importable from other projects.
There should be no functional changes.
Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
This is a rewrite of machined. It addresses some of the limitations and
complexity in the implementation. This introduces the idea of a
controller. A controller is responsible for managing the runtime, the
sequencer, and a new state type introduced in this PR.
A few highlights are:
- no more event bus
- functional approach to tasks (no more types defined for each task)
- the task function definition now offers a lot more context, like
access to raw API requests, the current sequence, a logger, the new
state interface, and the runtime interface.
- no more panics to handle reboots
- additional initialize and reboot sequences
- graceful gRPC server shutdown on critical errors
- config is now stored at install time to avoid having to download it at
install time and at boot time
- upgrades now use the local config instead of downloading it
- the upgrade API's preserve option takes precedence over the config's
install force option
Additionally, this pulls various packes in under machined to make the
code easier to navigate.
Signed-off-by: Andrew Rynhard <andrew@andrewrynhard.com>
Adding VLAN as option to machine config under devices.
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
feat: Add addressing support for VLAN devices.
- Refactors static addressing to not be dependent on machine.Device
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
feat: Add addressing support for VLAN devices.
- Support of VLAN being the default network to use by removing need of addressing on master device.
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
fix: Fix the fmt of go files
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
fix: refactor based on review comment.
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
fix: remove unused function
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
feat: initial work for supporting vlans
Adding VLAN as option to machine config under devices.
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
feat: Add addressing support for VLAN devices.
- Refactors static addressing to not be dependent on machine.Device
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
feat: Add addressing support for VLAN devices.
- Support of VLAN being the default network to use by removing need of addressing on master device.
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
fix: Fix the fmt of go files
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
fix: refactor based on review comment.
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
fix: fix test case function arguments
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
fix: Add log for debugging address configuration failures
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
fix: fix lint issues.
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
fix: fix the lint error.
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
fix: Fix when addressing set with kernel options
Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
This adds support for parsing/honoring the `ip=` kernel argument that can
be supplied to configure an interface on the host.
Signed-off-by: Brad Beam <brad.beam@talos-systems.com>
This includes a healthy refactor of the networkd code as well.
- Move netlink functionality to nic package
- Networkd facilitates the orchestration of the underlying interface configuration
- Networkd now stores the state of each interface configuration. This
should allow us to expose this information via api in the future.
Signed-off-by: Brad Beam <brad.beam@talos-systems.com>
This adds support for specify nameservers in the config.
When I was adding tests I noticed the netconf code for setting
the MTU caused a panic. Given how we retrieve the data ( device centric )
in the static addressing method, I think this is safe to remove.
Signed-off-by: Brad Beam <brad.beam@talos-systems.com>
This moves from translating a config into an internal config
representation, to using an interface. The idea is that an interface
gives us stronger compile time checks, and will prevent us from having to copy
from on struct to another. As long as a concrete type implements the
Configurator interface, it can be used to provide instructions to Talos.
Signed-off-by: Andrew Rynhard <andrew@andrewrynhard.com>
The gofumports does everything that gofumpt does with the addition of
formatting imports. This change proposes the use of the `-local` flag so
that we can have imports separated in the following order:
- standard library
- third party
- Talos specific
Signed-off-by: Andrew Rynhard <andrew@andrewrynhard.com>
If multiple interfaces exist on a node, but the first interface was unsuccessful
in getting a dhcp response, we would seg fault when trying to retrieve the hostname
for that interface. This was due to d.Ack being nil and us having no guard around it
Signed-off-by: Brad Beam <brad.beam@talos-systems.com>
This is a major rewrite of our network subsystem.
- This changes networkd to run as a standalone app versus internal goroutine
- This changes out the netlink package with the more idiomatic netlink/rtnetlink
packages
- This changes the initial network bootstrap/discovery from using a single
interface to attempting to bring up all interfaces
- This moves us back on to the upstream dhcp library
Signed-off-by: Brad Beam <brad.beam@talos-systems.com>