mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-05-04 23:35:11 -04:00
metadata-api: support dnsmasq (#3115)
This commit is contained in:
parent
37e46b98c2
commit
21c30ebb76
18 changed files with 304 additions and 270 deletions
60
hack/qemu-metadata-api/dhcp/virtwrapper/virtwrapper_cgo.go
Normal file
60
hack/qemu-metadata-api/dhcp/virtwrapper/virtwrapper_cgo.go
Normal file
|
@ -0,0 +1,60 @@
|
|||
//go:build cgo
|
||||
|
||||
/*
|
||||
Copyright (c) Edgeless Systems GmbH
|
||||
|
||||
SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
package virtwrapper
|
||||
|
||||
import (
|
||||
"github.com/edgelesssys/constellation/v2/hack/qemu-metadata-api/dhcp"
|
||||
|
||||
"libvirt.org/go/libvirt"
|
||||
)
|
||||
|
||||
// Connect wraps a libvirt connection.
|
||||
type Connect struct {
|
||||
conn *libvirt.Connect
|
||||
networkName string
|
||||
}
|
||||
|
||||
// New creates a new libvirt Connct wrapper.
|
||||
func New(conn *libvirt.Connect, networkName string) *Connect {
|
||||
return &Connect{
|
||||
conn: conn,
|
||||
networkName: networkName,
|
||||
}
|
||||
}
|
||||
|
||||
// LookupNetworkByName looks up a network by name.
|
||||
func (c *Connect) lookupNetworkByName(name string) (*libvirt.Network, error) {
|
||||
net, err := c.conn.LookupNetworkByName(name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return net, nil
|
||||
}
|
||||
|
||||
// GetDHCPLeases returns the underlying DHCP leases.
|
||||
func (c *Connect) GetDHCPLeases() ([]dhcp.NetworkDHCPLease, error) {
|
||||
net, err := c.lookupNetworkByName(c.networkName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer net.Free()
|
||||
|
||||
leases, err := net.GetDHCPLeases()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ret := make([]dhcp.NetworkDHCPLease, len(leases))
|
||||
for i, l := range leases {
|
||||
ret[i] = dhcp.NetworkDHCPLease{
|
||||
IPaddr: l.IPaddr,
|
||||
Hostname: l.Hostname,
|
||||
}
|
||||
}
|
||||
return ret, nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue