Documentation fixes.
[virt-hostinfo.git] / hostinfod / hostinfod.h
index 9a6fdba..8bb48e6 100644 (file)
@@ -26,6 +26,9 @@
 #include <apr_pools.h>
 #include <apr_network_io.h>
 #include <apr_poll.h>
+#include <apr_hash.h>
+
+#include <libvirt/libvirt.h>
 
 enum guest_state {
   guest_state_connecting,      /* Connecting to socket. */
@@ -58,6 +61,9 @@ struct guest_description {
   /* Increments every time guest does something bad, decremented once per min */
   unsigned penalty;
   struct timespec last_penalty_decr;
+
+  /* Hash records last time each command was run by this guest. */
+  apr_hash_t *lasttime;
 };
 
 enum arg_type {
@@ -78,12 +84,16 @@ struct arg {
 extern const char *conf_file;
 extern char *socket_dir;
 extern char *guests_file;
+extern char *libvirt_uri;
+extern int libvirt_uri_set_on_cmdline;
 extern int verbose;
 extern int verbose_set_on_cmdline;
 extern int foreground;
 extern int foreground_set_on_cmdline;
 extern int messages_to_stderr;
 extern apr_pool_t *pool;       /* pool for global memory allocation */
+extern void initialize (void);
+extern struct timespec *diff_timespec (struct timespec *r, const struct timespec *a, const struct timespec *b); /* r = a - b */
 
 /* error.c */
 extern void init_syslog (void);
@@ -104,6 +114,7 @@ extern void paprerror (apr_status_t r, const char *fs, ...)
 
 /* configuration.c */
 extern void read_main_conf_file (void);
+extern void check_guests_file (struct guest_description *hval, const char *cmd, double *interval, int *enabled);
 
 /* monitor_sockets.c */
 extern int sockets_inotify_fd;
@@ -112,24 +123,35 @@ extern void monitor_socket_dir (void);
 /* commands.c */
 extern apr_hash_t *commands;
 extern void execute_command (const struct timespec *now, struct guest_description *hval, const char *command);
+extern int get_args (apr_array_header_t *args, const char *argfs, ...);
 extern void send_error (struct guest_description *hval, int code);
+extern void send_reply (struct guest_description *hval, int code, const char *fs, ...)
+  __attribute__((format (printf,3,4)));
 
 typedef void (*command_fn) (struct guest_description *hval, const char *cmd, apr_array_header_t *args);
 
-#define REGISTER_COMMAND(name,callback) \
+#define REGISTER_COMMAND(name)                                         \
   static void register_##name (void) __attribute__((constructor));     \
                                                                        \
   static void                                                          \
   register_##name (void)                                               \
   {                                                                    \
+    if (pool == NULL)                                                  \
+      initialize ();                                                   \
+                                                                       \
     if (commands == NULL)                                              \
       commands = apr_hash_make (pool);                                 \
                                                                        \
     /* The assignment below just causes a warning                      \
      * if the callback has the wrong type.                             \
      */                                                                        \
-    command_fn cb = (callback);                                                \
-    apr_hash_set (commands, (name), APR_HASH_KEY_STRING, cb);          \
+    command_fn cb = name;                                              \
+    apr_hash_set (commands, #name, APR_HASH_KEY_STRING, cb);           \
   }
 
+/* virt.c */
+extern void init_libvirt (void);
+extern virConnectPtr conn;
+extern virNodeInfo nodeinfo;
+
 #endif /* HOSTINFOD_H */