Ejemplo n.º 1
0
void
test_lagopus_dstring_clear_null(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  lagopus_dstring_t ds_null = NULL;

  ret = lagopus_dstring_clear(NULL);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret,
                            "lagopus_dstring_clear error.");

  ret = lagopus_dstring_clear(&ds_null);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret,
                            "lagopus_dstring_clear error.");
}
Ejemplo n.º 2
0
void
test_agent_cmd_parse_serialize(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  datastore_interp_state_t state = DATASTORE_INTERP_STATE_AUTO_COMMIT;
  char *str = NULL;
  const char *argv1[] = {"agent",
                         "-channelq-size", "2000",
                         "-channelq-max-batches", "3000",
                         NULL};
  const char test_str1[] = "{\"ret\":\"OK\"}";
  const char serialize_str1[] =
      "agent "
      "-channelq-size 2000 "
      "-channelq-max-batches 3000\n\n";

  /* set */
  TEST_CMD_PARSE(ret, LAGOPUS_RESULT_OK, s_parse_agent, &interp, state,
                 ARGV_SIZE(argv1), argv1, &tbl, NULL,
                 &ds, str, test_str1);
  lagopus_dstring_clear(&ds);

  /* serialize */
  ret = agent_cmd_serialize(&ds);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "agent_cmd_serialize error.");
  TEST_DSTRING_NO_JSON(ret, &ds, str, serialize_str1, true);
}
Ejemplo n.º 3
0
void
test_mactable_cmd_dump_not_found(void) {
#ifdef HYBRID
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  char *str = NULL;
  const char format_str[] =
    "{\"name\":\":hoge\",\n"
    "\"mactable\":[{";
  char test_str[1000];

  uint8_t eth[6];
  uint32_t port = 1;

  /* add mac entries */
  eth[0] = 0xaa;
  eth[1] = 0xbb;
  eth[2] = 0xcc;
  eth[3] = 0xdd;
  eth[4] = 0xee;
  eth[5] = 0xff;

  ret = dp_bridge_mactable_entry_set(bridge_name, eth, port);
  TEST_ASSERT_EQUAL(ret, LAGOPUS_RESULT_OK);
  sprintf(test_str, format_str);

  /* test target. */
  (void) lagopus_dstring_clear(&ds);
  ret = dump_bridge_mactable(":hoge", is_bridge_first, &ds);
  TEST_ASSERT_EQUAL(ret, LAGOPUS_RESULT_NOT_FOUND);
  TEST_DSTRING(ret, &ds, str, test_str, false);
#else /* HYBRID */
  TEST_IGNORE_MESSAGE("HYBRID is not defined.");
#endif /* HYBRID */
}
Ejemplo n.º 4
0
void
test_mactable_cmd_dump_02(void) {
#ifdef HYBRID
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  char *str = NULL;
  const char format_str[] =
    "{\"name\":\":br0\",\n"
    "\"mactable\":[{\"num_entries\":2,\n"
    "\"max_entries\":8192,\n"
    "\"ageing_time\":300,\n"
    "\"entries\":[{\"mac_addr\":\"1a:2b:3c:4d:5e:6f\",\n"
    "\"port_no\":2,\n"
    "\"update_time\":%ld,\n"
    "\"address_type\":\"static\"},\n"
    "{\"mac_addr\":\"aa:bb:cc:dd:ee:ff\",\n"
    "\"port_no\":1,\n"
    "\"update_time\":%ld,\n"
    "\"address_type\":\"static\"}]}]}";
  char test_str[1000];
  uint8_t eth1[6];
  uint8_t eth2[6];
  uint32_t port1 = 1;
  uint32_t port2 = 2;
  struct timespec now;
  struct bridge *bridge;

  /* add mac entries */
  eth1[0] = 0xaa;
  eth1[1] = 0xbb;
  eth1[2] = 0xcc;
  eth1[3] = 0xdd;
  eth1[4] = 0xee;
  eth1[5] = 0xff;
  eth2[0] = 0x1a;
  eth2[1] = 0x2b;
  eth2[2] = 0x3c;
  eth2[3] = 0x4d;
  eth2[4] = 0x5e;
  eth2[5] = 0x6f;

  /* preparation */
  ret = dp_bridge_mactable_entry_set(bridge_name, eth1, port1);
  TEST_ASSERT_EQUAL(ret, LAGOPUS_RESULT_OK);
  ret = dp_bridge_mactable_entry_set(bridge_name, eth2, port2);
  TEST_ASSERT_EQUAL(ret, LAGOPUS_RESULT_OK);
  now = get_current_time();
  sprintf(test_str, format_str, now.tv_sec, now.tv_sec);
  bridge = dp_bridge_lookup(bridge_name);
  mactable_update(&bridge->mactable);

  /* test target. */
  (void) lagopus_dstring_clear(&ds);
  ret = dump_bridge_mactable(bridge_name, is_bridge_first, &ds);
  TEST_ASSERT_EQUAL(ret, LAGOPUS_RESULT_OK);
  TEST_DSTRING(ret, &ds, str, test_str, true);
#else /* HYBRID */
  TEST_IGNORE_MESSAGE("HYBRID is not defined.");
#endif /* HYBRID */
}
Ejemplo n.º 5
0
void
test_lagopus_dstring_concat_clear_srt_get(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  char *str = NULL;
  char test_str1[] = "hoge foo\n";
  char test_str2[] = "bas\n";
  char test_str3[] = "hoge foo\nbas\n";
  char test_str4[] = "\0";
  char test_str5[] = "1234 5678\n";
  char test_str6[] = "hoge foo\nbas\n1234 5678\n";

  /* append ds. */
  ret = lagopus_dstring_appendf(&ds, "%s foo\n", "hoge");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_appendf error.");
  TEST_DSTRING(ret, &ds, str, test_str1);

  /* append ds2. */
  ret = lagopus_dstring_appendf(&ds2, "%s\n", "bas");
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_appendf error.");
  TEST_DSTRING(ret, &ds2, str, test_str2);

  /* concat (ds + ds2). */
  ret = lagopus_dstring_concat(&ds, &ds2);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_concat error.");
  TEST_DSTRING(ret, &ds, str, test_str3);

  /* check const ds2. */
  TEST_DSTRING(ret, &ds2, str, test_str2);

  /* clear ds2. */
  ret = lagopus_dstring_clear(&ds2);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_clear error.");
  TEST_DSTRING(ret, &ds2, str, test_str4);

  /* append ds2. */
  ret = lagopus_dstring_appendf(&ds2, "1234 %d\n", 5678);
  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_appendf error.");
  TEST_DSTRING(ret, &ds2, str, test_str5);

  /* concat (ds + ds2).*/
  ret = lagopus_dstring_concat(&ds, &ds2);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_concat error.");
  TEST_DSTRING(ret, &ds, str, test_str6);

  /* check const ds2. */
  TEST_DSTRING(ret, &ds2, str, test_str5);
}
Ejemplo n.º 6
0
void
test_lagopus_dstring_len_get(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  char *str = NULL;
  char test_str1[] = "1 2\n";
  char test_str2[] = "1 2\na b\n";
  char test_str3[] = "\0";
  char test_str4[] = "98 76\n";

  /* check len. */
  ret = lagopus_dstring_len_get(&ds);
  TEST_ASSERT_EQUAL_MESSAGE(0, ret,
                            "lagopus_dstring_len_get error.");

  /* append int. */
  ret = lagopus_dstring_appendf(&ds, "%d 2\n", 1);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_appendf error.");
  TEST_DSTRING(ret, &ds, str, test_str1);
  ret = lagopus_dstring_len_get(&ds);
  TEST_ASSERT_EQUAL_MESSAGE(4, ret,
                            "lagopus_dstring_len_get error.");

  /* append str. */
  ret = lagopus_dstring_appendf(&ds, "a %s\n", "b");

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_appendf error.");
  TEST_DSTRING(ret, &ds, str, test_str2);
  ret = lagopus_dstring_len_get(&ds);
  TEST_ASSERT_EQUAL_MESSAGE(4 + 4, ret,
                            "lagopus_dstring_len_get error.");

  /* clear. */
  ret = lagopus_dstring_clear(&ds);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_clear error.");
  TEST_DSTRING(ret, &ds, str, test_str3);
  ret = lagopus_dstring_len_get(&ds);
  TEST_ASSERT_EQUAL_MESSAGE(0, ret,
                            "lagopus_dstring_len_get error.");

  /* append int. */
  ret = lagopus_dstring_appendf(&ds, "%d 76\n", 98);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_appendf error.");
  TEST_DSTRING(ret, &ds, str, test_str4);
  ret = lagopus_dstring_len_get(&ds);
  TEST_ASSERT_EQUAL_MESSAGE(6, ret,
                            "lagopus_dstring_len_get error.");
}
Ejemplo n.º 7
0
int
main(int argc, const char *const argv[]) {
  lagopus_result_t r = LAGOPUS_RESULT_ANY_FAILURES;
  const char *file = argv[1];

  (void)argc;

  if ((r = datastore_register_configurator(MY_CONF_NAME)) ==
      LAGOPUS_RESULT_OK) {

    lagopus_dstring_t ds;
    char *str = NULL;

    (void)lagopus_dstring_create(&ds);

    if (IS_VALID_STRING(file) == true) {
      r = datastore_interp_eval_file(&s_interp, MY_CONF_NAME, file, &ds);
    } else {
      while ((r = datastore_interp_eval_fd(&s_interp, MY_CONF_NAME,
                                           stdin, stdout, false, &ds)) ==
             LAGOPUS_RESULT_OK) {
        lagopus_dstring_clear(&ds);
      }
    }

    if (r != LAGOPUS_RESULT_OK) {
      lagopus_perror(r);
    }

    (void)lagopus_dstring_str_get(&ds, &str);
    if (IS_VALID_STRING(str) == true) {
      fprintf(stdout, "%s", str);
    }

    free((void *)str);

  } else {
    lagopus_perror(r);
  }

  datastore_unregister_configurator(MY_CONF_NAME);

  return (r == LAGOPUS_RESULT_OK) ? 0 : 1;
}
Ejemplo n.º 8
0
void
test_mactable_cmd_dump_no_entry(void) {
#ifdef HYBRID
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  char *str = NULL;
  const char format_str[] =
    "{\"name\":\":br0\",\n"
    "\"mactable\":[{\"num_entries\":0,\n"
    "\"max_entries\":8192,\n"
    "\"ageing_time\":300,\n"
    "\"entries\":[";
  char test_str[1000];

  sprintf(test_str, format_str);

  /* test target. */
  (void) lagopus_dstring_clear(&ds);
  ret = dump_bridge_mactable(bridge_name, is_bridge_first, &ds);
  TEST_ASSERT_EQUAL(ret, LAGOPUS_RESULT_ANY_FAILURES);
  TEST_DSTRING(ret, &ds, str, test_str, false);
#else /* HYBRID */
  TEST_IGNORE_MESSAGE("HYBRID is not defined.");
#endif /* HYBRID */
}
Ejemplo n.º 9
0
void
test_lagopus_dstring_insertf_clear_srt_get(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  bool empty;
  char *str = NULL;
  size_t test_offset1 = 0;
  char test_str1[] = "1234 5678\n";
  size_t test_offset2 = 5;
  char test_str2[] = "1234 hoge foo\n5678\n";
  char test_str3[] = "\0";
  size_t test_offset4 = 0;
  char test_str4[] = "9876 5432\n";
  size_t test_offset5 = 5;
  char test_str5[] = "9876 hoge foo bar\n5432\n";
  size_t test_offset6 = 0;
  char test_str6[] = "bas\n9876 hoge foo bar\n5432\n";
  size_t test_offset7 = 0;
  char test_str7[] = "1 2\nbas\n9876 hoge foo bar\n5432\n";
  size_t test_offset8 = 31;
  char test_str8[] = "1 2\nbas\n9876 hoge foo bar\n5432\n3 4\n";
  size_t test_offset9 = 36;

  /* check empty. */
  empty = lagopus_dstring_empty(&ds);
  TEST_ASSERT_EQUAL_MESSAGE(true, empty,
                            "empty error.");
  /* insert int. */
  ret = lagopus_dstring_insertf(&ds, test_offset1, "%d 5678\n", 1234);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_insertf error.");
  TEST_DSTRING(ret, &ds, str, test_str1);
  empty = lagopus_dstring_empty(&ds);
  TEST_ASSERT_EQUAL_MESSAGE(false, empty,
                            "empty error.");

  /* insert str. */
  ret = lagopus_dstring_insertf(&ds, test_offset2, "hoge %s\n", "foo");

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_insertf error.");
  TEST_DSTRING(ret, &ds, str, test_str2);

  /* clear. */
  ret = lagopus_dstring_clear(&ds);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_clear error.");
  TEST_DSTRING(ret, &ds, str, test_str3);

  /* insert int. */
  ret = lagopus_dstring_insertf(&ds, test_offset4, "%d 5432\n", 9876);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_insertf error.");
  TEST_DSTRING(ret, &ds, str, test_str4);

  /* insert str. */
  ret = lagopus_dstring_insertf(&ds, test_offset5,
                                "hoge %s %s\n", "foo", "bar");

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_insertf error.");
  TEST_DSTRING(ret, &ds, str, test_str5);

  /* not args */
  ret = lagopus_dstring_insertf(&ds, test_offset6, "bas\n");

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_insertf error.");
  TEST_DSTRING(ret, &ds, str, test_str6);

  /* offset = 0. */
  ret = lagopus_dstring_insertf(&ds, test_offset7, "%d 2\n", 1);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_insertf error.");
  TEST_DSTRING(ret, &ds, str, test_str7);

  /* offset = end. */
  ret = lagopus_dstring_insertf(&ds, test_offset8, "%d 4\n", 3);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_insertf error.");
  TEST_DSTRING(ret, &ds, str, test_str8);

  /* offset = over. */
  ret = lagopus_dstring_insertf(&ds, test_offset9, "%d 5\n", 6);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret,
                            "lagopus_dstring_insertf error.");
}
Ejemplo n.º 10
0
void
test_lagopus_dstring_prependf_clear_srt_get(void) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  bool empty;
  char *str = NULL;
  char test_str1[] = "1234 5678\n";
  char test_str2[] = "hoge foo\n1234 5678\n";
  char test_str3[] = "\0";
  char test_str4[] = "9876 5432\n";
  char test_str5[] = "hoge foo bar\n9876 5432\n";
  char test_str6[] = "bas\nhoge foo bar\n9876 5432\n";

  /* check empty. */
  empty = lagopus_dstring_empty(&ds);
  TEST_ASSERT_EQUAL_MESSAGE(true, empty,
                            "empty error.");
  /* prepend int. */
  ret = lagopus_dstring_prependf(&ds, "%d 5678\n", 1234);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_prependf error.");
  TEST_DSTRING(ret, &ds, str, test_str1);
  empty = lagopus_dstring_empty(&ds);
  TEST_ASSERT_EQUAL_MESSAGE(false, empty,
                            "empty error.");

  /* prepend str. */
  ret = lagopus_dstring_prependf(&ds, "hoge %s\n", "foo");

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_prependf error.");
  TEST_DSTRING(ret, &ds, str, test_str2);

  /* clear. */
  ret = lagopus_dstring_clear(&ds);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_clear error.");
  TEST_DSTRING(ret, &ds, str, test_str3);

  /* prepend int. */
  ret = lagopus_dstring_prependf(&ds, "%d 5432\n", 9876);

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_prependf error.");
  TEST_DSTRING(ret, &ds, str, test_str4);

  /* prepend str. */
  ret = lagopus_dstring_prependf(&ds, "hoge %s %s\n", "foo", "bar");

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_prependf error.");
  TEST_DSTRING(ret, &ds, str, test_str5);

  /* not args. */
  ret = lagopus_dstring_prependf(&ds, "bas\n");

  TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret,
                            "lagopus_dstring_prependf error.");
  TEST_DSTRING(ret, &ds, str, test_str6);
}
Ejemplo n.º 11
0
static inline lagopus_result_t
s_parse_dryrun(datastore_interp_t *iptr,
               datastore_interp_state_t state,
               size_t argc, const char *const argv[],
               lagopus_hashmap_t *hptr,
               datastore_update_proc_t u_proc,
               datastore_enable_proc_t e_proc,
               datastore_serialize_proc_t s_proc,
               datastore_destroy_proc_t d_proc,
               lagopus_dstring_t *result) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  size_t i;

  (void)iptr;
  (void)hptr;
  (void)u_proc;
  (void)e_proc;
  (void)s_proc;
  (void)d_proc;

  for (i = 0; i < argc; i++) {
    lagopus_msg_debug(1, "argv[" PFSZS(4, u) "]:\t'%s'\n", i, argv[i]);
  }

  if (argc == 1) {
    (void)lagopus_dstring_clear(result);

    ret = lagopus_dstring_appendf(result,
                                  "{\"ret\":\"OK\",\n"
                                  "\"data\":{\"dryrun\": ");

    if (ret == LAGOPUS_RESULT_OK) {
      if (state == DATASTORE_INTERP_STATE_DRYRUN) {
        ret = lagopus_dstring_appendf(result, "true}}");
      } else {
        ret = lagopus_dstring_appendf(result, "false}}");
      }

      if (ret != LAGOPUS_RESULT_OK) {
        ret = datastore_json_result_string_setf(result,
                                                LAGOPUS_RESULT_ANY_FAILURES,
                                                "dstring append failed.");
      }
    } else {
      ret = datastore_json_result_string_setf(result,
                                              LAGOPUS_RESULT_ANY_FAILURES,
                                              "dstring append failed.");
    }
  } else if (argc == 2) {
    argv++;

    if (strcmp(*argv, "begin") == 0) {
      ret = dryrun_begin();

      if (ret != LAGOPUS_RESULT_OK) {
        ret = datastore_json_result_string_setf(result,
                                                ret,
                                                "dryrun begin failed.");
      }
    } else if (strcmp(*argv, "end") == 0) {
      ret = dryrun_end();

      if (ret != LAGOPUS_RESULT_OK) {
        ret = datastore_json_result_string_setf(result,
                                                ret,
                                                "dryrun end failed.");
      }
    } else {
      ret = datastore_json_result_string_setf(result,
                                              LAGOPUS_RESULT_INVALID_ARGS,
                                              "Unknown option '%s'.",
                                              *argv);
    }

    if (ret != LAGOPUS_RESULT_DATASTORE_INTERP_ERROR) {
      ret = datastore_json_result_set(result, ret, NULL);
    }
  } else {
    ret = datastore_json_result_string_setf(result,
                                            LAGOPUS_RESULT_INVALID_ARGS,
                                            "Unknown option.");
  }

  return ret;
}
Ejemplo n.º 12
0
static bool
queue_conf_iterate(void *key, void *val, lagopus_hashentry_t he,
                   void *arg) {
  lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES;
  lagopus_dstring_t ds;
  char *prefix = NULL;
  size_t len = 0;
  bool result = false;

  char *fullname = (char *)key;
  queue_conf_iter_ctx_t *ctx =
    (queue_conf_iter_ctx_t *)arg;

  (void)he;
  if (((queue_conf_t *) val)->is_destroying == false) {
    if (ctx->m_namespace == NULL) {
      if (ctx->m_n_configs < ctx->m_max) {
        ctx->m_configs[ctx->m_n_configs++] =
          (queue_conf_t *)val;
        result = true;
      } else {
        result = false;
      }
    } else {
      ret = lagopus_dstring_create(&ds);
      if (ret == LAGOPUS_RESULT_OK) {
        if (ctx->m_namespace[0] == '\0') {
          ret = lagopus_dstring_appendf(&ds,
                                        "%s",
                                        NAMESPACE_DELIMITER);
        } else {
          ret = lagopus_dstring_appendf(&ds,
                                        "%s%s",
                                        ctx->m_namespace,
                                        NAMESPACE_DELIMITER);
        }

        if (ret == LAGOPUS_RESULT_OK) {
          ret = lagopus_dstring_str_get(&ds, &prefix);
          if (ret == LAGOPUS_RESULT_OK) {
            len = strlen(prefix);
            if (ctx->m_n_configs < ctx->m_max &&
                strncmp(fullname, prefix, len) == 0) {
              ctx->m_configs[ctx->m_n_configs++] =
                (queue_conf_t *)val;
            }
            result = true;
          } else {
            lagopus_msg_warning("dstring get failed.\n");
            result = false;
          }
        } else {
          lagopus_msg_warning("dstring append failed.\n");
          result = false;
        }
      } else {
        lagopus_msg_warning("dstring create failed.\n");
        result = false;
      }

      free((void *) prefix);

      (void)lagopus_dstring_clear(&ds);
      (void)lagopus_dstring_destroy(&ds);
    }
  } else {
    /* skip destroying conf.*/
    result = true;
  }

  return result;
}