github.com/jfrazelle/docker@v1.1.2-0.20210712172922-bf78e25fe508/libnetwork/drivers/macvlan/macvlan_state.go (about) 1 // +build linux 2 3 package macvlan 4 5 import ( 6 "fmt" 7 8 "github.com/docker/docker/libnetwork/types" 9 "github.com/sirupsen/logrus" 10 ) 11 12 func (d *driver) network(nid string) *network { 13 d.Lock() 14 n, ok := d.networks[nid] 15 d.Unlock() 16 if !ok { 17 logrus.Errorf("network id %s not found", nid) 18 } 19 20 return n 21 } 22 23 func (d *driver) addNetwork(n *network) { 24 d.Lock() 25 d.networks[n.id] = n 26 d.Unlock() 27 } 28 29 func (d *driver) deleteNetwork(nid string) { 30 d.Lock() 31 delete(d.networks, nid) 32 d.Unlock() 33 } 34 35 // getNetworks Safely returns a slice of existing networks 36 func (d *driver) getNetworks() []*network { 37 d.Lock() 38 defer d.Unlock() 39 40 ls := make([]*network, 0, len(d.networks)) 41 for _, nw := range d.networks { 42 ls = append(ls, nw) 43 } 44 45 return ls 46 } 47 48 func (n *network) endpoint(eid string) *endpoint { 49 n.Lock() 50 defer n.Unlock() 51 52 return n.endpoints[eid] 53 } 54 55 func (n *network) addEndpoint(ep *endpoint) { 56 n.Lock() 57 n.endpoints[ep.id] = ep 58 n.Unlock() 59 } 60 61 func (n *network) deleteEndpoint(eid string) { 62 n.Lock() 63 delete(n.endpoints, eid) 64 n.Unlock() 65 } 66 67 func (n *network) getEndpoint(eid string) (*endpoint, error) { 68 n.Lock() 69 defer n.Unlock() 70 if eid == "" { 71 return nil, fmt.Errorf("endpoint id %s not found", eid) 72 } 73 if ep, ok := n.endpoints[eid]; ok { 74 return ep, nil 75 } 76 77 return nil, nil 78 } 79 80 func validateID(nid, eid string) error { 81 if nid == "" { 82 return fmt.Errorf("invalid network id") 83 } 84 if eid == "" { 85 return fmt.Errorf("invalid endpoint id") 86 } 87 return nil 88 } 89 90 func (d *driver) getNetwork(id string) (*network, error) { 91 d.Lock() 92 defer d.Unlock() 93 if id == "" { 94 return nil, types.BadRequestErrorf("invalid network id: %s", id) 95 } 96 if nw, ok := d.networks[id]; ok { 97 return nw, nil 98 } 99 100 return nil, types.NotFoundErrorf("network not found: %s", id) 101 }