diff options
-rw-r--r-- | dhcpv6/option_nontemporaryaddress.go | 6 | ||||
-rw-r--r-- | dhcpv6/option_nontemporaryaddress_test.go | 21 |
2 files changed, 27 insertions, 0 deletions
diff --git a/dhcpv6/option_nontemporaryaddress.go b/dhcpv6/option_nontemporaryaddress.go index 9f91b18..5debeec 100644 --- a/dhcpv6/option_nontemporaryaddress.go +++ b/dhcpv6/option_nontemporaryaddress.go @@ -45,6 +45,12 @@ func (op *OptIANA) String() string { op.IaId, op.T1, op.T2, op.Options) } +// GetOneOption will get an option of the give type from the Options field, if +// it is present. It will return `nil` otherwise +func (op *OptIANA) GetOneOption(code OptionCode) Option { + return getOption(op.Options, code) +} + // DelOption will remove all the options that match a Option code. func (op *OptIANA) DelOption(code OptionCode) { op.Options = delOption(op.Options, code) diff --git a/dhcpv6/option_nontemporaryaddress_test.go b/dhcpv6/option_nontemporaryaddress_test.go index a9e7087..54df8f0 100644 --- a/dhcpv6/option_nontemporaryaddress_test.go +++ b/dhcpv6/option_nontemporaryaddress_test.go @@ -1,6 +1,7 @@ package dhcpv6 import ( + "net" "testing" "github.com/stretchr/testify/require" @@ -39,6 +40,26 @@ func TestOptIANAParseOptIANAInvalidOptions(t *testing.T) { require.Error(t, err) } +func TestOptIANAGetOneOption(t *testing.T) { + oaddr := &OptIAAddress{ + IPv6Addr: net.ParseIP("::1"), + } + opt := OptIANA{ + Options: []Option{&OptElapsedTime{}, oaddr}, + } + require.Equal(t, oaddr, opt.GetOneOption(OPTION_IAADDR)) +} + +func TestOptIANAGetOneOptionMissingOpt(t *testing.T) { + oaddr := &OptIAAddress{ + IPv6Addr: net.ParseIP("::1"), + } + opt := OptIANA{ + Options: []Option{&OptElapsedTime{}, oaddr}, + } + require.Equal(t, nil, opt.GetOneOption(DNS_RECURSIVE_NAME_SERVER)) +} + func TestOptIANADelOption(t *testing.T) { optiana1 := OptIANA{} optiana2 := OptIANA{} |