1/*
2 * Copyright (C) 2004-2007, 2009-2012  Internet Systems Consortium, Inc. ("ISC")
3 * Copyright (C) 2001-2003  Internet Software Consortium.
4 *
5 * Permission to use, copy, modify, and/or distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11 * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14 * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15 * PERFORMANCE OF THIS SOFTWARE.
16 */
17
18/* $Id$ */
19
20#ifndef NAMED_CONTROL_H
21#define NAMED_CONTROL_H 1
22
23/*! \file
24 * \brief
25 * The name server command channel.
26 */
27
28#include <isccc/types.h>
29
30#include <isccfg/aclconf.h>
31
32#include <named/types.h>
33
34#define NS_CONTROL_PORT			953
35
36#define NS_COMMAND_STOP		"stop"
37#define NS_COMMAND_HALT		"halt"
38#define NS_COMMAND_RELOAD	"reload"
39#define NS_COMMAND_RECONFIG	"reconfig"
40#define NS_COMMAND_REFRESH	"refresh"
41#define NS_COMMAND_RETRANSFER	"retransfer"
42#define NS_COMMAND_DUMPSTATS	"stats"
43#define NS_COMMAND_QUERYLOG	"querylog"
44#define NS_COMMAND_DUMPDB	"dumpdb"
45#define NS_COMMAND_SECROOTS	"secroots"
46#define NS_COMMAND_TRACE	"trace"
47#define NS_COMMAND_NOTRACE	"notrace"
48#define NS_COMMAND_FLUSH	"flush"
49#define NS_COMMAND_FLUSHNAME	"flushname"
50#define NS_COMMAND_FLUSHTREE	"flushtree"
51#define NS_COMMAND_STATUS	"status"
52#define NS_COMMAND_TSIGLIST	"tsig-list"
53#define NS_COMMAND_TSIGDELETE	"tsig-delete"
54#define NS_COMMAND_FREEZE	"freeze"
55#define NS_COMMAND_UNFREEZE	"unfreeze"
56#define NS_COMMAND_THAW		"thaw"
57#define NS_COMMAND_TIMERPOKE	"timerpoke"
58#define NS_COMMAND_RECURSING	"recursing"
59#define NS_COMMAND_NULL		"null"
60#define NS_COMMAND_NOTIFY	"notify"
61#define NS_COMMAND_VALIDATION	"validation"
62#define NS_COMMAND_SIGN 	"sign"
63#define NS_COMMAND_LOADKEYS 	"loadkeys"
64#define NS_COMMAND_ADDZONE	"addzone"
65#define NS_COMMAND_DELZONE	"delzone"
66#define NS_COMMAND_SYNC		"sync"
67#define NS_COMMAND_SIGNING	"signing"
68
69isc_result_t
70ns_controls_create(ns_server_t *server, ns_controls_t **ctrlsp);
71/*%<
72 * Create an initial, empty set of command channels for 'server'.
73 */
74
75void
76ns_controls_destroy(ns_controls_t **ctrlsp);
77/*%<
78 * Destroy a set of command channels.
79 *
80 * Requires:
81 *	Shutdown of the channels has completed.
82 */
83
84isc_result_t
85ns_controls_configure(ns_controls_t *controls, const cfg_obj_t *config,
86		      cfg_aclconfctx_t *aclconfctx);
87/*%<
88 * Configure zero or more command channels into 'controls'
89 * as defined in the configuration parse tree 'config'.
90 * The channels will evaluate ACLs in the context of
91 * 'aclconfctx'.
92 */
93
94void
95ns_controls_shutdown(ns_controls_t *controls);
96/*%<
97 * Initiate shutdown of all the command channels in 'controls'.
98 */
99
100isc_result_t
101ns_control_docommand(isccc_sexpr_t *message, isc_buffer_t *text);
102
103#endif /* NAMED_CONTROL_H */
104