c46bcd7c6908745e19b0b1fe18a23bbaaee553edBob Halley/*
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * Copyright (C) 1999-2001, 2004, 2007, 2009, 2015, 2016 Internet Systems Consortium, Inc. ("ISC")
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence *
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * file, You can obtain one at http://mozilla.org/MPL/2.0/.
c46bcd7c6908745e19b0b1fe18a23bbaaee553edBob Halley */
c46bcd7c6908745e19b0b1fe18a23bbaaee553edBob Halley
d7201de09b85929a86b157f4b2d91667c68c6b52Automatic Updater/* $Id: master_test.c,v 1.32 2009/09/02 23:48:01 tbox Exp $ */
9c3531d72aeaad6c5f01efe6a1c82023e1379e4dDavid Lawrence
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews#include <config.h>
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews#include <stdlib.h>
142784f574e0b63e8bbcccb762eb8727ac7c76feBrian Wellington#include <string.h>
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews#include <isc/buffer.h>
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence#include <isc/mem.h>
3759f10fc543747668b1ca4b4671f35b0dea8445Francis Dupont#include <isc/print.h>
6e49e91bd08778d7eae45a2229dcf41ed97cc636David Lawrence#include <isc/util.h>
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence#include <dns/callbacks.h>
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews#include <dns/master.h>
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews#include <dns/name.h>
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews#include <dns/rdataset.h>
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews#include <dns/result.h>
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrewsisc_mem_t *mctx;
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews
6e49e91bd08778d7eae45a2229dcf41ed97cc636David Lawrencestatic isc_result_t
a01f52a731f03c9d61357ac872f3d228db56a0afBob Halleyprint_dataset(void *arg, dns_name_t *owner, dns_rdataset_t *dataset) {
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews char buf[64*1024];
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews isc_buffer_t target;
3ddd814a97de1d152ba0913c592d6e6dc83d38a6Michael Graff isc_result_t result;
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence
6e49e91bd08778d7eae45a2229dcf41ed97cc636David Lawrence UNUSED(arg);
0c67279acb4a6ac356879498b220645755d77cc9Mark Andrews
6e49e91bd08778d7eae45a2229dcf41ed97cc636David Lawrence isc_buffer_init(&target, buf, 64*1024);
8d6024e7cffbd84fa8d06ce50c60307d7b3b49c2Michael Graff result = dns_rdataset_totext(dataset, owner, ISC_FALSE, ISC_FALSE,
8d6024e7cffbd84fa8d06ce50c60307d7b3b49c2Michael Graff &target);
419590499823ce15b5d2ad4fe71eaf04bd5a86c0Michael Graff if (result == ISC_R_SUCCESS)
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews fprintf(stdout, "%.*s\n", (int)target.used,
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews (char*)target.base);
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence else
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews fprintf(stdout, "dns_rdataset_totext: %s\n",
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews dns_result_totext(result));
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews
419590499823ce15b5d2ad4fe71eaf04bd5a86c0Michael Graff return (ISC_R_SUCCESS);
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews}
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrewsint
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrewsmain(int argc, char *argv[]) {
3ddd814a97de1d152ba0913c592d6e6dc83d38a6Michael Graff isc_result_t result;
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews dns_name_t origin;
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews isc_buffer_t source;
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews isc_buffer_t target;
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews unsigned char name_buf[255];
82d05588933a3c765aa8518fe455d6477d640b99Mark Andrews dns_rdatacallbacks_t callbacks;
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews
6e49e91bd08778d7eae45a2229dcf41ed97cc636David Lawrence UNUSED(argc);
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews RUNTIME_CHECK(isc_mem_create(0, 0, &mctx) == ISC_R_SUCCESS);
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews if (argv[1]) {
6e49e91bd08778d7eae45a2229dcf41ed97cc636David Lawrence isc_buffer_init(&source, argv[1], strlen(argv[1]));
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews isc_buffer_add(&source, strlen(argv[1]));
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews isc_buffer_setactive(&source, strlen(argv[1]));
6e49e91bd08778d7eae45a2229dcf41ed97cc636David Lawrence isc_buffer_init(&target, name_buf, 255);
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews dns_name_init(&origin, NULL);
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews result = dns_name_fromtext(&origin, &source, dns_rootname,
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉 0, &target);
419590499823ce15b5d2ad4fe71eaf04bd5a86c0Michael Graff if (result != ISC_R_SUCCESS) {
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews fprintf(stdout, "dns_name_fromtext: %s\n",
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews dns_result_totext(result));
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews exit(1);
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews }
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence
2680c1bb61f5b8084ab023dc11057c3350ecf0cfAndreas Gustafsson dns_rdatacallbacks_init_stdio(&callbacks);
a01f52a731f03c9d61357ac872f3d228db56a0afBob Halley callbacks.add = print_dataset;
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence
d7201de09b85929a86b157f4b2d91667c68c6b52Automatic Updater result = dns_master_loadfile(argv[1], &origin, &origin,
0deebcd15ad440c7ecaaa77f8e06232b331aae79Mark Andrews dns_rdataclass_in, 0,
27ffc5a69779c3c7224580a89aa2bf0a3ff8c16dBob Halley &callbacks, mctx);
27ffc5a69779c3c7224580a89aa2bf0a3ff8c16dBob Halley fprintf(stdout, "dns_master_loadfile: %s\n",
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews dns_result_totext(result));
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews }
9a791981764b0e19e0e48f6bd55edf5ad5272f4bMark Andrews return (0);
3ff55a3111fe09f517218905248974b8319b2c59Mark Andrews}