summaryrefslogtreecommitdiffhomepage
path: root/dhcpv4/option_domain_name_server.go
diff options
context:
space:
mode:
Diffstat (limited to 'dhcpv4/option_domain_name_server.go')
-rw-r--r--dhcpv4/option_domain_name_server.go23
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.