Files
gluetun/internal/routing/routing.go
2021-07-26 16:18:53 +00:00

47 lines
724 B
Go

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