chore(netlink): debug log ip rule commands in netlink instead of routing package
This commit is contained in:
8
internal/netlink/helpers_test.go
Normal file
8
internal/netlink/helpers_test.go
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
package netlink
|
||||||
|
|
||||||
|
import "net/netip"
|
||||||
|
|
||||||
|
func makeNetipPrefix(n byte) netip.Prefix {
|
||||||
|
const bits = 24
|
||||||
|
return netip.PrefixFrom(netip.AddrFrom4([4]byte{n, n, n, 0}), bits)
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ package netlink
|
|||||||
import "github.com/qdm12/log"
|
import "github.com/qdm12/log"
|
||||||
|
|
||||||
type DebugLogger interface {
|
type DebugLogger interface {
|
||||||
|
Debug(message string)
|
||||||
Debugf(format string, args ...any)
|
Debugf(format string, args ...any)
|
||||||
Patch(options ...log.Option)
|
Patch(options ...log.Option)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
package netlink
|
package netlink
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"github.com/vishvananda/netlink"
|
"github.com/vishvananda/netlink"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -17,6 +19,15 @@ func NewRule() Rule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (n *NetLink) RuleList(family int) (rules []Rule, err error) {
|
func (n *NetLink) RuleList(family int) (rules []Rule, err error) {
|
||||||
|
switch family {
|
||||||
|
case FamilyAll:
|
||||||
|
n.debugLogger.Debug("ip -4 rule list")
|
||||||
|
n.debugLogger.Debug("ip -6 rule list")
|
||||||
|
case FamilyV4:
|
||||||
|
n.debugLogger.Debug("ip -4 rule list")
|
||||||
|
case FamilyV6:
|
||||||
|
n.debugLogger.Debug("ip -6 rule list")
|
||||||
|
}
|
||||||
netlinkRules, err := netlink.RuleList(family)
|
netlinkRules, err := netlink.RuleList(family)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -30,11 +41,13 @@ func (n *NetLink) RuleList(family int) (rules []Rule, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (n *NetLink) RuleAdd(rule Rule) error {
|
func (n *NetLink) RuleAdd(rule Rule) error {
|
||||||
|
n.debugLogger.Debug(ruleDbgMsg(true, rule))
|
||||||
netlinkRule := ruleToNetlinkRule(rule)
|
netlinkRule := ruleToNetlinkRule(rule)
|
||||||
return netlink.RuleAdd(&netlinkRule)
|
return netlink.RuleAdd(&netlinkRule)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NetLink) RuleDel(rule Rule) error {
|
func (n *NetLink) RuleDel(rule Rule) error {
|
||||||
|
n.debugLogger.Debug(ruleDbgMsg(false, rule))
|
||||||
netlinkRule := ruleToNetlinkRule(rule)
|
netlinkRule := ruleToNetlinkRule(rule)
|
||||||
return netlink.RuleDel(&netlinkRule)
|
return netlink.RuleDel(&netlinkRule)
|
||||||
}
|
}
|
||||||
@@ -62,3 +75,31 @@ func netlinkRuleToRule(netlinkRule netlink.Rule) (rule Rule) {
|
|||||||
Invert: netlinkRule.Invert,
|
Invert: netlinkRule.Invert,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ruleDbgMsg(add bool, rule Rule) (debugMessage string) {
|
||||||
|
debugMessage = "ip rule"
|
||||||
|
|
||||||
|
if add {
|
||||||
|
debugMessage += " add"
|
||||||
|
} else {
|
||||||
|
debugMessage += " del"
|
||||||
|
}
|
||||||
|
|
||||||
|
if rule.Src.IsValid() {
|
||||||
|
debugMessage += " from " + rule.Src.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
if rule.Dst.IsValid() {
|
||||||
|
debugMessage += " to " + rule.Dst.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
if rule.Table != 0 {
|
||||||
|
debugMessage += " lookup " + fmt.Sprint(rule.Table)
|
||||||
|
}
|
||||||
|
|
||||||
|
if rule.Priority != -1 {
|
||||||
|
debugMessage += " pref " + fmt.Sprint(rule.Priority)
|
||||||
|
}
|
||||||
|
|
||||||
|
return debugMessage
|
||||||
|
}
|
||||||
|
|||||||
50
internal/netlink/rule_test.go
Normal file
50
internal/netlink/rule_test.go
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
package netlink
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Test_ruleDbgMsg(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
testCases := map[string]struct {
|
||||||
|
add bool
|
||||||
|
rule Rule
|
||||||
|
dbgMsg string
|
||||||
|
}{
|
||||||
|
"default values": {
|
||||||
|
dbgMsg: "ip rule del pref 0",
|
||||||
|
},
|
||||||
|
"add rule": {
|
||||||
|
add: true,
|
||||||
|
rule: Rule{
|
||||||
|
Src: makeNetipPrefix(1),
|
||||||
|
Dst: makeNetipPrefix(2),
|
||||||
|
Table: 100,
|
||||||
|
Priority: 101,
|
||||||
|
},
|
||||||
|
dbgMsg: "ip rule add from 1.1.1.0/24 to 2.2.2.0/24 lookup 100 pref 101",
|
||||||
|
},
|
||||||
|
"del rule": {
|
||||||
|
rule: Rule{
|
||||||
|
Src: makeNetipPrefix(1),
|
||||||
|
Dst: makeNetipPrefix(2),
|
||||||
|
Table: 100,
|
||||||
|
Priority: 101,
|
||||||
|
},
|
||||||
|
dbgMsg: "ip rule del from 1.1.1.0/24 to 2.2.2.0/24 lookup 100 pref 101",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for name, testCase := range testCases {
|
||||||
|
t.Run(name, func(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
dbgMsg := ruleDbgMsg(testCase.add, testCase.rule)
|
||||||
|
|
||||||
|
assert.Equal(t, testCase.dbgMsg, dbgMsg)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,5 @@
|
|||||||
package routing
|
package routing
|
||||||
|
|
||||||
//go:generate mockgen -destination=logger_mock_test.go -package routing . Logger
|
|
||||||
|
|
||||||
type Logger interface {
|
type Logger interface {
|
||||||
Debug(s string)
|
Debug(s string)
|
||||||
Info(s string)
|
Info(s string)
|
||||||
|
|||||||
@@ -1,82 +0,0 @@
|
|||||||
// Code generated by MockGen. DO NOT EDIT.
|
|
||||||
// Source: github.com/qdm12/gluetun/internal/routing (interfaces: Logger)
|
|
||||||
|
|
||||||
// Package routing is a generated GoMock package.
|
|
||||||
package routing
|
|
||||||
|
|
||||||
import (
|
|
||||||
reflect "reflect"
|
|
||||||
|
|
||||||
gomock "github.com/golang/mock/gomock"
|
|
||||||
)
|
|
||||||
|
|
||||||
// MockLogger is a mock of Logger interface.
|
|
||||||
type MockLogger struct {
|
|
||||||
ctrl *gomock.Controller
|
|
||||||
recorder *MockLoggerMockRecorder
|
|
||||||
}
|
|
||||||
|
|
||||||
// MockLoggerMockRecorder is the mock recorder for MockLogger.
|
|
||||||
type MockLoggerMockRecorder struct {
|
|
||||||
mock *MockLogger
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewMockLogger creates a new mock instance.
|
|
||||||
func NewMockLogger(ctrl *gomock.Controller) *MockLogger {
|
|
||||||
mock := &MockLogger{ctrl: ctrl}
|
|
||||||
mock.recorder = &MockLoggerMockRecorder{mock}
|
|
||||||
return mock
|
|
||||||
}
|
|
||||||
|
|
||||||
// EXPECT returns an object that allows the caller to indicate expected use.
|
|
||||||
func (m *MockLogger) EXPECT() *MockLoggerMockRecorder {
|
|
||||||
return m.recorder
|
|
||||||
}
|
|
||||||
|
|
||||||
// Debug mocks base method.
|
|
||||||
func (m *MockLogger) Debug(arg0 string) {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
m.ctrl.Call(m, "Debug", arg0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Debug indicates an expected call of Debug.
|
|
||||||
func (mr *MockLoggerMockRecorder) Debug(arg0 interface{}) *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Debug", reflect.TypeOf((*MockLogger)(nil).Debug), arg0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Error mocks base method.
|
|
||||||
func (m *MockLogger) Error(arg0 string) {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
m.ctrl.Call(m, "Error", arg0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Error indicates an expected call of Error.
|
|
||||||
func (mr *MockLoggerMockRecorder) Error(arg0 interface{}) *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Error", reflect.TypeOf((*MockLogger)(nil).Error), arg0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Info mocks base method.
|
|
||||||
func (m *MockLogger) Info(arg0 string) {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
m.ctrl.Call(m, "Info", arg0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Info indicates an expected call of Info.
|
|
||||||
func (mr *MockLoggerMockRecorder) Info(arg0 interface{}) *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Info", reflect.TypeOf((*MockLogger)(nil).Info), arg0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Warn mocks base method.
|
|
||||||
func (m *MockLogger) Warn(arg0 string) {
|
|
||||||
m.ctrl.T.Helper()
|
|
||||||
m.ctrl.Call(m, "Warn", arg0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Warn indicates an expected call of Warn.
|
|
||||||
func (mr *MockLoggerMockRecorder) Warn(arg0 interface{}) *gomock.Call {
|
|
||||||
mr.mock.ctrl.T.Helper()
|
|
||||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Warn", reflect.TypeOf((*MockLogger)(nil).Warn), arg0)
|
|
||||||
}
|
|
||||||
@@ -8,9 +8,6 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (r *Routing) addIPRule(src, dst netip.Prefix, table, priority int) error {
|
func (r *Routing) addIPRule(src, dst netip.Prefix, table, priority int) error {
|
||||||
const add = true
|
|
||||||
r.logger.Debug(ruleDbgMsg(add, src, dst, table, priority))
|
|
||||||
|
|
||||||
rule := netlink.NewRule()
|
rule := netlink.NewRule()
|
||||||
rule.Src = src
|
rule.Src = src
|
||||||
rule.Dst = dst
|
rule.Dst = dst
|
||||||
@@ -35,9 +32,6 @@ func (r *Routing) addIPRule(src, dst netip.Prefix, table, priority int) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *Routing) deleteIPRule(src, dst netip.Prefix, table, priority int) error {
|
func (r *Routing) deleteIPRule(src, dst netip.Prefix, table, priority int) error {
|
||||||
const add = false
|
|
||||||
r.logger.Debug(ruleDbgMsg(add, src, dst, table, priority))
|
|
||||||
|
|
||||||
rule := netlink.NewRule()
|
rule := netlink.NewRule()
|
||||||
rule.Src = src
|
rule.Src = src
|
||||||
rule.Dst = dst
|
rule.Dst = dst
|
||||||
@@ -59,36 +53,6 @@ func (r *Routing) deleteIPRule(src, dst netip.Prefix, table, priority int) error
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ruleDbgMsg(add bool, src, dst netip.Prefix,
|
|
||||||
table, priority int,
|
|
||||||
) (debugMessage string) {
|
|
||||||
debugMessage = "ip rule"
|
|
||||||
|
|
||||||
if add {
|
|
||||||
debugMessage += " add"
|
|
||||||
} else {
|
|
||||||
debugMessage += " del"
|
|
||||||
}
|
|
||||||
|
|
||||||
if src.IsValid() {
|
|
||||||
debugMessage += " from " + src.String()
|
|
||||||
}
|
|
||||||
|
|
||||||
if dst.IsValid() {
|
|
||||||
debugMessage += " to " + dst.String()
|
|
||||||
}
|
|
||||||
|
|
||||||
if table != 0 {
|
|
||||||
debugMessage += " lookup " + fmt.Sprint(table)
|
|
||||||
}
|
|
||||||
|
|
||||||
if priority != -1 {
|
|
||||||
debugMessage += " pref " + fmt.Sprint(priority)
|
|
||||||
}
|
|
||||||
|
|
||||||
return debugMessage
|
|
||||||
}
|
|
||||||
|
|
||||||
func rulesAreEqual(a, b netlink.Rule) bool {
|
func rulesAreEqual(a, b netlink.Rule) bool {
|
||||||
return ipPrefixesAreEqual(a.Src, b.Src) &&
|
return ipPrefixesAreEqual(a.Src, b.Src) &&
|
||||||
ipPrefixesAreEqual(a.Dst, b.Dst) &&
|
ipPrefixesAreEqual(a.Dst, b.Dst) &&
|
||||||
|
|||||||
@@ -48,13 +48,11 @@ func Test_Routing_addIPRule(t *testing.T) {
|
|||||||
dst netip.Prefix
|
dst netip.Prefix
|
||||||
table int
|
table int
|
||||||
priority int
|
priority int
|
||||||
dbgMsg string
|
|
||||||
ruleList ruleListCall
|
ruleList ruleListCall
|
||||||
ruleAdd ruleAddCall
|
ruleAdd ruleAddCall
|
||||||
err error
|
err error
|
||||||
}{
|
}{
|
||||||
"list error": {
|
"list error": {
|
||||||
dbgMsg: "ip rule add pref 0",
|
|
||||||
ruleList: ruleListCall{
|
ruleList: ruleListCall{
|
||||||
err: errDummy,
|
err: errDummy,
|
||||||
},
|
},
|
||||||
@@ -65,7 +63,6 @@ func Test_Routing_addIPRule(t *testing.T) {
|
|||||||
dst: makeNetipPrefix(2),
|
dst: makeNetipPrefix(2),
|
||||||
table: 99,
|
table: 99,
|
||||||
priority: 99,
|
priority: 99,
|
||||||
dbgMsg: "ip rule add from 1.1.1.0/24 to 2.2.2.0/24 lookup 99 pref 99",
|
|
||||||
ruleList: ruleListCall{
|
ruleList: ruleListCall{
|
||||||
rules: []netlink.Rule{
|
rules: []netlink.Rule{
|
||||||
makeIPRule(makeNetipPrefix(2), makeNetipPrefix(2), 99, 99),
|
makeIPRule(makeNetipPrefix(2), makeNetipPrefix(2), 99, 99),
|
||||||
@@ -78,7 +75,6 @@ func Test_Routing_addIPRule(t *testing.T) {
|
|||||||
dst: makeNetipPrefix(2),
|
dst: makeNetipPrefix(2),
|
||||||
table: 99,
|
table: 99,
|
||||||
priority: 99,
|
priority: 99,
|
||||||
dbgMsg: "ip rule add from 1.1.1.0/24 to 2.2.2.0/24 lookup 99 pref 99",
|
|
||||||
ruleAdd: ruleAddCall{
|
ruleAdd: ruleAddCall{
|
||||||
expected: true,
|
expected: true,
|
||||||
ruleToAdd: makeIPRule(makeNetipPrefix(1), makeNetipPrefix(2), 99, 99),
|
ruleToAdd: makeIPRule(makeNetipPrefix(1), makeNetipPrefix(2), 99, 99),
|
||||||
@@ -91,7 +87,6 @@ func Test_Routing_addIPRule(t *testing.T) {
|
|||||||
dst: makeNetipPrefix(2),
|
dst: makeNetipPrefix(2),
|
||||||
table: 99,
|
table: 99,
|
||||||
priority: 99,
|
priority: 99,
|
||||||
dbgMsg: "ip rule add from 1.1.1.0/24 to 2.2.2.0/24 lookup 99 pref 99",
|
|
||||||
ruleList: ruleListCall{
|
ruleList: ruleListCall{
|
||||||
rules: []netlink.Rule{
|
rules: []netlink.Rule{
|
||||||
makeIPRule(makeNetipPrefix(2), makeNetipPrefix(2), 99, 99),
|
makeIPRule(makeNetipPrefix(2), makeNetipPrefix(2), 99, 99),
|
||||||
@@ -110,9 +105,6 @@ func Test_Routing_addIPRule(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
ctrl := gomock.NewController(t)
|
ctrl := gomock.NewController(t)
|
||||||
|
|
||||||
logger := NewMockLogger(ctrl)
|
|
||||||
logger.EXPECT().Debug(testCase.dbgMsg)
|
|
||||||
|
|
||||||
netLinker := NewMockNetLinker(ctrl)
|
netLinker := NewMockNetLinker(ctrl)
|
||||||
netLinker.EXPECT().RuleList(netlink.FamilyAll).
|
netLinker.EXPECT().RuleList(netlink.FamilyAll).
|
||||||
Return(testCase.ruleList.rules, testCase.ruleList.err)
|
Return(testCase.ruleList.rules, testCase.ruleList.err)
|
||||||
@@ -122,7 +114,6 @@ func Test_Routing_addIPRule(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
r := Routing{
|
r := Routing{
|
||||||
logger: logger,
|
|
||||||
netLinker: netLinker,
|
netLinker: netLinker,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,13 +151,11 @@ func Test_Routing_deleteIPRule(t *testing.T) {
|
|||||||
dst netip.Prefix
|
dst netip.Prefix
|
||||||
table int
|
table int
|
||||||
priority int
|
priority int
|
||||||
dbgMsg string
|
|
||||||
ruleList ruleListCall
|
ruleList ruleListCall
|
||||||
ruleDel ruleDelCall
|
ruleDel ruleDelCall
|
||||||
err error
|
err error
|
||||||
}{
|
}{
|
||||||
"list error": {
|
"list error": {
|
||||||
dbgMsg: "ip rule del pref 0",
|
|
||||||
ruleList: ruleListCall{
|
ruleList: ruleListCall{
|
||||||
err: errDummy,
|
err: errDummy,
|
||||||
},
|
},
|
||||||
@@ -177,7 +166,6 @@ func Test_Routing_deleteIPRule(t *testing.T) {
|
|||||||
dst: makeNetipPrefix(2),
|
dst: makeNetipPrefix(2),
|
||||||
table: 99,
|
table: 99,
|
||||||
priority: 99,
|
priority: 99,
|
||||||
dbgMsg: "ip rule del from 1.1.1.0/24 to 2.2.2.0/24 lookup 99 pref 99",
|
|
||||||
ruleList: ruleListCall{
|
ruleList: ruleListCall{
|
||||||
rules: []netlink.Rule{
|
rules: []netlink.Rule{
|
||||||
makeIPRule(makeNetipPrefix(1), makeNetipPrefix(2), 99, 99),
|
makeIPRule(makeNetipPrefix(1), makeNetipPrefix(2), 99, 99),
|
||||||
@@ -195,7 +183,6 @@ func Test_Routing_deleteIPRule(t *testing.T) {
|
|||||||
dst: makeNetipPrefix(2),
|
dst: makeNetipPrefix(2),
|
||||||
table: 99,
|
table: 99,
|
||||||
priority: 99,
|
priority: 99,
|
||||||
dbgMsg: "ip rule del from 1.1.1.0/24 to 2.2.2.0/24 lookup 99 pref 99",
|
|
||||||
ruleList: ruleListCall{
|
ruleList: ruleListCall{
|
||||||
rules: []netlink.Rule{
|
rules: []netlink.Rule{
|
||||||
makeIPRule(makeNetipPrefix(2), makeNetipPrefix(2), 99, 99),
|
makeIPRule(makeNetipPrefix(2), makeNetipPrefix(2), 99, 99),
|
||||||
@@ -212,7 +199,6 @@ func Test_Routing_deleteIPRule(t *testing.T) {
|
|||||||
dst: makeNetipPrefix(2),
|
dst: makeNetipPrefix(2),
|
||||||
table: 99,
|
table: 99,
|
||||||
priority: 99,
|
priority: 99,
|
||||||
dbgMsg: "ip rule del from 1.1.1.0/24 to 2.2.2.0/24 lookup 99 pref 99",
|
|
||||||
ruleList: ruleListCall{
|
ruleList: ruleListCall{
|
||||||
rules: []netlink.Rule{
|
rules: []netlink.Rule{
|
||||||
makeIPRule(makeNetipPrefix(2), makeNetipPrefix(2), 99, 99),
|
makeIPRule(makeNetipPrefix(2), makeNetipPrefix(2), 99, 99),
|
||||||
@@ -227,9 +213,6 @@ func Test_Routing_deleteIPRule(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
ctrl := gomock.NewController(t)
|
ctrl := gomock.NewController(t)
|
||||||
|
|
||||||
logger := NewMockLogger(ctrl)
|
|
||||||
logger.EXPECT().Debug(testCase.dbgMsg)
|
|
||||||
|
|
||||||
netLinker := NewMockNetLinker(ctrl)
|
netLinker := NewMockNetLinker(ctrl)
|
||||||
netLinker.EXPECT().RuleList(netlink.FamilyAll).
|
netLinker.EXPECT().RuleList(netlink.FamilyAll).
|
||||||
Return(testCase.ruleList.rules, testCase.ruleList.err)
|
Return(testCase.ruleList.rules, testCase.ruleList.err)
|
||||||
@@ -239,7 +222,6 @@ func Test_Routing_deleteIPRule(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
r := Routing{
|
r := Routing{
|
||||||
logger: logger,
|
|
||||||
netLinker: netLinker,
|
netLinker: netLinker,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -256,49 +238,6 @@ func Test_Routing_deleteIPRule(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_ruleDbgMsg(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
testCases := map[string]struct {
|
|
||||||
add bool
|
|
||||||
src netip.Prefix
|
|
||||||
dst netip.Prefix
|
|
||||||
table int
|
|
||||||
priority int
|
|
||||||
dbgMsg string
|
|
||||||
}{
|
|
||||||
"default values": {
|
|
||||||
dbgMsg: "ip rule del pref 0",
|
|
||||||
},
|
|
||||||
"add rule": {
|
|
||||||
add: true,
|
|
||||||
src: makeNetipPrefix(1),
|
|
||||||
dst: makeNetipPrefix(2),
|
|
||||||
table: 100,
|
|
||||||
priority: 101,
|
|
||||||
dbgMsg: "ip rule add from 1.1.1.0/24 to 2.2.2.0/24 lookup 100 pref 101",
|
|
||||||
},
|
|
||||||
"del rule": {
|
|
||||||
src: makeNetipPrefix(1),
|
|
||||||
dst: makeNetipPrefix(2),
|
|
||||||
table: 100,
|
|
||||||
priority: 101,
|
|
||||||
dbgMsg: "ip rule del from 1.1.1.0/24 to 2.2.2.0/24 lookup 100 pref 101",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for name, testCase := range testCases {
|
|
||||||
t.Run(name, func(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
dbgMsg := ruleDbgMsg(testCase.add, testCase.src,
|
|
||||||
testCase.dst, testCase.table, testCase.priority)
|
|
||||||
|
|
||||||
assert.Equal(t, testCase.dbgMsg, dbgMsg)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func Test_rulesAreEqual(t *testing.T) {
|
func Test_rulesAreEqual(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user