23 lines
408 B
Go
23 lines
408 B
Go
//go:build linux
|
|
|
|
package netif
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
|
|
"github.com/vishvananda/netlink"
|
|
)
|
|
|
|
func GetDefaultGateway() (net.IP, error) {
|
|
routes, err := netlink.RouteList(nil, netlink.FAMILY_V4)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("list routes: %w", err)
|
|
}
|
|
for _, r := range routes {
|
|
if r.Dst == nil && r.Gw != nil {
|
|
return r.Gw, nil
|
|
}
|
|
}
|
|
return nil, fmt.Errorf("no default gateway found")
|
|
}
|