rndc.c revision debd489a44363870f96f75818e89ec27d3cab736
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC")
f3df966b81ba3d3db8412d8787af60ca05d3fce5Tinderbox User * Copyright (C) 2000-2003 Internet Software Consortium.
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * Permission to use, copy, modify, and/or distribute this software for any
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * purpose with or without fee is hereby granted, provided that the above
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * copyright notice and this permission notice appear in all copies.
b47c020d5c635b662ac57e5485d266fd62c796c0Evan Hunt * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt * PERFORMANCE OF THIS SOFTWARE.
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt/* $Id: rndc.c,v 1.126 2009/09/29 15:06:06 fdupont Exp $ */
b47c020d5c635b662ac57e5485d266fd62c796c0Evan Hunt * Principal Author: DCL
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntstatic const char *admin_conffile;
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntstatic const char *admin_keyfile;
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntstatic isc_boolean_t local4set = ISC_FALSE, local6set = ISC_FALSE;
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntstatic int currentaddr = 0;
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntstatic unsigned int remoteport = 0;
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntstatic char *command;
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntstatic char *args;
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntstatic void rndc_startconnect(isc_sockaddr_t *addr, isc_task_t *task);
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan HuntUsage: %s [-c config] [-s server] [-p port]\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt [-k key-file ] [-y key] [-V] command\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Huntcommand is one of the following:\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt reload Reload configuration file and zones.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt reload zone [class [view]]\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt Reload a single zone.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt refresh zone [class [view]]\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt Schedule immediate maintenance for a zone.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt retransfer zone [class [view]]\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt Retransfer a single zone without checking serial number.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt freeze Suspend updates to all dynamic zones.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt freeze zone [class [view]]\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt Suspend updates to a dynamic zone.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt thaw Enable updates to all dynamic zones and reload them.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt thaw zone [class [view]]\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt Enable updates to a frozen dynamic zone and reload it.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt notify zone [class [view]]\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt Resend NOTIFY messages for the zone.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt reconfig Reload configuration file and new zones only.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt stats Write server statistics to the statistics file.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt querylog Toggle query logging.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt dumpdb [-all|-cache|-zones] [view ...]\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt Dump cache(s) to the dump file (named_dump.db).\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt stop Save pending updates to master files and stop the server.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt stop -p Save pending updates to master files and stop the server\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt reporting process id.\n\
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt halt Stop the server without saving pending updates.\n\
c514f38c801755da4dbe405139d8512873b332b0ckb halt -p Stop the server without saving pending updates reporting\n\
10a759cee69dcc3ce3a4d65e6e263c66e7f60ee8Evan Hunt process id.\n\
10a759cee69dcc3ce3a4d65e6e263c66e7f60ee8Evan Hunt trace Increment debugging level by one.\n\
10a759cee69dcc3ce3a4d65e6e263c66e7f60ee8Evan Hunt trace level Change the debugging level.\n\
10a759cee69dcc3ce3a4d65e6e263c66e7f60ee8Evan Hunt notrace Set debugging level to 0.\n\
10a759cee69dcc3ce3a4d65e6e263c66e7f60ee8Evan Hunt flush Flushes all of the server's caches.\n\
10a759cee69dcc3ce3a4d65e6e263c66e7f60ee8Evan Hunt flush [view] Flushes the server's cache for a view.\n\
10a759cee69dcc3ce3a4d65e6e263c66e7f60ee8Evan Hunt flushname name [view]\n\
10a759cee69dcc3ce3a4d65e6e263c66e7f60ee8Evan Hunt Flush the given name from the server's cache(s)\n\
10a759cee69dcc3ce3a4d65e6e263c66e7f60ee8Evan Hunt status Display status of the server.\n\
10a759cee69dcc3ce3a4d65e6e263c66e7f60ee8Evan Hunt recursing Dump the queries that are currently recursing (named.recursing)\n\
c514f38c801755da4dbe405139d8512873b332b0ckb validation newstate [view]\n\
079c9e6939ef8972bf0d13441738e6ef64505647Mark Andrews Enable / disable DNSSEC validation.\n\
079c9e6939ef8972bf0d13441738e6ef64505647Mark Andrews *restart Restart the server.\n\
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecicki* == not yet implemented\n\
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold KrecickiVersion: %s\n",
cc51cd2d2076e33117c60c9effcb8caccde4983bWitold Krecickiget_addresses(const char *host, in_port_t port) {
c8803902d6e740d1ed85e099835813466fa51391Curtis Blackburn result = isc_sockaddr_frompath(&serveraddrs[nserveraddrs],
c8803902d6e740d1ed85e099835813466fa51391Curtis Blackburnrndc_senddone(isc_task_t *task, isc_event_t *event) {
c8803902d6e740d1ed85e099835813466fa51391Curtis Blackburn isc_socketevent_t *sevent = (isc_socketevent_t *)event;
c8803902d6e740d1ed85e099835813466fa51391Curtis Blackburn fatal("send failed: %s", isc_result_totext(sevent->result));
a165a17a81ff3285f4f4d79785fafb465e626183Evan Hunt RUNTIME_CHECK(isc_app_shutdown() == ISC_R_SUCCESS);
a165a17a81ff3285f4f4d79785fafb465e626183Evan Huntrndc_recvdone(isc_task_t *task, isc_event_t *event) {
f20ff8b74d21fa3e3f071544f6fd060d015cf27eMichał Kępień "This may indicate that\n"
f20ff8b74d21fa3e3f071544f6fd060d015cf27eMichał Kępień "* the remote server is using an older version of"
f20ff8b74d21fa3e3f071544f6fd060d015cf27eMichał Kępień " the command protocol,\n"
f20ff8b74d21fa3e3f071544f6fd060d015cf27eMichał Kępień "* this host is not authorized to connect,\n"
f20ff8b74d21fa3e3f071544f6fd060d015cf27eMichał Kępień "* the clocks are not synchronized, or\n"
f20ff8b74d21fa3e3f071544f6fd060d015cf27eMichał Kępień "* the key is invalid.");
75b8de87879ad017c9cd2ffc328e5d2391d16e99Evan Hunt fatal("recv failed: %s", isc_result_totext(ccmsg.result));
isc_region_t r;
isc_buffer_t b;
recvs--;
nonce = 0;
nonce = 0;
if (nonce != 0) {
recvs++;
NULL));
sends++;
isc_region_t r;
isc_buffer_t b;
connects--;
sizeof(socktext));
recvs++;
NULL));
sends++;
int pf;
case AF_INET:
case AF_INET6:
NULL));
connects++;
currentaddr = 0;
const char *secretstr;
const char *algorithm;
if (!key_only)
if (!key_only) {
const char *name;
&defkey));
} else if (!key_only)
if (key_only)
keyname) == 0)
if (remoteport != 0)
} else if (remoteport == 0)
unsigned int myport;
const char *name;
myport == 0)
myport);
sizeof(socktext));
socktext);
int ch;
switch (ch) {
usage(0);
argslen = 0;
for (i = 0; i < argc; i++)
p = args;
for (i = 0; i < argc; i++) {
p += len;
if (nserveraddrs == 0)
if (show_final_mem)
if (failed)