blob: 5faab1eb8f892d1f30373b0d5234e1286416d50e [file]
//go:build linux
package macvlan
import (
"context"
"errors"
"github.com/containerd/log"
"github.com/moby/moby/v2/daemon/libnetwork/types"
)
func (d *driver) network(nid string) *network {
d.mu.Lock()
n, ok := d.networks[nid]
d.mu.Unlock()
if !ok {
log.G(context.TODO()).Errorf("network id %s not found", nid)
}
return n
}
func (d *driver) addNetwork(n *network) {
d.mu.Lock()
d.networks[n.id] = n
d.mu.Unlock()
}
func (d *driver) deleteNetwork(nid string) {
d.mu.Lock()
delete(d.networks, nid)
d.mu.Unlock()
}
// getNetworks Safely returns a slice of existing networks
func (d *driver) getNetworks() []*network {
d.mu.Lock()
defer d.mu.Unlock()
ls := make([]*network, 0, len(d.networks))
for _, nw := range d.networks {
ls = append(ls, nw)
}
return ls
}
func (n *network) endpoint(eid string) (*endpoint, error) {
if eid == "" {
return nil, errors.New("invalid endpoint id")
}
n.mu.Lock()
defer n.mu.Unlock()
ep, ok := n.endpoints[eid]
if !ok || ep == nil {
return nil, errors.New("could not find endpoint with id " + eid)
}
return ep, nil
}
func (n *network) addEndpoint(ep *endpoint) {
n.mu.Lock()
n.endpoints[ep.id] = ep
n.mu.Unlock()
}
func (n *network) deleteEndpoint(eid string) {
n.mu.Lock()
delete(n.endpoints, eid)
n.mu.Unlock()
}
func validateID(nid, eid string) error {
if nid == "" {
return errors.New("invalid network id")
}
if eid == "" {
return errors.New("invalid endpoint id")
}
return nil
}
func (d *driver) getNetwork(id string) (*network, error) {
if id == "" {
return nil, types.InvalidParameterErrorf("invalid network id")
}
d.mu.Lock()
defer d.mu.Unlock()
nw, ok := d.networks[id]
if !ok || nw == nil {
return nil, types.NotFoundErrorf("network not found: %s", id)
}
return nw, nil
}