⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_sresolv.c

📁 Sofia SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification.
💻 C
📖 第 1 页 / 共 4 页
字号:
  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.";char name2048[2049] =   "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"  "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"  "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"  "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"  "gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"  "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"  "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"  "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"  "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"  "gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"  "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"  "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"  "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"  "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"  "gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"  "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"  "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"  "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"  "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"  "gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"  "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh";int test_a(sres_context_t *ctx){  sres_resolver_t *res = ctx->resolver;  sres_query_t *query;  sres_record_t **result;  const sres_a_record_t *rr_a;  char const *domain = "sip00.example.com";  char name1025[1026] = 		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"		  		  ".";  BEGIN();  TEST_1(!sres_query(res, test_answer, ctx, sres_type_a, name1025));  name1025[1024] = '\0';  TEST_1(!sres_query(res, test_answer, ctx, sres_type_a, name1025));  name1025[1023] = '\0';  TEST_1(!sres_query(res, test_answer, ctx, sres_type_a, name1025));  TEST_1(!sres_query(res, test_answer, ctx, sres_type_a, name2048));  query = sres_query(res, test_answer, ctx, sres_type_a, longname);  TEST_1(query);  sres_query_bind(query, NULL, NULL);    TEST_1(sres_query(res, test_answer, ctx, sres_type_a, domain));  TEST_RUN(ctx);  TEST_1(result = ctx->result);  TEST_1(result[0]);  TEST(result[0]->sr_record->r_status, 0);  TEST_1(rr_a = result[0]->sr_a);  TEST(rr_a->a_record->r_type, sres_type_a);  TEST(rr_a->a_record->r_class, sres_class_in);  TEST(rr_a->a_record->r_ttl, 60);  TEST_S(inet_ntoa(rr_a->a_addr), "194.2.188.133");  sres_free_answers(res, ctx->result), ctx->result = NULL;  TEST_1(result = sres_cached_answers(res, sres_type_a, domain));  TEST(result[0]->sr_record->r_status, 0);  TEST_1(rr_a = result[0]->sr_a);  TEST(rr_a->a_record->r_type, sres_type_a);  TEST(rr_a->a_record->r_class, sres_class_in);  TEST(rr_a->a_record->r_ttl, 60);  TEST_S(inet_ntoa(rr_a->a_addr), "194.2.188.133");  sres_free_answers(res, result);  /* Try sub-queries */  TEST_1(sres_search(res, test_answer, ctx, sres_type_a, "sip00"));  TEST_RUN(ctx);  TEST_1(result = ctx->result);  for (;*result; result++)    if (result[0]->sr_a->a_record->r_type == sres_type_a)      break;  TEST(result[0]->sr_record->r_status, 0);  TEST_1(rr_a = result[0]->sr_a);  TEST(rr_a->a_record->r_type, sres_type_a);  TEST(rr_a->a_record->r_class, sres_class_in);  TEST(rr_a->a_record->r_ttl, 60);  TEST_S(inet_ntoa(rr_a->a_addr), "194.2.188.133");  sres_free_answers(res, ctx->result), ctx->result = NULL;  /* Try missing domain */  TEST_1(sres_query(res, test_answer, ctx, sres_type_a, 			 "no-sip.example.com"));  TEST_RUN(ctx);  TEST_1(result = ctx->result);  TEST(result[0]->sr_record->r_status, SRES_NAME_ERR);  TEST_1(rr_a = result[0]->sr_a);  TEST(rr_a->a_record->r_type, sres_type_a);  TEST(rr_a->a_record->r_class, sres_class_in);  /* Error gets TTL from example.com SOA record minimum time */  TEST(rr_a->a_record->r_ttl, 60);  sres_free_answers(res, ctx->result), ctx->result = NULL;  /* Try domain without A record =>      we should get a record with SRES_RECORD_ERR */  TEST_1(sres_query(res, test_answer, ctx, sres_type_a, 			 "aaaa.example.com"));  TEST_RUN(ctx);  TEST_1(result = ctx->result);  TEST(result[0]->sr_record->r_status, SRES_RECORD_ERR);  TEST_1(rr_a = result[0]->sr_a);  TEST(rr_a->a_record->r_type, sres_type_a);  TEST(rr_a->a_record->r_class, sres_class_in);  /* Error gets TTL from example.com SOA record minimum time */  TEST(rr_a->a_record->r_ttl, 60);  sres_free_answers(res, ctx->result), ctx->result = NULL;  /* Cached search */  TEST_1(result = sres_search_cached_answers(res, sres_type_a, "sip00"));  TEST_1(rr_a = result[0]->sr_a);  TEST(rr_a->a_record->r_status, 0);  TEST_S(rr_a->a_record->r_name, "sip00.example.com.");  TEST(rr_a->a_record->r_type, sres_type_a);  TEST(rr_a->a_record->r_class, sres_class_in);  TEST(rr_a->a_record->r_ttl, 60);  TEST_S(inet_ntoa(rr_a->a_addr), "194.2.188.133");  if (result[1]) {    TEST(result[1]->sr_a->a_record->r_type, sres_type_a);  }  sres_free_answers(res, result), result = NULL;  /* Cached search */  TEST_1(result = sres_cached_answers(res, sres_type_a, "no-sip.example.com"));  TEST_1(rr_a = result[0]->sr_a);  TEST(rr_a->a_record->r_status, SRES_NAME_ERR);  TEST(rr_a->a_record->r_type, sres_type_a);  TEST(rr_a->a_record->r_class, sres_class_in);  sres_free_answers(res, result), result = NULL;  END();}#if HAVE_SIN6int test_a6(sres_context_t *ctx){  sres_resolver_t *res = ctx->resolver;  sres_record_t **result;  const sres_a6_record_t *rr_a6;  char buf[50] = {0};  char const *domain = "oldns.example.com";  BEGIN();  TEST_1(sres_query(res, test_answer, ctx, sres_type_a6, domain));  TEST_RUN(ctx);  TEST_1(result = ctx->result);  TEST_1(result[0]);    rr_a6 = result[0]->sr_a6;  TEST(rr_a6->a6_record->r_type, sres_type_a6);  TEST(rr_a6->a6_record->r_class, sres_class_in);  TEST(rr_a6->a6_record->r_ttl, 60);  TEST(rr_a6->a6_prelen, 0);  TEST_S(su_inet_ntop(AF_INET6, &rr_a6->a6_suffix, buf, sizeof(buf)),	 "3ffe:1200:3012:c000:210:a4ff:fe8d:6a46");  TEST_P(rr_a6->a6_prename, NULL);  sres_free_answers(res, ctx->result), ctx->result = NULL;  TEST_1(result = sres_cached_answers(res, sres_type_a6, domain));  TEST_1(rr_a6 = result[0]->sr_a6);  TEST(rr_a6->a6_record->r_type, sres_type_a6);  TEST(rr_a6->a6_record->r_class, sres_class_in);  TEST(rr_a6->a6_record->r_ttl, 60);  TEST(rr_a6->a6_prelen, 0);  TEST_S(su_inet_ntop(AF_INET6, &rr_a6->a6_suffix, buf, sizeof(buf)),	 "3ffe:1200:3012:c000:210:a4ff:fe8d:6a46");  TEST_P(rr_a6->a6_prename, NULL);  sres_free_answers(res, result), result = NULL;  END();}int test_a6_prefix(sres_context_t *ctx){  sres_resolver_t *res = ctx->resolver;  sres_record_t **result;  const sres_a6_record_t *rr_a6;  char buf[50] = {0};  char const *domain = "a6.example.com";  BEGIN();  TEST_1(sres_query(res, test_answer, ctx, sres_type_a6, domain));  TEST_RUN(ctx);  TEST_1(result = ctx->result);  TEST_1(rr_a6 = result[0]->sr_a6);  TEST(rr_a6->a6_record->r_type, sres_type_a6);  TEST(rr_a6->a6_record->r_class, sres_class_in);  TEST(rr_a6->a6_record->r_ttl, 60);  TEST(rr_a6->a6_prelen, 64);  TEST_S(su_inet_ntop(AF_INET6, &rr_a6->a6_suffix, buf, sizeof(buf)),	 "::a08:20ff:fe7d:e7ac");  TEST_S(rr_a6->a6_prename, "mynet.example.com.");  sres_free_answers(res, ctx->result), ctx->result = NULL;  /* Check parsing of special case: no prefix */  TEST_1(sres_query(res, test_answer, ctx, sres_type_a6, "full.example.com"));  TEST_RUN(ctx);  TEST_1(result = ctx->result);  TEST_1(rr_a6 = result[0]->sr_a6);  TEST(rr_a6->a6_record->r_type, sres_type_a6);  TEST(rr_a6->a6_record->r_class, sres_class_in);  TEST(rr_a6->a6_record->r_ttl, 60);  TEST(rr_a6->a6_prelen, 0);  TEST_S(su_inet_ntop(AF_INET6, &rr_a6->a6_suffix, buf, sizeof(buf)),	 "3ff0:12:3012:c006:a08:20ff:fe7d:e7ac");  TEST_P(rr_a6->a6_prename, NULL);   sres_free_answers(res, ctx->result), ctx->result = NULL;  /* Check parsing of special case: no suffix */  TEST_1(sres_query(res, test_answer, ctx, sres_type_a6, "alias6.example.com"));  TEST_RUN(ctx);  TEST_1(result = ctx->result);  TEST_1(rr_a6 = result[0]->sr_a6);  TEST(rr_a6->a6_record->r_type, sres_type_a6);  TEST(rr_a6->a6_record->r_class, sres_class_in);  TEST(rr_a6->a6_record->r_ttl, 60);  TEST(rr_a6->a6_prelen, 128);  TEST_S(su_inet_ntop(AF_INET6, &rr_a6->a6_suffix, buf, sizeof(buf)), "::");  TEST_S(rr_a6->a6_prename, "a6.example.com.");   sres_free_answers(res, ctx->result), ctx->result = NULL;  TEST_1(result = sres_cached_answers(res, sres_type_a6, domain));  TEST_1(rr_a6 = result[0]->sr_a6);  TEST(rr_a6->a6_record->r_type, sres_type_a6);  TEST(rr_a6->a6_record->r_class, sres_class_in);  TEST(rr_a6->a6_record->r_ttl, 60);  TEST(rr_a6->a6_prelen, 64);  TEST_S(su_inet_ntop(AF_INET6, &rr_a6->a6_suffix, buf, sizeof(buf)),	 "::a08:20ff:fe7d:e7ac");  TEST_S(rr_a6->a6_prename, "mynet.example.com.");  sres_free_answers(res, result), result = NULL;  END();}int test_aaaa(sres_context_t *ctx){  sres_resolver_t *res = ctx->resolver;  sres_record_t **result;  const sres_aaaa_record_t *rr_aaaa;  char buf[50] = {0};  char const *domain = "sip03.example.com";  BEGIN();  TEST_1(sres_query(res, test_answer, ctx, sres_type_aaaa, domain));  TEST_RUN(ctx);  TEST_1(result = ctx->result);  TEST_1(rr_aaaa = result[0]->sr_aaaa);  TEST(rr_aaaa->aaaa_record->r_type, sres_type_aaaa);  TEST(rr_aaaa->aaaa_record->r_class, sres_class_in);  TEST(rr_aaaa->aaaa_record->r_ttl, 60);  TEST_S(su_inet_ntop(AF_INET6, &rr_aaaa->aaaa_addr, buf, sizeof(buf)),	 "3ffe:1200:3012:c000:206:5bff:fe55:4630");  sres_free_answers(res, ctx->result), ctx->result = NULL;  TEST_1(result = sres_cached_answers(res, sres_type_aaaa, domain));    TEST_1(rr_aaaa = result[0]->sr_aaaa);  TEST(rr_aaaa->aaaa_record->r_type, sres_type_aaaa);  TEST(rr_aaaa->aaaa_record->r_class, sres_class_in);  TEST(rr_aaaa->aaaa_record->r_ttl, 60);  TEST_S(su_inet_ntop(AF_INET6, &rr_aaaa->aaaa_addr, buf, sizeof(buf)),	 "3ffe:1200:3012:c000:206:5bff:fe55:4630");  sres_free_answers(res, result), result = NULL;  END();}#endif /* HAVE_SIN6 */int test_srv(sres_context_t *ctx){  sres_resolver_t *res = ctx->resolver;  sres_record_t **result;  const sres_srv_record_t *rr;  char const *domain = "_sips._tcp.example.com";  int i;  BEGIN();  TEST_1(sres_query(res, test_answer, ctx, sres_type_srv, domain));  TEST_RUN(ctx);  TEST_1(result = ctx->result);  for (i = 0; result[i] != NULL; i++) {    TEST_1(rr = (sres_srv_record_t *) result[i]->sr_srv);        switch(rr->srv_priority) {    case 3:      TEST(rr->srv_record->r_type, sres_type_srv);      TEST(rr->srv_record->r_class, sres_class_in);      TEST(rr->srv_record->r_ttl, 60);      TEST(rr->srv_weight, 100);      TEST(rr->srv_port, 5061);      TEST_S(rr->srv_target, "sip00.example.com.");      break;    case 4:      TEST(rr->srv_record->r_type, sres_type_srv);      TEST(rr->srv_record->r_class, sres_class_in);      TEST(rr->srv_record->r_ttl, 60);      TEST(rr->srv_weight, 50);      TEST(rr->srv_port, 5050);      TEST_S(rr->srv_target, "sip02.example.com.");      break;    case 5:      TEST(rr->srv_record->r_type, sres_type_srv);      TEST(rr->srv_record->r_class, sres_class_in);      TEST(rr->srv_record->r_ttl, 60);      TEST(rr->srv_weight, 10);      TEST(rr->srv_port, 5060);      TEST_S(rr->srv_target, "sip01.example.com.");      break;    default:      TEST_1(0);    }  }  sres_free_answers(res, ctx->result), ctx->result = NULL;  TEST_1(result = sres_cached_answers(res, sres_type_srv, domain));  for (i = 0; result[i] != NULL; i++) {    TEST_1(rr = (sres_srv_record_t *) result[i]->sr_srv);        switch(rr->srv_priority) {    case 3:      TEST(rr->srv_record->r_type, sres_type_srv);      TEST(rr->srv_record->r_class, sres_class_in);      TEST(rr->srv_record->r_ttl, 60);      TEST(rr->srv_weight, 100);      TEST(rr->srv_port, 5061);      TEST_S(rr->srv_target, "sip00.example.com.");      break;    case 4:      TEST(rr->srv_record->r_type, sres_type_srv);      TEST(rr->srv_record->r_class, sres_class_in);      TEST(rr->srv_record->r_ttl, 60);      TEST(rr->srv_weight, 50);      TEST(rr->srv_port, 5050);      TEST_S(rr->srv_target, "sip02.example.com.");      break;    case 5:      TEST(rr->srv_record->r_type, sres_type_srv);      TEST(rr->srv_record->r_class, sres_class_in);      TEST(rr->srv_record->r_ttl, 60);      TEST(rr->srv_weight, 10);      TEST(rr->srv_port, 5060);      TEST_S(rr->srv_target, "sip01.example.com.");      break;    default:      TEST_1(0);    }  }  sres_free_answers(res, result), result = NULL;  END();}int test_cname(sres_context_t *ctx){  sres_resolver_t *res = ctx->resolver;  sres_record_t **result;  const sres_cname_record_t *rr;  char const *domain = "sip.example.com";  BEGIN();  TEST_1(sres_query(res, test_answer, ctx, sres_type_a, domain));  TEST_RUN(ctx);  TEST_1(result = ctx->result);  TEST_1(rr = result[0]->sr_cname);  TEST(rr->cn_record->r_class, sres_class_in);  TEST(rr->cn_record->r_type, sres_type_cname);  TEST(rr->cn_record->r_ttl, 60);  TEST_S(rr->cn_cname, "sip00.example.com.");  sres_free_answers(res, ctx->result), ctx->result = NULL;  END();}int test_ptr_ipv4(sres_context_t *ctx){  sres_resolver_t *res = ctx->resolver;  sres_record_t **result;  const sres_ptr_record_t *rr;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -