Maint: internal/routing IP rules functions

- Take in `src` as `*net.IPNet` instead of `net.IP`
- Take `dst` IP network
- Debug logged `ip rule` dynamically built
- Add unit tests for all IP rules functions
This commit is contained in:
Quentin McGaw (desktop)
2021-08-26 13:59:43 +00:00
parent 6c2a3e36b5
commit 2901db3cf3
5 changed files with 612 additions and 16 deletions

View File

@@ -4,6 +4,8 @@ import (
"errors"
"fmt"
"net"
"github.com/qdm12/gluetun/internal/netlink"
)
const (
@@ -53,8 +55,11 @@ func (r *Routing) addRuleInboundFromDefault(table int) (err error) {
return fmt.Errorf("%w: %s", errDefaultIP, err)
}
if err := r.addIPRule(defaultIP, table, inboundPriority); err != nil {
return fmt.Errorf("%w: %s", errIPRuleAdd, err)
defaultIPMasked32 := netlink.NewIPNet(defaultIP)
ruleDstNet := (*net.IPNet)(nil)
err = r.addIPRule(defaultIPMasked32, ruleDstNet, table, inboundPriority)
if err != nil {
return fmt.Errorf("%w: %s", errRuleAdd, err)
}
return nil
@@ -66,8 +71,11 @@ func (r *Routing) delRuleInboundFromDefault(table int) (err error) {
return fmt.Errorf("%w: %s", errDefaultIP, err)
}
if err := r.deleteIPRule(defaultIP, table, inboundPriority); err != nil {
return fmt.Errorf("%w: %s", errIPRuleAdd, err)
defaultIPMasked32 := netlink.NewIPNet(defaultIP)
ruleDstNet := (*net.IPNet)(nil)
err = r.deleteIPRule(defaultIPMasked32, ruleDstNet, table, inboundPriority)
if err != nil {
return fmt.Errorf("%w: %s", errRuleDelete, err)
}
return nil