factored the source into smaller files covering single functionality
[rxpd] / src / rxpd.h
index 3da0383..649e0a4 100644 (file)
@@ -30,6 +30,7 @@
 #include <stdarg.h>
 #include <unistd.h>
 #include <regex.h>
+#include <syslog.h>
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <sys/types.h>
@@ -69,18 +70,40 @@ struct rxpd_connection;
 
 struct rxpd_base
 {
-  char* rulesdir;
-  psplayroot files;
+  char* basedir;
+
+  int verbosity;
+  int regflags;
+  int daemonize;
+
+  struct rxpd_file* policy;
+  struct event_base* eventbase;
 
+  // TODO
+  //FILE* -l log      log hits to logfile
+
+  psplayroot files;
   llist sockets;
 };
 
 struct rxpd_base*
-rxpd_init (char* rulesdir);
+rxpd_init (struct event_base* eventbase);
 
 void
 rxpd_destroy (void);
 
+void
+rxpd_log (struct rxpd_base*, int level, const char* fmt, ...);
+
+void
+rxpd_die (const char* fmt, ...);
+
+void*
+rxpd_malloc (size_t size);
+
+char*
+rxpd_strdup (const char* str);
+
 
 //
 struct rxpd_rule
@@ -104,6 +127,7 @@ struct rxpd_file
   psplay node;          // key points to basename part of filename
   const char* filename; // full filename
   //TODO later     struct stat last_stat;
+  struct rxpd_base* base;
   llist rules;
 };
 
@@ -131,12 +155,17 @@ struct rxpd_socket
   int fd;
   struct event ev;
   struct rxpd_base* base;
+  int (*rxpd_socket_addr)(struct rxpd_connection* conn, char* dst, const char* pfx, size_t size);
 };
 
 
 struct rxpd_socket*
 rxpd_socket_new_tcp4 (struct rxpd_base* base, const char* addr, unsigned short port);
 
+int
+rxpd_socket_tcp4addr (struct rxpd_connection* conn, char* dst, const char* pfx, size_t size);
+
+//TODO
 //struct rxpd_socket*
 //rxpd_socket_new_unix (struct rxpd_base* base, const char* name);
 
@@ -177,6 +206,9 @@ rxpd_buffer_init (struct rxpd_buffer* self, struct rxpd_connection* conn);
 char*
 rxpd_buffer_readline (struct rxpd_buffer* self, int again);
 
+int
+rxpd_buffer_printf (struct rxpd_buffer* self, const char* fmt, ...);
+
 inline static enum rxpd_buffer_state_e
 rxpd_buffer_state (struct rxpd_buffer* self)
 {
@@ -189,32 +221,31 @@ struct rxpd_connection
 {
   int fd;
   struct event ev;
-  struct rxpd_base* base;
   struct rxpd_file* file;
+  struct rxpd_socket* socket;
   char* tmp_str;
   llist tmp_list;
 
-  struct sockaddr peer_addr;
-
   struct rxpd_buffer in;
   struct rxpd_buffer out;
 };
 
 
 struct rxpd_connection*
-rxpd_connection_new (struct rxpd_base* base, int accept_fd);
+rxpd_connection_new (struct rxpd_socket* socket, int accept_fd);
 
 void
 rxpd_connection_delete (struct rxpd_connection* self);
 
-
 struct rxpd_connection*
 rxpd_connection_schedule (struct rxpd_connection* self);
 
-
 int
 rxpd_connection_readline (struct rxpd_connection* self);
 
+int
+rxpd_connection_check_policy (struct rxpd_connection* self, char* line);
+
 void
 rxpd_connection_parse_cmd (int fd, short event, void* ptr);