Seperate Definitions by Sub System

This commit is contained in:
Samuel Lorch 2023-04-13 17:03:11 +02:00
parent 14c8da64cc
commit 72bf96295d
31 changed files with 120 additions and 108 deletions

View file

@ -8,12 +8,12 @@ import (
"path/filepath"
"golang.org/x/exp/slog"
"nfsense.net/nfsense/internal/definitions"
"nfsense.net/nfsense/internal/definitions/config"
)
const basepath = "/etc/systemd/network"
func ApplyNetworkdConfiguration(currentConfig definitions.Config, pendingConfig definitions.Config) error {
func ApplyNetworkdConfiguration(currentConfig config.Config, pendingConfig config.Config) error {
files, err := GenerateNetworkdConfiguration(pendingConfig)
if err != nil {
return fmt.Errorf("Generating Networkd Configuration: %w", err)
@ -41,6 +41,7 @@ func ApplyNetworkdConfiguration(currentConfig definitions.Config, pendingConfig
}
}
// TODO Use dbus instead
cmd := exec.Command("systemctl", "restart", "systemd-networkd")
var out bytes.Buffer

View file

@ -5,7 +5,8 @@ import (
"fmt"
"golang.org/x/exp/slog"
"nfsense.net/nfsense/internal/definitions"
"nfsense.net/nfsense/internal/definitions/config"
"nfsense.net/nfsense/internal/definitions/network"
)
type NetworkdConfigFile struct {
@ -15,9 +16,9 @@ type NetworkdConfigFile struct {
type InterfaceWithName struct {
Name string
definitions.Interface
network.Interface
Vlans []string
StaticRoutes []definitions.StaticRoute
StaticRoutes []network.StaticRoute
}
type BondMembership struct {
@ -30,12 +31,12 @@ type BridgeMembership struct {
BridgeName string
}
func GenerateNetworkdConfiguration(conf definitions.Config) ([]NetworkdConfigFile, error) {
func GenerateNetworkdConfiguration(conf config.Config) ([]NetworkdConfigFile, error) {
files := []NetworkdConfigFile{}
// Step 1 Generate vlan netdev files
for name, inter := range conf.Network.Interfaces {
if inter.Type == definitions.Vlan {
if inter.Type == network.Vlan {
buf := new(bytes.Buffer)
err := templates.ExecuteTemplate(buf, "create-vlan.netdev.tmpl", InterfaceWithName{
Name: name,
@ -53,7 +54,7 @@ func GenerateNetworkdConfiguration(conf definitions.Config) ([]NetworkdConfigFil
// Step 2 Generate bond netdev files
for name, inter := range conf.Network.Interfaces {
if inter.Type == definitions.Bond {
if inter.Type == network.Bond {
buf := new(bytes.Buffer)
err := templates.ExecuteTemplate(buf, "create-bond.netdev.tmpl", InterfaceWithName{
Name: name,
@ -71,7 +72,7 @@ func GenerateNetworkdConfiguration(conf definitions.Config) ([]NetworkdConfigFil
// Step 3 Generate bridge netdev files
for name, inter := range conf.Network.Interfaces {
if inter.Type == definitions.Bridge {
if inter.Type == network.Bridge {
buf := new(bytes.Buffer)
err := templates.ExecuteTemplate(buf, "create-bridge.netdev.tmpl", InterfaceWithName{
Name: name,
@ -89,7 +90,7 @@ func GenerateNetworkdConfiguration(conf definitions.Config) ([]NetworkdConfigFil
// Step 4 Generate Bond Members
for name, inter := range conf.Network.Interfaces {
if inter.Type == definitions.Bond && inter.BondMembers != nil {
if inter.Type == network.Bond && inter.BondMembers != nil {
for _, member := range *inter.BondMembers {
buf := new(bytes.Buffer)
err := templates.ExecuteTemplate(buf, "bond-membership.network.tmpl", BondMembership{
@ -109,7 +110,7 @@ func GenerateNetworkdConfiguration(conf definitions.Config) ([]NetworkdConfigFil
// Step 5 Generate Bridge Members
for name, inter := range conf.Network.Interfaces {
if inter.Type == definitions.Bridge && inter.BridgeMembers != nil {
if inter.Type == network.Bridge && inter.BridgeMembers != nil {
for _, member := range *inter.BridgeMembers {
buf := new(bytes.Buffer)
err := templates.ExecuteTemplate(buf, "bridge-membership.network.tmpl", BridgeMembership{
@ -131,10 +132,10 @@ func GenerateNetworkdConfiguration(conf definitions.Config) ([]NetworkdConfigFil
for name, inter := range conf.Network.Interfaces {
// Vlans
vlans := []string{}
if inter.Type != definitions.Vlan {
if inter.Type != network.Vlan {
vlans := []string{}
for vlanName, vlanInter := range conf.Network.Interfaces {
if vlanInter.Type == definitions.Vlan {
if vlanInter.Type == network.Vlan {
if *vlanInter.VlanParent == name {
vlans = append(vlans, vlanName)
}
@ -144,7 +145,7 @@ func GenerateNetworkdConfiguration(conf definitions.Config) ([]NetworkdConfigFil
}
// Static Routes
staticRoutes := []definitions.StaticRoute{}
staticRoutes := []network.StaticRoute{}
for _, route := range conf.Network.StaticRoutes {
if route.Interface == name {
staticRoutes = append(staticRoutes, route)