Account for all IP protocols.
[darkstat] / hosts_db.h
index 4b324ba..5c153b4 100644 (file)
@@ -1,5 +1,5 @@
 /* darkstat 3
- * copyright (c) 2001-2008 Emil Mikulic.
+ * copyright (c) 2001-2014 Emil Mikulic.
  *
  * hosts_db.h: database of hosts, ports, protocols.
  *
@@ -9,26 +9,20 @@
 #ifndef __DARKSTAT_HOSTS_DB_H
 #define __DARKSTAT_HOSTS_DB_H
 
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include "str.h"
+#include <sys/types.h> /* for uint64_t */
 
-struct addr46 {
-   sa_family_t af;
-   union {
-      struct in_addr ip;
-      struct in6_addr ip6;
-   } addr;
-};
+#include "addr.h"
 
 struct hashtable;
 
 struct host {
-   struct addr46 ipaddr;
+   struct addr addr;
    char *dns;
    uint8_t mac_addr[6];
-   time_t last_seen;
+   /* last_seen_mono is converted to/from time_t in export/import.
+    * It can be negative (due to machine reboots).
+    */
+   int64_t last_seen_mono;
    struct hashtable *ports_tcp, *ports_udp, *ip_protos;
 };
 
@@ -58,13 +52,7 @@ struct bucket {
 
 enum sort_dir { IN, OUT, TOTAL, LASTSEEN };
 
-extern int show_mac_addrs;
-
-/*
- * Table reduction - when the number of entries is about to exceed <max>, we
- * reduce the table to the top <keep> entries.
- */
-extern unsigned int hosts_max, hosts_keep, ports_max, ports_keep;
+extern int hosts_db_show_macs;
 
 void hosts_db_init(void);
 void hosts_db_reduce(void);
@@ -73,8 +61,8 @@ void hosts_db_free(void);
 int hosts_db_import(const int fd);
 int hosts_db_export(const int fd);
 
-struct bucket *host_find(const struct addr46 *const ip); /* can return NULL */
-struct bucket *host_get(const struct addr46 *const ip);
+struct bucket *host_find(const struct addr *const a); /* can return NULL */
+struct bucket *host_get(const struct addr *const a);
 struct bucket *host_get_port_tcp(struct bucket *host, const uint16_t port);
 struct bucket *host_get_port_udp(struct bucket *host, const uint16_t port);
 struct bucket *host_get_ip_proto(struct bucket *host, const uint8_t proto);