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