summaryrefslogtreecommitdiffhomepage
path: root/dhcpv4/option_ip_address_lease_time.go
diff options
context:
space:
mode:
Diffstat (limited to 'dhcpv4/option_ip_address_lease_time.go')
-rw-r--r--dhcpv4/option_ip_address_lease_time.go19
1 files changed, 5 insertions, 14 deletions
diff --git a/dhcpv4/option_ip_address_lease_time.go b/dhcpv4/option_ip_address_lease_time.go
index 7562c58..2f63fb7 100644
--- a/dhcpv4/option_ip_address_lease_time.go
+++ b/dhcpv4/option_ip_address_lease_time.go
@@ -3,6 +3,8 @@ package dhcpv4
import (
"encoding/binary"
"fmt"
+
+ "github.com/u-root/u-root/pkg/uio"
)
// This option implements the IP Address Lease Time option
@@ -16,20 +18,9 @@ type OptIPAddressLeaseTime struct {
// ParseOptIPAddressLeaseTime constructs an OptIPAddressLeaseTime struct from a
// sequence of bytes and returns it, or an error.
func ParseOptIPAddressLeaseTime(data []byte) (*OptIPAddressLeaseTime, error) {
- // Should at least have code, length, and lease time.
- if len(data) < 6 {
- return nil, ErrShortByteStream
- }
- code := OptionCode(data[0])
- if code != OptionIPAddressLeaseTime {
- return nil, fmt.Errorf("expected option %v, got %v instead", OptionIPAddressLeaseTime, code)
- }
- length := int(data[1])
- if length != 4 {
- return nil, fmt.Errorf("expected length 4, got %v instead", length)
- }
- leaseTime := binary.BigEndian.Uint32(data[2:6])
- return &OptIPAddressLeaseTime{LeaseTime: leaseTime}, nil
+ buf := uio.NewBigEndianBuffer(data)
+ leaseTime := buf.Read32()
+ return &OptIPAddressLeaseTime{LeaseTime: leaseTime}, buf.FinError()
}
// Code returns the option code.