pve-go/network.go
2020-06-01 14:01:30 +02:00

48 lines
876 B
Go

// Copyright (C) 2020 Marius Schellenberger
package pve
import (
"fmt"
"strings"
)
type NetworkDevices []*NetworkDevice
func (c NetworkDevices) Get(index int) *NetworkDevice {
if len(c)-1 >= index {
return c[index]
}
return nil
}
type NetworkDevice struct {
Type string
MACAddress string
Bridge string
}
func (n *NetworkDevice) String() string {
return fmt.Sprintf("%s=%s,bridge=%s", n.Type, n.MACAddress, n.Bridge)
}
func parseNetworkDevice(s string) (n *NetworkDevice) {
cfg := strings.Split(s, ",")
if len(cfg) < 2 {
return
}
n = new(NetworkDevice)
for _, dev := range []string{"virtio", "e1000", "rtl8139", "vmxnet3"} {
if strings.HasPrefix(cfg[0], dev) {
n.Type = dev
n.MACAddress = cfg[0][len(dev)+1:]
break
}
}
for _, o := range cfg {
if strings.HasPrefix(o, "bridge=") {
n.Bridge = o[7:]
break
}
}
return
}