summaryrefslogtreecommitdiff
path: root/src/irmd/apn_table.h
diff options
context:
space:
mode:
authordimitri staessens <[email protected]>2016-08-20 10:42:36 +0200
committerdimitri staessens <[email protected]>2016-08-21 18:32:12 +0200
commit0efb1ff527ce3fb50d4c72c02904fa1cdd1e3a66 (patch)
tree9c0adf0b6ef3b9350c13939f6d40c79eca7546fd /src/irmd/apn_table.h
parentba27593e3e8406e109393ae383f17c7416675c1e (diff)
downloadouroboros-0efb1ff527ce3fb50d4c72c02904fa1cdd1e3a66.tar.gz
ouroboros-0efb1ff527ce3fb50d4c72c02904fa1cdd1e3a66.zip
irmd, lib: Rebuild the IRMd data model
The complete data model inside the IRMd has been restructured. The bind operation was revised to allow binding of AP and AP instances and register those names with different DIFs (see "irm bind" for details). Server applications require to call ap_init with a server name argument, client application that do not the be reachable over any DIF can call ap_init(NULL). Calling ap_init for a client with a specified name will not have adverse consequences for the application, but will consume unnecessary resources in the IRMd. Application servers can now be started at any point after the IRMd has been started. Starting servers, binding AP names and registering names in DIFs can be performed in any order that does not defy temporal logic. Supports naming instances by their pid. In case of IPCP Instances created with the IRM tool, the name assigned during "irm ipcp create" can be used. All the changes required updates in the tools.
Diffstat (limited to 'src/irmd/apn_table.h')
-rw-r--r--src/irmd/apn_table.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/irmd/apn_table.h b/src/irmd/apn_table.h
new file mode 100644
index 00000000..88a2548a
--- /dev/null
+++ b/src/irmd/apn_table.h
@@ -0,0 +1,62 @@
+/*
+ * Ouroboros - Copyright (C) 2016
+ *
+ * The IPC Resource Manager - Application Process Names Table
+ *
+ * Dimitri Staessens <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef OUROBOROS_IRMD_APN_TABLE_H
+#define OUROBOROS_IRMD_APN_TABLE_H
+
+#include <ouroboros/list.h>
+
+#include <unistd.h>
+#include <stdint.h>
+
+struct apn_entry {
+ struct list_head next;
+ char * apn; /* name for irmd */
+ char * ap; /* name of binary */
+ uint32_t flags;
+ char ** argv;
+ struct list_head names; /* names that all instances will listen for */
+};
+
+struct apn_entry * apn_entry_create(char * apn,
+ char * ap,
+ uint32_t flags,
+ char ** argv);
+
+void apn_entry_destroy(struct apn_entry * e);
+
+int apn_entry_add_name(struct apn_entry * e,
+ char * name);
+
+void apn_entry_del_name(struct apn_entry * e,
+ char * name);
+
+int apn_table_add(struct list_head * apn_table,
+ struct apn_entry * e);
+
+void apn_table_del(struct list_head * apn_table,
+ char * ap);
+
+struct apn_entry * apn_table_get(struct list_head * apn_table,
+ char * ap);
+
+#endif /* OUROBOROS_IRMD_APN_TABLE_H */