48df1be793
Adding the flag -convertNetconf which is used to specify the config format to convert from (right now, only 'debian' is supported). Once the network configs are generated, they are written to systemd's runtime network directory and the network is restarted.
46 lines
864 B
Go
46 lines
864 B
Go
package network
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
func ProcessDebianNetconf(config string) ([]InterfaceGenerator, error) {
|
|
lines := formatConfig(config)
|
|
stanzas, err := parseStanzas(lines)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
interfaces := make([]*stanzaInterface, 0, len(stanzas))
|
|
for _, stanza := range stanzas {
|
|
switch s := stanza.(type) {
|
|
case *stanzaInterface:
|
|
interfaces = append(interfaces, s)
|
|
}
|
|
}
|
|
|
|
return buildInterfaces(interfaces), nil
|
|
}
|
|
|
|
func formatConfig(config string) []string {
|
|
lines := []string{}
|
|
config = strings.Replace(config, "\\\n", "", -1)
|
|
for config != "" {
|
|
split := strings.SplitN(config, "\n", 2)
|
|
line := strings.TrimSpace(split[0])
|
|
|
|
if len(split) == 2 {
|
|
config = split[1]
|
|
} else {
|
|
config = ""
|
|
}
|
|
|
|
if strings.HasPrefix(line, "#") || line == "" {
|
|
continue
|
|
}
|
|
|
|
lines = append(lines, line)
|
|
}
|
|
return lines
|
|
}
|