Maint: only internal/netlink depends on github.com/vishvananda/netlink

This commit is contained in:
Quentin McGaw (desktop)
2021-08-23 21:12:28 +00:00
parent ee82a85543
commit b3d8b78205
19 changed files with 116 additions and 21 deletions

View File

@@ -2,12 +2,21 @@ package netlink
import "github.com/vishvananda/netlink" import "github.com/vishvananda/netlink"
type Addr = netlink.Addr
var _ Addresser = (*NetLink)(nil) var _ Addresser = (*NetLink)(nil)
type Addresser interface { type Addresser interface {
AddrList(link netlink.Link, family int) (
addresses []netlink.Addr, err error)
AddrAdd(link netlink.Link, addr *netlink.Addr) error AddrAdd(link netlink.Link, addr *netlink.Addr) error
} }
func (n *NetLink) AddrList(link netlink.Link, family int) (
addresses []netlink.Addr, err error) {
return netlink.AddrList(link, family)
}
func (n *NetLink) AddrAdd(link netlink.Link, addr *netlink.Addr) error { func (n *NetLink) AddrAdd(link netlink.Link, addr *netlink.Addr) error {
return netlink.AddrAdd(link, addr) return netlink.AddrAdd(link, addr)
} }

View File

@@ -0,0 +1,9 @@
package netlink
import "github.com/vishvananda/netlink"
//nolint:revive
const (
FAMILY_ALL = netlink.FAMILY_ALL
FAMILY_V4 = netlink.FAMILY_V4
)

11
internal/netlink/ipnet.go Normal file
View File

@@ -0,0 +1,11 @@
package netlink
import (
"net"
"github.com/vishvananda/netlink"
)
func NewIPNet(ip net.IP) *net.IPNet {
return netlink.NewIPNet(ip)
}

View File

