krb5 commit: Remove orphaned KfM code

Greg Hudson ghudson at mit.edu
Tue Jul 30 16:14:35 EDT 2019


https://github.com/krb5/krb5/commit/db111e157c283e58bb29e87fe7257b77bce44920
commit db111e157c283e58bb29e87fe7257b77bce44920
Author: Michael Mattioli <mmattioli at users.noreply.github.com>
Date:   Sun Jul 28 16:36:30 2019 -0400

    Remove orphaned KfM code
    
    Remove the Mac parts of the ccapi code, as ccapi is now only used in
    the Windows build.  Remove util/mac.
    
    [ghudson at mit.edu: rewrote commit message]

 src/ccapi/common/mac/cci_os_debugging.c            |   35 -
 src/ccapi/common/mac/cci_os_identifier.c           |   78 --
 src/ccapi/lib/mac/ccapi_os_ipc.c                   |   50 --
 src/ccapi/lib/mac/ccapi_vector.c                   |  838 --------------------
 src/ccapi/lib/mac/ccapi_vector.exports             |   59 --
 src/ccapi/lib/mac/ccapi_vector.h                   |  227 ------
 src/ccapi/server/mac/CCacheServerInfo.plist        |   38 -
 src/ccapi/server/mac/ccs_os_notify.c               |   79 --
 src/ccapi/server/mac/ccs_os_pipe.c                 |   79 --
 src/ccapi/server/mac/ccs_os_server.c               |   97 ---
 .../server/mac/edu.mit.Kerberos.CCacheServer.plist |   35 -
 src/util/mac/k5_mig.defs                           |   54 --
 src/util/mac/k5_mig_client.c                       |  529 ------------
 src/util/mac/k5_mig_client.h                       |   37 -
 src/util/mac/k5_mig_reply.defs                     |   58 --
 src/util/mac/k5_mig_request.defs                   |   62 --
 src/util/mac/k5_mig_server.c                       |  390 ---------
 src/util/mac/k5_mig_server.h                       |   52 --
 src/util/mac/k5_mig_types.h                        |   60 --
 19 files changed, 0 insertions(+), 2857 deletions(-)

