From eed709df9494fb0c994e41d7b8360a2f1b137b6e Mon Sep 17 00:00:00 2001 From: Chris Koch Date: Sat, 28 Dec 2019 05:55:41 -0800 Subject: v6: introduce Prefix options IAPD has PDOptions which allows IAPrefix and StatusCode. IAPrefix has PrefixOptions which allow StatusCode. Signed-off-by: Chris Koch --- dhcpv6/modifiers.go | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'dhcpv6/modifiers.go') diff --git a/dhcpv6/modifiers.go b/dhcpv6/modifiers.go index 95f49d1..96fbf4b 100644 --- a/dhcpv6/modifiers.go +++ b/dhcpv6/modifiers.go @@ -33,7 +33,7 @@ func WithNetboot(d DHCPv6) { func WithFQDN(flags uint8, domainname string) Modifier { return func(d DHCPv6) { d.UpdateOption(&OptFQDN{ - Flags: flags, + Flags: flags, DomainName: &rfc1035label.Labels{ Labels: []string{domainname}, }, @@ -136,19 +136,19 @@ func WithDHCP4oDHCP6Server(addrs ...net.IP) Modifier { // WithIAPD adds or updates an IAPD option with the provided IAID and // prefix options to a DHCPv6 packet. -func WithIAPD(iaid [4]byte, prefixes ...OptIAPrefix) Modifier { +func WithIAPD(iaid [4]byte, prefixes ...*OptIAPrefix) Modifier { return func(d DHCPv6) { - opt := d.GetOneOption(OptionIAPD) - if opt == nil { - opt = &OptIAForPrefixDelegation{} - } - iaPd := opt.(*OptIAForPrefixDelegation) - - copy(iaPd.IaId[:], iaid[:]) + if msg, ok := d.(*Message); ok { + opt := msg.Options.OneIAPD() + if opt == nil { + opt = &OptIAPD{} + } + copy(opt.IaId[:], iaid[:]) - for _, prefix := range prefixes { - iaPd.Options.Add(&prefix) + for _, prefix := range prefixes { + opt.Options.Add(prefix) + } + d.UpdateOption(opt) } - d.UpdateOption(iaPd) } } -- cgit v1.2.3