]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
host-os-info: update radix lookups
authorVictor Julien <victor@inliniac.net>
Fri, 20 Dec 2013 13:37:10 +0000 (14:37 +0100)
committerVictor Julien <victor@inliniac.net>
Fri, 7 Feb 2014 16:16:15 +0000 (17:16 +0100)
Update host OS lookups to use the new API.

The return of user_data is treated as a succesful lookup, instead of
the node.

src/util-host-os-info.c

index 2714d6d0b40bf0238c528d89f313b94b704630a4..8438d198971b60e2e02be173e8a004243962a4e6 100644 (file)
@@ -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)