github.com/rawahars/moby@v24.0.4+incompatible/libnetwork/drivers/macvlan/macvlan_state.go (about)

     1  //go:build linux
     2  // +build linux
     3  
     4  package macvlan
     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  	return nil
    89  }
    90  
    91  func (d *driver) getNetwork(id string) (*network, error) {
    92  	d.Lock()
    93  	defer d.Unlock()
    94  	if id == "" {
    95  		return nil, types.BadRequestErrorf("invalid network id: %s", id)
    96  	}
    97  	if nw, ok := d.networks[id]; ok {
    98  		return nw, nil
    99  	}
   100  
   101  	return nil, types.NotFoundErrorf("network not found: %s", id)
   102  }