@@ -2,12 +2,20 @@ package netlink
import "github.com/vishvananda/netlink" import "github.com/vishvananda/netlink"
type (
Link = netlink.Link
Bridge = netlink.Bridge
)
var _ Linker = (*NetLink)(nil) var _ Linker = (*NetLink)(nil)
type Linker interface { type Linker interface {
LinkList() (links []netlink.Link, err error) LinkList() (links []netlink.Link, err error)
LinkByName(name string) (link netlink.Link, err error) LinkByName(name string) (link netlink.Link, err error)
LinkByIndex(index int) (link netlink.Link, err error) LinkByIndex(index int) (link netlink.Link, err error)
LinkAdd(link netlink.Link) (err error)
LinkDel(link netlink.Link) (err error)
LinkSetUp(link netlink.Link) (err error)
} }
func (n *NetLink) LinkList() (links []netlink.Link, err error) { func (n *NetLink) LinkList() (links []netlink.Link, err error) {
@@ -21,3 +29,15 @@ func (n *NetLink) LinkByName(name string) (link netlink.Link, err error) {
func (n *NetLink) LinkByIndex(index int) (link netlink.Link, err error) { func (n *NetLink) LinkByIndex(index int) (link netlink.Link, err error) {
return netlink.LinkByIndex(index) return netlink.LinkByIndex(index)
} }
func (n *NetLink) LinkAdd(link netlink.Link) (err error) {
return netlink.LinkAdd(link)
}
func (n *NetLink) LinkDel(link netlink.Link) (err error) {
return netlink.LinkDel(link)
}
func (n *NetLink) LinkSetUp(link netlink.Link) (err error) {
return netlink.LinkSetUp(link)
}

View File

@@ -0,0 +1,9 @@
package netlink
import "github.com/vishvananda/netlink"
type LinkAttrs = netlink.LinkAttrs
func NewLinkAttrs() LinkAttrs {
return netlink.NewLinkAttrs()
}

View File

@@ -2,6 +2,8 @@ package netlink
import "github.com/vishvananda/netlink" import "github.com/vishvananda/netlink"
type Route = netlink.Route
var _ Router = (*NetLink)(nil) var _ Router = (*NetLink)(nil)
type Router interface { type Router interface {

View File

@@ -2,6 +2,12 @@ package netlink
import "github.com/vishvananda/netlink" import "github.com/vishvananda/netlink"
type Rule = netlink.Rule
func NewRule() *Rule {
return netlink.NewRule()
}
var _ Ruler = (*NetLink)(nil) var _ Ruler = (*NetLink)(nil)
type Ruler interface { type Ruler interface {

View File

@@ -7,7 +7,7 @@ import (
"net" "net"
"strconv" "strconv"
"github.com/vishvananda/netlink" "github.com/qdm12/gluetun/internal/netlink"
) )
var ( var (

View File

@@ -6,7 +6,7 @@ import (
"fmt" "fmt"
"net" "net"
"github.com/vishvananda/netlink" "github.com/qdm12/gluetun/internal/netlink"
) )
type LocalNetwork struct { type LocalNetwork struct {

View File

@@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"net" "net"
"github.com/vishvananda/netlink" "github.com/qdm12/gluetun/internal/netlink"
) )
func (w *Wireguard) addAddresses(link netlink.Link, func (w *Wireguard) addAddresses(link netlink.Link,

View File

@@ -6,9 +6,9 @@ import (
"testing" "testing"
"github.com/golang/mock/gomock" "github.com/golang/mock/gomock"
"github.com/qdm12/gluetun/internal/netlink"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/vishvananda/netlink"
) )
func Test_Wireguard_addAddresses(t *testing.T) { func Test_Wireguard_addAddresses(t *testing.T) {

View File

@@ -8,16 +8,15 @@ import (
"net" "net"
"testing" "testing"
inetlink "github.com/qdm12/gluetun/internal/netlink" "github.com/qdm12/gluetun/internal/netlink"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/vishvananda/netlink"
) )
func Test_netlink_Wireguard_addAddresses(t *testing.T) { func Test_netlink_Wireguard_addAddresses(t *testing.T) {
t.Parallel() t.Parallel()
netlinker := inetlink.New() netlinker := netlink.New()
wg := &Wireguard{ wg := &Wireguard{
netlink: netlinker, netlink: netlinker,
} }
@@ -30,11 +29,11 @@ func Test_netlink_Wireguard_addAddresses(t *testing.T) {
link := &netlink.Bridge{ link := &netlink.Bridge{
LinkAttrs: linkAttrs, LinkAttrs: linkAttrs,
} }
err := netlink.LinkAdd(link) err := netlinker.LinkAdd(link)
require.NoError(t, err) require.NoError(t, err)
defer func() { defer func() {
err = netlink.LinkDel(link) err = netlinker.LinkDel(link)
assert.NoError(t, err) assert.NoError(t, err)
}() }()
@@ -47,7 +46,7 @@ func Test_netlink_Wireguard_addAddresses(t *testing.T) {
err = wg.addAddresses(link, addresses) err = wg.addAddresses(link, addresses)
require.NoError(t, err) require.NoError(t, err)
netlinkAddresses, err := netlink.AddrList(link, netlink.FAMILY_ALL) netlinkAddresses, err := netlinker.AddrList(link, netlink.FAMILY_ALL)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, len(addresses), len(netlinkAddresses)) require.Equal(t, len(addresses), len(netlinkAddresses))
for i, netlinkAddress := range netlinkAddresses { for i, netlinkAddress := range netlinkAddresses {
@@ -64,7 +63,7 @@ func Test_netlink_Wireguard_addAddresses(t *testing.T) {
func Test_netlink_Wireguard_addRule(t *testing.T) { func Test_netlink_Wireguard_addRule(t *testing.T) {
t.Parallel() t.Parallel()
netlinker := inetlink.New() netlinker := netlink.New()
wg := &Wireguard{ wg := &Wireguard{
netlink: netlinker, netlink: netlinker,
} }
@@ -79,7 +78,7 @@ func Test_netlink_Wireguard_addRule(t *testing.T) {
assert.NoError(t, err) assert.NoError(t, err)
}() }()
rules, err := netlink.RuleList(netlink.FAMILY_ALL) rules, err := netlinker.RuleList(netlink.FAMILY_ALL)
require.NoError(t, err) require.NoError(t, err)
var rule netlink.Rule var rule netlink.Rule
var ruleFound bool var ruleFound bool

View File

@@ -1,6 +1,6 @@
package wireguard package wireguard
import "github.com/vishvananda/netlink" import "github.com/qdm12/gluetun/internal/netlink"
//go:generate mockgen -destination=netlinker_mock_test.go -package wireguard . NetLinker //go:generate mockgen -destination=netlinker_mock_test.go -package wireguard . NetLinker
@@ -9,4 +9,6 @@ type NetLinker interface {
RouteAdd(route *netlink.Route) error RouteAdd(route *netlink.Route) error
RuleAdd(rule *netlink.Rule) error RuleAdd(rule *netlink.Rule) error
RuleDel(rule *netlink.Rule) error RuleDel(rule *netlink.Rule) error
LinkByName(name string) (link netlink.Link, err error)
LinkSetUp(link netlink.Link) error
} }

View File

@@ -8,7 +8,7 @@ import (
reflect "reflect" reflect "reflect"
gomock "github.com/golang/mock/gomock" gomock "github.com/golang/mock/gomock"
netlink "github.com/vishvananda/netlink" netlink "github.com/qdm12/gluetun/internal/netlink"
) )
// MockNetLinker is a mock of NetLinker interface. // MockNetLinker is a mock of NetLinker interface.
@@ -48,6 +48,35 @@ func (mr *MockNetLinkerMockRecorder) AddrAdd(arg0, arg1 interface{}) *gomock.Cal
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddrAdd", reflect.TypeOf((*MockNetLinker)(nil).AddrAdd), arg0, arg1) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddrAdd", reflect.TypeOf((*MockNetLinker)(nil).AddrAdd), arg0, arg1)
} }
// LinkByName mocks base method.
func (m *MockNetLinker) LinkByName(arg0 string) (netlink.Link, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "LinkByName", arg0)
ret0, _ := ret[0].(netlink.Link)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// LinkByName indicates an expected call of LinkByName.
func (mr *MockNetLinkerMockRecorder) LinkByName(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LinkByName", reflect.TypeOf((*MockNetLinker)(nil).LinkByName), arg0)
}
// LinkSetUp mocks base method.
func (m *MockNetLinker) LinkSetUp(arg0 netlink.Link) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "LinkSetUp", arg0)
ret0, _ := ret[0].(error)
return ret0
}
// LinkSetUp indicates an expected call of LinkSetUp.
func (mr *MockNetLinkerMockRecorder) LinkSetUp(arg0 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LinkSetUp", reflect.TypeOf((*MockNetLinker)(nil).LinkSetUp), arg0)
}
// RouteAdd mocks base method. // RouteAdd mocks base method.
func (m *MockNetLinker) RouteAdd(arg0 *netlink.Route) error { func (m *MockNetLinker) RouteAdd(arg0 *netlink.Route) error {
m.ctrl.T.Helper() m.ctrl.T.Helper()

View File

@@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"net" "net"
"github.com/vishvananda/netlink" "github.com/qdm12/gluetun/internal/netlink"
) )
// TODO add IPv6 route if IPv6 is supported // TODO add IPv6 route if IPv6 is supported

View File

@@ -6,9 +6,9 @@ import (
"testing" "testing"
"github.com/golang/mock/gomock" "github.com/golang/mock/gomock"
"github.com/qdm12/gluetun/internal/netlink"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/vishvananda/netlink"
) )
func Test_Wireguard_addRoute(t *testing.T) { func Test_Wireguard_addRoute(t *testing.T) {

View File

@@ -3,7 +3,7 @@ package wireguard
import ( import (
"fmt" "fmt"
"github.com/vishvananda/netlink" "github.com/qdm12/gluetun/internal/netlink"
) )
func (w *Wireguard) addRule(rulePriority, firewallMark int) ( func (w *Wireguard) addRule(rulePriority, firewallMark int) (

View File

@@ -5,9 +5,9 @@ import (
"testing" "testing"
"github.com/golang/mock/gomock" "github.com/golang/mock/gomock"
"github.com/qdm12/gluetun/internal/netlink"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/vishvananda/netlink"
) )
func Test_Wireguard_addRule(t *testing.T) { func Test_Wireguard_addRule(t *testing.T) {

View File

@@ -6,7 +6,6 @@ import (
"fmt" "fmt"
"net" "net"
"github.com/vishvananda/netlink"
"golang.zx2c4.com/wireguard/conn" "golang.zx2c4.com/wireguard/conn"
"golang.zx2c4.com/wireguard/device" "golang.zx2c4.com/wireguard/device"
"golang.zx2c4.com/wireguard/ipc" "golang.zx2c4.com/wireguard/ipc"
@@ -64,7 +63,7 @@ func (w *Wireguard) Run(ctx context.Context, waitError chan<- error, ready chan<
return return
} }
link, err := netlink.LinkByName(w.settings.InterfaceName) link, err := w.netlink.LinkByName(w.settings.InterfaceName)
if err != nil { if err != nil {
waitError <- fmt.Errorf("%w: %s: %s", ErrFindLink, w.settings.InterfaceName, err) waitError <- fmt.Errorf("%w: %s: %s", ErrFindLink, w.settings.InterfaceName, err)
return return
@@ -114,7 +113,7 @@ func (w *Wireguard) Run(ctx context.Context, waitError chan<- error, ready chan<
return return
} }
if err := netlink.LinkSetUp(link); err != nil { if err := w.netlink.LinkSetUp(link); err != nil {
waitError <- fmt.Errorf("%w: %s", ErrIfaceUp, err) waitError <- fmt.Errorf("%w: %s", ErrIfaceUp, err)
return return
} }