summaryrefslogtreecommitdiffhomepage
path: root/dhcpv6
diff options
context:
space:
mode:
Diffstat (limited to 'dhcpv6')
-rw-r--r--dhcpv6/dhcpv6.go1
-rw-r--r--dhcpv6/dhcpv6relay.go11
2 files changed, 12 insertions, 0 deletions
diff --git a/dhcpv6/dhcpv6.go b/dhcpv6/dhcpv6.go
index 7b8ab72..329d8b2 100644
--- a/dhcpv6/dhcpv6.go
+++ b/dhcpv6/dhcpv6.go
@@ -17,6 +17,7 @@ type DHCPv6 interface {
GetOneOption(code OptionCode) Option
SetOptions(options []Option)
AddOption(Option)
+ UpdateOption(Option)
}
// Modifier defines the signature for functions that can modify DHCPv6
diff --git a/dhcpv6/dhcpv6relay.go b/dhcpv6/dhcpv6relay.go
index 513d25a..2deef5c 100644
--- a/dhcpv6/dhcpv6relay.go
+++ b/dhcpv6/dhcpv6relay.go
@@ -121,6 +121,17 @@ func (r *DHCPv6Relay) AddOption(option Option) {
r.options = append(r.options, option)
}
+// UpdateOption replaces the first option of the same type as the specified one.
+func (r *DHCPv6Relay) UpdateOption(option Option) {
+ for idx, opt := range d.options {
+ if opt.Code() == option.Code() {
+ d.options[idx] = option
+ // don't look further
+ break
+ }
+ }
+}
+
func (r *DHCPv6Relay) IsRelay() bool {
return true
}