feat(wireguard): add debug logs for IPv6 detection
- To debug issue #998 - Enable with `LOG_LEVEL=debug`
This commit is contained in:
@@ -12,16 +12,23 @@ func (w *Wireguard) isIPv6Supported() (supported bool, err error) {
|
|||||||
return false, fmt.Errorf("cannot list links: %w", err)
|
return false, fmt.Errorf("cannot list links: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.logger.Debug("Checking for IPv6 support...")
|
||||||
for _, link := range links {
|
for _, link := range links {
|
||||||
|
linkName := link.Attrs().Name
|
||||||
routes, err := w.netlink.RouteList(link, netlink.FAMILY_V6)
|
routes, err := w.netlink.RouteList(link, netlink.FAMILY_V6)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("cannot list routes: %w", err)
|
return false, fmt.Errorf("cannot list routes for link %s: %w", linkName, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(routes) > 0 {
|
if len(routes) == 0 {
|
||||||
return true, nil
|
w.logger.Debugf("Link %s has no IPv6 route", linkName)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w.logger.Debugf("Link %s has IPv6 routes: %#v",
|
||||||
|
linkName, routes)
|
||||||
|
supported = true
|
||||||
}
|
}
|
||||||
|
|
||||||
return false, nil
|
return supported, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package wireguard
|
package wireguard
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"golang.zx2c4.com/wireguard/device"
|
"golang.zx2c4.com/wireguard/device"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -10,17 +8,15 @@ import (
|
|||||||
|
|
||||||
type Logger interface {
|
type Logger interface {
|
||||||
Debug(s string)
|
Debug(s string)
|
||||||
|
Debugf(format string, args ...interface{})
|
||||||
Info(s string)
|
Info(s string)
|
||||||
Error(s string)
|
Error(s string)
|
||||||
|
Errorf(format string, args ...interface{})
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeDeviceLogger(logger Logger) (deviceLogger *device.Logger) {
|
func makeDeviceLogger(logger Logger) (deviceLogger *device.Logger) {
|
||||||
return &device.Logger{
|
return &device.Logger{
|
||||||
Verbosef: func(format string, args ...interface{}) {
|
Verbosef: logger.Debugf,
|
||||||
logger.Debug(fmt.Sprintf(format, args...))
|
Errorf: logger.Errorf,
|
||||||
},
|
|
||||||
Errorf: func(format string, args ...interface{}) {
|
|
||||||
logger.Error(fmt.Sprintf(format, args...))
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,23 @@ func (mr *MockLoggerMockRecorder) Debug(arg0 interface{}) *gomock.Call {
|
|||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Debug", reflect.TypeOf((*MockLogger)(nil).Debug), arg0)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Debug", reflect.TypeOf((*MockLogger)(nil).Debug), arg0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Debugf mocks base method.
|
||||||
|
func (m *MockLogger) Debugf(arg0 string, arg1 ...interface{}) {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
varargs := []interface{}{arg0}
|
||||||
|
for _, a := range arg1 {
|
||||||
|
varargs = append(varargs, a)
|
||||||
|
}
|
||||||
|
m.ctrl.Call(m, "Debugf", varargs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Debugf indicates an expected call of Debugf.
|
||||||
|
func (mr *MockLoggerMockRecorder) Debugf(arg0 interface{}, arg1 ...interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
varargs := append([]interface{}{arg0}, arg1...)
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Debugf", reflect.TypeOf((*MockLogger)(nil).Debugf), varargs...)
|
||||||
|
}
|
||||||
|
|
||||||
// Error mocks base method.
|
// Error mocks base method.
|
||||||
func (m *MockLogger) Error(arg0 string) {
|
func (m *MockLogger) Error(arg0 string) {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
@@ -57,6 +74,23 @@ func (mr *MockLoggerMockRecorder) Error(arg0 interface{}) *gomock.Call {
|
|||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Error", reflect.TypeOf((*MockLogger)(nil).Error), arg0)
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Error", reflect.TypeOf((*MockLogger)(nil).Error), arg0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Errorf mocks base method.
|
||||||
|
func (m *MockLogger) Errorf(arg0 string, arg1 ...interface{}) {
|
||||||
|
m.ctrl.T.Helper()
|
||||||
|
varargs := []interface{}{arg0}
|
||||||
|
for _, a := range arg1 {
|
||||||
|
varargs = append(varargs, a)
|
||||||
|
}
|
||||||
|
m.ctrl.Call(m, "Errorf", varargs...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Errorf indicates an expected call of Errorf.
|
||||||
|
func (mr *MockLoggerMockRecorder) Errorf(arg0 interface{}, arg1 ...interface{}) *gomock.Call {
|
||||||
|
mr.mock.ctrl.T.Helper()
|
||||||
|
varargs := append([]interface{}{arg0}, arg1...)
|
||||||
|
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Errorf", reflect.TypeOf((*MockLogger)(nil).Errorf), varargs...)
|
||||||
|
}
|
||||||
|
|
||||||
// Info mocks base method.
|
// Info mocks base method.
|
||||||
func (m *MockLogger) Info(arg0 string) {
|
func (m *MockLogger) Info(arg0 string) {
|
||||||
m.ctrl.T.Helper()
|
m.ctrl.T.Helper()
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ func Test_makeDeviceLogger(t *testing.T) {
|
|||||||
|
|
||||||
deviceLogger := makeDeviceLogger(logger)
|
deviceLogger := makeDeviceLogger(logger)
|
||||||
|
|
||||||
logger.EXPECT().Debug("test 1")
|
logger.EXPECT().Debugf("test %d", 1)
|
||||||
deviceLogger.Verbosef("test %d", 1)
|
deviceLogger.Verbosef("test %d", 1)
|
||||||
|
|
||||||
logger.EXPECT().Error("test 2")
|
logger.EXPECT().Errorf("test %d", 2)
|
||||||
deviceLogger.Errorf("test %d", 2)
|
deviceLogger.Errorf("test %d", 2)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,9 @@ func (w *Wireguard) addRoute(link netlink.Link, dst *net.IPNet,
|
|||||||
|
|
||||||
err = w.netlink.RouteAdd(route)
|
err = w.netlink.RouteAdd(route)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("cannot add route %s: %w", route, err)
|
return fmt.Errorf(
|
||||||
|
"cannot add route for link %s, destination %s and table %d: %w",
|
||||||
|
link.Attrs().Name, dst, firewallMark, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ func Test_Wireguard_addRoute(t *testing.T) {
|
|||||||
Table: firewallMark,
|
Table: firewallMark,
|
||||||
},
|
},
|
||||||
routeAddErr: errDummy,
|
routeAddErr: errDummy,
|
||||||
err: errors.New("cannot add route {Ifindex: 88 Dst: 1.2.3.4/32 Src: <nil> Gw: <nil> Flags: [] Table: 51820 Realm: 0}: dummy"), //nolint:lll
|
err: errors.New("cannot add route for link a_bridge, destination 1.2.3.4/32 and table 51820: dummy"), //nolint:lll
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user