interface.go 695 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package vnet
  2. import (
  3. "errors"
  4. "net"
  5. )
  6. var errNoAddressAssigned = errors.New("no address assigned")
  7. // See: https://play.golang.org/p/nBO9KGYEziv
  8. // InterfaceBase ...
  9. type InterfaceBase net.Interface
  10. // Interface ...
  11. type Interface struct {
  12. InterfaceBase
  13. addrs []net.Addr
  14. }
  15. // NewInterface ...
  16. func NewInterface(ifc net.Interface) *Interface {
  17. return &Interface{
  18. InterfaceBase: InterfaceBase(ifc),
  19. addrs: nil,
  20. }
  21. }
  22. // AddAddr ...
  23. func (ifc *Interface) AddAddr(addr net.Addr) {
  24. ifc.addrs = append(ifc.addrs, addr)
  25. }
  26. // Addrs ...
  27. func (ifc *Interface) Addrs() ([]net.Addr, error) {
  28. if len(ifc.addrs) == 0 {
  29. return nil, errNoAddressAssigned
  30. }
  31. return ifc.addrs, nil
  32. }