Skip to content

Instantly share code, notes, and snippets.

@jftuga
Created December 6, 2021 21:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jftuga/18409ced62f9a59ecbc047800ab8e810 to your computer and use it in GitHub Desktop.
Save jftuga/18409ced62f9a59ecbc047800ab8e810 to your computer and use it in GitHub Desktop.
How to get the default gateway IP address in go
package main
import (
"fmt"
"golang.org/x/net/route"
)
var defaultRoute = [4]byte{0, 0, 0, 0}
func main() {
rib, _ := route.FetchRIB(0, route.RIBTypeRoute, 0)
messages, err := route.ParseRIB(route.RIBTypeRoute, rib)
if err != nil {
return
}
for _, message := range messages {
route_message := message.(*route.RouteMessage)
addresses := route_message.Addrs
var destination, gateway *route.Inet4Addr
ok := false
if destination, ok = addresses[0].(*route.Inet4Addr); !ok {
continue
}
if gateway, ok = addresses[1].(*route.Inet4Addr); !ok {
continue
}
if destination == nil || gateway == nil {
continue
}
if destination.IP == defaultRoute {
fmt.Println(gateway.IP)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment