diff options
Diffstat (limited to 'dhcpv4/option_domain_name_server.go')
-rw-r--r-- | dhcpv4/option_domain_name_server.go | 23 |
1 files changed, 4 insertions, 19 deletions
diff --git a/dhcpv4/option_domain_name_server.go b/dhcpv4/option_domain_name_server.go index 470eaa0..8633cc4 100644 --- a/dhcpv4/option_domain_name_server.go +++ b/dhcpv4/option_domain_name_server.go @@ -17,26 +17,11 @@ type OptDomainNameServer struct { // ParseOptDomainNameServer returns a new OptDomainNameServer from a byte // stream, or error if any. func ParseOptDomainNameServer(data []byte) (*OptDomainNameServer, error) { - if len(data) < 2 { - return nil, ErrShortByteStream + ips, err := ParseIPs(data) + if err != nil { + return nil, err } - code := OptionCode(data[0]) - if code != OptionDomainNameServer { - return nil, fmt.Errorf("expected code %v, got %v", OptionDomainNameServer, code) - } - length := int(data[1]) - if length == 0 || length%4 != 0 { - return nil, fmt.Errorf("Invalid length: expected multiple of 4 larger than 4, got %v", length) - } - if len(data) < 2+length { - return nil, ErrShortByteStream - } - nameservers := make([]net.IP, 0, length%4) - for idx := 0; idx < length; idx += 4 { - b := data[2+idx : 2+idx+4] - nameservers = append(nameservers, net.IPv4(b[0], b[1], b[2], b[3])) - } - return &OptDomainNameServer{NameServers: nameservers}, nil + return &OptDomainNameServer{NameServers: ips}, nil } // Code returns the option code. |