📄 test_sresolv.c
字号:
"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 + -