fix(routing): only set routes for IPv4 default routes
This commit is contained in:
@@ -20,6 +20,7 @@ type DefaultRoute struct {
|
|||||||
NetInterface string
|
NetInterface string
|
||||||
Gateway net.IP
|
Gateway net.IP
|
||||||
AssignedIP net.IP
|
AssignedIP net.IP
|
||||||
|
Family int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d DefaultRoute) String() string {
|
func (d DefaultRoute) String() string {
|
||||||
@@ -37,6 +38,7 @@ func (r *Routing) DefaultRoutes() (defaultRoutes []DefaultRoute, err error) {
|
|||||||
if route.Dst == nil {
|
if route.Dst == nil {
|
||||||
defaultRoute := DefaultRoute{
|
defaultRoute := DefaultRoute{
|
||||||
Gateway: route.Gw,
|
Gateway: route.Gw,
|
||||||
|
Family: route.Family,
|
||||||
}
|
}
|
||||||
linkIndex := route.LinkIndex
|
linkIndex := route.LinkIndex
|
||||||
link, err := r.netLinker.LinkByIndex(linkIndex)
|
link, err := r.netLinker.LinkByIndex(linkIndex)
|
||||||
|
|||||||
@@ -17,10 +17,15 @@ func (r *Routing) routeInboundFromDefault(defaultRoutes []DefaultRoute) (err err
|
|||||||
return fmt.Errorf("cannot add rule: %w", err)
|
return fmt.Errorf("cannot add rule: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultDestination := net.IPNet{IP: net.IPv4(0, 0, 0, 0), Mask: net.IPv4Mask(0, 0, 0, 0)}
|
defaultDestinationIPv4 := net.IPNet{IP: net.IPv4(0, 0, 0, 0), Mask: net.IPv4Mask(0, 0, 0, 0)}
|
||||||
// TODO IPv6
|
// TODO IPv6
|
||||||
|
|
||||||
for _, defaultRoute := range defaultRoutes {
|
for _, defaultRoute := range defaultRoutes {
|
||||||
|
defaultDestination := defaultDestinationIPv4
|
||||||
|
if defaultRoute.Family == netlink.FAMILY_V6 {
|
||||||
|
continue // skip IPv6 default routes
|
||||||
|
}
|
||||||
|
|
||||||
err := r.addRouteVia(defaultDestination, defaultRoute.Gateway, defaultRoute.NetInterface, inboundTable)
|
err := r.addRouteVia(defaultDestination, defaultRoute.Gateway, defaultRoute.NetInterface, inboundTable)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("cannot add route: %w", err)
|
return fmt.Errorf("cannot add route: %w", err)
|
||||||
@@ -31,9 +36,15 @@ func (r *Routing) routeInboundFromDefault(defaultRoutes []DefaultRoute) (err err
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *Routing) unrouteInboundFromDefault(defaultRoutes []DefaultRoute) (err error) {
|
func (r *Routing) unrouteInboundFromDefault(defaultRoutes []DefaultRoute) (err error) {
|
||||||
defaultDestination := net.IPNet{IP: net.IPv4(0, 0, 0, 0), Mask: net.IPv4Mask(0, 0, 0, 0)}
|
defaultDestinationIPv4 := net.IPNet{IP: net.IPv4(0, 0, 0, 0), Mask: net.IPv4Mask(0, 0, 0, 0)}
|
||||||
|
// TODO IPv6
|
||||||
|
|
||||||
for _, defaultRoute := range defaultRoutes {
|
for _, defaultRoute := range defaultRoutes {
|
||||||
|
defaultDestination := defaultDestinationIPv4
|
||||||
|
if defaultRoute.Family == netlink.FAMILY_V6 {
|
||||||
|
continue // skip IPv6 default routes
|
||||||
|
}
|
||||||
|
|
||||||
err := r.deleteRouteVia(defaultDestination, defaultRoute.Gateway, defaultRoute.NetInterface, inboundTable)
|
err := r.deleteRouteVia(defaultDestination, defaultRoute.Gateway, defaultRoute.NetInterface, inboundTable)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("cannot delete route: %w", err)
|
return fmt.Errorf("cannot delete route: %w", err)
|
||||||
|
|||||||
Reference in New Issue
Block a user