code: func parseIP(str string, family AddressFamily) (net.IP, error) {
  	if str == "" {
  		return nil, fmt.Errorf("input is nil")
  	}
  	bytes, err := hex.DecodeString(str)
  	if err != nil {
  		return nil, err
  	}
  	if family == familyIPv4 {
  		if len(bytes) != net.IPv4len {
  			return nil, fmt.Errorf("invalid IPv4 address in route")
  		}
  		return net.IP([]byte{bytes[3], bytes[2], bytes[1], bytes[0]}), nil
  	}
  	// Must be IPv6
  	if len(bytes) != net.IPv6len {
  		return nil, fmt.Errorf("invalid IPv6 address in route")
  	}
  	return net.IP(bytes), nil
  }
docs: // parseIP takes the hex IP address string from route file and converts it
  // to a net.IP address. For IPv4, the value must be converted to big endian.