add -i flag to filter by single interface

This commit is contained in:
Ian Gulliver
2026-01-17 20:54:58 -08:00
parent 0d36c21db2
commit 477b6e9c99
3 changed files with 15 additions and 2 deletions

3
arp.go
View File

@@ -37,6 +37,9 @@ func (t *Tendrils) readARPTable() {
entries := t.parseARPTable()
for _, entry := range entries {
if t.iface != "" && entry.iface != t.iface {
continue
}
if isBroadcastOrZero(entry.mac) {
continue
}

View File

@@ -1,10 +1,15 @@
package main
import (
"flag"
"github.com/gopatchy/tendrils"
)
func main() {
t := tendrils.New()
iface := flag.String("i", "", "interface to use (default: all interfaces)")
flag.Parse()
t := tendrils.New(*iface)
t.Run()
}

View File

@@ -11,12 +11,14 @@ import (
type Tendrils struct {
activeInterfaces map[string]context.CancelFunc
nodes *Nodes
iface string
}
func New() *Tendrils {
func New(iface string) *Tendrils {
return &Tendrils{
activeInterfaces: map[string]context.CancelFunc{},
nodes: NewNodes(),
iface: iface,
}
}
@@ -88,6 +90,9 @@ func (t *Tendrils) listInterfaces() []net.Interface {
var validInterfaces []net.Interface
for _, iface := range interfaces {
if t.iface != "" && iface.Name != t.iface {
continue
}
if iface.Flags&net.FlagUp == 0 {
continue
}