bus->listen() and the controller wrappers accept a timeout to wait for callbacks
[strongswan.git] / src / libcharon / control / controller.h
index 81c83d9..6adaef1 100644 (file)
@@ -83,14 +83,16 @@ struct controller_t {
         * @param child_cfg             child_cfg to set up CHILD_SA from
         * @param cb                    logging callback
         * @param param                 parameter to include in each call of cb
+        * @param timeout               timeout in ms to wait for callbacks, 0 to disable
         * @return
         *                                              - SUCCESS, if CHILD_SA established
         *                                              - FAILED, if setup failed
         *                                              - NEED_MORE, if callback returned FALSE
+        *                                              - OUT_OF_RES if timed out
         */
        status_t (*initiate)(controller_t *this,
                                                 peer_cfg_t *peer_cfg, child_cfg_t *child_cfg,
-                                                controller_cb_t callback, void *param);
+                                                controller_cb_t callback, void *param, u_int timeout);
 
        /**
         * Terminate an IKE_SA and all of its CHILD_SAs.
@@ -102,13 +104,16 @@ struct controller_t {
         * @param unique_id             unique id of the IKE_SA to terminate.
         * @param cb                    logging callback
         * @param param                 parameter to include in each call of cb
+        * @param timeout               timeout in ms to wait for callbacks, 0 to disable
         * @return
         *                                              - SUCCESS, if CHILD_SA terminated
         *                                              - NOT_FOUND, if no such CHILD_SA found
         *                                              - NEED_MORE, if callback returned FALSE
+        *                                              - OUT_OF_RES if timed out
         */
        status_t (*terminate_ike)(controller_t *this, u_int32_t unique_id,
-                                                         controller_cb_t callback, void *param);
+                                                         controller_cb_t callback, void *param,
+                                                         u_int timeout);
 
        /**
         * Terminate a CHILD_SA.
@@ -116,13 +121,16 @@ struct controller_t {
         * @param reqid                 reqid of the CHILD_SA to terminate
         * @param cb                    logging callback
         * @param param                 parameter to include in each call of cb
+        * @param timeout               timeout in ms to wait for callbacks, 0 to disable
         * @return
         *                                              - SUCCESS, if CHILD_SA terminated
         *                                              - NOT_FOUND, if no such CHILD_SA found
         *                                              - NEED_MORE, if callback returned FALSE
+        *                                              - OUT_OF_RES if timed out
         */
        status_t (*terminate_child)(controller_t *this, u_int32_t reqid,
-                                                               controller_cb_t callback, void *param);
+                                                               controller_cb_t callback, void *param,
+                                                               u_int timeout);
 
        /**
         * Destroy a controller_t instance.