aboutsummaryrefslogtreecommitdiffstats
path: root/src/starter
diff options
context:
space:
mode:
Diffstat (limited to 'src/starter')
-rw-r--r--src/starter/starter.c12
-rw-r--r--src/starter/starterstroke.c26
-rw-r--r--src/starter/starterstroke.h2
3 files changed, 38 insertions, 2 deletions
diff --git a/src/starter/starter.c b/src/starter/starter.c
index 25ee9c785..339e698d3 100644
--- a/src/starter/starter.c
+++ b/src/starter/starter.c
@@ -346,11 +346,15 @@ int main (int argc, char **argv)
{
if (ca->state == STATE_ADDED)
{
+ if (starter_charon_pid())
+ {
+ starter_stroke_del_ca(ca);
+ }
if (starter_pluto_pid())
{
starter_whack_del_ca(ca);
- ca->state = STATE_TO_ADD;
}
+ ca->state = STATE_TO_ADD;
}
}
}
@@ -539,11 +543,15 @@ int main (int argc, char **argv)
{
if (ca->state == STATE_TO_ADD)
{
+ if (starter_charon_pid())
+ {
+ starter_stroke_add_ca(ca);
+ }
if (starter_pluto_pid())
{
starter_whack_add_ca(ca);
- ca->state = STATE_ADDED;
}
+ ca->state = STATE_ADDED;
}
}
diff --git a/src/starter/starterstroke.c b/src/starter/starterstroke.c
index 47e7348e4..a1987cbde 100644
--- a/src/starter/starterstroke.c
+++ b/src/starter/starterstroke.c
@@ -262,3 +262,29 @@ int starter_stroke_initiate_conn(starter_conn_t *conn)
msg.initiate.name = push_string(&msg, connection_name(conn));
return send_stroke_msg(&msg);
}
+
+int starter_stroke_add_ca(starter_ca_t *ca)
+{
+ stroke_msg_t msg;
+
+ msg.type = STR_ADD_CA;
+ msg.length = offsetof(stroke_msg_t, buffer);
+ msg.add_ca.name = push_string(&msg, ca->name);
+ msg.add_ca.cacert = push_string(&msg, ca->cacert);
+ msg.add_ca.crluri = push_string(&msg, ca->crluri);
+ msg.add_ca.crluri2 = push_string(&msg, ca->crluri2);
+ msg.add_ca.ocspuri = push_string(&msg, ca->ocspuri);
+ return send_stroke_msg(&msg);
+}
+
+int starter_stroke_del_ca(starter_ca_t *ca)
+{
+ stroke_msg_t msg;
+
+ msg.type = STR_DEL_CA;
+ msg.length = offsetof(stroke_msg_t, buffer);
+ msg.del_ca.name = push_string(&msg, ca->name);
+ return send_stroke_msg(&msg);
+}
+
+
diff --git a/src/starter/starterstroke.h b/src/starter/starterstroke.h
index 10fc8b84f..95c37094e 100644
--- a/src/starter/starterstroke.h
+++ b/src/starter/starterstroke.h
@@ -23,5 +23,7 @@ extern int starter_stroke_add_conn(starter_conn_t *conn);
extern int starter_stroke_del_conn(starter_conn_t *conn);
extern int starter_stroke_route_conn(starter_conn_t *conn);
extern int starter_stroke_initiate_conn(starter_conn_t *conn);
+extern int starter_stroke_add_ca(starter_ca_t *ca);
+extern int starter_stroke_del_ca(starter_ca_t *ca);
#endif /* _STARTER_STROKE_H_ */