@@ -11,6 +11,8 @@ import (
1111 "strings"
1212 "time"
1313
14+ "github.com/insomniacslk/dhcp/dhcpv4/client4"
15+ "github.com/insomniacslk/dhcp/dhcpv6/client6"
1416 "github.com/prometheus/client_golang/prometheus/promhttp"
1517 "github.com/vishvananda/netlink"
1618)
@@ -66,19 +68,29 @@ func main() {
6668 dnsTargetsList := strings .Split (dnsTargets , "," )
6769 icmpTargetsList := strings .Split (icmpTargets , "," )
6870
71+ ipv4DhcpClient := client4.Client {
72+ ReadTimeout : interval ,
73+ WriteTimeout : interval ,
74+ }
75+
76+ ipv6DhcpClient := client6.Client {
77+ ReadTimeout : interval ,
78+ WriteTimeout : interval ,
79+ }
80+
6981 http .Handle ("/metrics" , promhttp .Handler ())
7082
7183 go func () {
7284 for {
7385
7486 if ! disable4 {
75- if err := observeIPv4 (link ); err != nil {
87+ if err := observeIPv4 (link , ipv4DhcpClient ); err != nil {
7688 slog .Warn ("issue with ipv4" , "err" , err )
7789 }
7890 }
7991
8092 if ! disable6 {
81- if err := observeIPv6 (link ); err != nil {
93+ if err := observeIPv6 (link , ipv6DhcpClient ); err != nil {
8294 slog .Warn ("issue with ipv6" , "err" , err )
8395 }
8496 }
@@ -104,8 +116,8 @@ func main() {
104116 }
105117}
106118
107- func observeIPv4 (link netlink.Link ) error {
108- ip , prefix , err := sampleDhcp (iface , verbose )
119+ func observeIPv4 (link netlink.Link , client client4. Client ) error {
120+ ip , prefix , err := sampleDhcp (client , verbose )
109121 if err != nil {
110122 return fmt .Errorf ("DHCPv4 sampling failed: %w" , err )
111123 }
@@ -135,8 +147,8 @@ func observeIPv4(link netlink.Link) error {
135147 return nil
136148}
137149
138- func observeIPv6 (link netlink.Link ) error {
139- ip6 , prefix6 , err := sampleDhcp6 (iface , verbose )
150+ func observeIPv6 (link netlink.Link , client client6. Client ) error {
151+ ip6 , prefix6 , err := sampleDhcp6 (client , verbose )
140152 if err != nil {
141153 return fmt .Errorf ("DHCPv6 sampling failed: %w" , err )
142154 }
0 commit comments