1package macvlan 2 3import ( 4 "fmt" 5 6 "github.com/docker/libnetwork/osl" 7 "github.com/docker/libnetwork/types" 8 "github.com/sirupsen/logrus" 9) 10 11func (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 22func (d *driver) addNetwork(n *network) { 23 d.Lock() 24 d.networks[n.id] = n 25 d.Unlock() 26} 27 28func (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 35func (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 47func (n *network) endpoint(eid string) *endpoint { 48 n.Lock() 49 defer n.Unlock() 50 51 return n.endpoints[eid] 52} 53 54func (n *network) addEndpoint(ep *endpoint) { 55 n.Lock() 56 n.endpoints[ep.id] = ep 57 n.Unlock() 58} 59 60func (n *network) deleteEndpoint(eid string) { 61 n.Lock() 62 delete(n.endpoints, eid) 63 n.Unlock() 64} 65 66func (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 79func 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 89func (n *network) sandbox() osl.Sandbox { 90 n.Lock() 91 defer n.Unlock() 92 93 return n.sbox 94} 95 96func (n *network) setSandbox(sbox osl.Sandbox) { 97 n.Lock() 98 n.sbox = sbox 99 n.Unlock() 100} 101 102func (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} 114