- update default values, eliminate obsolete ones
[oweals/gnunet.git] / src / testbed / generate-underlay-topology.c
index 985c8e32e529b1eddeeb007bbcda18a31fe6805e..e6541a3547128b6c3f4ff1f482e357cde4e238d3 100644 (file)
@@ -114,6 +114,19 @@ link_processor (void *cls,
   FPRINTF (stdout, "%u -> %u\n", A, B);
   GNUNET_break (SQLITE_OK == sqlite3_reset (stmt_insert));
   //GNUNET_break (SQLITE_OK == sqlite3_clear_bindings (stmt_insert));
+  if ( (SQLITE_OK != sqlite3_bind_int (stmt_insert, 1, B)) ||
+       (SQLITE_OK != sqlite3_bind_int (stmt_insert, 2, A)) )
+  {
+    LOG_SQLITE (db, NULL, GNUNET_ERROR_TYPE_ERROR, "sqlite3_bind_int");
+    return GNUNET_SYSERR;
+  }
+  if (SQLITE_DONE != sqlite3_step (stmt_insert))
+  {
+    LOG_SQLITE (db, NULL, GNUNET_ERROR_TYPE_ERROR, "sqlite3_step");
+    return GNUNET_SYSERR;
+  }
+  FPRINTF (stdout, "%u -> %u\n", B, A);
+  GNUNET_break (SQLITE_OK == sqlite3_reset (stmt_insert));
   return GNUNET_OK;
 }
 
@@ -135,7 +148,12 @@ setup_db (const char *dbfile)
       "oid INTEGER,"
       "bandwidth INTEGER DEFAULT NULL,"
       "latency INTEGER DEFAULT NULL,"
-      "loss INTEGER DEFAULT NULL);";
+      "loss INTEGER DEFAULT NULL,"
+      " UNIQUE ("
+      "  id,"
+      "  oid"
+      " ) ON CONFLICT IGNORE"
+      ");";
   const char *query_insert =
       "INSERT INTO whitelist("
       " id,"
@@ -151,7 +169,8 @@ setup_db (const char *dbfile)
       " ?5);";
   int ret;
   
-  if (SQLITE_OK != (ret = sqlite3_open (dbfile, &db)))
+  ret = GNUNET_SYSERR;
+  if (SQLITE_OK != sqlite3_open (dbfile, &db))
   {
     LOG_SQLITE (db, NULL, GNUNET_ERROR_TYPE_ERROR, "sqlite3_open");
     goto err_ret;
@@ -159,22 +178,22 @@ setup_db (const char *dbfile)
   if (0 != sqlite3_exec (db, query_create, NULL, NULL, NULL))
   {
     LOG_SQLITE (db, NULL, GNUNET_ERROR_TYPE_ERROR, "sqlite3_exec");
+    FPRINTF (stderr, "Error: %d.  Perhaps the database `%s' already exits.\n",
+             sqlite3_errcode (db),
+             dbfile);
     goto err_ret;
   }
-  if (0 != sqlite3_exec (db, "PRAGMA synchronous = 0;", NULL, NULL, NULL))
-  {
-    LOG_SQLITE (db, NULL, GNUNET_ERROR_TYPE_ERROR, "sqlite3_exec");
-    goto err_ret;
-  }
-  if (SQLITE_OK != (ret = sqlite3_prepare_v2 (db, query_insert, -1,
-                                              &stmt_insert, NULL)))
+  GNUNET_break (0 == sqlite3_exec (db, "PRAGMA synchronous = 0;", NULL, NULL, NULL));
+  if (SQLITE_OK != sqlite3_prepare_v2 (db, query_insert, -1,
+                                       &stmt_insert, NULL))
   {
     LOG_SQLITE (db, NULL, GNUNET_ERROR_TYPE_ERROR, "sqlite3_prepare_v2");
     goto err_ret;
   }
-  
+  ret = GNUNET_OK;
+
  err_ret:
-  return (SQLITE_OK != ret) ? GNUNET_SYSERR : GNUNET_OK;
+  return ret;
 }
 
 
@@ -221,6 +240,7 @@ run (void *cls, char *const *args, const char *cfgfile,
     LOG_ERROR (_("Invalid topology: %s\n"), topology_string);
     return;
   }
+  arg_str1 = NULL;
   /* parse for first TOPOOPT.  This can either be arg_uint1 or arg_str1 */
   switch (topology)
   {
@@ -250,7 +270,7 @@ run (void *cls, char *const *args, const char *cfgfile,
     }
     break;
   default:
-    GNUNET_assert (0);
+    break;
   }
   /* parse for second TOPOOPT.  Only required for SCALE_FREE topology */
   switch (topology)