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