summaryrefslogtreecommitdiff
path: root/vendor/github.com/pion/transport/vnet/interface.go
blob: ec80c0b7830fe9b16e3fc44414d0c1077922533e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
}