Hello community,

here is the log from the commit of package stress-ng for openSUSE:Factory 
checked in at 2019-11-10 22:54:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/stress-ng (Old)
 and      /work/SRC/openSUSE:Factory/.stress-ng.new.2990 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "stress-ng"

Sun Nov 10 22:54:57 2019 rev:69 rq:747239 version:0.10.10

Changes:
--------
--- /work/SRC/openSUSE:Factory/stress-ng/stress-ng.changes      2019-11-07 
23:19:01.336697012 +0100
+++ /work/SRC/openSUSE:Factory/.stress-ng.new.2990/stress-ng.changes    
2019-11-10 22:54:59.294709756 +0100
@@ -1,0 +2,12 @@
+Sun Nov 10 15:06:32 UTC 2019 - Martin Hauke <[email protected]>
+
+- Update to version 0.10.10
+  * stress-ipsec-mb: rename IPSEC to IPSec
+  * stress-ipsec-mb: add helper function to get and memset the next job
+  * stress-ipsec-mb: increment jobs count in stress_job_check_status
+  * stress-ipsec-mb: check that jobs are complete as soon as possible
+  * stress-funcret: rename counter ii to i
+  * README: Fix typo in requests
+  * README: Add contributing information
+
+-------------------------------------------------------------------

Old:
----
  stress-ng-0.10.09.tar.xz

New:
----
  stress-ng-0.10.10.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ stress-ng.spec ++++++
--- /var/tmp/diff_new_pack.cBIgRG/_old  2019-11-10 22:54:59.910710543 +0100
+++ /var/tmp/diff_new_pack.cBIgRG/_new  2019-11-10 22:54:59.918710554 +0100
@@ -18,7 +18,7 @@
 
 
 Name:           stress-ng
-Version:        0.10.09
+Version:        0.10.10
 Release:        0
 Summary:        Tool to load and stress a computer
 License:        GPL-2.0-only

++++++ stress-ng-0.10.09.tar.xz -> stress-ng-0.10.10.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stress-ng-0.10.09/Makefile 
new/stress-ng-0.10.10/Makefile
--- old/stress-ng-0.10.09/Makefile      2019-11-06 02:05:43.000000000 +0100
+++ new/stress-ng-0.10.10/Makefile      2019-11-08 14:45:09.000000000 +0100
@@ -16,7 +16,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 
USA.
 #
 
-VERSION=0.10.09
+VERSION=0.10.10
 #
 # Codename "systematic system smasher"
 #
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stress-ng-0.10.09/README new/stress-ng-0.10.10/README
--- old/stress-ng-0.10.09/README        2019-11-06 02:05:43.000000000 +0100
+++ new/stress-ng-0.10.10/README        2019-11-08 14:45:09.000000000 +0100
@@ -112,3 +112,8 @@
 I am keen to add to the stress-ng project page any citations to research or
 projects that use stress-ng.  I also appreciate information concerning kernel
 bugs or performance regressions found with stress-ng.
