Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ISC Open Source Projects
BIND
Commits
4423c996
Commit
4423c996
authored
Feb 23, 2005
by
Mark Andrews
Browse files
1814. [func] UNIX domain controls are now supported.
parent
eefe1fca
Changes
23
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
4423c996
...
...
@@ -2,7 +2,7 @@
1815. [placeholder] rt13086
1814. [
placeholder] rt13455
1814. [
func] UNIX domain controls are now supported.
1813. [placeholder] rt13505
...
...
bin/named/controlconf.c
View file @
4423c996
...
...
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: controlconf.c,v 1.4
2
2005/0
1/12
01:
5
6:
0
6 marka Exp $ */
/* $Id: controlconf.c,v 1.4
3
2005/0
2/23
01:
0
6:
3
6 marka Exp $ */
#include <config.h>
...
...
@@ -96,6 +96,10 @@ struct controllistener {
isc_boolean_t
exiting
;
controlkeylist_t
keys
;
controlconnectionlist_t
connections
;
isc_sockettype_t
type
;
isc_uint32_t
perm
;
isc_uint32_t
owner
;
isc_uint32_t
group
;
ISC_LINK
(
controllistener_t
)
link
;
};
...
...
@@ -191,6 +195,8 @@ shutdown_listener(controllistener_t *listener) {
isc_log_write
(
ns_g_lctx
,
NS_LOGCATEGORY_GENERAL
,
NS_LOGMODULE_CONTROL
,
ISC_LOG_NOTICE
,
"stopping command channel on %s"
,
socktext
);
if
(
listener
->
type
==
isc_sockettype_unix
)
isc_socket_cleanunix
(
&
listener
->
address
,
ISC_TRUE
);
listener
->
exiting
=
ISC_TRUE
;
}
...
...
@@ -595,7 +601,8 @@ control_newconn(isc_task_t *task, isc_event_t *event) {
sock
=
nevent
->
newsocket
;
(
void
)
isc_socket_getpeername
(
sock
,
&
peeraddr
);
if
(
!
address_ok
(
&
peeraddr
,
listener
->
acl
))
{
if
(
listener
->
type
==
isc_sockettype_tcp
&&
!
address_ok
(
&
peeraddr
,
listener
->
acl
))
{
char
socktext
[
ISC_SOCKADDR_FORMATSIZE
];
isc_sockaddr_format
(
&
peeraddr
,
socktext
,
sizeof
(
socktext
));
isc_log_write
(
ns_g_lctx
,
NS_LOGCATEGORY_GENERAL
,
...
...
@@ -915,7 +922,8 @@ static void
update_listener
(
ns_controls_t
*
cp
,
controllistener_t
**
listenerp
,
cfg_obj_t
*
control
,
cfg_obj_t
*
config
,
isc_sockaddr_t
*
addr
,
cfg_aclconfctx_t
*
aclconfctx
,
const
char
*
socktext
)
cfg_aclconfctx_t
*
aclconfctx
,
const
char
*
socktext
,
isc_sockettype_t
type
)
{
controllistener_t
*
listener
;
cfg_obj_t
*
allow
;
...
...
@@ -993,7 +1001,7 @@ update_listener(ns_controls_t *cp,
/*
* Now, keep the old access list unless a new one can be made.
*/
if
(
control
!=
NULL
)
{
if
(
control
!=
NULL
&&
type
==
isc_sockettype_tcp
)
{
allow
=
cfg_tuple_get
(
control
,
"allow"
);
result
=
cfg_acl_fromconfig
(
allow
,
config
,
ns_g_lctx
,
aclconfctx
,
listener
->
mctx
,
...
...
@@ -1013,13 +1021,34 @@ update_listener(ns_controls_t *cp,
"command channel %s: %s"
,
socktext
,
isc_result_totext
(
result
));
if
(
result
==
ISC_R_SUCCESS
&&
type
==
isc_sockettype_unix
)
{
isc_uint32_t
perm
,
owner
,
group
;
perm
=
cfg_obj_asuint32
(
cfg_tuple_get
(
control
,
"perm"
));
owner
=
cfg_obj_asuint32
(
cfg_tuple_get
(
control
,
"owner"
));
group
=
cfg_obj_asuint32
(
cfg_tuple_get
(
control
,
"group"
));
result
=
ISC_R_SUCCESS
;
if
(
listener
->
perm
!=
perm
||
listener
->
owner
!=
owner
||
listener
->
group
!=
group
)
result
=
isc_socket_permunix
(
&
listener
->
address
,
perm
,
owner
,
group
);
if
(
result
==
ISC_R_SUCCESS
)
{
listener
->
perm
=
perm
;
listener
->
owner
=
owner
;
listener
->
group
=
group
;
}
else
cfg_obj_log
(
control
,
ns_g_lctx
,
ISC_LOG_WARNING
,
"couldn't update ownership/permission for "
"command channel %s"
,
socktext
);
}
*
listenerp
=
listener
;
}
static
void
add_listener
(
ns_controls_t
*
cp
,
controllistener_t
**
listenerp
,
cfg_obj_t
*
control
,
cfg_obj_t
*
config
,
isc_sockaddr_t
*
addr
,
cfg_aclconfctx_t
*
aclconfctx
,
const
char
*
socktext
)
cfg_aclconfctx_t
*
aclconfctx
,
const
char
*
socktext
,
isc_sockettype_t
type
)
{
isc_mem_t
*
mctx
=
cp
->
server
->
mctx
;
controllistener_t
*
listener
;
...
...
@@ -1042,6 +1071,10 @@ add_listener(ns_controls_t *cp, controllistener_t **listenerp,
listener
->
listening
=
ISC_FALSE
;
listener
->
exiting
=
ISC_FALSE
;
listener
->
acl
=
NULL
;
listener
->
type
=
type
;
listener
->
perm
=
0
;
listener
->
owner
=
0
;
listener
->
group
=
0
;
ISC_LINK_INIT
(
listener
,
link
);
ISC_LIST_INIT
(
listener
->
keys
);
ISC_LIST_INIT
(
listener
->
connections
);
...
...
@@ -1049,7 +1082,7 @@ add_listener(ns_controls_t *cp, controllistener_t **listenerp,
/*
* Make the acl.
*/
if
(
control
!=
NULL
)
{
if
(
control
!=
NULL
&&
type
==
isc_sockettype_tcp
)
{
allow
=
cfg_tuple_get
(
control
,
"allow"
);
result
=
cfg_acl_fromconfig
(
allow
,
config
,
ns_g_lctx
,
aclconfctx
,
mctx
,
&
new_acl
);
...
...
@@ -1087,20 +1120,35 @@ add_listener(ns_controls_t *cp, controllistener_t **listenerp,
if
(
result
==
ISC_R_SUCCESS
)
{
int
pf
=
isc_sockaddr_pf
(
&
listener
->
address
);
if
((
pf
==
AF_INET
&&
isc_net_probeipv4
()
!=
ISC_R_SUCCESS
)
||
#ifdef ISC_PLATFORM_HAVESYSUNH
(
pf
==
AF_UNIX
&&
isc_net_probeunix
()
!=
ISC_R_SUCCESS
)
||
#endif
(
pf
==
AF_INET6
&&
isc_net_probeipv6
()
!=
ISC_R_SUCCESS
))
result
=
ISC_R_FAMILYNOSUPPORT
;
}
if
(
result
==
ISC_R_SUCCESS
&&
type
==
isc_sockettype_unix
)
isc_socket_cleanunix
(
&
listener
->
address
,
ISC_FALSE
);
if
(
result
==
ISC_R_SUCCESS
)
result
=
isc_socket_create
(
ns_g_socketmgr
,
isc_sockaddr_pf
(
&
listener
->
address
),
isc_sockettype_tcp
,
&
listener
->
sock
);
type
,
&
listener
->
sock
);
if
(
result
==
ISC_R_SUCCESS
)
result
=
isc_socket_bind
(
listener
->
sock
,
&
listener
->
address
);
if
(
result
==
ISC_R_SUCCESS
&&
type
==
isc_sockettype_unix
)
{
listener
->
perm
=
cfg_obj_asuint32
(
cfg_tuple_get
(
control
,
"perm"
));
listener
->
owner
=
cfg_obj_asuint32
(
cfg_tuple_get
(
control
,
"owner"
));
listener
->
group
=
cfg_obj_asuint32
(
cfg_tuple_get
(
control
,
"group"
));
result
=
isc_socket_permunix
(
&
listener
->
address
,
listener
->
perm
,
listener
->
owner
,
listener
->
group
);
}
if
(
result
==
ISC_R_SUCCESS
)
result
=
control_listen
(
listener
);
...
...
@@ -1183,9 +1231,6 @@ ns_controls_configure(ns_controls_t *cp, cfg_obj_t *config,
* The parser handles BIND 8 configuration file
* syntax, so it allows unix phrases as well
* inet phrases with no keys{} clause.
*
* "unix" phrases have been reported as
* unsupported by the parser.
*/
control
=
cfg_listelt_value
(
element2
);
...
...
@@ -1206,7 +1251,8 @@ ns_controls_configure(ns_controls_t *cp, cfg_obj_t *config,
socktext
);
update_listener
(
cp
,
&
listener
,
control
,
config
,
addr
,
aclconfctx
,
socktext
);
addr
,
aclconfctx
,
socktext
,
isc_sockettype_tcp
);
if
(
listener
!=
NULL
)
/*
...
...
@@ -1221,7 +1267,81 @@ ns_controls_configure(ns_controls_t *cp, cfg_obj_t *config,
*/
add_listener
(
cp
,
&
listener
,
control
,
config
,
addr
,
aclconfctx
,
socktext
);
socktext
,
isc_sockettype_tcp
);
if
(
listener
!=
NULL
)
ISC_LIST_APPEND
(
new_listeners
,
listener
,
link
);
}
}
for
(
element
=
cfg_list_first
(
controlslist
);
element
!=
NULL
;
element
=
cfg_list_next
(
element
))
{
cfg_obj_t
*
controls
;
cfg_obj_t
*
unixcontrols
=
NULL
;
controls
=
cfg_listelt_value
(
element
);
(
void
)
cfg_map_get
(
controls
,
"unix"
,
&
unixcontrols
);
if
(
unixcontrols
==
NULL
)
continue
;
for
(
element2
=
cfg_list_first
(
unixcontrols
);
element2
!=
NULL
;
element2
=
cfg_list_next
(
element2
))
{
cfg_obj_t
*
control
;
cfg_obj_t
*
path
;
isc_sockaddr_t
addr
;
isc_result_t
result
;
/*
* The parser handles BIND 8 configuration file
* syntax, so it allows unix phrases as well
* inet phrases with no keys{} clause.
*/
control
=
cfg_listelt_value
(
element2
);
path
=
cfg_tuple_get
(
control
,
"path"
);
result
=
isc_sockaddr_frompath
(
&
addr
,
cfg_obj_asstring
(
path
));
if
(
result
!=
ISC_R_SUCCESS
)
{
isc_log_write
(
ns_g_lctx
,
NS_LOGCATEGORY_GENERAL
,
NS_LOGMODULE_CONTROL
,
ISC_LOG_DEBUG
(
9
),
"control channel '%s': %s"
,
cfg_obj_asstring
(
path
),
isc_result_totext
(
result
));
continue
;
}
isc_log_write
(
ns_g_lctx
,
NS_LOGCATEGORY_GENERAL
,
NS_LOGMODULE_CONTROL
,
ISC_LOG_DEBUG
(
9
),
"processing control channel '%s'"
,
cfg_obj_asstring
(
path
));
update_listener
(
cp
,
&
listener
,
control
,
config
,
&
addr
,
aclconfctx
,
cfg_obj_asstring
(
path
),
isc_sockettype_unix
);
if
(
listener
!=
NULL
)
/*
* Remove the listener from the old
* list, so it won't be shut down.
*/
ISC_LIST_UNLINK
(
cp
->
listeners
,
listener
,
link
);
else
/*
* This is a new listener.
*/
add_listener
(
cp
,
&
listener
,
control
,
config
,
&
addr
,
aclconfctx
,
cfg_obj_asstring
(
path
),
isc_sockettype_unix
);
if
(
listener
!=
NULL
)
ISC_LIST_APPEND
(
new_listeners
,
...
...
@@ -1252,7 +1372,8 @@ ns_controls_configure(ns_controls_t *cp, cfg_obj_t *config,
isc_sockaddr_format
(
&
addr
,
socktext
,
sizeof
(
socktext
));
update_listener
(
cp
,
&
listener
,
NULL
,
NULL
,
&
addr
,
NULL
,
socktext
);
&
addr
,
NULL
,
socktext
,
isc_sockettype_tcp
);
if
(
listener
!=
NULL
)
/*
...
...
@@ -1266,7 +1387,8 @@ ns_controls_configure(ns_controls_t *cp, cfg_obj_t *config,
* This is a new listener.
*/
add_listener
(
cp
,
&
listener
,
NULL
,
NULL
,
&
addr
,
NULL
,
socktext
);
&
addr
,
NULL
,
socktext
,
isc_sockettype_tcp
);
if
(
listener
!=
NULL
)
ISC_LIST_APPEND
(
new_listeners
,
...
...
bin/rndc/rndc.c
View file @
4423c996
...
...
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: rndc.c,v 1.10
2
2005/0
1/17 04:11:33
marka Exp $ */
/* $Id: rndc.c,v 1.10
3
2005/0
2/23 01:06:36
marka Exp $ */
/*
* Principal Author: DCL
...
...
@@ -141,10 +141,18 @@ get_addresses(const char *host, in_port_t port) {
isc_result_t
result
;
int
found
=
0
,
count
;
count
=
SERVERADDRS
-
nserveraddrs
;
result
=
bind9_getaddresses
(
host
,
port
,
&
serveraddrs
[
nserveraddrs
],
count
,
&
found
);
nserveraddrs
+=
found
;
if
(
*
host
==
'/'
)
{
result
=
isc_sockaddr_frompath
(
&
serveraddrs
[
nserveraddrs
],
host
);
if
(
result
==
ISC_R_SUCCESS
)
nserveraddrs
++
;
}
else
{
count
=
SERVERADDRS
-
nserveraddrs
;
result
=
bind9_getaddresses
(
host
,
port
,
&
serveraddrs
[
nserveraddrs
],
count
,
&
found
);
nserveraddrs
+=
found
;
}
if
(
result
!=
ISC_R_SUCCESS
)
fatal
(
"couldn't get address for '%s': %s"
,
host
,
isc_result_totext
(
result
));
...
...
@@ -358,6 +366,8 @@ rndc_connected(isc_task_t *task, isc_event_t *event) {
static
void
rndc_startconnect
(
isc_sockaddr_t
*
addr
,
isc_task_t
*
task
)
{
isc_result_t
result
;
int
pf
;
isc_sockettype_t
type
;
char
socktext
[
ISC_SOCKADDR_FORMATSIZE
];
...
...
@@ -365,9 +375,12 @@ rndc_startconnect(isc_sockaddr_t *addr, isc_task_t *task) {
notify
(
"using server %s (%s)"
,
servername
,
socktext
);
DO
(
"create socket"
,
isc_socket_create
(
socketmgr
,
isc_sockaddr_pf
(
addr
),
isc_sockettype_tcp
,
&
sock
));
pf
=
isc_sockaddr_pf
(
addr
);
if
(
pf
==
AF_INET
||
pf
==
AF_INET6
)
type
=
isc_sockettype_tcp
;
else
type
=
isc_sockettype_unix
;
DO
(
"create socket"
,
isc_socket_create
(
socketmgr
,
pf
,
type
,
&
sock
));
switch
(
isc_sockaddr_pf
(
addr
))
{
case
AF_INET
:
DO
(
"bind socket"
,
isc_socket_bind
(
sock
,
&
local4
));
...
...
config.h.in
View file @
4423c996
...
...
@@ -16,7 +16,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: config.h.in,v 1.6
4
200
4/12/04 06:48:4
3 marka Exp $ */
/* $Id: config.h.in,v 1.6
5
200
5/02/23 01:09:2
3 marka Exp $ */
/***
*** This file is not to be included by any public header files, because
...
...
@@ -218,12 +218,19 @@ int sigwait(const unsigned int *set, int *sig);
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <sys/un.h> header file. */
#undef HAVE_SYS_UN_H
/* Define if running under Compaq TruCluster */
#undef HAVE_TRUCLUSTER
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define if connect does not honour the permission on the UNIX domain socket.
*/
#undef NEED_SECURE_DIRECTORY
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
...
...
configure
View file @
4423c996
#! /bin/sh
# Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 2004
, 2005
Internet Systems Consortium, Inc. ("ISC")
# Copyright (C) 1996-2003 Internet Software Consortium.
#
# Permission to use, copy, modify, and distribute this software for any
...
...
@@ -14,7 +14,7 @@
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# $Id: configure,v 1.35
7
200
4/12/09 02:16
:2
8
marka Exp $
# $Id: configure,v 1.35
8
200
5/02/23 01:09
:2
3
marka Exp $
#
# Portions Copyright (C) 1996-2001 Nominum, Inc.
#
...
...
@@ -29,7 +29,7 @@
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
# From configure.in Revision: 1.37
1
.
# From configure.in Revision: 1.37
2
.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.59.
#
...
...
@@ -495,7 +495,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS subdirs build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA STD_CINCLUDES STD_CDEFINES STD_CWARNINGS CCOPT AR ARFLAGS LN ETAGS PERL CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP ISC_SOCKADDR_LEN_T ISC_PLATFORM_HAVELONGLONG ISC_PLATFORM_HAVELIFCONF ISC_PLATFORM_NEEDSYSSELECTH LWRES_PLATFORM_NEEDSYSSELECTH USE_OPENSSL DST_OPENSSL_INC USE_GSSAPI DST_GSSAPI_INC DNS_CRYPTO_LIBS ALWAYS_DEFINES ISC_PLATFORM_USETHREADS ISC_THREAD_DIR MKDEPCC MKDEPCFLAGS MKDEPPROG IRIX_DNSSEC_WARNINGS_HACK purify_path PURIFY LN_S ECHO ac_ct_AR STRIP ac_ct_STRIP CXX CXXFLAGS ac_ct_CXX CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL O A SA LIBTOOL_MKDEP_SED LIBTOOL_MODE_COMPILE LIBTOOL_MODE_INSTALL LIBTOOL_MODE_LINK LIBTOOL_ALLOW_UNDEFINED LIBTOOL_IN_MAIN LIBBIND ISC_PLATFORM_HAVEIPV6 LWRES_PLATFORM_HAVEIPV6 ISC_PLATFORM_NEEDNETINETIN6H LWRES_PLATFORM_NEEDNETINETIN6H ISC_PLATFORM_NEEDNETINET6IN6H LWRES_PLATFORM_NEEDNETINET6IN6H ISC_PLATFORM_HAVEINADDR6 LWRES_PLATFORM_HAVEINADDR6 ISC_PLATFORM_NEEDIN6ADDRANY LWRES_PLATFORM_NEEDIN6ADDRANY ISC_PLATFORM_NEEDIN6ADDRLOOPBACK LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK ISC_PLATFORM_HAVEIN6PKTINFO ISC_PLATFORM_FIXIN6ISADDR ISC_IPV6_H ISC_IPV6_O ISC_ISCIPV6_O ISC_IPV6_C LWRES_HAVE_SIN6_SCOPE_ID ISC_PLATFORM_HAVESCOPEID ISC_PLATFORM_HAVEIF_LADDRREQ ISC_PLATFORM_HAVEIF_LADDRCONF ISC_PLATFORM_NEEDNTOP ISC_PLATFORM_NEEDPTON ISC_PLATFORM_NEEDATON ISC_PLATFORM_HAVESALEN LWRES_PLATFORM_HAVESALEN ISC_PLATFORM_MSGHDRFLAVOR ISC_PLATFORM_NEEDPORTT ISC_LWRES_NEEDADDRINFO ISC_LWRES_NEEDRRSETINFO ISC_LWRES_SETHOSTENTINT ISC_LWRES_ENDHOSTENTINT ISC_LWRES_GETNETBYADDRINADDR ISC_LWRES_SETNETENTINT ISC_LWRES_ENDNETENTINT ISC_LWRES_GETHOSTBYADDRVOID ISC_LWRES_NEEDHERRNO ISC_LWRES_GETIPNODEPROTO ISC_LWRES_GETADDRINFOPROTO ISC_LWRES_GETNAMEINFOPROTO ISC_PLATFORM_NEEDSTRSEP ISC_PLATFORM_NEEDMEMMOVE ISC_PLATFORM_NEEDSTRTOUL ISC_PLATFORM_NEEDSTRLCPY ISC_PLATFORM_NEEDSTRLCAT ISC_PLATFORM_NEEDSPRINTF LWRES_PLATFORM_NEEDSPRINTF ISC_PLATFORM_NEEDVSNPRINTF LWRES_PLATFORM_NEEDVSNPRINTF ISC_EXTRA_OBJS ISC_EXTRA_SRCS ISC_PLATFORM_QUADFORMAT ISC_PLATFORM_RLIMITTYPE ISC_PLATFORM_USEDECLSPEC LWRES_PLATFORM_USEDECLSPEC ISC_PLATFORM_BRACEPTHREADONCEINIT ISC_PLATFORM_HAVEIFNAMETOINDEX OPENJADE JADETEX PDFJADETEX SGMLCATALOG HTMLSTYLE PRINTSTYLE XMLDCL DOCBOOK2MANSPEC BIND9_TOP_BUILDDIR BIND9_ISC_BUILDINCLUDE BIND9_ISCCC_BUILDINCLUDE BIND9_ISCCFG_BUILDINCLUDE BIND9_DNS_BUILDINCLUDE BIND9_LWRES_BUILDINCLUDE BIND9_BIND9_BUILDINCLUDE BIND9_VERSION LIBOBJS LTLIBOBJS'
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS subdirs build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA STD_CINCLUDES STD_CDEFINES STD_CWARNINGS CCOPT AR ARFLAGS LN ETAGS PERL CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP ISC_SOCKADDR_LEN_T ISC_PLATFORM_HAVELONGLONG ISC_PLATFORM_HAVELIFCONF ISC_PLATFORM_NEEDSYSSELECTH LWRES_PLATFORM_NEEDSYSSELECTH USE_OPENSSL DST_OPENSSL_INC USE_GSSAPI DST_GSSAPI_INC DNS_CRYPTO_LIBS ALWAYS_DEFINES ISC_PLATFORM_USETHREADS ISC_THREAD_DIR MKDEPCC MKDEPCFLAGS MKDEPPROG IRIX_DNSSEC_WARNINGS_HACK purify_path PURIFY LN_S ECHO ac_ct_AR STRIP ac_ct_STRIP CXX CXXFLAGS ac_ct_CXX CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL O A SA LIBTOOL_MKDEP_SED LIBTOOL_MODE_COMPILE LIBTOOL_MODE_INSTALL LIBTOOL_MODE_LINK LIBTOOL_ALLOW_UNDEFINED LIBTOOL_IN_MAIN LIBBIND ISC_PLATFORM_HAVEIPV6 LWRES_PLATFORM_HAVEIPV6 ISC_PLATFORM_NEEDNETINETIN6H LWRES_PLATFORM_NEEDNETINETIN6H ISC_PLATFORM_NEEDNETINET6IN6H LWRES_PLATFORM_NEEDNETINET6IN6H ISC_PLATFORM_HAVEINADDR6 LWRES_PLATFORM_HAVEINADDR6 ISC_PLATFORM_NEEDIN6ADDRANY LWRES_PLATFORM_NEEDIN6ADDRANY ISC_PLATFORM_NEEDIN6ADDRLOOPBACK LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK ISC_PLATFORM_HAVEIN6PKTINFO ISC_PLATFORM_FIXIN6ISADDR ISC_IPV6_H ISC_IPV6_O ISC_ISCIPV6_O ISC_IPV6_C LWRES_HAVE_SIN6_SCOPE_ID ISC_PLATFORM_HAVESCOPEID ISC_PLATFORM_HAVEIF_LADDRREQ ISC_PLATFORM_HAVEIF_LADDRCONF ISC_PLATFORM_NEEDNTOP ISC_PLATFORM_NEEDPTON ISC_PLATFORM_NEEDATON ISC_PLATFORM_HAVESALEN LWRES_PLATFORM_HAVESALEN ISC_PLATFORM_MSGHDRFLAVOR ISC_PLATFORM_NEEDPORTT ISC_LWRES_NEEDADDRINFO ISC_LWRES_NEEDRRSETINFO ISC_LWRES_SETHOSTENTINT ISC_LWRES_ENDHOSTENTINT ISC_LWRES_GETNETBYADDRINADDR ISC_LWRES_SETNETENTINT ISC_LWRES_ENDNETENTINT ISC_LWRES_GETHOSTBYADDRVOID ISC_LWRES_NEEDHERRNO ISC_LWRES_GETIPNODEPROTO ISC_LWRES_GETADDRINFOPROTO ISC_LWRES_GETNAMEINFOPROTO ISC_PLATFORM_NEEDSTRSEP ISC_PLATFORM_NEEDMEMMOVE ISC_PLATFORM_NEEDSTRTOUL ISC_PLATFORM_NEEDSTRLCPY ISC_PLATFORM_NEEDSTRLCAT ISC_PLATFORM_NEEDSPRINTF LWRES_PLATFORM_NEEDSPRINTF ISC_PLATFORM_NEEDVSNPRINTF LWRES_PLATFORM_NEEDVSNPRINTF ISC_EXTRA_OBJS ISC_EXTRA_SRCS ISC_PLATFORM_QUADFORMAT
ISC_PLATFORM_HAVESYSUNH
ISC_PLATFORM_RLIMITTYPE ISC_PLATFORM_USEDECLSPEC LWRES_PLATFORM_USEDECLSPEC ISC_PLATFORM_BRACEPTHREADONCEINIT ISC_PLATFORM_HAVEIFNAMETOINDEX OPENJADE JADETEX PDFJADETEX SGMLCATALOG HTMLSTYLE PRINTSTYLE XMLDCL DOCBOOK2MANSPEC BIND9_TOP_BUILDDIR BIND9_ISC_BUILDINCLUDE BIND9_ISCCC_BUILDINCLUDE BIND9_ISCCFG_BUILDINCLUDE BIND9_DNS_BUILDINCLUDE BIND9_LWRES_BUILDINCLUDE BIND9_BIND9_BUILDINCLUDE BIND9_VERSION LIBOBJS LTLIBOBJS'
ac_subst_files='BIND9_MAKE_INCLUDES BIND9_MAKE_RULES LIBISC_API LIBISCCC_API LIBISCCFG_API LIBDNS_API LIBBIND9_API LIBLWRES_API'
# Initialize some variables set by options.
...
...
@@ -26461,6 +26461,179 @@ fi
done
for ac_header in sys/un.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo "$as_me:$LINENO: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
else
# Is the header compilable?
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
#include <$ac_header>
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_header_compiler=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
# Is the header present?
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <$ac_header>
_ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
else
ac_cpp_err=yes
fi
if test -z "$ac_cpp_err"; then
ac_header_preproc=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_preproc=no
fi
rm -f conftest.err conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
ac_header_preproc=yes
;;
no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
## ------------------------------------------ ##
## Report this to the AC_PACKAGE_NAME lists. ##
## ------------------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
;;
esac
echo "$as_me:$LINENO: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
fi
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<_ACEOF
#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
ISC_PLATFORM_HAVESYSUNH="#define ISC_PLATFORM_HAVESYSUNH 1"
else
ISC_PLATFORM_HAVESYSUNH="#undef ISC_PLATFORM_HAVESYSUNH"
fi
done
case "$host" in
*-solaris*)
cat >>confdefs.h <<\_ACEOF
#define NEED_SECURE_DIRECTORY 1
_ACEOF
;;
*-sunos*)
cat >>confdefs.h <<\_ACEOF
#define NEED_SECURE_DIRECTORY 1
_ACEOF
;;
esac
#
# Time Zone Stuff
#
...
...
@@ -28416,6 +28589,7 @@ s,@LWRES_PLATFORM_NEEDVSNPRINTF@,$LWRES_PLATFORM_NEEDVSNPRINTF,;t t
s,@ISC_EXTRA_OBJS@,$ISC_EXTRA_OBJS,;t t
s,@ISC_EXTRA_SRCS@,$ISC_EXTRA_SRCS,;t t
s,@ISC_PLATFORM_QUADFORMAT@,$ISC_PLATFORM_QUADFORMAT,;t t
s,@ISC_PLATFORM_HAVESYSUNH@,$ISC_PLATFORM_HAVESYSUNH,;t t
s,@ISC_PLATFORM_RLIMITTYPE@,$ISC_PLATFORM_RLIMITTYPE,;t t
s,@ISC_PLATFORM_USEDECLSPEC@,$ISC_PLATFORM_USEDECLSPEC,;t t
s,@LWRES_PLATFORM_USEDECLSPEC@,$LWRES_PLATFORM_USEDECLSPEC,;t t
...
...
configure.in
View file @
4423c996
...
...
@@ -18,7 +18,7 @@ AC_DIVERT_PUSH(1)dnl
esyscmd([sed "s/^/# /" COPYRIGHT])dnl
AC_DIVERT_POP()dnl
AC_REVISION($Revision: 1.37
1
$)
AC_REVISION($Revision: 1.37
2
$)
AC_INIT(lib/dns/name.c)
AC_PREREQ(2.13)
...
...
@@ -1798,6 +1798,24 @@ case "$enable_linux_caps" in
esac
AC_CHECK_HEADERS(sys/prctl.h)
AC_CHECK_HEADERS(sys/un.h,
ISC_PLATFORM_HAVESYSUNH="#define ISC_PLATFORM_HAVESYSUNH 1"
,
ISC_PLATFORM_HAVESYSUNH="#undef ISC_PLATFORM_HAVESYSUNH"
)
AC_SUBST(ISC_PLATFORM_HAVESYSUNH)
case "$host" in
*-solaris*)
AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
[Define if connect does not honour the permission on the UNIX domain socket.])
;;
*-sunos*)
AC_DEFINE(NEED_SECURE_DIRECTORY, 1,
[Define if connect does not honour the permission on the UNIX domain socket.])
;;
esac
#
# Time Zone Stuff
#
...
...
lib/bind9/check.c
View file @
4423c996
...
...
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $Id: check.c,v 1.5
5
2005/0
1/17 00:46:02
marka Exp $ */
/* $Id: check.c,v 1.5
6
2005/0
2/23 01:06:37
marka Exp $ */
#include <config.h>
...
...
@@ -1411,6 +1411,147 @@ bind9_check_logging(cfg_obj_t *config, isc_log_t *logctx, isc_mem_t *mctx) {
return
(
result
);
}
static
isc_result_t
key_exists
(
cfg_obj_t
*
keylist
,
const
char
*
keyname
)
{
cfg_listelt_t
*
element
;
const
char
*
str
;
cfg_obj_t
*
obj
;