From 93dbaf95ae931da311e1671fd0f470f2aa5f6980 Mon Sep 17 00:00:00 2001 From: Chris Koch Date: Sat, 18 Feb 2023 23:55:40 -0800 Subject: dhcpv6: proper DUID types Signed-off-by: Chris Koch --- dhcpv6/iputils.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'dhcpv6/iputils.go') diff --git a/dhcpv6/iputils.go b/dhcpv6/iputils.go index d2cac47..c4926e1 100644 --- a/dhcpv6/iputils.go +++ b/dhcpv6/iputils.go @@ -90,8 +90,15 @@ func ExtractMAC(packet DHCPv6) (net.HardwareAddr, error) { if duid == nil { return nil, fmt.Errorf("client ID not found in packet") } - if duid.LinkLayerAddr == nil { - return nil, fmt.Errorf("failed to extract MAC") + switch d := duid.(type) { + case *DUIDLL: + if d.LinkLayerAddr != nil { + return d.LinkLayerAddr, nil + } + case *DUIDLLT: + if d.LinkLayerAddr != nil { + return d.LinkLayerAddr, nil + } } - return duid.LinkLayerAddr, nil + return nil, fmt.Errorf("failed to extract MAC") } -- cgit v1.2.3