Maint: only internal/netlink depends on github.com/vishvananda/netlink
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
9
internal/netlink/family.go
Normal file
9
internal/netlink/family.go
Normal 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
11
internal/netlink/ipnet.go
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package netlink
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net"
|
||||||
|
|
||||||
|
"github.com/vishvananda/netlink"
|
||||||
|
)
|
||||||
|
|
||||||
|
func NewIPNet(ip net.IP) *net.IPNet {
|
||||||
|
return netlink.NewIPNet(ip)
|
||||||
|
}
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
|
|||||||
9
internal/netlink/linkattrs.go
Normal file
9
internal/netlink/linkattrs.go
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
package netlink
|
||||||
|
|
||||||
|
import "github.com/vishvananda/netlink"
|
||||||
|
|
||||||
|
type LinkAttrs = netlink.LinkAttrs
|
||||||
|
|
||||||
|
func NewLinkAttrs() LinkAttrs {
|
||||||
|
return netlink.NewLinkAttrs()
|
||||||
|
}
|
||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/vishvananda/netlink"
|
"github.com/qdm12/gluetun/internal/netlink"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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) (
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user