diff --git a/ipconfig.go b/ipconfig.go index da6a2a8..6459faf 100644 --- a/ipconfig.go +++ b/ipconfig.go @@ -8,6 +8,22 @@ import ( type IPConfigs []*IPConfig +func (c *IPConfigs) Set(index int, ipc *IPConfig) { + l := len(*c) + if index >= l { + n := make(IPConfigs, index+1) + copy(n, *c) + n[index] = ipc + *c = n + return + } + if l == 0 { + *c = append(*c, ipc) + return + } + (*c)[index] = ipc +} + func (c IPConfigs) Get(index int) *IPConfig { if len(c)-1 >= index { return c[index] diff --git a/network.go b/network.go index 1e55ece..1ec084c 100644 --- a/network.go +++ b/network.go @@ -9,6 +9,22 @@ import ( type NetworkDevices []*NetworkDevice +func (c *NetworkDevices) Set(index int, d *NetworkDevice) { + l := len(*c) + if index >= l { + n := make(NetworkDevices, index+1) + copy(n, *c) + n[index] = d + *c = n + return + } + if l == 0 { + *c = append(*c, d) + return + } + (*c)[index] = d +} + func (c NetworkDevices) Get(index int) *NetworkDevice { if len(c)-1 >= index { return c[index] diff --git a/server.go b/server.go index c1a1590..c8423fc 100644 --- a/server.go +++ b/server.go @@ -34,9 +34,17 @@ func (s *Server) body() (httpbody, error) { userdata, err := s.UserData.String() body["ciuserdata"] = userdata for i, n := range s.NetDevices { + if n == nil { + body["net"+strconv.Itoa(i)] = "" + continue + } body["net"+strconv.Itoa(i)] = n.String() } for i, ip := range s.IPConfig { + if ip == nil { + body["ipconfig"+strconv.Itoa(i)] = "" + continue + } body["ipconfig"+strconv.Itoa(i)] = ip.String() } return body, err