aboutsummaryrefslogtreecommitdiff
path: root/dpid/dpid.h
diff options
context:
space:
mode:
Diffstat (limited to 'dpid/dpid.h')
-rw-r--r--dpid/dpid.h103
1 files changed, 103 insertions, 0 deletions
diff --git a/dpid/dpid.h b/dpid/dpid.h
new file mode 100644
index 00000000..2a41f538
--- /dev/null
+++ b/dpid/dpid.h
@@ -0,0 +1,103 @@
+/*! \file
+ * Main functions to set-up dpi information and to initialise sockets
+ */
+
+#ifndef DPID_H
+#define DPID_H
+
+#include <assert.h>
+#include <signal.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+#include <sys/un.h>
+#include <errno.h>
+
+#include "d_size.h"
+
+
+#define PATH_LEN 50
+#define CMDLEN 20
+#define MSGLEN 50
+/*! \todo: Should read this from dillorc */
+#define SRS_NAME "dpid.srs"
+char *srs_name;
+
+/*! dpid service request socket */
+int srs;
+
+/*! plugin state information
+ */
+struct dp {
+ char *id;
+ char *path;
+ char *sockpath;
+ int socket;
+ struct sockaddr_un sa;
+ pid_t pid;
+ int filter;
+};
+
+/*! Number of available plugins */
+int numdpis;
+
+/*! Number of sockets being watched */
+int numsocks;
+
+/*! State information for each plugin. */
+struct dp *dpi_attr_list;
+
+/*! Set of sockets watched for connections */
+fd_set sock_set;
+
+/*! Set to 1 by the SIGCHLD handler dpi_sigchld */
+extern volatile sig_atomic_t caught_sigchld;
+
+void rm_dpi_sockets(struct dp *dpi_attr_list, int numdpis);
+
+int rm_inactive_dpi_sockets(struct dp *dpi_attr_list, int numdpis);
+
+void cleanup(char *socket_dir);
+
+void free_dpi_attr(struct dp *dpi_attr);
+
+void free_plugin_list(struct dp **dpi_attr_list_ptr, int numdpis);
+
+enum file_type get_file_type(char *file_name);
+
+int get_dpi_attr(char *dpi_dir, char *service, struct dp *dpi_attr);
+
+int register_service(struct dp *dpi_attr, char *service);
+
+int register_all(struct dp **attlist);
+
+int init_srs_socket(char *sockdir);
+
+int init_dpi_socket(struct dp *dpi_attr, char *sockdir);
+
+int init_all_dpi_sockets(struct dp *dpi_attr_list, char *sockdir);
+
+void dpi_sigchld(int sig);
+
+void handle_sigchld(void);
+
+void est_dpi_sigchld(void);
+
+void stop_active_dpis(struct dp *dpi_attr_list, int numdpis);
+
+void ignore_dpi_sockets(struct dp *dpi_attr_list, int numdpis);
+
+int register_all_cmd(char *sockdir);
+
+char *get_message(int sock, char *dpi_tag);
+
+void send_sockpath(int sock, char * dpi_tag, struct dp *dpi_attr_list);
+
+#endif