diff options
author | Ken Raeburn <raeburn@mit.edu> | 2006-03-08 02:56:48 +0000 |
---|---|---|
committer | Ken Raeburn <raeburn@mit.edu> | 2006-03-08 02:56:48 +0000 |
commit | 70585b725f15e984d0c08ce4c1540f09a8c711c6 (patch) | |
tree | 7331b10b6853979fad3e59f1e665bdbbfaf315df /src | |
parent | 8f09bfe9fa0e51c2bd1e2f533eb25655e88ca43b (diff) | |
download | krb5-70585b725f15e984d0c08ce4c1540f09a8c711c6.zip krb5-70585b725f15e984d0c08ce4c1540f09a8c711c6.tar.gz krb5-70585b725f15e984d0c08ce4c1540f09a8c711c6.tar.bz2 |
krb5.h, which is built after util/et, which is built after the support
code.
Fix: Put service location decls in k5-locate.h, pull plugin support
decls out of k5-int.h into k5-plugin.h, and make it stand on its own,
which includes changing the return type from krb5_error_code to
int32_t.
Oops: The plugin support code included k5-int.h, which includes
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17707 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r-- | src/include/ChangeLog | 8 | ||||
-rw-r--r-- | src/include/k5-int.h | 37 | ||||
-rw-r--r-- | src/include/k5-locate.h | 30 | ||||
-rw-r--r-- | src/include/k5-plugin.h | 119 | ||||
-rw-r--r-- | src/lib/krb5/os/ChangeLog | 4 | ||||
-rw-r--r-- | src/lib/krb5/os/locate_kdc.c | 2 | ||||
-rw-r--r-- | src/plugins/locate/python/ChangeLog | 4 | ||||
-rw-r--r-- | src/plugins/locate/python/py-locate.c | 2 | ||||
-rw-r--r-- | src/util/support/ChangeLog | 10 | ||||
-rw-r--r-- | src/util/support/plugins.c | 30 |
10 files changed, 174 insertions, 72 deletions
diff --git a/src/include/ChangeLog b/src/include/ChangeLog index 9dad2a2..4065aae 100644 --- a/src/include/ChangeLog +++ b/src/include/ChangeLog @@ -1,3 +1,11 @@ +2006-03-07 Ken Raeburn <raeburn@mit.edu> + + * k5-locate.h: Renamed from k5-plugin.h. + * k5-plugin.h: New file, with plugin support function declarations + moved from k5-int.h. Change return types from krb5_error_code to + int32_t. + * k5-int.h: Include both of them. + 2006-03-06 Ken Raeburn <raeburn@mit.edu> * k5-plugin.h: New file. diff --git a/src/include/k5-int.h b/src/include/k5-int.h index bf06882..ff8b342 100644 --- a/src/include/k5-int.h +++ b/src/include/k5-int.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1989,1990,1991,1992,1993,1994,1995,2000,2001, 2003 by the Massachusetts Institute of Technology, + * Copyright (C) 1989,1990,1991,1992,1993,1994,1995,2000,2001, 2003,2006 by the Massachusetts Institute of Technology, * Cambridge, MA, USA. All Rights Reserved. * * This software is being provided to you, the LICENSEE, by the @@ -535,7 +535,7 @@ extern int krb5int_grow_addrlist (struct addrlist *, int); extern int krb5int_add_host_to_list (struct addrlist *, const char *, int, int, int, int); -#include "k5-plugin.h" +#include "k5-locate.h" krb5_error_code krb5int_locate_server (krb5_context, const krb5_data *realm, struct addrlist *, enum locate_service_type svc, @@ -1009,38 +1009,7 @@ void KRB5_CALLCONV krb5_free_pa_enc_ts /* #include "krb5/wordsize.h" -- comes in through base-defs.h. */ #include "com_err.h" - -struct plugin_file_handle; /* opaque */ - -struct plugin_dir_handle { - /* This points to a list of plugin_file_handle structs, terminated - by one passing NULL_HANDLE. */ - struct plugin_file_handle *files; -}; -#define PLUGIN_DIR_INIT(P) ((P)->files = NULL) -#define PLUGIN_DIR_OPEN(P) ((P)->files != NULL) - -krb5_error_code KRB5_CALLCONV -krb5int_open_plugin (const char *, struct plugin_file_handle **); - -krb5_error_code KRB5_CALLCONV -krb5int_get_plugin_data (struct plugin_file_handle *, const char *, void **); - -krb5_error_code KRB5_CALLCONV -krb5int_get_plugin_func (struct plugin_file_handle *, const char *, - void (**)()); - -void KRB5_CALLCONV -krb5int_close_plugin (struct plugin_file_handle *); - -krb5_error_code KRB5_CALLCONV krb5int_open_plugin_dir (const char *, struct plugin_dir_handle *); -void KRB5_CALLCONV krb5int_close_plugin_dir (struct plugin_dir_handle *); -void KRB5_CALLCONV krb5int_free_plugin_dir_data (void **); -krb5_error_code KRB5_CALLCONV krb5int_get_plugin_dir_data (struct plugin_dir_handle *, - const char *, void ***); -void KRB5_CALLCONV krb5int_free_plugin_dir_func (void (**)(void)); -krb5_error_code KRB5_CALLCONV krb5int_get_plugin_dir_func (struct plugin_dir_handle *, - const char *, void (***)(void)); +#include "k5-plugin.h" struct _krb5_context { krb5_magic magic; diff --git a/src/include/k5-locate.h b/src/include/k5-locate.h new file mode 100644 index 0000000..a49c79a --- /dev/null +++ b/src/include/k5-locate.h @@ -0,0 +1,30 @@ +#ifndef K5_PLUGIN_H_INCLUDED +#define K5_PLUGIN_H_INCLUDED +#include "krb5.h" + +enum locate_service_type { + locate_service_kdc = 1, + locate_service_master_kdc, + locate_service_kadmin, + locate_service_krb524, + locate_service_kpasswd +}; + +struct krb5plugin_service_locate_ftable { + int vmajor, vminor; + /* Per-context setup and teardown. Returned void* blob is + private to the plugin. */ + krb5_error_code (*init)(krb5_context, void **); + void (*fini)(void *); + /* Callback function returns non-zero if the plugin function + should quit and return; this may be because of an error, or may + indicate we've already contacted the service, whatever. The + lookup function should only return an error if it detects a + problem, not if the callback function tells it to quit. */ + krb5_error_code (*lookup)(void *, + enum locate_service_type svc, const char *realm, + int socktype, int family, + int (*cbfunc)(void *,int,struct sockaddr *), + void *cbdata); +}; +#endif diff --git a/src/include/k5-plugin.h b/src/include/k5-plugin.h index a49c79a..2ce5b9f 100644 --- a/src/include/k5-plugin.h +++ b/src/include/k5-plugin.h @@ -1,30 +1,93 @@ -#ifndef K5_PLUGIN_H_INCLUDED -#define K5_PLUGIN_H_INCLUDED -#include "krb5.h" - -enum locate_service_type { - locate_service_kdc = 1, - locate_service_master_kdc, - locate_service_kadmin, - locate_service_krb524, - locate_service_kpasswd -}; +/* + * Copyright (C) 2006 Massachusetts Institute of Technology. + * All Rights Reserved. + * + * This software is being provided to you, the LICENSEE, by the + * Massachusetts Institute of Technology (M.I.T.) under the following + * license. By obtaining, using and/or copying this software, you agree + * that you have read, understood, and will comply with these terms and + * conditions: + * + * 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 or + * royalty is hereby granted, provided that you agree to comply with the + * following copyright notice and statements, including the disclaimer, and + * that the same appear on ALL copies of the software and documentation, + * including modifications that you make for internal use or for + * distribution: + * + * THIS SOFTWARE IS PROVIDED "AS IS", AND M.I.T. MAKES NO REPRESENTATIONS + * OR WARRANTIES, EXPRESS OR IMPLIED. By way of example, but not + * limitation, M.I.T. MAKES NO REPRESENTATIONS OR WARRANTIES OF + * MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF + * THE LICENSED SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY + * PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. + * + * The name of the Massachusetts Institute of Technology or M.I.T. may NOT + * be used in advertising or publicity pertaining to distribution of the + * software. Title to copyright in this software and any associated + * documentation shall at all times remain with M.I.T., and USER agrees to + * preserve same. + * + * 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. + */ -struct krb5plugin_service_locate_ftable { - int vmajor, vminor; - /* Per-context setup and teardown. Returned void* blob is - private to the plugin. */ - krb5_error_code (*init)(krb5_context, void **); - void (*fini)(void *); - /* Callback function returns non-zero if the plugin function - should quit and return; this may be because of an error, or may - indicate we've already contacted the service, whatever. The - lookup function should only return an error if it detects a - problem, not if the callback function tells it to quit. */ - krb5_error_code (*lookup)(void *, - enum locate_service_type svc, const char *realm, - int socktype, int family, - int (*cbfunc)(void *,int,struct sockaddr *), - void *cbdata); -}; +/* Just those definitions which are needed by util/support/plugins.c, + which gets compiled before util/et is built, which happens before + we can construct krb5.h, which is included by k5-int.h. + + So, no krb5 types. */ + +#if defined(_MSDOS) || defined(_WIN32) +#include "win-mac.h" #endif +#include "autoconf.h" +#ifndef KRB5_CALLCONV +#define KRB5_CALLCONV +#define KRB5_CALLCONV_C +#endif + +#ifdef HAVE_STDINT_H +# include <stdint.h> +#elif defined(HAVE_INTTYPES_H) +# include <inttypes.h> +#endif + +struct plugin_file_handle; /* opaque */ + +struct plugin_dir_handle { + /* This points to a list of plugin_file_handle structs, terminated + by one passing NULL_HANDLE. */ + struct plugin_file_handle *files; +}; +#define PLUGIN_DIR_INIT(P) ((P)->files = NULL) +#define PLUGIN_DIR_OPEN(P) ((P)->files != NULL) + +int32_t KRB5_CALLCONV +krb5int_open_plugin (const char *, struct plugin_file_handle **); + +int32_t KRB5_CALLCONV +krb5int_get_plugin_data (struct plugin_file_handle *, const char *, void **); + +int32_t KRB5_CALLCONV +krb5int_get_plugin_func (struct plugin_file_handle *, const char *, + void (**)()); + +void KRB5_CALLCONV +krb5int_close_plugin (struct plugin_file_handle *); + +int32_t KRB5_CALLCONV krb5int_open_plugin_dir (const char *, struct plugin_dir_handle *); +void KRB5_CALLCONV krb5int_close_plugin_dir (struct plugin_dir_handle *); +void KRB5_CALLCONV krb5int_free_plugin_dir_data (void **); +int32_t KRB5_CALLCONV krb5int_get_plugin_dir_data (struct plugin_dir_handle *, + const char *, void ***); +void KRB5_CALLCONV krb5int_free_plugin_dir_func (void (**)(void)); +int32_t KRB5_CALLCONV krb5int_get_plugin_dir_func (struct plugin_dir_handle *, + const char *, void (***)(void)); diff --git a/src/lib/krb5/os/ChangeLog b/src/lib/krb5/os/ChangeLog index 889a8f3..0b02869 100644 --- a/src/lib/krb5/os/ChangeLog +++ b/src/lib/krb5/os/ChangeLog @@ -1,3 +1,7 @@ +2006-03-07 Ken Raeburn <raeburn@mit.edu> + + * locate_kdc.c: Include k5-locate.h instead of k5-plugin.h. + 2006-03-06 Ken Raeburn <raeburn@mit.edu> * Makefile.in (DEFINES): New variable. diff --git a/src/lib/krb5/os/locate_kdc.c b/src/lib/krb5/os/locate_kdc.c index e751ca2..bed9c93 100644 --- a/src/lib/krb5/os/locate_kdc.c +++ b/src/lib/krb5/os/locate_kdc.c @@ -543,7 +543,7 @@ krb5_locate_srv_dns_1 (const krb5_data *realm, } #endif -#include "k5-plugin.h" +#include "k5-locate.h" static const char objdir[] = LIBDIR "/krb5/plugins/libkrb5"; diff --git a/src/plugins/locate/python/ChangeLog b/src/plugins/locate/python/ChangeLog index 6824a29..897919e 100644 --- a/src/plugins/locate/python/ChangeLog +++ b/src/plugins/locate/python/ChangeLog @@ -1,3 +1,7 @@ +2006-03-07 Ken Raeburn <raeburn@mit.edu> + + * py-locate.c: Include k5-locate.h instead of k5-plugin.h. + 2006-03-06 Ken Raeburn <raeburn@mit.edu> * Makefile.in, configure.in, py-locate.c, python.exports, diff --git a/src/plugins/locate/python/py-locate.c b/src/plugins/locate/python/py-locate.c index a315e35..548210a 100644 --- a/src/plugins/locate/python/py-locate.c +++ b/src/plugins/locate/python/py-locate.c @@ -66,7 +66,7 @@ #include <errno.h> #include "k5-int.h" -#include "k5-plugin.h" +#include "k5-locate.h" #define LIBDIR "/tmp" /* should be imported from configure */ #define SCRIPT_PATH LIBDIR "/krb5/locate-service.py" diff --git a/src/util/support/ChangeLog b/src/util/support/ChangeLog index 4ec482f..6de0648 100644 --- a/src/util/support/ChangeLog +++ b/src/util/support/ChangeLog @@ -1,3 +1,13 @@ +2006-03-07 Ken Raeburn <raeburn@mit.edu> + + * plugins.c: Don't include k5-int.h, it depends on krb5.h which + hasn't been built yet. Instead, include k5-plugin.h and a bunch + of system headers. + (krb5int_open_plugin, krb5int_get_plugin_data, + krb5int_get_plugin_func, krb5int_open_plugin_dir, + krb5int_get_plugin_dir_data, krb5int_get_plugin_dir_func): Change + return types from krb5_error_code to int32_t. + 2006-03-06 Ken Raeburn <raeburn@mit.edu> * plugins.c: New file. diff --git a/src/util/support/plugins.c b/src/util/support/plugins.c index bc93aa2..206ccb5 100644 --- a/src/util/support/plugins.c +++ b/src/util/support/plugins.c @@ -27,8 +27,22 @@ * Plugin module support, and shims around dlopen/whatever. */ -#include "k5-int.h" +#include "k5-plugin.h" #include <dlfcn.h> +#include <stdio.h> +#include <sys/types.h> +#ifdef HAVE_SYS_STAT_H +#include <sys/stat.h> +#endif +#ifdef HAVE_SYS_PARAM_H +#include <sys/param.h> +#endif +#include <errno.h> +#include <stdlib.h> +#include <string.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif #include <stdarg.h> static void Tprintf (const char *fmt, ...) @@ -54,7 +68,7 @@ struct plugin_file_handle { #endif }; -krb5_error_code KRB5_CALLCONV +int32_t KRB5_CALLCONV krb5int_open_plugin (const char *filename, struct plugin_file_handle **h) { struct plugin_file_handle *htmp; @@ -78,7 +92,7 @@ krb5int_open_plugin (const char *filename, struct plugin_file_handle **h) return 0; } -krb5_error_code KRB5_CALLCONV +int32_t KRB5_CALLCONV krb5int_get_plugin_data (struct plugin_file_handle *h, const char *csymname, void **ptr) { @@ -95,7 +109,7 @@ krb5int_get_plugin_data (struct plugin_file_handle *h, const char *csymname, return 0; } -krb5_error_code KRB5_CALLCONV +int32_t KRB5_CALLCONV krb5int_get_plugin_func (struct plugin_file_handle *h, const char *csymname, void (**ptr)()) { @@ -105,7 +119,7 @@ krb5int_get_plugin_func (struct plugin_file_handle *h, const char *csymname, handling is the same for both data and functions. (And the casting we do here works, etc.) */ void *dptr; - krb5_error_code err; + int32_t err; err = krb5int_get_plugin_data (h, csymname, &dptr); if (err == 0) @@ -137,7 +151,7 @@ krb5int_close_plugin (struct plugin_file_handle *h) #endif #endif -krb5_error_code KRB5_CALLCONV +int32_t KRB5_CALLCONV krb5int_open_plugin_dir (const char *dirname, struct plugin_dir_handle *dirhandle) { @@ -235,7 +249,7 @@ krb5int_free_plugin_dir_data (void **ptrs) free(ptrs); } -krb5_error_code KRB5_CALLCONV +int32_t KRB5_CALLCONV krb5int_get_plugin_dir_data (struct plugin_dir_handle *dirhandle, const char *symname, void ***ptrs) @@ -297,7 +311,7 @@ krb5int_free_plugin_dir_func (void (**ptrs)(void)) free(ptrs); } -krb5_error_code KRB5_CALLCONV +int32_t KRB5_CALLCONV krb5int_get_plugin_dir_func (struct plugin_dir_handle *dirhandle, const char *symname, void (***ptrs)(void)) |