diff --git a/src/ccapi/common/mac/cci_os_debugging.c b/src/ccapi/common/mac/cci_os_debugging.c
deleted file mode 100644
index e528045..0000000
--- a/src/ccapi/common/mac/cci_os_debugging.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* ccapi/common/mac/cci_os_debugging.c */
-/*
- * Copyright 2006 Massachusetts Institute of Technology.
- * All Rights Reserved.
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission.  Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is" without express
- * or implied warranty.
- */
-
-
-#include "cci_os_debugging.h"
-#include <Kerberos/KerberosDebug.h>
-
-/* ------------------------------------------------------------------------ */
-
-void cci_os_debug_vprintf (const char *in_format, va_list in_args)
-{
-    dvprintf (in_format, in_args);
-}
diff --git a/src/ccapi/common/mac/cci_os_identifier.c b/src/ccapi/common/mac/cci_os_identifier.c
deleted file mode 100644
index be7b5bd..0000000
--- a/src/ccapi/common/mac/cci_os_identifier.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* ccapi/common/mac/cci_os_identifier.c */
-/*
- * Copyright 2006 Massachusetts Institute of Technology.
- * All Rights Reserved.
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission.  Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is" without express
- * or implied warranty.
- */
-
-#include "cci_common.h"
-#include "cci_os_identifier.h"
-
-#include <CoreFoundation/CoreFoundation.h>
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 cci_os_identifier_new_uuid (cci_uuid_string_t *out_uuid_string)
-{
-    cc_int32 err = ccNoError;
-    cci_uuid_string_t uuid_string = NULL;
-    CFUUIDRef uuid = NULL;
-    CFStringRef uuid_stringref = NULL;
-    CFStringEncoding encoding = kCFStringEncodingUTF8;
-    CFIndex length = 0;
-
-    if (!out_uuid_string) { err = cci_check_error (ccErrBadParam); }
-
-    if (!err) {
-        uuid = CFUUIDCreate (kCFAllocatorDefault);
-        if (!uuid) { err = cci_check_error (ccErrNoMem); }
-    }
-
-    if (!err) {
-        uuid_stringref = CFUUIDCreateString (kCFAllocatorDefault, uuid);
-        if (!uuid_stringref) { err = cci_check_error (ccErrNoMem); }
-    }
-
-    if (!err) {
-        length = CFStringGetMaximumSizeForEncoding (CFStringGetLength (uuid_stringref),
-                                                    encoding) + 1;
-
-        uuid_string = malloc (length);
-        if (!uuid_string) { err = cci_check_error (ccErrNoMem); }
-    }
-
-    if (!err) {
-        if (!CFStringGetCString (uuid_stringref, uuid_string, length, encoding)) {
-            err = cci_check_error (ccErrNoMem);
-        }
-    }
-
-    if (!err) {
-        *out_uuid_string = uuid_string;
-        uuid_string = NULL; /* take ownership */
-    }
-
-    if (uuid_string   ) { free (uuid_string); }
-    if (uuid_stringref) { CFRelease (uuid_stringref); }
-    if (uuid          ) { CFRelease (uuid); }
-
-    return cci_check_error (err);
-}
diff --git a/src/ccapi/lib/mac/ccapi_os_ipc.c b/src/ccapi/lib/mac/ccapi_os_ipc.c
deleted file mode 100644
index d6b9a6c..0000000
--- a/src/ccapi/lib/mac/ccapi_os_ipc.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* ccapi/lib/mac/ccapi_os_ipc.c */
-/*
- * Copyright 2006 Massachusetts Institute of Technology.
- * All Rights Reserved.
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission.  Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is" without express
- * or implied warranty.
- */
-
-#include "ccapi_os_ipc.h"
-
-#include "k5_mig_client.h"
-
-#define cci_server_bundle_id "edu.mit.Kerberos.CCacheServer"
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 cci_os_ipc_thread_init (void)
-{
-    /* k5_ipc_send_request handles all thread data for us */
-    return 0;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 cci_os_ipc (cc_int32      in_launch_server,
-                     k5_ipc_stream in_request_stream,
-                     k5_ipc_stream *out_reply_stream)
-{
-    return cci_check_error (k5_ipc_send_request (cci_server_bundle_id,
-                                                 in_launch_server,
-                                                 in_request_stream,
-                                                 out_reply_stream));
-}
diff --git a/src/ccapi/lib/mac/ccapi_vector.c b/src/ccapi/lib/mac/ccapi_vector.c
deleted file mode 100644
index 155599d..0000000
--- a/src/ccapi/lib/mac/ccapi_vector.c
+++ /dev/null
@@ -1,838 +0,0 @@
-/* ccapi/lib/mac/ccapi_vector.c */
-/*
- * Copyright 2006 Massachusetts Institute of Technology.
- * All Rights Reserved.
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission.  Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is" without express
- * or implied warranty.
- */
-
-#include "ccapi_vector.h"
-
-#include "ccapi_context.h"
-#include "ccapi_string.h"
-#include "ccapi_ccache.h"
-#include "ccapi_credentials.h"
-#include "ccapi_ccache_iterator.h"
-#include "ccapi_credentials_iterator.h"
-
-/* ------------------------------------------------------------------------ */
-
-static void cci_swap_string_functions (cc_string_t io_string)
-{
-    cc_string_f temp = *(io_string->functions);
-    *((cc_string_f *)io_string->functions) = *(io_string->vector_functions);
-    *((cc_string_f *)io_string->vector_functions) = temp;
-}
-
-/* ------------------------------------------------------------------------ */
-
-static void cci_swap_context_functions (cc_context_t io_context)
-{
-    cc_context_f temp = *(io_context->functions);
-    *((cc_context_f *)io_context->functions) = *(io_context->vector_functions);
-    *((cc_context_f *)io_context->vector_functions) = temp;
-}
-
-/* ------------------------------------------------------------------------ */
-
-static void cci_swap_ccache_functions (cc_ccache_t io_ccache)
-{
-    cc_ccache_f temp = *(io_ccache->functions);
-    *((cc_ccache_f *)io_ccache->functions) = *(io_ccache->vector_functions);
-    *((cc_ccache_f *)io_ccache->vector_functions) = temp;
-}
-
-/* ------------------------------------------------------------------------ */
-
-static void cci_swap_credentials_functions (cc_credentials_t io_credentials)
-{
-    cc_credentials_f temp = *(io_credentials->functions);
-    *((cc_credentials_f *)io_credentials->functions) = *(io_credentials->otherFunctions);
-    *((cc_credentials_f *)io_credentials->otherFunctions) = temp;
-}
-
-/* ------------------------------------------------------------------------ */
-
-static void cci_swap_ccache_iterator_functions (cc_ccache_iterator_t io_ccache_iterator)
-{
-    cc_ccache_iterator_f temp = *(io_ccache_iterator->functions);
-    *((cc_ccache_iterator_f *)io_ccache_iterator->functions) = *(io_ccache_iterator->vector_functions);
-    *((cc_ccache_iterator_f *)io_ccache_iterator->vector_functions) = temp;
-}
-
-/* ------------------------------------------------------------------------ */
-
-static void cci_swap_credentials_iterator_functions (cc_credentials_iterator_t io_credentials_iterator)
-{
-    cc_credentials_iterator_f temp = *(io_credentials_iterator->functions);
-    *((cc_credentials_iterator_f *)io_credentials_iterator->functions) = *(io_credentials_iterator->vector_functions);
-    *((cc_credentials_iterator_f *)io_credentials_iterator->vector_functions) = temp;
-}
-
-#pragma mark -
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_initialize_vector (cc_context_t  *out_context,
-                                 cc_int32       in_version,
-                                 cc_int32      *out_supported_version,
-                                 char const   **out_vendor)
-{
-    return cc_initialize (out_context, in_version, out_supported_version, out_vendor);
-}
-
-#pragma mark -
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_string_release_vector (cc_string_t in_string)
-{
-    cci_swap_string_functions (in_string);
-    return ccapi_string_release (in_string);
-}
-
-#pragma mark -
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_context_release_vector (cc_context_t io_context)
-{
-    cci_swap_context_functions (io_context);
-    return ccapi_context_release (io_context);
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_context_get_change_time_vector (cc_context_t  in_context,
-                                              cc_time_t    *out_change_time)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = ccapi_context_get_change_time (in_context, out_change_time);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_context_get_default_ccache_name_vector (cc_context_t  in_context,
-                                                      cc_string_t  *out_name)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = ccapi_context_get_default_ccache_name (in_context, out_name);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_context_open_ccache_vector (cc_context_t  in_context,
-                                          const char   *in_name,
-                                          cc_ccache_t  *out_ccache)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = ccapi_context_open_ccache (in_context, in_name, out_ccache);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_context_open_default_ccache_vector (cc_context_t  in_context,
-                                                  cc_ccache_t  *out_ccache)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = ccapi_context_open_default_ccache (in_context, out_ccache);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_context_create_ccache_vector (cc_context_t  in_context,
-                                            const char   *in_name,
-                                            cc_uint32     in_cred_vers,
-                                            const char   *in_principal,
-                                            cc_ccache_t  *out_ccache)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = ccapi_context_create_ccache (in_context, in_name, in_cred_vers, in_principal, out_ccache);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_context_create_default_ccache_vector (cc_context_t  in_context,
-                                                    cc_uint32     in_cred_vers,
-                                                    const char   *in_principal,
-                                                    cc_ccache_t  *out_ccache)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = ccapi_context_create_default_ccache (in_context, in_cred_vers, in_principal, out_ccache);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_context_create_new_ccache_vector (cc_context_t in_context,
-                                                cc_uint32    in_cred_vers,
-                                                const char  *in_principal,
-                                                cc_ccache_t *out_ccache)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = ccapi_context_create_new_ccache (in_context, in_cred_vers, in_principal, out_ccache);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_context_new_ccache_iterator_vector (cc_context_t          in_context,
-                                                  cc_ccache_iterator_t *out_iterator)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = ccapi_context_new_ccache_iterator (in_context, out_iterator);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_context_lock_vector (cc_context_t in_context,
-                                   cc_uint32    in_lock_type,
-                                   cc_uint32    in_block)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = ccapi_context_lock (in_context, in_lock_type, in_block);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_context_unlock_vector (cc_context_t in_context)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = ccapi_context_unlock (in_context);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_context_compare_vector (cc_context_t  in_context,
-                                      cc_context_t  in_compare_to_context,
-                                      cc_uint32    *out_equal)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = ccapi_context_compare (in_context, in_compare_to_context, out_equal);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-#pragma mark -
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_release_vector (cc_ccache_t io_ccache)
-{
-    cci_swap_ccache_functions (io_ccache);
-    return ccapi_ccache_release (io_ccache);
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_destroy_vector (cc_ccache_t io_ccache)
-{
-    cci_swap_ccache_functions (io_ccache);
-    return ccapi_ccache_destroy (io_ccache);
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_set_default_vector (cc_ccache_t io_ccache)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (io_ccache);
-    err = ccapi_ccache_set_default (io_ccache);
-    cci_swap_ccache_functions (io_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_uint32 __cc_ccache_get_credentials_version_vector (cc_ccache_t  in_ccache,
-                                                      cc_uint32   *out_credentials_version)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (in_ccache);
-    err = ccapi_ccache_get_credentials_version (in_ccache, out_credentials_version);
-    cci_swap_ccache_functions (in_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_get_name_vector (cc_ccache_t  in_ccache,
-                                      cc_string_t *out_name)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (in_ccache);
-    err = ccapi_ccache_get_name (in_ccache, out_name);
-    cci_swap_ccache_functions (in_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_get_principal_vector (cc_ccache_t  in_ccache,
-                                           cc_uint32    in_credentials_version,
-                                           cc_string_t *out_principal)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (in_ccache);
-    err = ccapi_ccache_get_principal (in_ccache, in_credentials_version, out_principal);
-    cci_swap_ccache_functions (in_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_set_principal_vector (cc_ccache_t  io_ccache,
-                                           cc_uint32    in_credentials_version,
-                                           const char  *in_principal)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (io_ccache);
-    err = ccapi_ccache_set_principal (io_ccache, in_credentials_version, in_principal);
-    cci_swap_ccache_functions (io_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_store_credentials_vector (cc_ccache_t                 io_ccache,
-                                               const cc_credentials_union *in_credentials_union)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (io_ccache);
-    err = ccapi_ccache_store_credentials (io_ccache, in_credentials_union);
-    cci_swap_ccache_functions (io_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_remove_credentials_vector (cc_ccache_t      io_ccache,
-                                                cc_credentials_t in_credentials)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (io_ccache);
-    cci_swap_credentials_functions (in_credentials);
-    err = ccapi_ccache_remove_credentials (io_ccache, in_credentials);
-    cci_swap_ccache_functions (io_ccache);
-    cci_swap_credentials_functions (in_credentials);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_new_credentials_iterator_vector (cc_ccache_t                in_ccache,
-                                                      cc_credentials_iterator_t *out_credentials_iterator)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (in_ccache);
-    err = ccapi_ccache_new_credentials_iterator (in_ccache, out_credentials_iterator);
-    cci_swap_ccache_functions (in_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_move_vector (cc_ccache_t io_source_ccache,
-                                  cc_ccache_t io_destination_ccache)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (io_source_ccache);
-    cci_swap_ccache_functions (io_destination_ccache);
-    err = ccapi_ccache_move (io_source_ccache, io_destination_ccache);
-    cci_swap_ccache_functions (io_source_ccache);
-    cci_swap_ccache_functions (io_destination_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_lock_vector (cc_ccache_t io_ccache,
-                                  cc_uint32   in_lock_type,
-                                  cc_uint32   in_block)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (io_ccache);
-    err = ccapi_ccache_lock (io_ccache, in_lock_type, in_block);
-    cci_swap_ccache_functions (io_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_unlock_vector (cc_ccache_t io_ccache)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (io_ccache);
-    err = ccapi_ccache_unlock (io_ccache);
-    cci_swap_ccache_functions (io_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_get_last_default_time_vector (cc_ccache_t  in_ccache,
-                                                   cc_time_t   *out_last_default_time)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (in_ccache);
-    err = ccapi_ccache_get_last_default_time (in_ccache, out_last_default_time);
-    cci_swap_ccache_functions (in_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_get_change_time_vector (cc_ccache_t  in_ccache,
-                                             cc_time_t   *out_change_time)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (in_ccache);
-    err = ccapi_ccache_get_change_time (in_ccache, out_change_time);
-    cci_swap_ccache_functions (in_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_compare_vector (cc_ccache_t  in_ccache,
-                                     cc_ccache_t  in_compare_to_ccache,
-                                     cc_uint32   *out_equal)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_functions (in_ccache);
-    cci_swap_ccache_functions (in_compare_to_ccache);
-    err = ccapi_ccache_compare (in_ccache, in_compare_to_ccache, out_equal);
-    cci_swap_ccache_functions (in_ccache);
-    cci_swap_ccache_functions (in_compare_to_ccache);
-    return err;
-}
-
-#pragma mark -
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_credentials_release_vector (cc_credentials_t io_credentials)
-{
-    cci_swap_credentials_functions (io_credentials);
-    return ccapi_credentials_release (io_credentials);
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_credentials_compare_vector (cc_credentials_t  in_credentials,
-                                          cc_credentials_t  in_compare_to_credentials,
-                                          cc_uint32        *out_equal)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_credentials_functions (in_credentials);
-    cci_swap_credentials_functions (in_compare_to_credentials);
-    err = ccapi_credentials_compare (in_credentials, in_compare_to_credentials, out_equal);
-    cci_swap_credentials_functions (in_credentials);
-    cci_swap_credentials_functions (in_compare_to_credentials);
-    return err;
-}
-
-#pragma mark -
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_iterator_release_vector (cc_ccache_iterator_t io_ccache_iterator)
-{
-    cci_swap_ccache_iterator_functions (io_ccache_iterator);
-    return ccapi_ccache_iterator_release (io_ccache_iterator);
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_ccache_iterator_next_vector (cc_ccache_iterator_t  in_ccache_iterator,
-                                           cc_ccache_t          *out_ccache)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_ccache_iterator_functions (in_ccache_iterator);
-    err = ccapi_ccache_iterator_next (in_ccache_iterator, out_ccache);
-    cci_swap_ccache_iterator_functions (in_ccache_iterator);
-    return err;
-}
-
-#pragma mark -
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_credentials_iterator_release_vector (cc_credentials_iterator_t io_credentials_iterator)
-{
-    cci_swap_credentials_iterator_functions (io_credentials_iterator);
-    return ccapi_credentials_iterator_release (io_credentials_iterator);
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_credentials_iterator_next_vector (cc_credentials_iterator_t  in_credentials_iterator,
-                                                cc_credentials_t          *out_credentials)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_credentials_iterator_functions (in_credentials_iterator);
-    err = ccapi_credentials_iterator_next (in_credentials_iterator, out_credentials);
-    cci_swap_credentials_iterator_functions (in_credentials_iterator);
-    return err;
-}
-
-#pragma mark -
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_shutdown_vector (apiCB **io_context)
-{
-    cci_swap_context_functions (*io_context);
-    return cc_shutdown (io_context);
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_get_NC_info_vector (apiCB    *in_context,
-                                  infoNC ***out_info)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = cc_get_NC_info (in_context, out_info);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_get_change_time_vector (apiCB     *in_context,
-                                      cc_time_t *out_change_time)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = cc_get_change_time (in_context, out_change_time);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_open_vector (apiCB       *in_context,
-                           const char  *in_name,
-                           cc_int32     in_version,
-                           cc_uint32    in_flags,
-                           ccache_p   **out_ccache)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = cc_open (in_context, in_name, in_version, in_flags, out_ccache);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_create_vector (apiCB       *in_context,
-                             const char  *in_name,
-                             const char  *in_principal,
-                             cc_int32     in_version,
-                             cc_uint32    in_flags,
-                             ccache_p   **out_ccache)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = cc_create (in_context, in_name, in_principal, in_version, in_flags, out_ccache);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_close_vector (apiCB     *in_context,
-                            ccache_p **io_ccache)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (*io_ccache);
-    err = cc_close (in_context, io_ccache);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_destroy_vector (apiCB     *in_context,
-                              ccache_p **io_ccache)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (*io_ccache);
-    err = cc_destroy (in_context, io_ccache);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_seq_fetch_NCs_begin_vector (apiCB       *in_context,
-                                          ccache_cit **out_iterator)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = cc_seq_fetch_NCs_begin (in_context, out_iterator);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_seq_fetch_NCs_next_vector (apiCB       *in_context,
-                                         ccache_p   **out_ccache,
-                                         ccache_cit  *in_iterator)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_iterator_functions ((ccache_cit_ccache *)in_iterator);
-    err = cc_seq_fetch_NCs_next (in_context, out_ccache, in_iterator);
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_iterator_functions ((ccache_cit_ccache *)in_iterator);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_seq_fetch_NCs_end_vector (apiCB       *in_context,
-                                        ccache_cit **io_iterator)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_iterator_functions ((ccache_cit_ccache *) *io_iterator);
-    err = cc_seq_fetch_NCs_end (in_context, io_iterator);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_get_name_vector (apiCB     *in_context,
-                               ccache_p  *in_ccache,
-                               char     **out_name)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (in_ccache);
-    err = cc_get_name (in_context, in_ccache, out_name);
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (in_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_get_cred_version_vector (apiCB    *in_context,
-                                       ccache_p *in_ccache,
-                                       cc_int32 *out_version)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (in_ccache);
-    err = cc_get_cred_version (in_context, in_ccache, out_version);
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (in_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_set_principal_vector (apiCB    *in_context,
-                                    ccache_p *io_ccache,
-                                    cc_int32  in_version,
-                                    char     *in_principal)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (io_ccache);
-    err = cc_set_principal (in_context, io_ccache, in_version, in_principal);
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (io_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_get_principal_vector (apiCB      *in_context,
-                                    ccache_p   *in_ccache,
-                                    char      **out_principal)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (in_ccache);
-    err = cc_get_principal (in_context, in_ccache, out_principal);
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (in_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_store_vector (apiCB      *in_context,
-                            ccache_p   *io_ccache,
-                            cred_union  in_credentials)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (io_ccache);
-    err = cc_store (in_context, io_ccache, in_credentials);
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (io_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_remove_cred_vector (apiCB      *in_context,
-                                  ccache_p   *in_ccache,
-                                  cred_union  in_credentials)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (in_ccache);
-    err = cc_remove_cred (in_context, in_ccache, in_credentials);
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions (in_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_seq_fetch_creds_begin_vector (apiCB           *in_context,
-                                            const ccache_p  *in_ccache,
-                                            ccache_cit     **out_iterator)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions ((ccache_p *)in_ccache);
-    err = cc_seq_fetch_creds_begin (in_context, in_ccache, out_iterator);
-    cci_swap_context_functions (in_context);
-    cci_swap_ccache_functions ((ccache_p *)in_ccache);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_seq_fetch_creds_next_vector (apiCB       *in_context,
-                                           cred_union **out_creds,
-                                           ccache_cit  *in_iterator)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    cci_swap_credentials_iterator_functions ((ccache_cit_creds *)in_iterator);
-    err = cc_seq_fetch_creds_next (in_context, out_creds, in_iterator);
-    cci_swap_context_functions (in_context);
-    cci_swap_credentials_iterator_functions ((ccache_cit_creds *)in_iterator);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_seq_fetch_creds_end_vector (apiCB       *in_context,
-                                          ccache_cit **io_iterator)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    cci_swap_credentials_iterator_functions ((ccache_cit_creds *) *io_iterator);
-    err = cc_seq_fetch_creds_end (in_context, io_iterator);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_free_principal_vector (apiCB  *in_context,
-                                     char  **io_principal)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = cc_free_principal (in_context, io_principal);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_free_name_vector (apiCB  *in_context,
-                                char  **io_name)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = cc_free_name (in_context, io_name);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_free_creds_vector (apiCB       *in_context,
-                                 cred_union **io_credentials)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = cc_free_creds (in_context, io_credentials);
-    cci_swap_context_functions (in_context);
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 __cc_free_NC_info_vector (apiCB    *in_context,
-                                   infoNC ***io_info)
-{
-    cc_int32 err = ccNoError;
-    cci_swap_context_functions (in_context);
-    err = cc_free_NC_info (in_context, io_info);
-    cci_swap_context_functions (in_context);
-    return err;
-}
diff --git a/src/ccapi/lib/mac/ccapi_vector.exports b/src/ccapi/lib/mac/ccapi_vector.exports
deleted file mode 100644
index 0f02e41..0000000
--- a/src/ccapi/lib/mac/ccapi_vector.exports
+++ /dev/null
@@ -1,59 +0,0 @@
-__cc_context_release_vector
-__cc_context_get_change_time_vector
-__cc_context_get_default_ccache_name_vector
-__cc_context_open_ccache_vector
-__cc_context_open_default_ccache_vector
-__cc_context_create_ccache_vector
-__cc_context_create_default_ccache_vector
-__cc_context_create_new_ccache_vector
-__cc_context_new_ccache_iterator_vector
-__cc_context_lock_vector
-__cc_context_unlock_vector
-__cc_context_compare_vector
-__cc_ccache_release_vector
-__cc_ccache_destroy_vector
-__cc_ccache_set_default_vector
-__cc_ccache_get_credentials_version_vector
-__cc_ccache_get_name_vector
-__cc_ccache_get_principal_vector
-__cc_ccache_set_principal_vector
-__cc_ccache_store_credentials_vector
-__cc_ccache_remove_credentials_vector
-__cc_ccache_new_credentials_iterator_vector
-__cc_ccache_move_vector
-__cc_ccache_lock_vector
-__cc_ccache_unlock_vector
-__cc_ccache_get_last_default_time_vector
-__cc_ccache_get_change_time_vector
-__cc_ccache_compare_vector
-__cc_string_release_vector
-__cc_credentials_release_vector
-__cc_credentials_compare_vector
-__cc_ccache_iterator_release_vector
-__cc_ccache_iterator_next_vector
-__cc_credentials_iterator_release_vector
-__cc_credentials_iterator_next_vector
-__cc_initialize_vector
-__cc_shutdown_vector
-__cc_get_NC_info_vector
-__cc_get_change_time_vector
-__cc_open_vector
-__cc_create_vector
-__cc_close_vector
-__cc_destroy_vector
-__cc_seq_fetch_NCs_begin_vector
-__cc_seq_fetch_NCs_next_vector
-__cc_seq_fetch_NCs_end_vector
-__cc_get_name_vector
-__cc_get_cred_version_vector
-__cc_set_principal_vector
-__cc_get_principal_vector
-__cc_store_vector
-__cc_remove_cred_vector
-__cc_seq_fetch_creds_begin_vector
-__cc_seq_fetch_creds_next_vector
-__cc_seq_fetch_creds_end_vector
-__cc_free_principal_vector
-__cc_free_name_vector
-__cc_free_creds_vector
-__cc_free_NC_info_vector
diff --git a/src/ccapi/lib/mac/ccapi_vector.h b/src/ccapi/lib/mac/ccapi_vector.h
deleted file mode 100644
index 803257c..0000000
--- a/src/ccapi/lib/mac/ccapi_vector.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/* ccapi/lib/mac/ccapi_vector.h */
-/*
- * Copyright 2006 Massachusetts Institute of Technology.
- * All Rights Reserved.
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission.  Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is" without express
- * or implied warranty.
- */
-
-#include <CredentialsCache2.h>
-
-
-cc_int32 __cc_initialize_vector (cc_context_t  *out_context,
-                                 cc_int32       in_version,
-                                 cc_int32      *out_supported_version,
-                                 char const   **out_vendor);
-
-cc_int32 __cc_string_release_vector (cc_string_t in_string);
-
-cc_int32 __cc_context_release_vector (cc_context_t io_context);
-
-cc_int32 __cc_context_get_change_time_vector (cc_context_t  in_context,
-                                              cc_time_t    *out_change_time);
-
-cc_int32 __cc_context_get_default_ccache_name_vector (cc_context_t  in_context,
-                                                      cc_string_t  *out_name);
-
-cc_int32 __cc_context_open_ccache_vector (cc_context_t  in_context,
-                                          const char   *in_name,
-                                          cc_ccache_t  *out_ccache);
-
-cc_int32 __cc_context_open_default_ccache_vector (cc_context_t  in_context,
-                                                  cc_ccache_t  *out_ccache);
-
-cc_int32 __cc_context_create_ccache_vector (cc_context_t  in_context,
-                                            const char   *in_name,
-                                            cc_uint32     in_cred_vers,
-                                            const char   *in_principal,
-                                            cc_ccache_t  *out_ccache);
-
-cc_int32 __cc_context_create_default_ccache_vector (cc_context_t  in_context,
-                                                    cc_uint32     in_cred_vers,
-                                                    const char   *in_principal,
-                                                    cc_ccache_t  *out_ccache);
-
-cc_int32 __cc_context_create_new_ccache_vector (cc_context_t in_context,
-                                                cc_uint32    in_cred_vers,
-                                                const char  *in_principal,
-                                                cc_ccache_t *out_ccache);
-
-cc_int32 __cc_context_new_ccache_iterator_vector (cc_context_t          in_context,
-                                                  cc_ccache_iterator_t *out_iterator);
-
-cc_int32 __cc_context_lock_vector (cc_context_t in_context,
-                                   cc_uint32    in_lock_type,
-                                   cc_uint32    in_block);
-
-cc_int32 __cc_context_unlock_vector (cc_context_t in_context);
-
-cc_int32 __cc_context_compare_vector (cc_context_t  in_context,
-                                      cc_context_t  in_compare_to_context,
-                                      cc_uint32    *out_equal);
-
-cc_int32 __cc_ccache_release_vector (cc_ccache_t io_ccache);
-
-cc_int32 __cc_ccache_destroy_vector (cc_ccache_t io_ccache);
-
-cc_int32 __cc_ccache_set_default_vector (cc_ccache_t io_ccache);
-
-cc_uint32 __cc_ccache_get_credentials_version_vector (cc_ccache_t  in_ccache,
-                                                      cc_uint32   *out_credentials_version);
-
-cc_int32 __cc_ccache_get_name_vector (cc_ccache_t  in_ccache,
-                                      cc_string_t *out_name);
-
-cc_int32 __cc_ccache_get_principal_vector (cc_ccache_t  in_ccache,
-                                           cc_uint32    in_credentials_version,
-                                           cc_string_t *out_principal);
-
-cc_int32 __cc_ccache_set_principal_vector (cc_ccache_t  io_ccache,
-                                           cc_uint32    in_credentials_version,
-                                           const char  *in_principal);
-
-cc_int32 __cc_ccache_store_credentials_vector (cc_ccache_t                 io_ccache,
-                                               const cc_credentials_union *in_credentials_union);
-
-cc_int32 __cc_ccache_remove_credentials_vector (cc_ccache_t      io_ccache,
-                                                cc_credentials_t in_credentials);
-
-cc_int32 __cc_ccache_new_credentials_iterator_vector (cc_ccache_t                in_ccache,
-                                                      cc_credentials_iterator_t *out_credentials_iterator);
-
-cc_int32 __cc_ccache_move_vector (cc_ccache_t io_source_ccache,
-                                  cc_ccache_t io_destination_ccache);
-
-cc_int32 __cc_ccache_lock_vector (cc_ccache_t io_ccache,
-                                  cc_uint32   in_lock_type,
-                                  cc_uint32   in_block);
-
-cc_int32 __cc_ccache_unlock_vector (cc_ccache_t io_ccache);
-
-cc_int32 __cc_ccache_get_last_default_time_vector (cc_ccache_t  in_ccache,
-                                                   cc_time_t   *out_last_default_time);
-
-cc_int32 __cc_ccache_get_change_time_vector (cc_ccache_t  in_ccache,
-                                             cc_time_t   *out_change_time);
-
-cc_int32 __cc_ccache_compare_vector (cc_ccache_t  in_ccache,
-                                     cc_ccache_t  in_compare_to_ccache,
-                                     cc_uint32   *out_equal);
-
-cc_int32 __cc_credentials_release_vector (cc_credentials_t io_credentials);
-
-cc_int32 __cc_credentials_compare_vector (cc_credentials_t  in_credentials,
-                                          cc_credentials_t  in_compare_to_credentials,
-                                          cc_uint32        *out_equal);
-
-cc_int32 __cc_ccache_iterator_release_vector (cc_ccache_iterator_t io_ccache_iterator);
-
-cc_int32 __cc_ccache_iterator_next_vector (cc_ccache_iterator_t  in_ccache_iterator,
-                                           cc_ccache_t          *out_ccache);
-
-cc_int32 __cc_credentials_iterator_release_vector (cc_credentials_iterator_t io_credentials_iterator);
-
-cc_int32 __cc_credentials_iterator_next_vector (cc_credentials_iterator_t  in_credentials_iterator,
-                                                cc_credentials_t          *out_credentials);
-
-cc_int32 __cc_shutdown_vector (apiCB **io_context);
-
-cc_int32 __cc_get_NC_info_vector (apiCB    *in_context,
-                                  infoNC ***out_info);
-
-cc_int32 __cc_get_change_time_vector (apiCB     *in_context,
-                                      cc_time_t *out_change_time);
-
-cc_int32 __cc_open_vector (apiCB       *in_context,
-                           const char  *in_name,
-                           cc_int32     in_version,
-                           cc_uint32    in_flags,
-                           ccache_p   **out_ccache);
-
-cc_int32 __cc_create_vector (apiCB       *in_context,
-                             const char  *in_name,
-                             const char  *in_principal,
-                             cc_int32     in_version,
-                             cc_uint32    in_flags,
-                             ccache_p   **out_ccache);
-
-cc_int32 __cc_close_vector (apiCB     *in_context,
-                            ccache_p **io_ccache);
-
-cc_int32 __cc_destroy_vector (apiCB     *in_context,
-                              ccache_p **io_ccache);
-
-cc_int32 __cc_seq_fetch_NCs_begin_vector (apiCB       *in_context,
-                                          ccache_cit **out_iterator);
-
-cc_int32 __cc_seq_fetch_NCs_next_vector (apiCB       *in_context,
-                                         ccache_p   **out_ccache,
-                                         ccache_cit  *in_iterator);
-
-cc_int32 __cc_seq_fetch_NCs_end_vector (apiCB       *in_context,
-                                        ccache_cit **io_iterator);
-
-cc_int32 __cc_get_name_vector (apiCB     *in_context,
-                               ccache_p  *in_ccache,
-                               char     **out_name);
-
-cc_int32 __cc_get_cred_version_vector (apiCB    *in_context,
-                                       ccache_p *in_ccache,
-                                       cc_int32 *out_version);
-
-cc_int32 __cc_set_principal_vector (apiCB    *in_context,
-                                    ccache_p *io_ccache,
-                                    cc_int32  in_version,
-                                    char     *in_principal);
-
-cc_int32 __cc_get_principal_vector (apiCB      *in_context,
-                                    ccache_p   *in_ccache,
-                                    char      **out_principal);
-
-cc_int32 __cc_store_vector (apiCB      *in_context,
-                            ccache_p   *io_ccache,
-                            cred_union  in_credentials);
-
-cc_int32 __cc_remove_cred_vector (apiCB      *in_context,
-                                  ccache_p   *in_ccache,
-                                  cred_union  in_credentials);
-
-cc_int32 __cc_seq_fetch_creds_begin_vector (apiCB           *in_context,
-                                            const ccache_p  *in_ccache,
-                                            ccache_cit     **out_iterator);
-
-cc_int32 __cc_seq_fetch_creds_next_vector (apiCB       *in_context,
-                                           cred_union **out_creds,
-                                           ccache_cit  *in_iterator);
-
-cc_int32 __cc_seq_fetch_creds_end_vector (apiCB       *in_context,
-                                          ccache_cit **io_iterator);
-
-cc_int32 __cc_free_principal_vector (apiCB  *in_context,
-                                     char  **io_principal);
-
-cc_int32 __cc_free_name_vector (apiCB  *in_context,
-                                char  **io_name);
-
-cc_int32 __cc_free_creds_vector (apiCB       *in_context,
-                                 cred_union **io_credentials);
-
-cc_int32 __cc_free_NC_info_vector (apiCB    *in_context,
-                                   infoNC ***io_info);
diff --git a/src/ccapi/server/mac/CCacheServerInfo.plist b/src/ccapi/server/mac/CCacheServerInfo.plist
deleted file mode 100644
index f5397f8..0000000
--- a/src/ccapi/server/mac/CCacheServerInfo.plist
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>CCacheServer</string>
-	<key>CFBundleGetInfoString</key>
-	<string>4.1</string>
-	<key>CFBundleIconFile</key>
-	<string></string>
-	<key>CFBundleIdentifier</key>
-	<string>edu.mit.Kerberos.CCacheServer</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>Kerberos Credentials Cache Server</string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleSignature</key>
-	<string>CCSa</string>
-	<key>CFBundleVersion</key>
-	<string>0.0.1d1</string>
-        <key>CFBundleShortVersionString</key>
-        <string>5.5</string>
-        <key>CFBundleGetInfoString</key>
-        <string>5.5 Copyright MIT</string>
-        <key>KfMDisplayVersion</key>
-        <string>5.5 Copyright MIT</string>
-        <key>KfMDisplayCopyright</key>
-        <string>Copyright MIT</string>
-        <key>NSHumanReadableCopyright</key>
-        <string>5.5 Copyright MIT</string>
-	<key>LSBackgroundOnly</key>
-	<string>1</string>
-</dict>
-</plist>
diff --git a/src/ccapi/server/mac/ccs_os_notify.c b/src/ccapi/server/mac/ccs_os_notify.c
deleted file mode 100644
index e758deb..0000000
--- a/src/ccapi/server/mac/ccs_os_notify.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* ccapi/server/mac/ccs_os_notify.c */
-/*
- * Copyright 2006-2008 Massachusetts Institute of Technology.
- * All Rights Reserved.
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission.  Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is" without express
- * or implied warranty.
- */
-
-#include "ccs_common.h"
-#include "ccs_os_notify.h"
-#include <CoreFoundation/CoreFoundation.h>
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 ccs_os_notify_cache_collection_changed (ccs_cache_collection_t io_cache_collection)
-{
-    cc_int32 err = ccNoError;
-
-    if (!io_cache_collection) { err = cci_check_error (ccErrBadParam); }
-
-    if (!err) {
-        CFNotificationCenterRef center = CFNotificationCenterGetDistributedCenter ();
-
-        if (center) {
-            CFNotificationCenterPostNotification (center,
-                                                  kCCAPICacheCollectionChangedNotification,
-                                                  NULL, NULL, TRUE);
-        }
-    }
-
-
-
-    return cci_check_error (err);
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 ccs_os_notify_ccache_changed (ccs_cache_collection_t  io_cache_collection,
-                                       const char             *in_ccache_name)
-{
-    cc_int32 err = ccNoError;
-
-    if (!io_cache_collection) { err = cci_check_error (ccErrBadParam); }
-    if (!in_ccache_name     ) { err = cci_check_error (ccErrBadParam); }
-
-    if (!err) {
-        CFNotificationCenterRef center = CFNotificationCenterGetDistributedCenter ();
-        CFStringRef name = CFStringCreateWithCString (kCFAllocatorDefault,
-                                                      in_ccache_name,
-                                                      kCFStringEncodingUTF8);
-
-        if (center && name) {
-            CFNotificationCenterPostNotification (center,
-                                                  kCCAPICCacheChangedNotification,
-                                                  name, NULL, TRUE);
-        }
-
-        if (name) { CFRelease (name); }
-    }
-
-    return cci_check_error (err);
-}
diff --git a/src/ccapi/server/mac/ccs_os_pipe.c b/src/ccapi/server/mac/ccs_os_pipe.c
deleted file mode 100644
index 5d9fff2..0000000
--- a/src/ccapi/server/mac/ccs_os_pipe.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* ccapi/server/mac/ccs_os_pipe.c */
-/*
- * Copyright 2006 Massachusetts Institute of Technology.
- * All Rights Reserved.
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission.  Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is" without express
- * or implied warranty.
- */
-
-#include "ccs_common.h"
-#include "ccs_os_pipe.h"
-#include <mach/port.h>
-
-/* On macOS ccs_pipe_t is a mach_port_t */
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 ccs_os_pipe_valid (ccs_pipe_t in_pipe)
-{
-    return MACH_PORT_VALID (in_pipe);
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 ccs_os_pipe_compare (ccs_pipe_t  in_pipe,
-                              ccs_pipe_t  in_compare_to_pipe,
-                              cc_uint32  *out_equal)
-{
-    cc_int32 err = ccNoError;
-
-    if (!in_pipe           ) { err = cci_check_error (ccErrBadParam); }
-    if (!in_compare_to_pipe) { err = cci_check_error (ccErrBadParam); }
-    if (!out_equal         ) { err = cci_check_error (ccErrBadParam); }
-
-    if (!err) {
-        *out_equal = (in_pipe == in_compare_to_pipe);
-    }
-
-    return cci_check_error (err);
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 ccs_os_pipe_copy (ccs_pipe_t *out_pipe,
-			   ccs_pipe_t  in_pipe)
-{
-    cc_int32 err = 0;
-
-    *out_pipe = in_pipe;
-
-    return cci_check_error (err);
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 ccs_os_pipe_release (ccs_pipe_t io_pipe)
-{
-    cc_int32 err = 0;
-
-    /* Nothing to do here on macOS */
-
-    return cci_check_error (err);
-}
diff --git a/src/ccapi/server/mac/ccs_os_server.c b/src/ccapi/server/mac/ccs_os_server.c
deleted file mode 100644
index b16f5e0..0000000
--- a/src/ccapi/server/mac/ccs_os_server.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* ccapi/server/mac/ccs_os_server.c */
-/*
- * Copyright 2006 Massachusetts Institute of Technology.
- * All Rights Reserved.
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission.  Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is" without express
- * or implied warranty.
- */
-
-#include "ccs_common.h"
-
-#include <syslog.h>
-#include "k5_mig_server.h"
-#include "ccs_os_server.h"
-
-/* ------------------------------------------------------------------------ */
-
-int32_t k5_ipc_server_add_client (mach_port_t in_client_port)
-{
-    return cci_check_error (ccs_server_add_client (in_client_port));
-}
-
-/* ------------------------------------------------------------------------ */
-
-int32_t k5_ipc_server_remove_client (mach_port_t in_client_port)
-{
-    return cci_check_error (ccs_server_remove_client (in_client_port));
-}
-
-
-/* ------------------------------------------------------------------------ */
-
-kern_return_t k5_ipc_server_handle_request (mach_port_t    in_connection_port,
-                                            mach_port_t    in_reply_port,
-                                            k5_ipc_stream  in_request_stream)
-{
-    return cci_check_error (ccs_server_handle_request (in_connection_port,
-                                                       in_reply_port,
-                                                       in_request_stream));
-}
-
-#pragma mark -
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 ccs_os_server_initialize (int argc, const char *argv[])
-{
-    cc_int32 err = 0;
-
-    openlog (argv[0], LOG_CONS | LOG_PID, LOG_AUTH);
-    syslog (LOG_INFO, "Starting up.");
-
-    return cci_check_error (err);
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 ccs_os_server_cleanup (int argc, const char *argv[])
-{
-    cc_int32 err = 0;
-
-    syslog (LOG_NOTICE, "Exiting.");
-
-    return cci_check_error (err);
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 ccs_os_server_listen_loop (int argc, const char *argv[])
-{
-    return cci_check_error (k5_ipc_server_listen_loop ());
-}
-
-/* ------------------------------------------------------------------------ */
-
-cc_int32 ccs_os_server_send_reply (ccs_pipe_t   in_reply_pipe,
-                                   k5_ipc_stream in_reply_stream)
-{
-    return cci_check_error (k5_ipc_server_send_reply (in_reply_pipe,
-                                                      in_reply_stream));
-}
diff --git a/src/ccapi/server/mac/edu.mit.Kerberos.CCacheServer.plist b/src/ccapi/server/mac/edu.mit.Kerberos.CCacheServer.plist
deleted file mode 100644
index c002431..0000000
--- a/src/ccapi/server/mac/edu.mit.Kerberos.CCacheServer.plist
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>Label</key>
-	<string>edu.mit.Kerberos.CCacheServer</string>
-	<key>LimitLoadToSessionType</key>
-	<string>Background</string>
-	<key>Program</key>
-	<string>/System/Library/CoreServices/CCacheServer.app/Contents/MacOS/CCacheServer</string>
-	<key>MachServices</key>
-	<dict>
-		<key>edu.mit.Kerberos.CCacheServer.ipcLookup</key>
-		<dict>
-			<key>HideUntilCheckIn</key>
-			<true/>
-			<key>ResetAtClose</key>
-			<true/>
-		</dict>
-		<key>edu.mit.Kerberos.CCacheServer.ipcService</key>
-		<true/>
-	</dict>
-	<key>EnableTransactions</key>
-	<true/>
-	<key>OnDemand</key>
-	<true/>
-	<key>ThrottleInterval</key>
-	<integer>0</integer>
-	<key>EnvironmentVariables</key>
-	<dict>
-		<key>CFFIXED_USER_HOME</key>
-		<string>/var/empty</string>
-	</dict>
-</dict>
-</plist>
diff --git a/src/util/mac/k5_mig.defs b/src/util/mac/k5_mig.defs
deleted file mode 100644
index 6349eb8..0000000
--- a/src/util/mac/k5_mig.defs
+++ /dev/null
@@ -1,54 +0,0 @@
-/* $Copyright:
- *
- * Copyright 2004-2006 by the Massachusetts Institute of Technology.
- * 
- * All rights reserved.
- * 
- * Export of this software from the United States of America may require a
- * specific license from the United States Government.  It is the
- * responsibility of any person or organization contemplating export to
- * obtain such a license before exporting.
- * 
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute
- * this software and its documentation for any purpose and without fee is
- * hereby granted, provided that the above copyright notice appear in all
- * copies and that both that copyright notice and this permission notice
- * appear in supporting documentation, and that the name of M.I.T. not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.  Furthermore if you
- * modify this software you must label your software as modified software
- * and not distribute it in such a fashion that it might be confused with
- * the original MIT software. M.I.T. makes no representations about the
- * suitability of this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- * 
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- * 
- * Individual source code files are copyright MIT, Cygnus Support,
- * OpenVision, Oracle, Sun Soft, FundsXpress, and others.
- * 
- * Project Athena, Athena, Athena MUSE, Discuss, Hesiod, Kerberos, Moira,
- * and Zephyr are trademarks of the Massachusetts Institute of Technology
- * (MIT).  No commercial use of these trademarks may be made without prior
- * written permission of MIT.
- * 
- * "Commercial use" means use of a name in a product or other for-profit
- * manner.  It does NOT prevent a commercial firm from referring to the MIT
- * trademarks in order to convey information (although in doing so,
- * recognition of their trademark status should be given).
- * $
- */
- 
-#include <mach/std_types.defs>
-#include <mach/mach_types.defs>
-
-import "k5_mig_types.h";
-
-/* Note the 1024 must be the same as K5_IPC_MAX_MSG_SIZE */
-type k5_ipc_inl_request_t = array [ * : 1024 ] of char;
-type k5_ipc_ool_request_t = array [] of char;
-
-type k5_ipc_inl_reply_t = array [ * : 1024 ] of char;
-type k5_ipc_ool_reply_t = array [] of char;
diff --git a/src/util/mac/k5_mig_client.c b/src/util/mac/k5_mig_client.c
deleted file mode 100644
index da62153..0000000
--- a/src/util/mac/k5_mig_client.c
+++ /dev/null
@@ -1,529 +0,0 @@
-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
-/* util/mac/k5_mig_client.c */
-/*
- * Copyright 2006 Massachusetts Institute of Technology.
- * All Rights Reserved.
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission.  Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is" without express
- * or implied warranty.
- */
-
-#ifndef LEAN_CLIENT
-
-#include "k5_mig_client.h"
-#include "k5_mig_request.h"
-#include "k5_mig_replyServer.h"
-#include "k5-thread.h"
-
-#include <mach/mach.h>
-#include <servers/bootstrap.h>
-
-
-
-/* Number of services available.  Update if modifying the lists below */
-#define KIPC_SERVICE_COUNT 2
-
-/* ------------------------------------------------------------------------ */
-
-/* This struct exists to store the global service port shared between all
- * threads.  Note that there is one of these ports per server, whereas
- * there is one connection port per thread.  Thus this is global and mutexed,
- * whereas the connection ports below are in TLS */
-
-typedef struct k5_ipc_service_port {
-    const char *service_id;
-    mach_port_t service_port;
-} k5_ipc_service_port;
-
-/* global service ports and mutex to protect it */
-static k5_mutex_t g_service_ports_mutex = K5_MUTEX_PARTIAL_INITIALIZER;
-static k5_ipc_service_port g_service_ports[KIPC_SERVICE_COUNT] = {
-    { "edu.mit.Kerberos.CCacheServer", MACH_PORT_NULL },
-    { "edu.mit.Kerberos.KerberosAgent", MACH_PORT_NULL } };
-
-/* ------------------------------------------------------------------------ */
-
-/* This struct exists to hold the per-thread connection port used for ipc
- * messages to the server.  Each thread is issued a separate connection
- * port so that the server can distinguish between threads in the same
- * application. */
-
-typedef struct k5_ipc_connection {
-    const char *service_id;
-    mach_port_t port;
-} *k5_ipc_connection;
-
-typedef struct k5_ipc_connection_info {
-    struct k5_ipc_connection connections[KIPC_SERVICE_COUNT];
-    boolean_t server_died;
-    k5_ipc_stream reply_stream;
-} *k5_ipc_connection_info;
-
-/* initializer for k5_ipc_request_port to fill in server names in TLS */
-static const char *k5_ipc_known_services[KIPC_SERVICE_COUNT] = {
-    "edu.mit.Kerberos.CCacheServer",
-    "edu.mit.Kerberos.KerberosAgent" };
-
-/* ------------------------------------------------------------------------ */
-
-static void k5_ipc_client_cinfo_free (void *io_cinfo)
-{
-    if (io_cinfo) {
-        k5_ipc_connection_info cinfo = io_cinfo;
-        int i;
-
-        for (i = 0; i < KIPC_SERVICE_COUNT; i++) {
-            if (MACH_PORT_VALID (cinfo->connections[i].port)) {
-                mach_port_mod_refs (mach_task_self(),
-                                    cinfo->connections[i].port,
-                                    MACH_PORT_RIGHT_SEND, -1 );
-                cinfo->connections[i].port = MACH_PORT_NULL;
-            }
-        }
-        /* reply_stream will always be freed by k5_ipc_send_request() */
-        free (cinfo);
-    }
-}
-
-/* ------------------------------------------------------------------------ */
-
-static int k5_ipc_client_cinfo_allocate (k5_ipc_connection_info *out_cinfo)
-{
-    int err = 0;
-    k5_ipc_connection_info cinfo = NULL;
-
-    cinfo = malloc (sizeof (*cinfo));
-    if (!cinfo) { err = ENOMEM; }
-
-    if (!err) {
-        int i;
-
-        cinfo->server_died = 0;
-        cinfo->reply_stream = NULL;
-
-        for (i = 0; i < KIPC_SERVICE_COUNT; i++) {
-            cinfo->connections[i].service_id = k5_ipc_known_services[i];
-            cinfo->connections[i].port = MACH_PORT_NULL;
-        }
-    }
-
-    if (!err) {
-        *out_cinfo = cinfo;
-        cinfo = NULL;
-    }
-
-    k5_ipc_client_cinfo_free (cinfo);
-
-    return err;
-}
-
-
-#pragma mark -
-
-MAKE_INIT_FUNCTION(k5_cli_ipc_thread_init);
-MAKE_FINI_FUNCTION(k5_cli_ipc_thread_fini);
-
-/* ------------------------------------------------------------------------ */
-
-static int k5_cli_ipc_thread_init (void)
-{
-    int err = 0;
-
-    err = k5_key_register (K5_KEY_IPC_CONNECTION_INFO,
-                           k5_ipc_client_cinfo_free);
-
-    if (!err) {
-        err = k5_mutex_finish_init (&g_service_ports_mutex);
-    }
-
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-static void k5_cli_ipc_thread_fini (void)
-{
-    int err = 0;
-
-    err = k5_mutex_lock (&g_service_ports_mutex);
-
-    if (!err) {
-        int i;
-
-        for (i = 0; i < KIPC_SERVICE_COUNT; i++) {
-            if (MACH_PORT_VALID (g_service_ports[i].service_port)) {
-                mach_port_destroy (mach_task_self (),
-                                   g_service_ports[i].service_port);
-                g_service_ports[i].service_port = MACH_PORT_NULL;
-            }
-        }
-        k5_mutex_unlock (&g_service_ports_mutex);
-    }
-
-    k5_key_delete (K5_KEY_IPC_CONNECTION_INFO);
-    k5_mutex_destroy (&g_service_ports_mutex);
-}
-
-#pragma mark -
-
-/* ------------------------------------------------------------------------ */
-
-static kern_return_t k5_ipc_client_lookup_server (const char  *in_service_id,
-                                                  boolean_t    in_launch_if_necessary,
-                                                  boolean_t    in_use_cached_port,
-                                                  mach_port_t *out_service_port)
-{
-    kern_return_t err = 0;
-    kern_return_t lock_err = 0;
-    mach_port_t k5_service_port = MACH_PORT_NULL;
-    boolean_t found_entry = 0;
-    int i;
-
-    if (!in_service_id   ) { err = EINVAL; }
-    if (!out_service_port) { err = EINVAL; }
-
-    if (!err) {
-        lock_err = k5_mutex_lock (&g_service_ports_mutex);
-        if (lock_err) { err = lock_err; }
-    }
-
-    for (i = 0; !err && i < KIPC_SERVICE_COUNT; i++) {
-        if (!strcmp (in_service_id, g_service_ports[i].service_id)) {
-            found_entry = 1;
-            if (in_use_cached_port) {
-                k5_service_port = g_service_ports[i].service_port;
-            }
-            break;
-        }
-    }
-
-    if (!err && (!MACH_PORT_VALID (k5_service_port) || !in_use_cached_port)) {
-        mach_port_t boot_port = MACH_PORT_NULL;
-        char *service = NULL;
-
-        /* Get our bootstrap port */
-        err = task_get_bootstrap_port (mach_task_self (), &boot_port);
-
-        if (!err && !in_launch_if_necessary) {
-            char *lookup = NULL;
-            mach_port_t lookup_port = MACH_PORT_NULL;
-
-            int w = asprintf (&lookup, "%s%s",
-                              in_service_id, K5_MIG_LOOKUP_SUFFIX);
-            if (w < 0) { err = ENOMEM; }
-
-            if (!err) {
-                /* Use the lookup name because the service name will return
-                 * a valid port even if the server isn't running */
-                err = bootstrap_look_up (boot_port, lookup, &lookup_port);
-            }
-
-            free (lookup);
-            if (MACH_PORT_VALID (lookup_port)) {
-                mach_port_deallocate (mach_task_self (), lookup_port);
-            }
-        }
-
-        if (!err) {
-            int w = asprintf (&service, "%s%s",
-                              in_service_id, K5_MIG_SERVICE_SUFFIX);
-            if (w < 0) { err = ENOMEM; }
-        }
-
-        if (!err) {
-            err = bootstrap_look_up (boot_port, service, &k5_service_port);
-
-            if (!err && found_entry) {
-                /* Free old port if it is valid */
-                if (!err && MACH_PORT_VALID (g_service_ports[i].service_port)) {
-                    mach_port_deallocate (mach_task_self (),
-                                          g_service_ports[i].service_port);
-                }
-
-                g_service_ports[i].service_port = k5_service_port;
-            }
-        }
-
-        free (service);
-        if (MACH_PORT_VALID (boot_port)) { mach_port_deallocate (mach_task_self (),
-                                                                 boot_port); }
-    }
-
-    if (!err) {
-        *out_service_port = k5_service_port;
-    }
-
-    if (!lock_err) { k5_mutex_unlock (&g_service_ports_mutex); }
-
-    return err;
-}
-
-#pragma mark -
-
-/* ------------------------------------------------------------------------ */
-
-static boolean_t k5_ipc_reply_demux (mach_msg_header_t *request,
-                                     mach_msg_header_t *reply)
-{
-    boolean_t handled = 0;
-
-    if (CALL_INIT_FUNCTION (k5_cli_ipc_thread_init) != 0) {
-        return 0;
-    }
-
-    if (!handled && request->msgh_id == MACH_NOTIFY_NO_SENDERS) {
-        k5_ipc_connection_info cinfo = k5_getspecific (K5_KEY_IPC_CONNECTION_INFO);
-        if (cinfo) {
-            cinfo->server_died = 1;
-        }
-
-        handled = 1; /* server died */
-    }
-
-    if (!handled) {
-        handled = k5_ipc_reply_server (request, reply);
-    }
-
-    return handled;
-}
-
-/* ------------------------------------------------------------------------ */
-
-kern_return_t k5_ipc_client_reply (mach_port_t             in_reply_port,
-                                   k5_ipc_inl_reply_t      in_inl_reply,
-                                   mach_msg_type_number_t  in_inl_replyCnt,
-                                   k5_ipc_ool_reply_t      in_ool_reply,
-                                   mach_msg_type_number_t  in_ool_replyCnt)
-{
-    kern_return_t err = KERN_SUCCESS;
-    k5_ipc_connection_info cinfo = NULL;
-
-    if (!err) {
-        err = CALL_INIT_FUNCTION (k5_cli_ipc_thread_init);
-    }
-
-    if (!err) {
-        cinfo = k5_getspecific (K5_KEY_IPC_CONNECTION_INFO);
-        if (!cinfo || !cinfo->reply_stream) { err = EINVAL; }
-    }
-
-    if (!err) {
-        if (in_inl_replyCnt) {
-            err = krb5int_ipc_stream_write (cinfo->reply_stream,
-                                            in_inl_reply, in_inl_replyCnt);
-
-        } else if (in_ool_replyCnt) {
-            err = krb5int_ipc_stream_write (cinfo->reply_stream,
-                                            in_ool_reply, in_ool_replyCnt);
-
-        } else {
-            err = EINVAL;
-        }
-    }
-
-    if (in_ool_replyCnt) { vm_deallocate (mach_task_self (),
-                                          (vm_address_t) in_ool_reply,
-                                          in_ool_replyCnt); }
-
-    return err;
-}
-
-#pragma mark -
-
-/* ------------------------------------------------------------------------ */
-
-int32_t k5_ipc_send_request (const char    *in_service_id,
-                             int32_t        in_launch_server,
-                             k5_ipc_stream  in_request_stream,
-                             k5_ipc_stream *out_reply_stream)
-{
-    int err = 0;
-    int32_t done = 0;
-    int32_t try_count = 0;
-    mach_port_t server_port = MACH_PORT_NULL;
-    k5_ipc_connection_info cinfo = NULL;
-    k5_ipc_connection connection = NULL;
-    mach_port_t reply_port = MACH_PORT_NULL;
-    const char *inl_request = NULL; /* char * so we can pass the buffer in directly */
-    mach_msg_type_number_t inl_request_length = 0;
-    k5_ipc_ool_request_t ool_request = NULL;
-    mach_msg_type_number_t ool_request_length = 0;
-
-    if (!in_request_stream) { err = EINVAL; }
-    if (!out_reply_stream ) { err = EINVAL; }
-
-    if (!err) {
-        err = CALL_INIT_FUNCTION (k5_cli_ipc_thread_init);
-    }
-
-    if (!err) {
-        /* depending on how big the message is, use the fast inline buffer or
-         * the slow dynamically allocated buffer */
-        mach_msg_type_number_t request_length = krb5int_ipc_stream_size (in_request_stream);
-
-        if (request_length > K5_IPC_MAX_INL_MSG_SIZE) {
-            /*dprintf ("%s choosing out of line buffer (size is %d)",
-             *                  __FUNCTION__, request_length); */
-
-            err = vm_read (mach_task_self (),
-                           (vm_address_t) krb5int_ipc_stream_data (in_request_stream),
-                           request_length,
-                           (vm_address_t *) &ool_request,
-                           &ool_request_length);
-        } else {
-            /*dprintf ("%s choosing in line buffer (size is %d)",
-             *                  __FUNCTION__, request_length); */
-
-            inl_request_length = request_length;
-            inl_request = krb5int_ipc_stream_data (in_request_stream);
-        }
-    }
-
-    if (!err) {
-        cinfo = k5_getspecific (K5_KEY_IPC_CONNECTION_INFO);
-
-        if (!cinfo) {
-            err = k5_ipc_client_cinfo_allocate (&cinfo);
-
-            if (!err) {
-                err = k5_setspecific (K5_KEY_IPC_CONNECTION_INFO, cinfo);
-            }
-        }
-
-        if (!err) {
-            int i, found = 0;
-
-            for (i = 0; i < KIPC_SERVICE_COUNT; i++) {
-                if (!strcmp (in_service_id, cinfo->connections[i].service_id)) {
-                    found = 1;
-                    connection = &cinfo->connections[i];
-                    break;
-                }
-            }
-
-            if (!found) { err = EINVAL; }
-        }
-    }
-
-    if (!err) {
-        err = k5_ipc_client_lookup_server (in_service_id, in_launch_server,
-                                           TRUE, &server_port);
-    }
-
-    if (!err) {
-        err = mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE,
-                                  &reply_port);
-    }
-
-    while (!err && !done) {
-        if (!err && !MACH_PORT_VALID (connection->port)) {
-            err = k5_ipc_client_create_client_connection (server_port,
-                                                          &connection->port);
-        }
-
-        if (!err) {
-            err = k5_ipc_client_request (connection->port, reply_port,
-                                         inl_request, inl_request_length,
-                                         ool_request, ool_request_length);
-
-        }
-
-        if (err == MACH_SEND_INVALID_DEST) {
-            if (try_count < 2) {
-                try_count++;
-                err = 0;
-            }
-
-            if (MACH_PORT_VALID (connection->port)) {
-                mach_port_mod_refs (mach_task_self(), connection->port,
-                                    MACH_PORT_RIGHT_SEND, -1 );
-                connection->port = MACH_PORT_NULL;
-            }
-
-            /* Look up server name again without using the cached copy */
-            err = k5_ipc_client_lookup_server (in_service_id,
-                                               in_launch_server,
-                                               FALSE, &server_port);
-
-        } else {
-            /* Talked to server, though we may have gotten an error */
-            done = 1;
-
-            /* Because we use ",dealloc" ool_request will be freed by mach.
-             * Don't double free it. */
-            ool_request = NULL;
-            ool_request_length = 0;
-        }
-    }
-
-    if (!err) {
-        err = krb5int_ipc_stream_new (&cinfo->reply_stream);
-    }
-
-    if (!err) {
-        mach_port_t old_notification_target = MACH_PORT_NULL;
-
-        /* request no-senders notification so we know when server dies */
-        err = mach_port_request_notification (mach_task_self (), reply_port,
-                                              MACH_NOTIFY_NO_SENDERS, 1,
-                                              reply_port,
-                                              MACH_MSG_TYPE_MAKE_SEND_ONCE,
-                                              &old_notification_target);
-
-        if (!err && old_notification_target != MACH_PORT_NULL) {
-            mach_port_deallocate (mach_task_self (), old_notification_target);
-        }
-    }
-
-    if (!err) {
-        cinfo->server_died = 0;
-
-        err = mach_msg_server_once (k5_ipc_reply_demux, K5_IPC_MAX_MSG_SIZE,
-                                    reply_port, MACH_MSG_TIMEOUT_NONE);
-
-        if (!err && cinfo->server_died) {
-            err = ENOTCONN;
-        }
-    }
-
-    if (err == BOOTSTRAP_UNKNOWN_SERVICE && !in_launch_server) {
-        err = 0;  /* If server is not running just return an empty stream. */
-    }
-
-    if (!err) {
-        *out_reply_stream = cinfo->reply_stream;
-        cinfo->reply_stream = NULL;
-    }
-
-    if (reply_port != MACH_PORT_NULL) {
-        mach_port_destroy (mach_task_self (), reply_port);
-    }
-    if (ool_request_length) {
-        vm_deallocate (mach_task_self (),
-                       (vm_address_t) ool_request, ool_request_length);
-    }
-    if (cinfo && cinfo->reply_stream) {
-        krb5int_ipc_stream_release (cinfo->reply_stream);
-        cinfo->reply_stream = NULL;
-    }
-
-    return err;
-}
-
-#endif /* LEAN CLIENT */
diff --git a/src/util/mac/k5_mig_client.h b/src/util/mac/k5_mig_client.h
deleted file mode 100644
index 1d13bda..0000000
--- a/src/util/mac/k5_mig_client.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
-/* util/mac/k5_mig_client.h */
-/*
- * Copyright 2006 Massachusetts Institute of Technology.
- * All Rights Reserved.
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission.  Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is" without express
- * or implied warranty.
- */
-
-#ifndef K5_MIG_CLIENT_H
-#define K5_MIG_CLIENT_H
-
-#include "k5-ipc_stream.h"
-
-int32_t k5_ipc_send_request (const char    *in_service_id,
-                             int32_t        in_launch_server,
-                             k5_ipc_stream  in_request_stream,
-                             k5_ipc_stream *out_reply_stream);
-
-#endif /* K5_MIG_CLIENT_H */
diff --git a/src/util/mac/k5_mig_reply.defs b/src/util/mac/k5_mig_reply.defs
deleted file mode 100644
index 301778e..0000000
--- a/src/util/mac/k5_mig_reply.defs
+++ /dev/null
@@ -1,58 +0,0 @@
-/* $Copyright:
- *
- * Copyright 2004-2006 by the Massachusetts Institute of Technology.
- * 
- * All rights reserved.
- * 
- * Export of this software from the United States of America may require a
- * specific license from the United States Government.  It is the
- * responsibility of any person or organization contemplating export to
- * obtain such a license before exporting.
- * 
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute
- * this software and its documentation for any purpose and without fee is
- * hereby granted, provided that the above copyright notice appear in all
- * copies and that both that copyright notice and this permission notice
- * appear in supporting documentation, and that the name of M.I.T. not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.  Furthermore if you
- * modify this software you must label your software as modified software
- * and not distribute it in such a fashion that it might be confused with
- * the original MIT software. M.I.T. makes no representations about the
- * suitability of this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- * 
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- * 
- * Individual source code files are copyright MIT, Cygnus Support,
- * OpenVision, Oracle, Sun Soft, FundsXpress, and others.
- * 
- * Project Athena, Athena, Athena MUSE, Discuss, Hesiod, Kerberos, Moira,
- * and Zephyr are trademarks of the Massachusetts Institute of Technology
- * (MIT).  No commercial use of these trademarks may be made without prior
- * written permission of MIT.
- * 
- * "Commercial use" means use of a name in a product or other for-profit
- * manner.  It does NOT prevent a commercial firm from referring to the MIT
- * trademarks in order to convey information (although in doing so,
- * recognition of their trademark status should be given).
- * $
- */
- 
-#include "k5_mig.defs"
- 
-subsystem k5_ipc_reply 200;
-
-serverprefix k5_ipc_client_;
-userprefix k5_ipc_server_;
-
-/* ",dealloc" means that the vm_read() memory will be moved to 
- * the other process rather than copied.  This is necessary on the
- * client side because we can't know when server has copied our
- * buffers so we can't vm_deallocate() them ourselves. */
- 
-simpleroutine reply (in_reply_port : mach_port_move_send_once_t;
-                     in_inl_reply  : k5_ipc_inl_reply_t;
-                     in_ool_reply  : k5_ipc_ool_reply_t, dealloc);
diff --git a/src/util/mac/k5_mig_request.defs b/src/util/mac/k5_mig_request.defs
deleted file mode 100644
index bbb23f0..0000000
--- a/src/util/mac/k5_mig_request.defs
+++ /dev/null
@@ -1,62 +0,0 @@
-/* $Copyright:
- *
- * Copyright 2004-2006 by the Massachusetts Institute of Technology.
- * 
- * All rights reserved.
- * 
- * Export of this software from the United States of America may require a
- * specific license from the United States Government.  It is the
- * responsibility of any person or organization contemplating export to
- * obtain such a license before exporting.
- * 
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute
- * this software and its documentation for any purpose and without fee is
- * hereby granted, provided that the above copyright notice appear in all
- * copies and that both that copyright notice and this permission notice
- * appear in supporting documentation, and that the name of M.I.T. not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.  Furthermore if you
- * modify this software you must label your software as modified software
- * and not distribute it in such a fashion that it might be confused with
- * the original MIT software. M.I.T. makes no representations about the
- * suitability of this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- * 
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- * 
- * Individual source code files are copyright MIT, Cygnus Support,
- * OpenVision, Oracle, Sun Soft, FundsXpress, and others.
- * 
- * Project Athena, Athena, Athena MUSE, Discuss, Hesiod, Kerberos, Moira,
- * and Zephyr are trademarks of the Massachusetts Institute of Technology
- * (MIT).  No commercial use of these trademarks may be made without prior
- * written permission of MIT.
- * 
- * "Commercial use" means use of a name in a product or other for-profit
- * manner.  It does NOT prevent a commercial firm from referring to the MIT
- * trademarks in order to convey information (although in doing so,
- * recognition of their trademark status should be given).
- * $
- */
- 
-#include "k5_mig.defs"
-
-subsystem k5_ipc_request 100;
-
-serverprefix k5_ipc_server_;
-userprefix k5_ipc_client_;
-
-routine create_client_connection (in_server_port     : mach_port_t;
-                             out out_connection_port : mach_port_t = MACH_MSG_TYPE_MAKE_SEND);
-
-/* ",dealloc" means that the vm_read() memory will be moved to 
- * the other process rather than copied.  This is necessary on the
- * server side because we can't know when client has copied our
- * buffers so we can't vm_deallocate() them ourselves. */
-
-simpleroutine request (in_connection_port : mach_port_t;
-                       in_reply_port      : mach_port_make_send_once_t;
-                       in_inl_request     : k5_ipc_inl_request_t;
-                       in_ool_request     : k5_ipc_ool_request_t, dealloc);
diff --git a/src/util/mac/k5_mig_server.c b/src/util/mac/k5_mig_server.c
deleted file mode 100644
index cdab13b..0000000
--- a/src/util/mac/k5_mig_server.c
+++ /dev/null
@@ -1,390 +0,0 @@
-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
-/* util/mac/k5_mig_server.c */
-/*
- * Copyright 2006 Massachusetts Institute of Technology.
- * All Rights Reserved.
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission.  Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is" without express
- * or implied warranty.
- */
-
-#include "k5_mig_server.h"
-
-#include <syslog.h>
-#include "k5_mig_requestServer.h"
-#include "k5_mig_reply.h"
-
-#include <CoreFoundation/CoreFoundation.h>
-#include <mach/mach.h>
-#include <servers/bootstrap.h>
-#include <string.h>
-
-/* Global variables for servers (used by k5_ipc_request_demux) */
-static mach_port_t g_service_port = MACH_PORT_NULL;
-static mach_port_t g_notify_port = MACH_PORT_NULL;
-static mach_port_t g_listen_port_set = MACH_PORT_NULL;
-static boolean_t g_ready_to_quit = 0;
-
-
-/* ------------------------------------------------------------------------ */
-
-static boolean_t k5_ipc_request_demux (mach_msg_header_t *request,
-                                       mach_msg_header_t *reply)
-{
-    boolean_t handled = 0;
-
-    if (!handled) {
-        handled = k5_ipc_request_server (request, reply);
-    }
-
-    /* Our session has a send right. If that goes away it's time to quit. */
-    if (!handled && (request->msgh_id == MACH_NOTIFY_NO_SENDERS &&
-                     request->msgh_local_port == g_notify_port)) {
-        g_ready_to_quit = 1;
-        handled = 1;
-    }
-
-    /* Check here for a client death.  If so remove it */
-    if (!handled && request->msgh_id == MACH_NOTIFY_NO_SENDERS) {
-        kern_return_t err = KERN_SUCCESS;
-
-        err = k5_ipc_server_remove_client (request->msgh_local_port);
-
-        if (!err) {
-            err = mach_port_mod_refs (mach_task_self (),
-                                      request->msgh_local_port,
-                                      MACH_PORT_RIGHT_RECEIVE, -1);
-        }
-
-        if (!err) {
-            handled = 1;  /* was a port we are tracking */
-        }
-    }
-
-    return handled;
-}
-
-/* ------------------------------------------------------------------------ */
-
-kern_return_t k5_ipc_server_create_client_connection (mach_port_t    in_server_port,
-                                                      mach_port_t   *out_connection_port)
-{
-    kern_return_t err = KERN_SUCCESS;
-    mach_port_t connection_port = MACH_PORT_NULL;
-    mach_port_t old_notification_target = MACH_PORT_NULL;
-
-    if (!err) {
-        err = mach_port_allocate (mach_task_self (),
-                                  MACH_PORT_RIGHT_RECEIVE, &connection_port);
-    }
-
-    if (!err) {
-        err = mach_port_move_member (mach_task_self (),
-                                     connection_port, g_listen_port_set);
-    }
-
-    if (!err) {
-        /* request no-senders notification so we can tell when client quits/crashes */
-        err = mach_port_request_notification (mach_task_self (),
-                                              connection_port,
-                                              MACH_NOTIFY_NO_SENDERS, 1,
-                                              connection_port,
-                                              MACH_MSG_TYPE_MAKE_SEND_ONCE,
-                                              &old_notification_target );
-    }
-
-    if (!err) {
-        err = k5_ipc_server_add_client (connection_port);
-    }
-
-    if (!err) {
-        *out_connection_port = connection_port;
-        connection_port = MACH_PORT_NULL;
-    }
-
-    if (MACH_PORT_VALID (connection_port)) { mach_port_deallocate (mach_task_self (), connection_port); }
-
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-kern_return_t k5_ipc_server_request (mach_port_t             in_connection_port,
-                                     mach_port_t             in_reply_port,
-                                     k5_ipc_inl_request_t    in_inl_request,
-                                     mach_msg_type_number_t  in_inl_requestCnt,
-                                     k5_ipc_ool_request_t    in_ool_request,
-                                     mach_msg_type_number_t  in_ool_requestCnt)
-{
-    kern_return_t err = KERN_SUCCESS;
-    k5_ipc_stream request_stream = NULL;
-
-    if (!err) {
-        err = krb5int_ipc_stream_new (&request_stream);
-    }
-
-    if (!err) {
-        if (in_inl_requestCnt) {
-            err = krb5int_ipc_stream_write (request_stream, in_inl_request, in_inl_requestCnt);
-
-        } else if (in_ool_requestCnt) {
-            err = krb5int_ipc_stream_write (request_stream, in_ool_request, in_ool_requestCnt);
-
-        } else {
-            err = EINVAL;
-        }
-    }
-
-    if (!err) {
-        err = k5_ipc_server_handle_request (in_connection_port, in_reply_port, request_stream);
-    }
-
-    krb5int_ipc_stream_release (request_stream);
-    if (in_ool_requestCnt) { vm_deallocate (mach_task_self (), (vm_address_t) in_ool_request, in_ool_requestCnt); }
-
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-static kern_return_t k5_ipc_server_get_lookup_and_service_names (char **out_lookup,
-                                                                 char **out_service)
-{
-    kern_return_t err = KERN_SUCCESS;
-    CFBundleRef bundle = NULL;
-    CFStringRef id_string = NULL;
-    CFIndex len = 0;
-    char *service_id = NULL;
-    char *lookup = NULL;
-    char *service = NULL;
-
-    if (!out_lookup ) { err = EINVAL; }
-    if (!out_service) { err = EINVAL; }
-
-    if (!err) {
-        bundle = CFBundleGetMainBundle ();
-        if (!bundle) { err = ENOENT; }
-    }
-
-    if (!err) {
-        id_string = CFBundleGetIdentifier (bundle);
-        if (!id_string) { err = ENOMEM; }
-    }
-
-    if (!err) {
-        len = CFStringGetMaximumSizeForEncoding (CFStringGetLength (id_string),
-                                                 kCFStringEncodingUTF8) + 1;
-    }
-
-    if (!err) {
-        service_id = calloc (len, sizeof (char));
-        if (!service_id) { err = errno; }
-    }
-
-    if (!err && !CFStringGetCString (id_string, service_id, len,
-                                     kCFStringEncodingUTF8)) {
-        err = ENOMEM;
-    }
-
-    if (!err) {
-        int w = asprintf (&lookup, "%s%s", service_id, K5_MIG_LOOKUP_SUFFIX);
-        if (w < 0) { err = ENOMEM; }
-    }
-
-    if (!err) {
-        int w = asprintf (&service, "%s%s", service_id, K5_MIG_SERVICE_SUFFIX);
-        if (w < 0) { err = ENOMEM; }
-    }
-
-    if (!err) {
-        *out_lookup = lookup;
-        lookup = NULL;
-        *out_service = service;
-        service = NULL;
-    }
-
-    free (service);
-    free (lookup);
-    free (service_id);
-
-    return err;
-}
-
-#pragma mark -
-
-/* ------------------------------------------------------------------------ */
-
-int32_t k5_ipc_server_listen_loop (void)
-{
-    /* Run the Mach IPC listen loop.
-     * This will call k5_ipc_server_create_client_connection for new clients
-     * and k5_ipc_server_request for existing clients */
-
-    kern_return_t  err = KERN_SUCCESS;
-    char          *service = NULL;
-    char          *lookup = NULL;
-    mach_port_t    lookup_port = MACH_PORT_NULL;
-    mach_port_t    boot_port = MACH_PORT_NULL;
-    mach_port_t    previous_notify_port = MACH_PORT_NULL;
-
-    if (!err) {
-        err = k5_ipc_server_get_lookup_and_service_names (&lookup, &service);
-    }
-
-    if (!err) {
-        /* Get the bootstrap port */
-        err = task_get_bootstrap_port (mach_task_self (), &boot_port);
-    }
-
-    if (!err) {
-        /* We are an on-demand server so our lookup port already exists. */
-        err = bootstrap_check_in (boot_port, lookup, &lookup_port);
-    }
-
-    if (!err) {
-        /* We are an on-demand server so our service port already exists. */
-        err = bootstrap_check_in (boot_port, service, &g_service_port);
-    }
-
-    if (!err) {
-        /* Create the port set that the server will listen on */
-        err = mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE,
-                                  &g_notify_port);
-    }
-
-    if (!err) {
-        /* Ask for notification when the server port has no more senders
-         * A send-once right != a send right so our send-once right will
-         * not interfere with the notification */
-        err = mach_port_request_notification (mach_task_self (), g_service_port,
-                                              MACH_NOTIFY_NO_SENDERS, true,
-                                              g_notify_port,
-                                              MACH_MSG_TYPE_MAKE_SEND_ONCE,
-                                              &previous_notify_port);
-    }
-
-    if (!err) {
-        /* Create the port set that the server will listen on */
-        err = mach_port_allocate (mach_task_self (),
-                                  MACH_PORT_RIGHT_PORT_SET, &g_listen_port_set);
-    }
-
-    if (!err) {
-        /* Add the lookup port to the port set */
-        err = mach_port_move_member (mach_task_self (),
-                                     lookup_port, g_listen_port_set);
-    }
-
-    if (!err) {
-        /* Add the service port to the port set */
-        err = mach_port_move_member (mach_task_self (),
-                                     g_service_port, g_listen_port_set);
-    }
-
-    if (!err) {
-        /* Add the notify port to the port set */
-        err = mach_port_move_member (mach_task_self (),
-                                     g_notify_port, g_listen_port_set);
-    }
-
-    while (!err && !g_ready_to_quit) {
-        /* Handle one message at a time so we can check to see if
-         * the server wants to quit */
-        err = mach_msg_server_once (k5_ipc_request_demux, K5_IPC_MAX_MSG_SIZE,
-                                    g_listen_port_set, MACH_MSG_OPTION_NONE);
-    }
-
-    /* Clean up the ports and strings */
-    if (MACH_PORT_VALID (g_notify_port)) {
-        mach_port_destroy (mach_task_self (), g_notify_port);
-        g_notify_port = MACH_PORT_NULL;
-    }
-    if (MACH_PORT_VALID (g_listen_port_set)) {
-        mach_port_destroy (mach_task_self (), g_listen_port_set);
-        g_listen_port_set = MACH_PORT_NULL;
-    }
-    if (MACH_PORT_VALID (boot_port)) {
-        mach_port_deallocate (mach_task_self (), boot_port);
-    }
-
-    free (service);
-    free (lookup);
-
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-int32_t k5_ipc_server_send_reply (mach_port_t   in_reply_port,
-                                  k5_ipc_stream in_reply_stream)
-{
-    kern_return_t err = KERN_SUCCESS;
-    k5_ipc_inl_reply_t inl_reply;
-    mach_msg_type_number_t inl_reply_length = 0;
-    k5_ipc_ool_reply_t ool_reply = NULL;
-    mach_msg_type_number_t ool_reply_length = 0;
-
-    if (!MACH_PORT_VALID (in_reply_port)) { err = EINVAL; }
-    if (!in_reply_stream                ) { err = EINVAL; }
-
-    if (!err) {
-        /* depending on how big the message is, use the fast inline buffer or
-         * the slow dynamically allocated buffer */
-        mach_msg_type_number_t reply_length = krb5int_ipc_stream_size (in_reply_stream);
-
-        if (reply_length > K5_IPC_MAX_INL_MSG_SIZE) {
-            //dprintf ("%s choosing out of line buffer (size is %d)",
-            //                  __FUNCTION__, reply_length);
-
-            err = vm_read (mach_task_self (),
-                           (vm_address_t) krb5int_ipc_stream_data (in_reply_stream), reply_length,
-                           (vm_address_t *) &ool_reply, &ool_reply_length);
-
-        } else {
-            //cci_debug_printf ("%s choosing in line buffer (size is %d)",
-            //                  __FUNCTION__, reply_length);
-
-            inl_reply_length = reply_length;
-            memcpy (inl_reply, krb5int_ipc_stream_data (in_reply_stream), reply_length);
-        }
-    }
-
-    if (!err) {
-        err = k5_ipc_server_reply (in_reply_port,
-                                   inl_reply, inl_reply_length,
-                                   ool_reply, ool_reply_length);
-    }
-
-    if (!err) {
-        /* Because we use ",dealloc" ool_reply will be freed by mach. Don't double free it. */
-        ool_reply = NULL;
-        ool_reply_length = 0;
-    }
-
-    if (ool_reply_length) { vm_deallocate (mach_task_self (), (vm_address_t) ool_reply, ool_reply_length); }
-
-    return err;
-}
-
-/* ------------------------------------------------------------------------ */
-
-void k5_ipc_server_quit (void)
-{
-    g_ready_to_quit = 1;
-}
diff --git a/src/util/mac/k5_mig_server.h b/src/util/mac/k5_mig_server.h
deleted file mode 100644
index 95a5d0a..0000000
--- a/src/util/mac/k5_mig_server.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
-/* util/mac/k5_mig_server.h */
-/*
- * Copyright 2006 Massachusetts Institute of Technology.
- * All Rights Reserved.
- *
- * Export of this software from the United States of America may
- * require a specific license from the United States Government.
- * It is the responsibility of any person or organization contemplating
- * export to obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
- * distribute this software and its documentation for any purpose and
- * without fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright notice and
- * this permission notice appear in supporting documentation, and that
- * the name of M.I.T. not be used in advertising or publicity pertaining
- * to distribution of the software without specific, written prior
- * permission.  Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose.  It is provided "as is" without express
- * or implied warranty.
- */
-
-#ifndef K5_MIG_SERVER
-#define K5_MIG_SERVER
-
-#include "k5-ipc_stream.h"
-
-/* Defined by caller */
-
-int32_t k5_ipc_server_add_client (mach_port_t in_client_port);
-
-int32_t k5_ipc_server_remove_client (mach_port_t in_client_port);
-
-int32_t k5_ipc_server_handle_request (mach_port_t   in_connection_port,
-                                      mach_port_t   in_reply_port,
-                                      k5_ipc_stream in_request_stream);
-
-/* Server control functions */
-
-/* WARNING: Currently only supports running server loop on a single thread! */
-int32_t k5_ipc_server_listen_loop (void);
-
-int32_t k5_ipc_server_send_reply (mach_port_t   in_reply_pipe,
-                                  k5_ipc_stream in_reply_stream);
-
-void k5_ipc_server_quit (void);
-
-#endif /* K5_MIG_SERVER */
diff --git a/src/util/mac/k5_mig_types.h b/src/util/mac/k5_mig_types.h
deleted file mode 100644
index 9387e31..0000000
--- a/src/util/mac/k5_mig_types.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
-/* $Copyright:
- *
- * Copyright 2004-2006 by the Massachusetts Institute of Technology.
- *
- * All rights reserved.
- *
- * Export of this software from the United States of America may require a
- * specific license from the United States Government.  It is the
- * responsibility of any person or organization contemplating export to
- * obtain such a license before exporting.
- *
- * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute
- * this software and its documentation for any purpose and without fee is
- * hereby granted, provided that the above copyright notice appear in all
- * copies and that both that copyright notice and this permission notice
- * appear in supporting documentation, and that the name of M.I.T. not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.  Furthermore if you
- * modify this software you must label your software as modified software
- * and not distribute it in such a fashion that it might be confused with
- * the original MIT software. M.I.T. makes no representations about the
- * suitability of this software for any purpose.  It is provided "as is"
- * without express or implied warranty.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Individual source code files are copyright MIT, Cygnus Support,
- * OpenVision, Oracle, Sun Soft, FundsXpress, and others.
- *
- * Project Athena, Athena, Athena MUSE, Discuss, Hesiod, Kerberos, Moira,
- * and Zephyr are trademarks of the Massachusetts Institute of Technology
- * (MIT).  No commercial use of these trademarks may be made without prior
- * written permission of MIT.
- *
- * "Commercial use" means use of a name in a product or other for-profit
- * manner.  It does NOT prevent a commercial firm from referring to the MIT
- * trademarks in order to convey information (although in doing so,
- * recognition of their trademark status should be given).
- * $
- */
-
-#ifndef K5_MIG_TYPES_H
-#define K5_MIG_TYPES_H
-
-#define K5_IPC_MAX_MSG_SIZE 2048 + MAX_TRAILER_SIZE
-
-#define K5_MIG_LOOKUP_SUFFIX  ".ipcLookup"
-#define K5_MIG_SERVICE_SUFFIX ".ipcService"
-
-#define K5_IPC_MAX_INL_MSG_SIZE 1024
-
-typedef const char  k5_ipc_inl_request_t[K5_IPC_MAX_INL_MSG_SIZE];
-typedef const char *k5_ipc_ool_request_t;
-typedef char        k5_ipc_inl_reply_t[K5_IPC_MAX_INL_MSG_SIZE];
-typedef char       *k5_ipc_ool_reply_t;
-
-#endif /* K5_MIG_TYPES_H */


More information about the cvs-krb5 mailing list