summaryrefslogtreecommitdiff
path: root/vendor/github.com/pion/transport/vnet/interface.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pion/transport/vnet/interface.go')
-rw-r--r--vendor/github.com/pion/transport/vnet/interface.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/vendor/github.com/pion/transport/vnet/interface.go b/vendor/github.com/pion/transport/vnet/interface.go
new file mode 100644
index 0000000..ec80c0b
--- /dev/null
+++ b/vendor/github.com/pion/transport/vnet/interface.go
@@ -0,0 +1,40 @@
+package vnet
+
+import (
+ "errors"
+ "net"
+)
+
+var errNoAddressAssigned = errors.New("no address assigned")
+
+// See: https://play.golang.org/p/nBO9KGYEziv
+
+// InterfaceBase ...
+type InterfaceBase net.Interface
+
+// Interface ...
+type Interface struct {
+ InterfaceBase
+ addrs []net.Addr
+}
+
+// NewInterface ...
+func NewInterface(ifc net.Interface) *Interface {
+ return &Interface{
+ InterfaceBase: InterfaceBase(ifc),
+ addrs: nil,
+ }
+}
+
+// AddAddr ...
+func (ifc *Interface) AddAddr(addr net.Addr) {
+ ifc.addrs = append(ifc.addrs, addr)
+}
+
+// Addrs ...
+func (ifc *Interface) Addrs() ([]net.Addr, error) {
+ if len(ifc.addrs) == 0 {
+ return nil, errNoAddressAssigned
+ }
+ return ifc.addrs, nil
+}