Exemplo n.º 1
0
ATF_TC_BODY(master_includelist, tc) {
	isc_result_t result;
	char *filename = NULL;

	UNUSED(tc);

	result = dns_test_begin(NULL, ISC_FALSE);
	ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);

	result = setup_master(NULL, NULL);
	ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);

	result = dns_master_loadfile4("testdata/master/master8.data",
				      &dns_origin, &dns_origin,
				      dns_rdataclass_in, 0, ISC_TRUE,
				      &callbacks, include_callback,
				      &filename, mctx, dns_masterformat_text);
	ATF_CHECK_EQ(result, DNS_R_SEENINCLUDE);
	ATF_CHECK(filename != NULL);
	if (filename != NULL) {
		ATF_CHECK_STREQ(filename, "testdata/master/master7.data");
		isc_mem_free(mctx, filename);
	}

	dns_test_end();
}
Exemplo n.º 2
0
int
master_init(vr_conf *conf)
{
    rstatus_t status;
    uint32_t j;
    sds *host, listen_str;
    vr_listen **vlisten;
    int threads_num;
    int filelimit;

    master.cbsul = NULL;
    pthread_mutex_init(&master.cbsullock, NULL);

    conf_server_get(CONFIG_SOPN_THREADS,&threads_num);
    filelimit = threads_num*2+CONFIG_MIN_RESERVED_FDS;
    vr_eventloop_init(&master.vel,filelimit);
    master.vel.thread.fun_run = master_thread_run;

    darray_init(&master.listens,darray_n(&cserver->binds),sizeof(vr_listen*));

    for (j = 0; j < darray_n(&cserver->binds); j ++) {
        host = darray_get(&cserver->binds,j);
        listen_str = sdsdup(*host);
        listen_str = sdscatfmt(listen_str, ":%i", cserver->port);
        vlisten = darray_push(&master.listens);
        *vlisten = vr_listen_create(listen_str);
        if (*vlisten == NULL) {
            darray_pop(&master.listens);
            log_error("Create listen %s failed", listen_str);
            sdsfree(listen_str);
            return VR_ERROR;
        }
        sdsfree(listen_str);
    }

    for (j = 0; j < darray_n(&master.listens); j ++) {
        vlisten = darray_get(&master.listens, j);
        status = vr_listen_begin(*vlisten);
        if (status != VR_OK) {
            log_error("Begin listen to %s failed", (*vlisten)->name);
            return VR_ERROR;
        }
    }

    master.cbsul = dlistCreate();
    if (master.cbsul == NULL) {
        log_error("Create list failed: out of memory");
        return VR_ENOMEM;
    }

    setup_master();

    return VR_OK;
}
Exemplo n.º 3
0
static isc_result_t
test_master(const char *testfile, dns_masterformat_t format,
	    void (*warn)(struct dns_rdatacallbacks *, const char *, ...),
	    void (*error)(struct dns_rdatacallbacks *, const char *, ...))
{
	isc_result_t		result;

	result = setup_master(warn, error);
	if (result != ISC_R_SUCCESS)
		return(result);

	result = dns_master_loadfile2(testfile, &dns_origin, &dns_origin,
				      dns_rdataclass_in, ISC_TRUE,
				      &callbacks, mctx, format);
	return (result);
}