Ken Raeburn [Fri, 19 Nov 2004 22:12:50 +0000 (22:12 +0000)]
* locate_kdc.c (krb5int_add_host_to_list): If debugging, log the requested
family and socket type. If AI_NUMERICSERV is defined, set it in ai_flags. If
getaddrinfo returns an error with debugging enabled, log the error.
(krb5_locate_srv_conf_1): When logging an error from add_host_to_list, include
the corresponding error string.
* t_locate_kdc.c: Include port-sockets.h, instead of sys/socket.h, netdb.h,
netinet/in.h, and arpa/inet.h.
* Makefile.in ($(OUTPRE)t_locate_kdc.exe): New target.
Ken Raeburn [Fri, 19 Nov 2004 21:09:45 +0000 (21:09 +0000)]
* fake-addrinfo.c (HAVE_GETADDRINFO, HAVE_GETNAMEINFO)[_WIN32]: Don't define
here.
(protoname): Handle IPPROTO_IGMP.
(debug_dump_addrinfo_args): Update for current interfaces to socktypename and
familyname.
Tom Yu [Fri, 19 Nov 2004 20:36:45 +0000 (20:36 +0000)]
* aclocal.m4 (KRB5_AC_PRIOCNTL_HACK): Check for Solaris patch
117171-11 (sparc) or 117172-11 (x86), which fixes the Solaris 9
bug which can cause final pty output to be on close.
Ken Raeburn [Tue, 16 Nov 2004 05:04:56 +0000 (05:04 +0000)]
Create a ccache get-flags operation.
The MSLSA and CCAPI versions are untested!
* cc_file.c (krb5_fcc_get_flags): New function.
(krb5_fcc_ops, krb5_cc_file_ops): Add it.
* cc_memory.c (krb5_mcc_get_flags): New function.
(krb5_mcc_ops): Add it.
* cc_mslsa.c (krb5_lcc_get_flags): New function.
(krb5_lcc_ops): Add it.
* ccfns.c (krb5_cc_get_flags): New function.
* ccapi/stdcc.c (krb5_stdcc_get_flags): New function.
(krb5_cc_stdcc_ops): Add it.
* ccapi/stdcc.h (krb5_stdcc_get_flags): Declare.
Ken Raeburn [Mon, 15 Nov 2004 22:16:02 +0000 (22:16 +0000)]
Make static linking not require -lsocket, -lnsl, etc.
Don't duplicate macro definitions.
Header files and comments still need some cleanup.
* cache-addrinfo.h, init-addrinfo.c: New files, split out from fake-addrinfo.c.
* fake-addrinfo.c: Include cache-addrinfo.h.
(FAI_CACHE, struct face, struct fac): Moved to cache-addrinfo.h.
(krb5int_fac, krb5int_init_fac, krb5int_fini_fac): Moved to init-addrinfo.c.
(addrinfo, struct addrinfo): Don't define.
(AI_* and NI_* and EAI_* macros): Don't define.
* threads.c: Include cache-addrinfo.h.
(krb5int_init_fac, krb5int_fini_fac): Don't declare.
* Makefile.in (SRCS, STLIBOBJS, LIBOBJS): Updated.
* prof_init.c, profile.hin: added profile_is_modified and profile_is_writable so that callers can check to see if profile_release() will fail before calling it
* prof_set.c: profile calls which set values should not fail if file is not writable. You can now write to a different file with profile_flush_to_file() or buffer with profile_flush_to_buffer()
Ken Raeburn [Wed, 3 Nov 2004 08:40:53 +0000 (08:40 +0000)]
move getaddrinfo hacks into support lib for easier maintenance
With the cache on Mac OS X, and likely to be enabled eventually on other
platforms, this is going to wind up being a non-trivial amount of code on most
platforms, and updating the cache code to work on other configurations is
likely to take a few rounds. Rather than recompile the world and add a bunch
of code to each object file doing name lookups, moving the code into the
support library that already defines the static data (list head, mutex) should
make things simpler.
(TODO: Fix calling conventions for Windows?)
* include/fake-addrinfo.h: Move most of code content into
util/support/fake-addrinfo.c.
(krb5int_getaddrinfo, krb5int_freeaddrinfo, krb5int_getnameinfo,
krb5int_gai_strerror): Declare.
(getaddrinfo, freeaddrinfo, getnameinfo, gai_strerror): Define as macros
mapping to the krb5int_ function names.
* util/support/fake-addrinfo.c: Import most of the contents of
include/fake-addrinfo.h, so we only compile it once.
(krb5int_getaddrinfo, krb5int_freeaddrinfo, krb5int_getnameinfo,
krb5int_gai_strerror): New functions, always defined and exported.
* util/support/libkrb5support.exports: Export the new functions, not the old
_fac symbols.
Ken Raeburn [Mon, 1 Nov 2004 21:33:05 +0000 (21:33 +0000)]
* yarrow.c (krb5int_yarrow_input, krb5int_yarrow_final): Don't check for
forking here.
(yarrow_output_locked): Split out from krb5int_yarrow_output, without locking.
(krb5int_yarrow_output): Do locking and call yarrow_output_locked.
(yarrow_gate_locked): New function; uses yarrow_output_locked.
(krb5int_yarrow_output_Block): Use yarrow_gate_locked.
Ken Raeburn [Sat, 30 Oct 2004 05:43:18 +0000 (05:43 +0000)]
call stat less often on krb5.conf
Changes suggested by lxs to reduce stat frequency to once per second.
In parallel loops creating and destroying krb5 contexts on Mac OS X, this
seems to improve performance by 10%, though it's hard to be sure because
the times are variable.
* prof_int.h (STAT_ONCE_PER_SECOND): Define.
(struct _prf_data_t) [STAT_ONCE_PER_SECOND]: New field LAST_STAT.
* prof_file.c (scan_shared_trees_locked, scan_shared_trees_unlocked): Redefine
to do nothing for now.
(profile_update_file_data) [STAT_ONCE_PER_SECOND]: If the current time is the
same time as the last stat of the file, just return; otherwise, save away the
current time.
Ken Raeburn [Sat, 30 Oct 2004 00:56:30 +0000 (00:56 +0000)]
push yarrow locking down into the yarrow code to reduce contention
This seems to speed up creating a krb5_context a little bit, when it happens
a lot in multiple threads.
* prng.c (yarrow_lock): Rename to krb5int_yarrow_lock via macro, and change to
be non-static.
(krb5int_prng_init): Call do_yarrow_init here.
(krb5_c_random_add_entropy): Don't call it here. Don't lock the mutex, either.
(krb5_c_random_make_octets): Don't lock the mutex.
* yarrow/ylock.h: Include k5-thread.h.
(krb5int_yarrow_lock): Declare.
(LOCK, UNLOCK): Define as macros using the k5_mutex_ macros.
Ken Raeburn [Thu, 28 Oct 2004 05:40:00 +0000 (05:40 +0000)]
* k5-thread.h (return_after_yield, k5_mutex_lock) [__GNUC__]: Add macro
versions so debugging line numbers will be useful.
(DEBUG_THREADS_SLOW): Don't define.
Tom Yu [Wed, 27 Oct 2004 22:12:48 +0000 (22:12 +0000)]
* misc.c, misc.h: New function check_min_life(), containing common
code from wrapper functions. New function chpass_util_wrapper(),
which does min_life checking prior to calling
kadm5_chpass_principal_util().
Ken Raeburn [Wed, 27 Oct 2004 00:07:20 +0000 (00:07 +0000)]
Permit exporting profile file data into a buffer
* prof_file.c (profile_flush_file_data_to_buffer): New function.
* profi_init.c (profile_flush_to_buffer, profile_free_buffer): New functions.
* prof_parse.c (output_quoted_string): Use a callback instead of stdio calls.
(dump_profile): Renamed from dump_profile_to_file. Use a callback instead of
stdio calls.
(dump_profile_to_file_cb): New function.
(profile_write_tree_file): Updated to new internal interface.
(struct prof_buf): New type.
(add_data_to_buffer, dump_profile_to_buffer_cb, profile_write_tree_to_buffer):
New functions.
* prof_int.h (profile_write_tree_to_buffer, profile_flush_file_data_to_buffer):
Declare.
* profile.hin (profile_flush_to_buffer, profile_free_buffer): Declare.
* libprofile.exports: Export profile_flush_to_buffer and profile_free_buffer.
* profile.swg (profile_flush_to_buffer): Declare.
* profile_tcl.c: Regenerated.
Ken Raeburn [Fri, 22 Oct 2004 19:07:45 +0000 (19:07 +0000)]
* prof_file.c (profile_update_file_data): When resetting flags, preserve SHARED
flag.
(scan_shared_trees_locked, scan_shared_trees_unlocked): Convert to macros, so
line numbers reported by assert will be useful.
* prof_test1 (test2): Run new test of modifications with other existing open
profile handles.
Ken Raeburn [Thu, 21 Oct 2004 00:27:14 +0000 (00:27 +0000)]
* locate_kdc.c: Include stdarg.h.
(Tprintf): New function, prints to stderr or not depending on TEST macro.
(add_addrinfo_to_list, krb5int_add_host_to_list, krb5_locate_srv_conf_1,
krb5_locate_srv_dns_1, krb5int_locate_server): Call it instead of conditionally
calling fprintf.
Tom Yu [Tue, 19 Oct 2004 18:09:53 +0000 (18:09 +0000)]
* dnsglue.c (initparse): Skip query type and class when we lack
ns_initparse().
(krb5int_dns_nextans) [!HAVE_NS_INITPARSE]: Pass correct pointer
to dn_skipname(). Actually skip the RR name.
Ken Raeburn [Mon, 18 Oct 2004 23:14:51 +0000 (23:14 +0000)]
Allow profile library caller to write the modified data to a different
file than was originally read.
* prof_file.c (write_data_to_file): New function, split out from
profile_flush_file_data. Add argument can_create indicating whether the old
file should already exist or not.
(profile_flush_file_data): Call it.
(profile_flush_file_data_to_file): New function.
* prof_int.h (profile_flush_file_data_to_file): Declare it.
(profile_flush_file_to_file): New macro.
* prof_init.c (profile_flush_to_file): New function.
* profile.hin (profile_flush_to_file): Declare.
* profile.swg (profile_flush_to_file): Declare.
* profile_tcl.c: Regenerated.
* prof_test1: Use profile_flush_to_file instead of profile_flush, and reload
from the new filename.
Ken Raeburn [Fri, 15 Oct 2004 23:58:17 +0000 (23:58 +0000)]
* prof_file.c, prof_int.h, prof_set.c: Remove support for non-SHARE_TREE_DATA
case.
* prof_int.h (struct _prf_data_t): Change filespec to a trailing char array.
Add a length field for the filespec.
(profile_make_prf_data): Declare.
(profile_lock_global, profile_unlock_global): Prototypes need argument lists.
* prof_file.c: Include stddef.h.
(scan_shared_trees_locked, scan_shared_trees_unlocked): New functions.
(r_access, rw_access): Now take const_profile_filespec_t arg.
(profile_make_prf_data): New function.
(profile_open_file): Scan trees at beginning and end. Use
profile_make_prf_data to allocate and initialize storage.
(profile_dereference_data, profile_free_file_data): Scan trees.
(profile_ser_size, profile_ser_externalize): Filespec is never null.
* prof_set.c (rw_setup): Use profile_make_prf_data to allocate and initialize
storage.
* prof_file.c (profile_library_initializer, profile_library_finalizer): Added macros to avoid adding error tables on platforms that don't use them (ie: OSX)
krb5_string_to_deltat should default to seconds if no unit is provided. If the format is invalid, it should return a distinct error (KRB5_DELTAT_BADFORMAT, not EINVAL)
Ken Raeburn [Wed, 6 Oct 2004 23:39:12 +0000 (23:39 +0000)]
* localaddr.c (foreach_localaddr): Be more careful not to walk past the end of
the ifreq array.
(get_ifreq_array): Return 0 in success case, not errno.
Ken Raeburn [Wed, 6 Oct 2004 01:10:09 +0000 (01:10 +0000)]
* aclocal.m4 (KRB5_AC_ENABLE_THREADS): On HP-UX, define some preprocessor
symbols that -pthread defines, but don't use -pthread so we can avoid forcing
linking against pthread libraries.
Ken Raeburn [Tue, 5 Oct 2004 21:24:01 +0000 (21:24 +0000)]
* localaddr.c (foreach_localaddr) [HAVE_STRUCT_IF_LADDRCONF && 0]: Fix
if_laddrreq.iflr_name field name not properly adjusted. The iflr_addr field is
an HP-UX specific sockaddr_ext with sa_ field name prefixes.
Ken Raeburn [Fri, 1 Oct 2004 23:44:49 +0000 (23:44 +0000)]
* localaddr.c (get_if_laddrconf, foreach_localaddr): New implementation for
HP-UX 11, based on Solaris support and information from Doug Engert. Disabled
for now, until it can be tested.
Ken Raeburn [Thu, 23 Sep 2004 23:26:25 +0000 (23:26 +0000)]
* prof_tree.c (struct profile_node): Add new bitfield DELETED.
(profile_add_node): Move variable CMP into inner block where it's used. Clear
deleted flag.
(profile_find_node): Skip deleted nodes.
(profile_remove_node): Just set the deleted flag, don't modify the tree.
* Makefile.in (profile_tcl.c): Target should be in srcdir.
(profile_tcl.o): Depend on profile.h.
(DO_TCL): New variable.
(check-unix-tcl-, check-unix-tcl-ok): New targets.
(check-unix): Depend on one of them, based on DO_TCL.
* configure.in: Set and substitute DO_TCL.
* prof_test1: New file.
Ken Raeburn [Thu, 23 Sep 2004 22:16:13 +0000 (22:16 +0000)]
* profile.swg: Only include tclsh.i if building for Tcl.
(Tcl_SetResult, my_tcl_setresult): Compile hack only if building for Tcl.
(%typemap SWIGTYPE *OUTPUT): Initialization is not specific to the scripting
language. Add Python code.
(%typemap errcode_t, errcode_t*): Add placeholders for Python support.
Ken Raeburn [Thu, 23 Sep 2004 00:25:30 +0000 (00:25 +0000)]
* lib.in (binutils.versions, osf1.exports): New file targets.
(clean-libs): Delete them.
* pre.in (SHLIB_EXPORT_FILE_DEP): Use @SHLIB_EXPORT_FILE_DEP@.
* shlib.conf: Set it to $(SHLIB_EXPORT_FILE) by default.
(alpha*-dec-osf*): Use osf1.exports instead of adding commands to generate a
temporary file.
(*-*-linux*, *-*-gnu*, *-*-k*bsd*-gnu): Use binutils.versions.
Ken Raeburn [Thu, 23 Sep 2004 00:21:34 +0000 (00:21 +0000)]
* aclocal.m4 (AC_KRB5_TCL_FIND_CONFIG): If the config info set by tclConfig.sh
doesn't produce a working executable, set TCL_LIBS to be empty explicitly.
(KRB5_BUILD_LIBRARY_WITH_DEPS): Substitute SHLIB_EXPORT_FILE_DEP.