control.h revision 135601
1266423Sjfv/*
2266423Sjfv * Copyright (C) 2004  Internet Systems Consortium, Inc. ("ISC")
3266423Sjfv * Copyright (C) 2001-2003  Internet Software Consortium.
4266423Sjfv *
5266423Sjfv * Permission to use, copy, modify, and distribute this software for any
6266423Sjfv * purpose with or without fee is hereby granted, provided that the above
7266423Sjfv * copyright notice and this permission notice appear in all copies.
8266423Sjfv *
9266423Sjfv * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10266423Sjfv * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11266423Sjfv * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12266423Sjfv * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13266423Sjfv * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14266423Sjfv * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15266423Sjfv * PERFORMANCE OF THIS SOFTWARE.
16266423Sjfv */
17266423Sjfv
18266423Sjfv/* $Id: control.h,v 1.6.2.2.2.6.6.1 2004/09/20 01:00:01 marka Exp $ */
19266423Sjfv
20266423Sjfv#ifndef NAMED_CONTROL_H
21266423Sjfv#define NAMED_CONTROL_H 1
22266423Sjfv
23266423Sjfv/*
24266423Sjfv * The name server command channel.
25266423Sjfv */
26266423Sjfv
27266423Sjfv#include <isccc/types.h>
28266423Sjfv
29266423Sjfv#include <named/aclconf.h>
30266423Sjfv#include <named/types.h>
31266423Sjfv
32266423Sjfv#define NS_CONTROL_PORT			953
33266423Sjfv
34266423Sjfv#define NS_COMMAND_STOP		"stop"
35266423Sjfv#define NS_COMMAND_HALT		"halt"
36266423Sjfv#define NS_COMMAND_RELOAD	"reload"
37270346Sjfv#define NS_COMMAND_RECONFIG	"reconfig"
38270346Sjfv#define NS_COMMAND_REFRESH	"refresh"
39269198Sjfv#define NS_COMMAND_RETRANSFER	"retransfer"
40266423Sjfv#define NS_COMMAND_DUMPSTATS	"stats"
41266423Sjfv#define NS_COMMAND_QUERYLOG	"querylog"
42266423Sjfv#define NS_COMMAND_DUMPDB	"dumpdb"
43270346Sjfv#define NS_COMMAND_TRACE	"trace"
44266423Sjfv#define NS_COMMAND_NOTRACE	"notrace"
45266423Sjfv#define NS_COMMAND_FLUSH	"flush"
46266423Sjfv#define NS_COMMAND_FLUSHNAME	"flushname"
47266423Sjfv#define NS_COMMAND_STATUS	"status"
48266423Sjfv#define NS_COMMAND_FREEZE	"freeze"
49270346Sjfv#define NS_COMMAND_UNFREEZE	"unfreeze"
50266423Sjfv#define NS_COMMAND_THAW		"thaw"
51266423Sjfv#define NS_COMMAND_RECURSING	"recursing"
52266423Sjfv#define NS_COMMAND_NULL		"null"
53266423Sjfv
54266423Sjfvisc_result_t
55270346Sjfvns_controls_create(ns_server_t *server, ns_controls_t **ctrlsp);
56266423Sjfv/*
57266423Sjfv * Create an initial, empty set of command channels for 'server'.
58266423Sjfv */
59266423Sjfv
60266423Sjfvvoid
61266423Sjfvns_controls_destroy(ns_controls_t **ctrlsp);
62266423Sjfv/*
63266423Sjfv * Destroy a set of command channels.
64270346Sjfv *
65266423Sjfv * Requires:
66266423Sjfv *	Shutdown of the channels has completed.
67266423Sjfv */
68266423Sjfv
69266423Sjfvisc_result_t
70266423Sjfvns_controls_configure(ns_controls_t *controls, cfg_obj_t *config,
71266423Sjfv		      ns_aclconfctx_t *aclconfctx);
72266423Sjfv/*
73270346Sjfv * Configure zero or more command channels into 'controls'
74266423Sjfv * as defined in the configuration parse tree 'config'.
75266423Sjfv * The channels will evaluate ACLs in the context of
76266423Sjfv * 'aclconfctx'.
77266423Sjfv */
78266423Sjfv
79266423Sjfvvoid
80266423Sjfvns_controls_shutdown(ns_controls_t *controls);
81270346Sjfv/*
82270346Sjfv * Initiate shutdown of all the command channels in 'controls'.
83270346Sjfv */
84270346Sjfv
85270346Sjfvisc_result_t
86270346Sjfvns_control_docommand(isccc_sexpr_t *message, isc_buffer_t *text);
87270346Sjfv
88270346Sjfv#endif /* NAMED_CONTROL_H */
89270346Sjfv