fix(netlink): use AddrReplace instead of AddrAdd

This commit is contained in:
Quentin McGaw
2023-05-28 10:22:39 +00:00
parent 9cf2c9c4d2
commit 9d1a0b60a2
9 changed files with 32 additions and 32 deletions

View File

@@ -531,7 +531,7 @@ type netLinker interface {
type Addresser interface { type Addresser interface {
AddrList(link netlink.Link, family int) ( AddrList(link netlink.Link, family int) (
addresses []netlink.Addr, err error) addresses []netlink.Addr, err error)
AddrAdd(link netlink.Link, addr *netlink.Addr) error AddrReplace(link netlink.Link, addr *netlink.Addr) error
} }
type Router interface { type Router interface {

View File

@@ -9,6 +9,6 @@ func (n *NetLink) AddrList(link Link, family int) (
return netlink.AddrList(link, family) return netlink.AddrList(link, family)
} }
func (n *NetLink) AddrAdd(link Link, addr *Addr) error { func (n *NetLink) AddrReplace(link Link, addr *Addr) error {
return netlink.AddrAdd(link, addr) return netlink.AddrReplace(link, addr)
} }

View File

@@ -34,20 +34,6 @@ func (m *MockNetLinker) EXPECT() *MockNetLinkerMockRecorder {
return m.recorder return m.recorder
} }
// AddrAdd mocks base method.
func (m *MockNetLinker) AddrAdd(arg0 netlink.Link, arg1 *netlink.Addr) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "AddrAdd", arg0, arg1)
ret0, _ := ret[0].(error)
return ret0
}
// AddrAdd indicates an expected call of AddrAdd.
func (mr *MockNetLinkerMockRecorder) AddrAdd(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddrAdd", reflect.TypeOf((*MockNetLinker)(nil).AddrAdd), arg0, arg1)
}
// AddrList mocks base method. // AddrList mocks base method.
func (m *MockNetLinker) AddrList(arg0 netlink.Link, arg1 int) ([]netlink.Addr, error) { func (m *MockNetLinker) AddrList(arg0 netlink.Link, arg1 int) ([]netlink.Addr, error) {
m.ctrl.T.Helper() m.ctrl.T.Helper()
@@ -63,6 +49,20 @@ func (mr *MockNetLinkerMockRecorder) AddrList(arg0, arg1 interface{}) *gomock.Ca
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddrList", reflect.TypeOf((*MockNetLinker)(nil).AddrList), arg0, arg1) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddrList", reflect.TypeOf((*MockNetLinker)(nil).AddrList), arg0, arg1)
} }
// AddrReplace mocks base method.
func (m *MockNetLinker) AddrReplace(arg0 netlink.Link, arg1 *netlink.Addr) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "AddrReplace", arg0, arg1)
ret0, _ := ret[0].(error)
return ret0
}
// AddrReplace indicates an expected call of AddrReplace.
func (mr *MockNetLinkerMockRecorder) AddrReplace(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddrReplace", reflect.TypeOf((*MockNetLinker)(nil).AddrReplace), arg0, arg1)
}
// IsWireguardSupported mocks base method. // IsWireguardSupported mocks base method.
func (m *MockNetLinker) IsWireguardSupported() (bool, error) { func (m *MockNetLinker) IsWireguardSupported() (bool, error) {
m.ctrl.T.Helper() m.ctrl.T.Helper()

View File

@@ -18,7 +18,7 @@ type NetLinker interface {
type Addresser interface { type Addresser interface {
AddrList(link netlink.Link, family int) ( AddrList(link netlink.Link, family int) (
addresses []netlink.Addr, err error) addresses []netlink.Addr, err error)
AddrAdd(link netlink.Link, addr *netlink.Addr) error AddrReplace(link netlink.Link, addr *netlink.Addr) error
} }
type Router interface { type Router interface {

View File

@@ -42,7 +42,7 @@ type Storage interface {
} }
type NetLinker interface { type NetLinker interface {
AddrAdd(link netlink.Link, addr *netlink.Addr) error AddrReplace(link netlink.Link, addr *netlink.Addr) error
Router Router
Ruler Ruler
Linker Linker

View File

@@ -20,7 +20,7 @@ func (w *Wireguard) addAddresses(link netlink.Link,
IPNet: routing.NetipPrefixToIPNet(&ipNet), IPNet: routing.NetipPrefixToIPNet(&ipNet),
} }
err = w.netlink.AddrAdd(link, address) err = w.netlink.AddrReplace(link, address)
if err != nil { if err != nil {
return fmt.Errorf("%w: when adding address %s to link %s", return fmt.Errorf("%w: when adding address %s to link %s",
err, address, link.Attrs().Name) err, address, link.Attrs().Name)

View File

@@ -40,10 +40,10 @@ func Test_Wireguard_addAddresses(t *testing.T) {
wgBuilder: func(ctrl *gomock.Controller, link netlink.Link) *Wireguard { wgBuilder: func(ctrl *gomock.Controller, link netlink.Link) *Wireguard {
netLinker := NewMockNetLinker(ctrl) netLinker := NewMockNetLinker(ctrl)
firstCall := netLinker.EXPECT(). firstCall := netLinker.EXPECT().
AddrAdd(link, &netlink.Addr{IPNet: routing.NetipPrefixToIPNet(&ipNetOne)}). AddrReplace(link, &netlink.Addr{IPNet: routing.NetipPrefixToIPNet(&ipNetOne)}).
Return(nil) Return(nil)
netLinker.EXPECT(). netLinker.EXPECT().
AddrAdd(link, &netlink.Addr{IPNet: routing.NetipPrefixToIPNet(&ipNetTwo)}). AddrReplace(link, &netlink.Addr{IPNet: routing.NetipPrefixToIPNet(&ipNetTwo)}).
Return(nil).After(firstCall) Return(nil).After(firstCall)
return &Wireguard{ return &Wireguard{
netlink: netLinker, netlink: netLinker,
@@ -59,7 +59,7 @@ func Test_Wireguard_addAddresses(t *testing.T) {
wgBuilder: func(ctrl *gomock.Controller, link netlink.Link) *Wireguard { wgBuilder: func(ctrl *gomock.Controller, link netlink.Link) *Wireguard {
netLinker := NewMockNetLinker(ctrl) netLinker := NewMockNetLinker(ctrl)
netLinker.EXPECT(). netLinker.EXPECT().
AddrAdd(link, &netlink.Addr{IPNet: routing.NetipPrefixToIPNet(&ipNetOne)}). AddrReplace(link, &netlink.Addr{IPNet: routing.NetipPrefixToIPNet(&ipNetOne)}).
Return(errDummy) Return(errDummy)
return &Wireguard{ return &Wireguard{
netlink: netLinker, netlink: netLinker,
@@ -76,10 +76,10 @@ func Test_Wireguard_addAddresses(t *testing.T) {
wgBuilder: func(ctrl *gomock.Controller, link netlink.Link) *Wireguard { wgBuilder: func(ctrl *gomock.Controller, link netlink.Link) *Wireguard {
netLinker := NewMockNetLinker(ctrl) netLinker := NewMockNetLinker(ctrl)
firstCall := netLinker.EXPECT(). firstCall := netLinker.EXPECT().
AddrAdd(link, &netlink.Addr{IPNet: routing.NetipPrefixToIPNet(&ipNetOne)}). AddrReplace(link, &netlink.Addr{IPNet: routing.NetipPrefixToIPNet(&ipNetOne)}).
Return(nil) Return(nil)
netLinker.EXPECT(). netLinker.EXPECT().
AddrAdd(link, &netlink.Addr{IPNet: routing.NetipPrefixToIPNet(&ipNetTwo)}). AddrReplace(link, &netlink.Addr{IPNet: routing.NetipPrefixToIPNet(&ipNetTwo)}).
Return(errDummy).After(firstCall) Return(errDummy).After(firstCall)
return &Wireguard{ return &Wireguard{
netlink: netLinker, netlink: netLinker,

View File

@@ -5,7 +5,7 @@ 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
type NetLinker interface { type NetLinker interface {
AddrAdd(link netlink.Link, addr *netlink.Addr) error AddrReplace(link netlink.Link, addr *netlink.Addr) error
Router Router
Ruler Ruler
Linker Linker

View File

@@ -34,18 +34,18 @@ func (m *MockNetLinker) EXPECT() *MockNetLinkerMockRecorder {
return m.recorder return m.recorder
} }
// AddrAdd mocks base method. // AddrReplace mocks base method.
func (m *MockNetLinker) AddrAdd(arg0 netlink.Link, arg1 *netlink.Addr) error { func (m *MockNetLinker) AddrReplace(arg0 netlink.Link, arg1 *netlink.Addr) error {
m.ctrl.T.Helper() m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "AddrAdd", arg0, arg1) ret := m.ctrl.Call(m, "AddrReplace", arg0, arg1)
ret0, _ := ret[0].(error) ret0, _ := ret[0].(error)
return ret0 return ret0
} }
// AddrAdd indicates an expected call of AddrAdd. // AddrReplace indicates an expected call of AddrReplace.
func (mr *MockNetLinkerMockRecorder) AddrAdd(arg0, arg1 interface{}) *gomock.Call { func (mr *MockNetLinkerMockRecorder) AddrReplace(arg0, arg1 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper() mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddrAdd", reflect.TypeOf((*MockNetLinker)(nil).AddrAdd), arg0, arg1) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddrReplace", reflect.TypeOf((*MockNetLinker)(nil).AddrReplace), arg0, arg1)
} }
// IsWireguardSupported mocks base method. // IsWireguardSupported mocks base method.