setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, &filter_prog,
sizeof(filter_prog));
+ memset(&sock, 0, sizeof(sock));
sock.sll_family = AF_PACKET;
sock.sll_protocol = htons(ETH_P_IP);
sock.sll_ifindex = ifindex;
return ret;
}
-static GList *get_option_value_list(char *value)
+static GList *get_option_value_list(char *value, GDHCPOptionType type)
{
char *pos = value;
GList *list = NULL;
if (pos == NULL)
return NULL;
+ if (type == OPTION_STRING)
+ return g_list_append(list, g_strdup(value));
+
while ((pos = strchr(pos, ' ')) != NULL) {
*pos = '\0';
g_hash_table_remove(dhcp_client->code_value_hash,
GINT_TO_POINTER((int) code));
- value_list = get_option_value_list(option_value);
+ value_list = get_option_value_list(option_value, type);
g_free(option_value);
message_type = dhcp_get_option(&packet, DHCP_MESSAGE_TYPE);
if (message_type == NULL)
- /* No message type option, ignore pakcage */
+ /* No message type option, ignore package */
return TRUE;
debug(dhcp_client, "received DHCP packet (current state %d)",