master
 1package get
 2
 3import (
 4	"fmt"
 5	"net"
 6
 7	"github.com/libp2p/go-netroute"
 8)
 9
10// unix: `netstat -nr -f inet`
11// get iface-owned app: `ifconfig -v utun3 | grep "agent domain"`
12
13func getIface() (string, error) {
14	r, err := netroute.New()
15	if err != nil {
16		return "", fmt.Errorf("error initializing netroute: %w", err)
17	}
18
19	iface, _, _, err := r.Route(
20		net.IPv4(104, 16, 133, 229), // cloudflare
21	)
22	if err != nil {
23		return "", fmt.Errorf("error retrieving net route: %w", err)
24	}
25	//fmt.Printf("%v, %v, %v, %v\n", iface, gw, src, err)
26
27	return iface.Name, nil
28}
29
30func Iface() error {
31	iface, err := getIface()
32	if err != nil {
33		return err
34	}
35	fmt.Println(iface)
36	return nil
37}