Maint: internal/routing returns *Routine struct

This commit is contained in:
Quentin McGaw (desktop)
2021-08-23 20:50:32 +00:00
parent f1a6594474
commit 1a677ce4f7
6 changed files with 23 additions and 23 deletions

View File

@@ -234,7 +234,7 @@ func _main(ctx context.Context, buildInfo models.BuildInformation,
Prefix: "routing: ", Prefix: "routing: ",
Level: firewallLogLevel, Level: firewallLogLevel,
}) })
routingConf := routing.NewRouting(routingLogger) routingConf := routing.New(routingLogger)
defaultInterface, defaultGateway, err := routingConf.DefaultRoute() defaultInterface, defaultGateway, err := routingConf.DefaultRoute()
if err != nil { if err != nil {

View File

@@ -24,7 +24,7 @@ type Setuper interface {
Setup() (err error) Setup() (err error)
} }
func (r *routing) Setup() (err error) { func (r *Routing) Setup() (err error) {
defaultIP, err := r.DefaultIP() defaultIP, err := r.DefaultIP()
if err != nil { if err != nil {
return fmt.Errorf("%w: %s", ErrDefaultIP, err) return fmt.Errorf("%w: %s", ErrDefaultIP, err)
@@ -67,7 +67,7 @@ type TearDowner interface {
TearDown() error TearDown() error
} }
func (r *routing) TearDown() error { func (r *Routing) TearDown() error {
defaultIP, err := r.DefaultIP() defaultIP, err := r.DefaultIP()
if err != nil { if err != nil {
return fmt.Errorf("%w: %s", ErrDefaultIP, err) return fmt.Errorf("%w: %s", ErrDefaultIP, err)

View File

@@ -17,7 +17,7 @@ var (
ErrRuleDel = errors.New("cannot delete routing rule") ErrRuleDel = errors.New("cannot delete routing rule")
) )
func (r *routing) addRouteVia(destination net.IPNet, gateway net.IP, iface string, table int) error { func (r *Routing) addRouteVia(destination net.IPNet, gateway net.IP, iface string, table int) error {
destinationStr := destination.String() destinationStr := destination.String()
r.logger.Info("adding route for " + destinationStr) r.logger.Info("adding route for " + destinationStr)
r.logger.Debug("ip route replace " + destinationStr + r.logger.Debug("ip route replace " + destinationStr +
@@ -42,7 +42,7 @@ func (r *routing) addRouteVia(destination net.IPNet, gateway net.IP, iface strin
return nil return nil
} }
func (r *routing) deleteRouteVia(destination net.IPNet, gateway net.IP, iface string, table int) (err error) { func (r *Routing) deleteRouteVia(destination net.IPNet, gateway net.IP, iface string, table int) (err error) {
destinationStr := destination.String() destinationStr := destination.String()
r.logger.Info("deleting route for " + destinationStr) r.logger.Info("deleting route for " + destinationStr)
r.logger.Debug("ip route delete " + destinationStr + r.logger.Debug("ip route delete " + destinationStr +
@@ -67,7 +67,7 @@ func (r *routing) deleteRouteVia(destination net.IPNet, gateway net.IP, iface st
return nil return nil
} }
func (r *routing) addIPRule(src net.IP, table, priority int) error { func (r *Routing) addIPRule(src net.IP, table, priority int) error {
r.logger.Debug("ip rule add from " + src.String() + r.logger.Debug("ip rule add from " + src.String() +
" lookup " + strconv.Itoa(table) + " lookup " + strconv.Itoa(table) +
" pref " + strconv.Itoa(priority)) " pref " + strconv.Itoa(priority))
@@ -97,7 +97,7 @@ func (r *routing) addIPRule(src net.IP, table, priority int) error {
return nil return nil
} }
func (r *routing) deleteIPRule(src net.IP, table, priority int) error { func (r *Routing) deleteIPRule(src net.IP, table, priority int) error {
r.logger.Debug("ip rule del from " + src.String() + r.logger.Debug("ip rule del from " + src.String() +
" lookup " + strconv.Itoa(table) + " lookup " + strconv.Itoa(table) +
" pref " + strconv.Itoa(priority)) " pref " + strconv.Itoa(priority))

View File

@@ -14,7 +14,7 @@ type OutboundRoutesSetter interface {
SetOutboundRoutes(outboundSubnets []net.IPNet) error SetOutboundRoutes(outboundSubnets []net.IPNet) error
} }
func (r *routing) SetOutboundRoutes(outboundSubnets []net.IPNet) error { func (r *Routing) SetOutboundRoutes(outboundSubnets []net.IPNet) error {
defaultInterface, defaultGateway, err := r.DefaultRoute() defaultInterface, defaultGateway, err := r.DefaultRoute()
if err != nil { if err != nil {
return err return err
@@ -22,7 +22,7 @@ func (r *routing) SetOutboundRoutes(outboundSubnets []net.IPNet) error {
return r.setOutboundRoutes(outboundSubnets, defaultInterface, defaultGateway) return r.setOutboundRoutes(outboundSubnets, defaultInterface, defaultGateway)
} }
func (r *routing) setOutboundRoutes(outboundSubnets []net.IPNet, func (r *Routing) setOutboundRoutes(outboundSubnets []net.IPNet,
defaultInterfaceName string, defaultGateway net.IP) error { defaultInterfaceName string, defaultGateway net.IP) error {
r.stateMutex.Lock() r.stateMutex.Lock()
defer r.stateMutex.Unlock() defer r.stateMutex.Unlock()
@@ -38,7 +38,7 @@ func (r *routing) setOutboundRoutes(outboundSubnets []net.IPNet,
return r.addOutboundSubnets(subnetsToAdd, defaultInterfaceName, defaultGateway) return r.addOutboundSubnets(subnetsToAdd, defaultInterfaceName, defaultGateway)
} }
func (r *routing) removeOutboundSubnets(subnets []net.IPNet, func (r *Routing) removeOutboundSubnets(subnets []net.IPNet,
defaultInterfaceName string, defaultGateway net.IP) { defaultInterfaceName string, defaultGateway net.IP) {
for _, subnet := range subnets { for _, subnet := range subnets {
const table = 0 const table = 0
@@ -50,7 +50,7 @@ func (r *routing) removeOutboundSubnets(subnets []net.IPNet,
} }
} }
func (r *routing) addOutboundSubnets(subnets []net.IPNet, func (r *Routing) addOutboundSubnets(subnets []net.IPNet,
defaultInterfaceName string, defaultGateway net.IP) error { defaultInterfaceName string, defaultGateway net.IP) error {
for _, subnet := range subnets { for _, subnet := range subnets {
const table = 0 const table = 0

View File

@@ -37,7 +37,7 @@ type DefaultRouteGetter interface {
DefaultRoute() (defaultInterface string, defaultGateway net.IP, err error) DefaultRoute() (defaultInterface string, defaultGateway net.IP, err error)
} }
func (r *routing) DefaultRoute() (defaultInterface string, defaultGateway net.IP, err error) { func (r *Routing) DefaultRoute() (defaultInterface string, defaultGateway net.IP, err error) {
routes, err := netlink.RouteList(nil, netlink.FAMILY_ALL) routes, err := netlink.RouteList(nil, netlink.FAMILY_ALL)
if err != nil { if err != nil {
return "", nil, fmt.Errorf("%w: %s", ErrRoutesList, err) return "", nil, fmt.Errorf("%w: %s", ErrRoutesList, err)
@@ -64,7 +64,7 @@ type DefaultIPGetter interface {
DefaultIP() (defaultIP net.IP, err error) DefaultIP() (defaultIP net.IP, err error)
} }
func (r *routing) DefaultIP() (ip net.IP, err error) { func (r *Routing) DefaultIP() (ip net.IP, err error) {
routes, err := netlink.RouteList(nil, netlink.FAMILY_ALL) routes, err := netlink.RouteList(nil, netlink.FAMILY_ALL)
if err != nil { if err != nil {
return nil, fmt.Errorf("%w: %s", ErrRoutesList, err) return nil, fmt.Errorf("%w: %s", ErrRoutesList, err)
@@ -92,7 +92,7 @@ type LocalSubnetGetter interface {
LocalSubnet() (defaultSubnet net.IPNet, err error) LocalSubnet() (defaultSubnet net.IPNet, err error)
} }
func (r *routing) LocalSubnet() (defaultSubnet net.IPNet, err error) { func (r *Routing) LocalSubnet() (defaultSubnet net.IPNet, err error) {
routes, err := netlink.RouteList(nil, netlink.FAMILY_ALL) routes, err := netlink.RouteList(nil, netlink.FAMILY_ALL)
if err != nil { if err != nil {
return defaultSubnet, fmt.Errorf("%w: %s", ErrRoutesList, err) return defaultSubnet, fmt.Errorf("%w: %s", ErrRoutesList, err)
@@ -125,7 +125,7 @@ type LocalNetworksGetter interface {
LocalNetworks() (localNetworks []LocalNetwork, err error) LocalNetworks() (localNetworks []LocalNetwork, err error)
} }
func (r *routing) LocalNetworks() (localNetworks []LocalNetwork, err error) { func (r *Routing) LocalNetworks() (localNetworks []LocalNetwork, err error) {
links, err := netlink.LinkList() links, err := netlink.LinkList()
if err != nil { if err != nil {
return localNetworks, fmt.Errorf("%w: %s", ErrLinkList, err) return localNetworks, fmt.Errorf("%w: %s", ErrLinkList, err)
@@ -187,7 +187,7 @@ func (r *routing) LocalNetworks() (localNetworks []LocalNetwork, err error) {
return localNetworks, nil return localNetworks, nil
} }
func (r *routing) assignedIP(interfaceName string) (ip net.IP, err error) { func (r *Routing) assignedIP(interfaceName string) (ip net.IP, err error) {
iface, err := net.InterfaceByName(interfaceName) iface, err := net.InterfaceByName(interfaceName)
if err != nil { if err != nil {
return nil, fmt.Errorf("%w: %s: %s", ErrInterfaceNotFound, interfaceName, err) return nil, fmt.Errorf("%w: %s: %s", ErrInterfaceNotFound, interfaceName, err)
@@ -212,7 +212,7 @@ type VPNDestinationIPGetter interface {
VPNDestinationIP() (ip net.IP, err error) VPNDestinationIP() (ip net.IP, err error)
} }
func (r *routing) VPNDestinationIP() (ip net.IP, err error) { func (r *Routing) VPNDestinationIP() (ip net.IP, err error) {
routes, err := netlink.RouteList(nil, netlink.FAMILY_ALL) routes, err := netlink.RouteList(nil, netlink.FAMILY_ALL)
if err != nil { if err != nil {
return nil, fmt.Errorf("%w: %s", ErrRoutesList, err) return nil, fmt.Errorf("%w: %s", ErrRoutesList, err)
@@ -244,7 +244,7 @@ type VPNLocalGatewayIPGetter interface {
VPNLocalGatewayIP(vpnIntf string) (ip net.IP, err error) VPNLocalGatewayIP(vpnIntf string) (ip net.IP, err error)
} }
func (r *routing) VPNLocalGatewayIP(vpnIntf string) (ip net.IP, err error) { func (r *Routing) VPNLocalGatewayIP(vpnIntf string) (ip net.IP, err error) {
routes, err := netlink.RouteList(nil, netlink.FAMILY_ALL) routes, err := netlink.RouteList(nil, netlink.FAMILY_ALL)
if err != nil { if err != nil {
return nil, fmt.Errorf("%w: %s", ErrRoutesList, err) return nil, fmt.Errorf("%w: %s", ErrRoutesList, err)

View File

@@ -8,7 +8,7 @@ import (
"github.com/qdm12/golibs/logging" "github.com/qdm12/golibs/logging"
) )
type Routing interface { type ReadWriter interface {
Reader Reader
Writer Writer
} }
@@ -32,15 +32,15 @@ type Writer interface {
OutboundRoutesSetter OutboundRoutesSetter
} }
type routing struct { type Routing struct {
logger logging.Logger logger logging.Logger
outboundSubnets []net.IPNet outboundSubnets []net.IPNet
stateMutex sync.RWMutex stateMutex sync.RWMutex
} }
// NewRouting creates a new routing instance. // New creates a new routing instance.
func NewRouting(logger logging.Logger) Routing { func New(logger logging.Logger) *Routing {
return &routing{ return &Routing{
logger: logger, logger: logger,
} }
} }