+
+Contributing to stress-ng:
+
+Send patches to [email protected] or merge requests at
+https://github.com/ColinIanKing/stress-ng
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stress-ng-0.10.09/stress-funcret.c 
new/stress-ng-0.10.10/stress-funcret.c
--- old/stress-ng-0.10.09/stress-funcret.c      2019-11-06 02:05:43.000000000 
+0100
+++ new/stress-ng-0.10.10/stress-funcret.c      2019-11-08 14:45:09.000000000 
+0100
@@ -172,16 +172,16 @@
                                                                        \
 static void NOINLINE stress_funcret_ ## type(const args_t *args)       \
 {                                                                      \
-       register size_t ii;                                             \
+       register size_t i;                                              \
        type a;                                                         \
        uint8_t data[sizeof(a)];                                        \
                                                                        \
-       for (ii = 0; ii < sizeof(data); ii++)                           \
-               data[ii] = mwc8();                                      \
+       for (i = 0; i < sizeof(data); i++)                              \
+               data[i] = mwc8();                                       \
        (void)memcpy(&a, data, sizeof(a));                              \
                                                                        \
        do {                                                            \
-               for (ii = 0; ii < 1000; ii++) {                         \
+               for (i = 0; i < 1000; i++) {                            \
                        volatile type b;                                \
                        a = stress_funcret_ ## type ## 1(a);            \
                        a = stress_funcret_deep_ ## type ## 1(a);       \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/stress-ng-0.10.09/stress-ipsec-mb.c 
new/stress-ng-0.10.10/stress-ipsec-mb.c
--- old/stress-ng-0.10.09/stress-ipsec-mb.c     2019-11-06 02:05:43.000000000 
+0100
+++ new/stress-ng-0.10.10/stress-ipsec-mb.c     2019-11-08 14:45:09.000000000 
+0100
@@ -25,7 +25,7 @@
 #include "stress-ng.h"
 
 static const help_t help[] = {
-       { NULL, "ipsec-mb N",     "start N workers exercising the IPSEC MB 
encoding" },
+       { NULL, "ipsec-mb N",     "start N workers exercising the IPSec MB 
encoding" },
        { NULL, "ipsec-mb-ops N", "stop after N ipsec bogo encoding operations" 
},
        { NULL, NULL,             NULL }
 };
@@ -111,6 +111,49 @@
                ;
 }
 
+static inline struct JOB_AES_HMAC *stress_job_get_next(struct MB_MGR *mb_mgr)
+{
+       struct JOB_AES_HMAC *job;
+
+       job = IMB_GET_NEXT_JOB(mb_mgr);
+       (void)memset(job, 0, sizeof(*job));
+
+       return job;
+}
+
+/*
+ *  stress_job_check_status()
+ *     check if jobs has completed, report error if not
+ */
+static void stress_job_check_status(
+       const args_t *args,
+       const char *name,
+       struct JOB_AES_HMAC *job,
+       int *jobs_done)
+{
+       (*jobs_done)++;
+
+       if (job->status != STS_COMPLETED) {
+               pr_err("%s: %s: job not completed\n",
+                       args->name, name);
+       }
+}
+
+/*
+ *  stress_jobs_done()
+ *     check if all the jobs have completed
+ */
+static void stress_jobs_done(
+       const args_t *args,
+       const char *name,
+       const int jobs,
+       const int jobs_done)
+{
+       if (jobs_done != jobs)
+               pr_err("%s: %s: only processed %d of %d jobs\n",
+                       args->name, name, jobs_done, jobs);
+}
+
 static void stress_sha(
        const args_t *args,
        struct MB_MGR *mb_mgr,
@@ -118,45 +161,38 @@
        const size_t data_len,
        const int jobs)
 {
-       int j;
+       int j, jobs_done = 0;
        const int sha_digest_size = 64;
        struct JOB_AES_HMAC *job;
-       uint8_t digest[jobs * sha_digest_size];
-
-       stress_rnd_fill(digest, sizeof(digest));
+       uint8_t padding[16];
+       const size_t alloc_len = sha_digest_size + (sizeof(padding) * 2);
+       uint8_t *auth;
+       uint8_t auth_data[alloc_len * jobs];
+       static const char name[] = "sha";
 
        stress_job_empty(mb_mgr);
 
-       for (j = 0; j < jobs; j++) {
-               uint8_t *auth = digest + (j * sha_digest_size);
-
-               job = IMB_GET_NEXT_JOB(mb_mgr);
-               (void)memset(job, 0, sizeof(*job));
-
+       for (auth = auth_data, j = 0; j < jobs; j++, auth += alloc_len) {
+               job = stress_job_get_next(mb_mgr);
                job->cipher_direction = ENCRYPT;
                job->chain_order = HASH_CIPHER;
-               job->auth_tag_output = auth;
+               job->auth_tag_output = auth + sizeof(padding);
                job->auth_tag_output_len_in_bytes = sha_digest_size;
                job->src = data;
                job->msg_len_to_hash_in_bytes = data_len;
                job->cipher_mode = NULL_CIPHER;
                job->hash_alg = PLAIN_SHA_512;
+               job->user_data = auth;
                job = IMB_SUBMIT_JOB(mb_mgr);
-               (void)job;
+               if (job)
+                       stress_job_check_status(args, name, job, &jobs_done);
        }
 
-       for (j = 0; j < jobs; j++) {
-               job = IMB_FLUSH_JOB(mb_mgr);
-               if (!job)
-                       break;
-               if (job->status != STS_COMPLETED) {
-                       pr_err("%s: sha: job %d not completed\n",
-                               args->name, j);
-               }
-       }
-       if (j != jobs)
-               pr_err("%s: sha: only processed %d of %d jobs\n",
-                       args->name, j, jobs);
+       while ((job = IMB_FLUSH_JOB(mb_mgr)) != NULL)
+               stress_job_check_status(args, name, job, &jobs_done);
+
+       stress_jobs_done(args, name, jobs, jobs_done);
+       stress_job_empty(mb_mgr);
 }
 
 static void stress_des(
@@ -166,7 +202,7 @@
        const size_t data_len,
        const int jobs)
 {
-       int j;
+       int j, jobs_done = 0;
        struct JOB_AES_HMAC *job;
 
        uint8_t encoded[jobs * data_len] ALIGNED(16);
@@ -174,18 +210,16 @@
        uint8_t iv[16] ALIGNED(16);
        uint32_t enc_keys[15*4] ALIGNED(16);
        uint32_t dec_keys[15*4] ALIGNED(16);
+       uint8_t *dst;
+       static const char name[] = "des";
 
        stress_rnd_fill(k, sizeof(k));
        stress_rnd_fill(iv, sizeof(iv));
        stress_job_empty(mb_mgr);
        IMB_AES_KEYEXP_256(mb_mgr, k, enc_keys, dec_keys);
 
-       for (j = 0; j < jobs; j++) {
-               uint8_t *dst = encoded + (j * data_len);
-
-               job = IMB_GET_NEXT_JOB(mb_mgr);
-               (void)memset(job, 0, sizeof(*job));
-
+       for (dst = encoded, j = 0; j < jobs; j++, dst += data_len) {
+               job = stress_job_get_next(mb_mgr);
                job->cipher_direction = ENCRYPT;
                job->chain_order = CIPHER_HASH;
                job->src = data;
@@ -202,21 +236,15 @@
                job->user_data2 = (void *)((uint64_t)j);
                job->hash_alg = NULL_HASH;
                job = IMB_SUBMIT_JOB(mb_mgr);
-               (void)job;
+               if (job)
+                       stress_job_check_status(args, name, job, &jobs_done);
        }
 
-       for (j = 0; j < jobs; j++) {
-               job = IMB_FLUSH_JOB(mb_mgr);
-               if (!job)
-                       break;
-               if (job->status != STS_COMPLETED) {
-                       pr_err("%s: des: job %d not completed\n",
-                               args->name, j);
-               }
-       }
-       if (j != jobs)
-               pr_err("%s: des: only processed %d of %d jobs\n",
-                       args->name, j, jobs);
+       while ((job = IMB_FLUSH_JOB(mb_mgr)) != NULL)
+               stress_job_check_status(args, name, job, &jobs_done);
+
+       stress_jobs_done(args, name, jobs, jobs_done);
+       stress_job_empty(mb_mgr);
 }
 
 static void stress_cmac(
@@ -226,7 +254,7 @@
        const size_t data_len,
        const int jobs)
 {
-       int j;
+       int j, jobs_done = 0;
        struct JOB_AES_HMAC *job;
 
        uint8_t key[16] ALIGNED(16);
@@ -234,18 +262,16 @@
        uint32_t dust[4 * 15] ALIGNED(16);
        uint32_t skey1[4], skey2[4];
        uint8_t output[jobs * data_len] ALIGNED(16);
+       static const char name[] = "cmac";
+       uint8_t *dst;
 
        stress_rnd_fill(key, sizeof(key));
        IMB_AES_KEYEXP_128(mb_mgr, key, expkey, dust);
        IMB_AES_CMAC_SUBKEY_GEN_128(mb_mgr, expkey, skey1, skey2);
        stress_job_empty(mb_mgr);
 
-       for (j = 0; j < jobs; j++) {
-               uint8_t *dst = output + (j * 16);
-
-               job = IMB_GET_NEXT_JOB(mb_mgr);
-               (void)memset(job, 0, sizeof(*job));
-
+       for (dst = output, j = 0; j < jobs; j++, dst += 16) {
+               job = stress_job_get_next(mb_mgr);
                job->cipher_direction = ENCRYPT;
                job->chain_order = HASH_CIPHER;
                job->cipher_mode = NULL_CIPHER;
@@ -260,21 +286,15 @@
                job->u.CMAC._skey2 = skey2;
                job->user_data = dst;
                job = IMB_SUBMIT_JOB(mb_mgr);
-               (void)job;
+               if (job)
+                       stress_job_check_status(args, name, job, &jobs_done);
        }
 
-       for (j = 0; j < jobs; j++) {
-               job = IMB_FLUSH_JOB(mb_mgr);
-               if (!job)
-                       break;
-               if (job->status != STS_COMPLETED) {
-                       pr_err("%s: cmac: job %d not completed\n",
-                               args->name, j);
-               }
-       }
-       if (j != jobs)
-               pr_err("%s: cmac: only processed %d of %d jobs\n",
-                       args->name, j, jobs);
+       while ((job = IMB_FLUSH_JOB(mb_mgr)) != NULL)
+               stress_job_check_status(args, name, job, &jobs_done);
+
+       stress_jobs_done(args, name, jobs, jobs_done);
+       stress_job_empty(mb_mgr);
 }
 
 static void stress_ctr(
@@ -284,7 +304,7 @@
        const size_t data_len,
        const int jobs)
 {
-       int j;
+       int j, jobs_done = 0;
        struct JOB_AES_HMAC *job;
 
        uint8_t encoded[jobs * data_len] ALIGNED(16);
@@ -292,18 +312,16 @@
        uint8_t iv[12] ALIGNED(16);             /* 4 byte nonce + 8 byte IV */
        uint32_t expkey[4 * 15] ALIGNED(16);
        uint32_t dust[4 * 15] ALIGNED(16);
+       uint8_t *dst;
+       static const char name[] = "ctr";
 
        stress_rnd_fill(key, sizeof(key));
        stress_rnd_fill(iv, sizeof(iv));
        IMB_AES_KEYEXP_256(mb_mgr, key, expkey, dust);
        stress_job_empty(mb_mgr);
 
-       for (j = 0; j < jobs; j++) {
-               uint8_t *dst = encoded + (j * data_len);
-
-               job = IMB_GET_NEXT_JOB(mb_mgr);
-               (void)memset(job, 0, sizeof(*job));
-
+       for (dst = encoded, j = 0; j < jobs; j++, dst += data_len) {
+               job = stress_job_get_next(mb_mgr);
                job->cipher_direction = ENCRYPT;
                job->chain_order = CIPHER_HASH;
                job->cipher_mode = CNTR;
@@ -318,21 +336,15 @@
                job->cipher_start_src_offset_in_bytes = 0;
                job->msg_len_to_cipher_in_bytes = data_len;
                job = IMB_SUBMIT_JOB(mb_mgr);
-               (void)job;
+               if (job)
+                       stress_job_check_status(args, name, job, &jobs_done);
        }
 
-       for (j = 0; j < jobs; j++) {
-               job = IMB_FLUSH_JOB(mb_mgr);
-               if (!job)
-                       break;
-               if (job->status != STS_COMPLETED) {
-                       pr_err("%s: ctr: job %d not completed\n",
-                               args->name, j);
-               }
-       }
-       if (j != jobs)
-               pr_err("%s: ctr: only processed %d of %d jobs\n",
-                       args->name, j, jobs);
+       while ((job = IMB_FLUSH_JOB(mb_mgr)) != NULL)
+               stress_job_check_status(args, name, job, &jobs_done);
+
+       stress_jobs_done(args, name, jobs, jobs_done);
+       stress_job_empty(mb_mgr);
 }
 
 static void stress_hmac_md5(
@@ -342,7 +354,7 @@
        const size_t data_len,
        const int jobs)
 {
-       int j;
+       int j, jobs_done = 0;
        size_t i;
        struct JOB_AES_HMAC *job;
 
@@ -353,6 +365,8 @@
        uint8_t ipad_hash[digest_size] ALIGNED(16);
        uint8_t opad_hash[digest_size] ALIGNED(16);
        uint8_t output[jobs * digest_size] ALIGNED(16);
+       uint8_t *dst;
+       static const char name[] = "hmac_md5";
 
        stress_rnd_fill(key, sizeof(key));
        for (i = 0; i < sizeof(key); i++)
@@ -364,12 +378,8 @@
 
        stress_job_empty(mb_mgr);
 
-       for (j = 0; j < jobs; j++) {
-               uint8_t *dst = output + (j * digest_size);
-
-               job = IMB_GET_NEXT_JOB(mb_mgr);
-               (void)memset(job, 0, sizeof(*job));
-
+       for (dst = output, j = 0; j < jobs; j++, dst += digest_size) {
+               job = stress_job_get_next(mb_mgr);
                job->aes_enc_key_expanded = NULL;
                job->aes_dec_key_expanded = NULL;
                job->cipher_direction = ENCRYPT;
@@ -391,21 +401,15 @@
                job->hash_alg = MD5;
                job->user_data = dst;
                job = IMB_SUBMIT_JOB(mb_mgr);
-               (void)job;
+               if (job)
+                       stress_job_check_status(args, name, job, &jobs_done);
        }
 
-       for (j = 0; j < jobs; j++) {
-               job = IMB_FLUSH_JOB(mb_mgr);
-               if (!job)
-                       break;
-               if (job->status != STS_COMPLETED) {
-                       pr_err("%s: hmac md5: job %d not completed\n",
-                               args->name, j);
-               }
-       }
-       if (j != jobs)
-               pr_err("%s: hmac md5: only processed %d of %d jobs\n",
-                       args->name, j, jobs);
+       while ((job = IMB_FLUSH_JOB(mb_mgr)) != NULL)
+               stress_job_check_status(args, name, job, &jobs_done);
+
+       stress_jobs_done(args, name, jobs, jobs_done);
+       stress_job_empty(mb_mgr);
 }
 
 static void stress_hmac_sha1(
@@ -415,7 +419,7 @@
        const size_t data_len,
        const int jobs)
 {
-       int j;
+       int j, jobs_done = 0;
        size_t i;
        struct JOB_AES_HMAC *job;
 
@@ -426,6 +430,8 @@
        uint8_t ipad_hash[digest_size] ALIGNED(16);
        uint8_t opad_hash[digest_size] ALIGNED(16);
        uint8_t output[jobs * digest_size] ALIGNED(16);
+       uint8_t *dst;
+       static const char name[] = "hmac_sha1";
 
        stress_rnd_fill(key, sizeof(key));
        for (i = 0; i < sizeof(key); i++)
@@ -437,12 +443,8 @@
 
        stress_job_empty(mb_mgr);
 
-       for (j = 0; j < jobs; j++) {
-               uint8_t *dst = output + (j * digest_size);
-
-               job = IMB_GET_NEXT_JOB(mb_mgr);
-               (void)memset(job, 0, sizeof(*job));
-
+       for (dst = output, j = 0; j < jobs; j++, dst += digest_size) {
+               job = stress_job_get_next(mb_mgr);
                job->aes_enc_key_expanded = NULL;
                job->aes_dec_key_expanded = NULL;
                job->cipher_direction = ENCRYPT;
@@ -464,21 +466,15 @@
                job->hash_alg = SHA1;
                job->user_data = dst;
                job = IMB_SUBMIT_JOB(mb_mgr);
-               (void)job;
+               if (job)
+                       stress_job_check_status(args, name, job, &jobs_done);
        }
 
-       for (j = 0; j < jobs; j++) {
-               job = IMB_FLUSH_JOB(mb_mgr);
-               if (!job)
-                       break;
-               if (job->status != STS_COMPLETED) {
-                       pr_err("%s: hmac sha1: job %d not completed\n",
-                               args->name, j);
-               }
-       }
-       if (j != jobs)
-               pr_err("%s: hmac sha1: only processed %d of %d jobs\n",
-                       args->name, j, jobs);
+       while ((job = IMB_FLUSH_JOB(mb_mgr)) != NULL)
+               stress_job_check_status(args, name, job, &jobs_done);
+
+       stress_jobs_done(args, name, jobs, jobs_done);
+       stress_job_empty(mb_mgr);
 }
 
 static void stress_hmac_sha512(
@@ -488,7 +484,7 @@
        const size_t data_len,
        const int jobs)
 {
-       int j;
+       int j, jobs_done = 0;
        size_t i;
        struct JOB_AES_HMAC *job;
 
@@ -500,6 +496,8 @@
        uint8_t ipad_hash[digest_size] ALIGNED(16);
        uint8_t opad_hash[digest_size] ALIGNED(16);
        uint8_t output[jobs * digest_size] ALIGNED(16);
+       uint8_t *dst;
+       static const char name[] = "hmac_sha512";
 
        stress_rnd_fill(rndkey, sizeof(rndkey));
 
@@ -514,12 +512,8 @@
 
        stress_job_empty(mb_mgr);
 
-       for (j = 0; j < jobs; j++) {
-               uint8_t *dst = output + (j * digest_size);
-
-               job = IMB_GET_NEXT_JOB(mb_mgr);
-               (void)memset(job, 0, sizeof(*job));
-
+       for (dst = output, j = 0; j < jobs; j++, dst += digest_size) {
+               job = stress_job_get_next(mb_mgr);
                job->aes_enc_key_expanded = NULL;
                job->aes_dec_key_expanded = NULL;
                job->cipher_direction = ENCRYPT;
@@ -541,21 +535,15 @@
                job->hash_alg = SHA_512;
                job->user_data = dst;
                job = IMB_SUBMIT_JOB(mb_mgr);
-               (void)job;
+               if (job)
+                       stress_job_check_status(args, name, job, &jobs_done);
        }
 
-       for (j = 0; j < jobs; j++) {
-               job = IMB_FLUSH_JOB(mb_mgr);
-               if (!job)
-                       break;
-               if (job->status != STS_COMPLETED) {
-                       pr_err("%s: hmac sha512: job %d not completed\n",
-                               args->name, j);
-               }
-       }
-       if (j != jobs)
-               pr_err("%s: hmac sha512: only processed %d of %d jobs\n",
-                       args->name, j, jobs);
+       while ((job = IMB_FLUSH_JOB(mb_mgr)) != NULL)
+               stress_job_check_status(args, name, job, &jobs_done);
+
+       stress_jobs_done(args, name, jobs, jobs_done);
+       stress_job_empty(mb_mgr);
 }
 
 
@@ -589,11 +577,11 @@
 
        p_mgr = alloc_mb_mgr(0);
        if (!p_mgr) {
-               pr_inf("%s: failed to setup Intel IPSEC MB library, 
skipping\n", args->name);
+               pr_inf("%s: failed to setup Intel IPSec MB library, 
skipping\n", args->name);
                return EXIT_NO_RESOURCE;
        }
        if (imb_get_version() < IMB_VERSION(0, 51, 0)) {
-               pr_inf("%s: version %s of Intel IPSEC MB library is too low, 
skipping\n",
+               pr_inf("%s: version %s of Intel IPSec MB library is too low, 
skipping\n",
                        args->name, imb_get_version_str());
                free_mb_mgr(p_mgr);
                return EXIT_NOT_IMPLEMENTED;
@@ -609,7 +597,7 @@
                }
        }
        if (!got_features) {
-               pr_inf("%s: not enough CPU features to support Intel IPSEC MB 
library, skipping\n", args->name);
+               pr_inf("%s: not enough CPU features to support Intel IPSec MB 
library, skipping\n", args->name);
                free_mb_mgr(p_mgr);
                return EXIT_NOT_IMPLEMENTED;
        }
@@ -661,7 +649,7 @@
 static int stress_ipsec_mb_supported(void)
 {
        pr_inf("ipsec_mb stressor will be skipped, CPU "
-               "needs to be an x86-64 and a recent IPSEC MB library is 
required.\n");
+               "needs to be an x86-64 and a recent IPSec MB library is 
required.\n");
        return -1;
 }
 


Reply via email to