summaryrefslogtreecommitdiff
path: root/sbin/isakmpd/DESIGN-NOTES
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/isakmpd/DESIGN-NOTES')
-rw-r--r--sbin/isakmpd/DESIGN-NOTES39
1 files changed, 37 insertions, 2 deletions
diff --git a/sbin/isakmpd/DESIGN-NOTES b/sbin/isakmpd/DESIGN-NOTES
index 5937064de16..ecdfafbb24c 100644
--- a/sbin/isakmpd/DESIGN-NOTES
+++ b/sbin/isakmpd/DESIGN-NOTES
@@ -1,5 +1,5 @@
-$OpenBSD: DESIGN-NOTES,v 1.13 1999/07/17 21:54:39 niklas Exp $
-$EOM: DESIGN-NOTES,v 1.46 1999/07/17 20:44:07 niklas Exp $
+$OpenBSD: DESIGN-NOTES,v 1.14 1999/08/05 22:41:08 niklas Exp $
+$EOM: DESIGN-NOTES,v 1.47 1999/08/05 14:57:59 niklas Exp $
General coding conventions
--------------------------
@@ -211,6 +211,7 @@ isakmpd.fifo. The commands are one-letter codes followed by arguments.
For now, only five such commands are implemented:
c connect Establish a connection with a peer
+C configure Add or remove configuration entries.
d delete Delete an SA given cookies and message-IDs
D debug Change logging level for a debug class
r report Report status information of the daemon
@@ -230,6 +231,16 @@ D 0 99
The report command is just an "r", and results in a list of active exchanges
and security associations.
+The "C" command takes 3 subcommands: set, rm and rms, for adding and removing
+entries + remove complete sections respectively. Examples:
+
+C set [Net-A]:Address=192.168.0.0
+C rm [Net-A]:Address
+C rms [Net-A]
+
+All these commands are atomic, i.e. they are not collected into larger
+transactions, which there should be a way to do, but currently isn't.
+
I am thinking about adding a "q" command for quit.
In addition to giving commands over the FIFO, you may send signals to the
@@ -299,6 +310,30 @@ case RECORD_A_SZ == RECORD_B_FIELD_F_OFF. All this data are collected
in struct field arrays which makes it possible to symbolically print out
entire payloads in readable form via field_dump_payload.
+Configuration
+-------------
+
+Internally isakmpd uses a section-tag-value triplet database for
+configuration. Currently this happen to map really well to the
+configuration file format, which on the other hand does not map
+equally well to humans. It is envisioned that the configuration
+database should be dynamically modifiable, and through a lot of
+differnet mechanisms. Therefore we have designed an API for this
+purpose.
+
+int conf_begin ();
+int conf_set (int transaction, char *section, char *tag, char *value,
+ int override);
+int conf_remove (int transaction, char *section, char *tag);
+int conf_remove_section (int transaction, char *section);
+int conf_end (int transaction, int commit);
+
+The caller will always be responsible for the memory management of the
+passed strings, conf_set will copy the values, and not use the original
+strings after it has returned. Return value will be zero on success and
+non-zero otherwise. Note that the conf_remove* functions consider not
+finding anything to remove as failure.
+
Identification
--------------