host-os-info: update radix lookups

Update host OS lookups to use the new API.

The return of user_data is treated as a succesful lookup, instead of
the node.
pull/835/head
Victor Julien 12 years ago
parent fd193107de
commit b75eb77295

@ -248,9 +248,9 @@ int SCHInfoAddHostOSInfo(char *host_os, char *host_os_ip_range, int is_ipv4)
*/
int SCHInfoGetHostOSFlavour(char *ip_addr_str)
{
SCRadixNode *node = NULL;
struct in_addr *ipv4_addr = NULL;
struct in6_addr *ipv6_addr = NULL;
void *user_data = NULL;
if (ip_addr_str == NULL || index(ip_addr_str, '/') != NULL)
return -1;
@ -261,20 +261,22 @@ int SCHInfoGetHostOSFlavour(char *ip_addr_str)
return -1;
}
if ( (node = SCRadixFindKeyIPV6BestMatch((uint8_t *)ipv6_addr, sc_hinfo_tree)) == NULL)
(void)SCRadixFindKeyIPV6BestMatch((uint8_t *)ipv6_addr, sc_hinfo_tree, &user_data);
if (user_data == NULL)
return -1;
else
return *((int *)node->prefix->user_data_result);
return *((int *)user_data);
} else {
if ( (ipv4_addr = ValidateIPV4Address(ip_addr_str)) == NULL) {
SCLogError(SC_ERR_INVALID_IPV4_ADDR, "Invalid IPV4 address");
return -1;
}
if ( (node = SCRadixFindKeyIPV4BestMatch((uint8_t *)ipv4_addr, sc_hinfo_tree)) == NULL)
(void)SCRadixFindKeyIPV4BestMatch((uint8_t *)ipv4_addr, sc_hinfo_tree, &user_data);
if (user_data == NULL)
return -1;
else
return *((int *)node->prefix->user_data_result);
return *((int *)user_data);
}
}
@ -288,11 +290,12 @@ int SCHInfoGetHostOSFlavour(char *ip_addr_str)
*/
int SCHInfoGetIPv4HostOSFlavour(uint8_t *ipv4_addr)
{
SCRadixNode *node = SCRadixFindKeyIPV4BestMatch(ipv4_addr, sc_hinfo_tree);
if (node == NULL)
void *user_data = NULL;
(void)SCRadixFindKeyIPV4BestMatch(ipv4_addr, sc_hinfo_tree, &user_data);
if (user_data == NULL)
return -1;
else
return *((int *)node->prefix->user_data_result);
return *((int *)user_data);
}
/**
@ -305,11 +308,12 @@ int SCHInfoGetIPv4HostOSFlavour(uint8_t *ipv4_addr)
*/
int SCHInfoGetIPv6HostOSFlavour(uint8_t *ipv6_addr)
{
SCRadixNode *node = SCRadixFindKeyIPV6BestMatch(ipv6_addr, sc_hinfo_tree);
if (node == NULL)
void *user_data = NULL;
(void)SCRadixFindKeyIPV6BestMatch(ipv6_addr, sc_hinfo_tree, &user_data);
if (user_data == NULL)
return -1;
else
return *((int *)node->prefix->user_data_result);
return *((int *)user_data);
}
void SCHInfoCleanResources(void)

Loading…
Cancel
Save