summaryrefslogtreecommitdiffhomepage
path: root/dhcpv6/dhcpv6.go
diff options
context:
space:
mode:
Diffstat (limited to 'dhcpv6/dhcpv6.go')
-rw-r--r--dhcpv6/dhcpv6.go11
1 files changed, 9 insertions, 2 deletions
diff --git a/dhcpv6/dhcpv6.go b/dhcpv6/dhcpv6.go
index fe096a6..97eb401 100644
--- a/dhcpv6/dhcpv6.go
+++ b/dhcpv6/dhcpv6.go
@@ -8,6 +8,7 @@ type DHCPv6 interface {
Type() MessageType
ToBytes() []byte
Summary() string
+ Length() int
}
func FromBytes(data []byte) (DHCPv6, error) {
@@ -28,16 +29,22 @@ func FromBytes(data []byte) (DHCPv6, error) {
return nil, fmt.Errorf("Invalid header size: shorter than %v bytes", headerSize)
}
if isRelay {
+ var (
+ linkAddr, peerAddr []byte
+ )
d := DHCPv6Relay{
messageType: messageType,
hopCount: uint8(data[1]),
- linkAddr: append(data[2:18]),
- peerAddr: append(data[18:34]),
}
+ linkAddr = append(linkAddr, data[2:18]...)
+ d.linkAddr = linkAddr
+ peerAddr = append(peerAddr, data[18:34]...)
+ d.peerAddr = peerAddr
options, err := OptionsFromBytes(data[34:])
if err != nil {
return nil, err
}
+ // TODO fail if no OptRelayMessage is present
d.options = options
return &d, nil
} else {