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"
|
||||
|
||||
type DebugLogger interface {
|
||||
Debug(message string)
|
||||
Debugf(format string, args ...any)
|
||||
Patch(options ...log.Option)
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
package netlink
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/vishvananda/netlink"
|
||||
)
|
||||
|
||||
@@ -17,6 +19,15 @@ func NewRule() Rule {
|
||||
}
|
||||
|
||||
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)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -30,11 +41,13 @@ func (n *NetLink) RuleList(family int) (rules []Rule, err error) {
|
||||
}
|
||||
|
||||
func (n *NetLink) RuleAdd(rule Rule) error {
|
||||
n.debugLogger.Debug(ruleDbgMsg(true, rule))
|
||||
netlinkRule := ruleToNetlinkRule(rule)
|
||||
return netlink.RuleAdd(&netlinkRule)
|
||||
}
|
||||
|
||||
func (n *NetLink) RuleDel(rule Rule) error {
|
||||
n.debugLogger.Debug(ruleDbgMsg(false, rule))
|
||||
netlinkRule := ruleToNetlinkRule(rule)
|
||||
return netlink.RuleDel(&netlinkRule)
|
||||
}
|
||||
@@ -62,3 +75,31 @@ func netlinkRuleToRule(netlinkRule netlink.Rule) (rule Rule) {
|
||||
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)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user