ipvlan_state.go 1.9 KB

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