Files
gluetun/internal/routing/routing.go
Quentin McGaw f99d5e8656 feat(firewall): use all default routes
- Accept output traffic from all default routes through VPN interface
- Accept output from all default routes to outbound subnets
- Accept all input traffic on ports for all default routes
- Add IP rules for all default routes
2022-03-13 13:26:33 +00:00

48 lines
782 B
Go

// Package routing defines interfaces to interact with the ip routes using NETLINK.
package routing
import (
"net"
"sync"
"github.com/qdm12/gluetun/internal/netlink"
)
type ReadWriter interface {
Reader
Writer
}
type Reader interface {
DefaultRouteGetter
LocalSubnetGetter
LocalNetworksGetter
VPNGetter
}
type VPNGetter interface {
VPNDestinationIPGetter
VPNLocalGatewayIPGetter
}
type Writer interface {
Setuper
TearDowner
OutboundRoutesSetter
}
type Routing struct {
netLinker netlink.NetLinker
logger Logger
outboundSubnets []net.IPNet
stateMutex sync.RWMutex
}
// New creates a new routing instance.
func New(netLinker netlink.NetLinker, logger Logger) *Routing {
return &Routing{
netLinker: netLinker,
logger: logger,
}
}