//go:build linux package tendrils import ( "bufio" "net" "os/exec" "strings" ) func (t *Tendrils) parseARPTable() []arpEntry { cmd := exec.Command("cat", "/proc/net/arp") output, err := cmd.Output() if err != nil { return nil } var entries []arpEntry scanner := bufio.NewScanner(strings.NewReader(string(output))) first := true for scanner.Scan() { if first { first = false continue } line := scanner.Text() fields := strings.Fields(line) if len(fields) < 6 { continue } ip := net.ParseIP(fields[0]) if ip == nil { continue } macStr := fields[3] if macStr == "00:00:00:00:00:00" { continue } mac, err := net.ParseMAC(macStr) if err != nil { continue } ifaceName := fields[5] entries = append(entries, arpEntry{ ip: ip, mac: mac, iface: ifaceName, }) } return entries }