github.com/pwn-term/docker@v0.0.0-20210616085119-6e977cce2565/libnetwork/drivers/ipvlan/ipvlan_state.go (about) 1 package ipvlan 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 87 return nil 88 } 89 90 func (n *network) sandbox() osl.Sandbox { 91 n.Lock() 92 defer n.Unlock() 93 94 return n.sbox 95 } 96 97 func (n *network) setSandbox(sbox osl.Sandbox) { 98 n.Lock() 99 n.sbox = sbox 100 n.Unlock() 101 } 102 103 func (d *driver) getNetwork(id string) (*network, error) { 104 d.Lock() 105 defer d.Unlock() 106 if id == "" { 107 return nil, types.BadRequestErrorf("invalid network id: %s", id) 108 } 109 110 if nw, ok := d.networks[id]; ok { 111 return nw, nil 112 } 113 114 return nil, types.NotFoundErrorf("network not found: %s", id) 115 }