]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
libimcv: Pass TNC_SESSION_ID as argument instead as a environment variable
authorMartin Willi <martin@revosec.ch>
Thu, 6 Mar 2014 18:08:24 +0000 (19:08 +0100)
committerMartin Willi <martin@revosec.ch>
Wed, 4 Jun 2014 13:53:10 +0000 (15:53 +0200)
Doing so works on Windows as well.

src/libimcv/imv/_imv_policy
src/libimcv/imv/imv_database.c
src/libimcv/imv/imv_policy_manager.c
src/libimcv/imv/imv_policy_manager_usage.c

index 68a963c272ea3f3d0b34da12b76aa9fd6b37f717..056284411b2903139b00cff898e4631e49798701 100755 (executable)
 # that, and use the "libimcv.policy_script = " option in strongswan.conf
 # to make strongSwan use yours instead of this default one.
 
-# Environment variables that this script gets 
+# Passed arguments
 #
-#    TNC_SESSION_ID 
-#         unique session ID used as a reference by the policy 
-#         manager. 
+#    $1
+#         action
+#    $2
+#         unique session ID used as a reference by the policy
+#         manager.
 #
 case "$1" in
 start)
-       echo "start session $TNC_SESSION_ID"
+       echo "start session $2"
        ;;
 stop)
-       echo "stop session $TNC_SESSION_ID"
+       echo "stop session $2"
        ;;
 *)     echo "$0: unknown command '$1'"
        exit 1
index 2edb4df04d32c22e0b5ba866a1e46abe66930b31..0c4bb751498e8c1d2cbce93000507c4f4e5f6cad 100644 (file)
@@ -126,7 +126,7 @@ static bool create_session(private_imv_database_t *this, imv_session_t *session)
                DBG1(DBG_IMV, "imv_db: registering product info failed");
                return FALSE;
        }
-       
+
        /* get device ID string */
        if (!session->get_device_id(session, &device_id))
        {
@@ -261,9 +261,9 @@ METHOD(imv_database_t, policy_script, bool,
        }
 
        /* call the policy script */
-       snprintf(command, sizeof(command), "2>&1 TNC_SESSION_ID='%d' %s %s",
-                        session->get_session_id(session, NULL, NULL), this->script,
-                        start ? "start" : "stop");
+       snprintf(command, sizeof(command), "2>&1 %s %s %d",
+                        this->script, start ? "start" : "stop",
+                        session->get_session_id(session, NULL, NULL));
        DBG3(DBG_IMV, "running policy script: %s", command);
 
        shell = popen(command, "r");
@@ -363,4 +363,3 @@ imv_database_t *imv_database_create(char *uri, char *script)
 
        return &this->public;
 }
-
index 028721af3cc70f359b50b50f5c21da518a29e6ff..50f7f2e39619410e0145ef29ca28e0513d219b01 100644 (file)
@@ -278,7 +278,7 @@ static bool policy_stop(database_t *db, int session_id)
 int main(int argc, char *argv[])
 {
        database_t *db;
-       char *uri, *tnc_session_id;
+       char *uri;
        int session_id;
        bool start, success;
 
@@ -299,7 +299,7 @@ int main(int argc, char *argv[])
                exit(SS_RC_INITIALIZATION_FAILED);
        }
 
-       if (argc < 2)
+       if (argc < 3)
        {
                usage();
                exit(SS_RC_INITIALIZATION_FAILED);
@@ -318,14 +318,7 @@ int main(int argc, char *argv[])
                exit(SS_RC_INITIALIZATION_FAILED);
        }
 
-       /* get session ID */
-       tnc_session_id = getenv("TNC_SESSION_ID");
-       if (!tnc_session_id)
-       {
-               fprintf(stderr, "environment variable TNC_SESSION_ID is not defined\n");
-               exit(SS_RC_INITIALIZATION_FAILED);
-       }
-       session_id = atoi(tnc_session_id);
+       session_id = atoi(argv[2]);
 
        /* attach IMV database */
        uri = lib->settings->get_str(lib->settings,
index 3167a54419332eed61284ecf15829cedfddc6f18..c71bc99582a72d796cc76ce21b01e68286d7aed5 100644 (file)
@@ -24,6 +24,5 @@ void usage(void)
 {
        printf("\
 Usage:\n\
-  imv_policy_manager start|stop\n");
+  imv_policy_manager start|stop <tnc-session-id>\n");
 }
-