From c602f1d6b6d6d1b506e66ae63fc94d1f37b370f5 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sat, 20 Jul 2019 10:50:30 +0200 Subject: [PATCH] dhcp4d: introduce -interface flag --- cmd/dhcp4d/dhcp4d.go | 10 ++++++++-- internal/dhcp4d/dhcp4d.go | 6 +++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/cmd/dhcp4d/dhcp4d.go b/cmd/dhcp4d/dhcp4d.go index 50c3c4a..7eb798d 100644 --- a/cmd/dhcp4d/dhcp4d.go +++ b/cmd/dhcp4d/dhcp4d.go @@ -42,6 +42,8 @@ import ( "github.com/rtr7/router7/internal/teelogger" ) +var iface = flag.String("interface", "lan0", "ethernet interface to listen for DHCPv4 requests on") + var log = teelogger.NewConsole() var nonExpiredLeases = promauto.NewGauge(prometheus.GaugeOpts{ @@ -137,7 +139,11 @@ func logic() error { return err } errs := make(chan error) - handler, err := dhcp4d.NewHandler("/perm", nil, nil) + ifc, err := net.InterfaceByName(*iface) + if err != nil { + return err + } + handler, err := dhcp4d.NewHandler("/perm", ifc, *iface, nil) if err != nil { return err } @@ -163,7 +169,7 @@ func logic() error { log.Printf("notifying dnsd: %v", err) } } - conn, err := conn.NewUDP4BoundListener("lan0", ":67") // TODO: customizeable + conn, err := conn.NewUDP4BoundListener(*iface, ":67") if err != nil { return err } diff --git a/internal/dhcp4d/dhcp4d.go b/internal/dhcp4d/dhcp4d.go index ea84de2..29e1e2c 100644 --- a/internal/dhcp4d/dhcp4d.go +++ b/internal/dhcp4d/dhcp4d.go @@ -59,13 +59,13 @@ type Handler struct { Leases func([]*Lease, *Lease) } -func NewHandler(dir string, iface *net.Interface, conn net.PacketConn) (*Handler, error) { - serverIP, err := netconfig.LinkAddress(dir, "lan0") +func NewHandler(dir string, iface *net.Interface, ifaceName string, conn net.PacketConn) (*Handler, error) { + serverIP, err := netconfig.LinkAddress(dir, ifaceName) if err != nil { return nil, err } if iface == nil { - iface, err = net.InterfaceByName("lan0") + iface, err = net.InterfaceByName(ifaceName) if err != nil { return nil, err }