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  }