Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
ISC Open Source Projects
BIND
Commits
4423c996
Commit
4423c996
authored
Feb 23, 2005
by
Mark Andrews
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1814. [func] UNIX domain controls are now supported.
parent
eefe1fca
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
1248 additions
and
320 deletions
+1248
-320
CHANGES
CHANGES
+1
-1
bin/named/controlconf.c
bin/named/controlconf.c
+137
-15
bin/rndc/rndc.c
bin/rndc/rndc.c
+21
-8
config.h.in
config.h.in
+8
-1
configure
configure
+178
-4
configure.in
configure.in
+19
-1
lib/bind9/check.c
lib/bind9/check.c
+145
-1
lib/dns/dispatch.c
lib/dns/dispatch.c
+4
-1
lib/isc/include/isc/netaddr.h
lib/isc/include/isc/netaddr.h
+12
-1
lib/isc/include/isc/platform.h.in
lib/isc/include/isc/platform.h.in
+6
-1
lib/isc/include/isc/sockaddr.h
lib/isc/include/isc/sockaddr.h
+18
-1
lib/isc/include/isc/socket.h
lib/isc/include/isc/socket.h
+40
-3
lib/isc/netaddr.c
lib/isc/netaddr.c
+40
-1
lib/isc/sockaddr.c
lib/isc/sockaddr.c
+44
-3
lib/isc/unix/include/isc/net.h
lib/isc/unix/include/isc/net.h
+7
-1
lib/isc/unix/net.c
lib/isc/unix/net.c
+11
-1
lib/isc/unix/socket.c
lib/isc/unix/socket.c
+203
-3
lib/isc/win32/include/isc/net.h
lib/isc/win32/include/isc/net.h
+12
-1
lib/isc/win32/include/isc/platform.h
lib/isc/win32/include/isc/platform.h
+7
-1
lib/isc/win32/libisc.def
lib/isc/win32/libisc.def
+264
-264
lib/isc/win32/net.c
lib/isc/win32/net.c
+6
-1
lib/isc/win32/socket.c
lib/isc/win32/socket.c
+18
-1
lib/isccfg/namedconf.c
lib/isccfg/namedconf.c
+47
-5
No files found.
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
;