From 1a0e03eb19998ab496a6ea845ff2c42d9a02df0b Mon Sep 17 00:00:00 2001 From: Karl Ramm Date: Tue, 25 Dec 2007 00:56:08 +0000 Subject: applied athena-update-branch patch --- server/zserver.h | 68 ++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 24 deletions(-) (limited to 'server/zserver.h') diff --git a/server/zserver.h b/server/zserver.h index 221e26b..981a000 100644 --- a/server/zserver.h +++ b/server/zserver.h @@ -17,6 +17,9 @@ #include #include + +#include + #include #include "zsrv_err.h" @@ -28,10 +31,19 @@ #include "access.h" #include "acl.h" -#ifdef HAVE_KRB4 +#if defined(HAVE_KRB5) || defined(HAVE_KRB4) /* Kerberos-specific library interfaces used only by the server. */ +#ifdef HAVE_KRB5 +extern krb5_keyblock *__Zephyr_keyblock; +#define ZGetSession() (__Zephyr_keyblock) +void ZSetSession(krb5_keyblock *keyblock); +Code_t ZFormatAuthenticNoticeV5 __P((ZNotice_t*, char*, int, int*, krb5_keyblock *)); +#else extern C_Block __Zephyr_session; #define ZGetSession() (__Zephyr_session) +#endif +void ZSetSessionDES(C_Block *key); + Code_t ZFormatAuthenticNotice __P((ZNotice_t*, char*, int, int*, C_Block)); #endif @@ -67,9 +79,9 @@ typedef struct { typedef struct _Destination Destination; typedef struct _Destlist Destlist; -typedef struct _Realm Realm; -typedef struct _Realmname Realmname; -typedef enum _Realm_state Realm_state; +typedef struct _ZRealm ZRealm; +typedef struct _ZRealmname ZRealmname; +typedef enum _ZRealm_state ZRealm_state; typedef struct _Client Client; typedef struct _Triplet Triplet; typedef enum _Server_state Server_state; @@ -90,14 +102,14 @@ struct _Destlist { struct _Destlist *next, **prev_p; }; -enum _Realm_state { - REALM_UP, /* Realm is up */ - REALM_TARDY, /* Realm due for a hello XXX */ - REALM_DEAD, /* Realm is considered dead */ - REALM_STARTING /* Realm is between dead and up */ +enum _ZRealm_state { + REALM_UP, /* ZRealm is up */ + REALM_TARDY, /* ZRealm due for a hello XXX */ + REALM_DEAD, /* ZRealm is considered dead */ + REALM_STARTING /* ZRealm is between dead and up */ }; -struct _Realm { +struct _ZRealm { char name[REALM_SZ]; int count; struct sockaddr_in *addrs; @@ -107,10 +119,10 @@ struct _Realm { Client *client; int child_pid; int have_tkt; - Realm_state state; + ZRealm_state state; }; -struct _Realmname { +struct _ZRealmname { char name[REALM_SZ]; char **servers; int nused; @@ -120,13 +132,17 @@ struct _Realmname { struct _Client { struct sockaddr_in addr; /* ipaddr/port of client */ Destlist *subs ; /* subscriptions */ +#ifdef HAVE_KRB5 + krb5_keyblock *session_keyblock; +#else #ifdef HAVE_KRB4 C_Block session_key; /* session key for this client */ #endif /* HAVE_KRB4 */ +#endif String *principal; /* krb principal of user */ int last_send; /* Counter for last sent packet. */ time_t last_ack; /* Time of last received ack */ - Realm *realm; + ZRealm *realm; struct _Client *next, **prev_p; }; @@ -215,9 +231,9 @@ int get_tgt __P((void)); extern String *class_control, *class_admin, *class_hm; extern String *class_ulogin, *class_ulocate; int ZDest_eq __P((Destination *d1, Destination *d2)); -Code_t triplet_register __P((Client *client, Destination *dest, Realm *realm)); +Code_t triplet_register __P((Client *client, Destination *dest, ZRealm *realm)); Code_t triplet_deregister __P((Client *client, Destination *dest, - Realm *realm)); + ZRealm *realm)); Code_t class_restrict __P((char *class, Acl *acl)); Code_t class_setup_restricted __P((char *class, Acl *acl)); Client **triplet_lookup __P((Destination *dest)); @@ -268,7 +284,7 @@ void sweep_ticket_hash_table __P((void *)); #ifndef NOENCRYPTION Sched *check_key_sched_cache __P((des_cblock key)); void add_to_key_sched_cache __P((des_cblock key, Sched *sched)); -int krb_set_key __P((char *key, int cvt)); +/*int krb_set_key __P((void *key, int cvt));*/ /* int krb_rd_req __P((KTEXT authent, char *service, char *instance, unsigned KRB_INT32 from_addr, AUTH_DAT *ad, char *fn)); */ int krb_find_ticket __P((KTEXT authent, KTEXT ticket)); @@ -297,7 +313,7 @@ Code_t server_adispatch __P((ZNotice_t *notice, int auth, struct sockaddr_in *who, Server *server)); /* found in subscr.c */ -Code_t subscr_foreign_user __P((ZNotice_t *, struct sockaddr_in *, Server *, Realm *)); +Code_t subscr_foreign_user __P((ZNotice_t *, struct sockaddr_in *, Server *, ZRealm *)); Code_t subscr_cancel __P((struct sockaddr_in *sin, ZNotice_t *notice)); Code_t subscr_subscribe __P((Client *who, ZNotice_t *notice, Server *server)); Code_t subscr_send_subs __P((Client *client)); @@ -321,16 +337,16 @@ Code_t uloc_send_locations __P((void)); /* found in realm.c */ int realm_sender_in_realm __P((char *realm, char *sender)); int realm_bound_for_realm __P((char *realm, char *recip)); -Realm *realm_which_realm __P((struct sockaddr_in *who)); -Realm *realm_get_realm_by_name __P((char *name)); -Realm *realm_get_realm_by_pid __P((int)); -void realm_handoff(ZNotice_t *, int, struct sockaddr_in *, Realm *, int); +ZRealm *realm_which_realm __P((struct sockaddr_in *who)); +ZRealm *realm_get_realm_by_name __P((char *name)); +ZRealm *realm_get_realm_by_pid __P((int)); +void realm_handoff(ZNotice_t *, int, struct sockaddr_in *, ZRealm *, int); char *realm_expand_realm(char *); void realm_init __P((void)); -Code_t ZCheckRealmAuthentication __P((ZNotice_t *, struct sockaddr_in *, +Code_t ZCheckZRealmAuthentication __P((ZNotice_t *, struct sockaddr_in *, char *)); Code_t realm_control_dispatch __P((ZNotice_t *, int, struct sockaddr_in *, - Server *, Realm *)); + Server *, ZRealm *)); void realm_shutdown __P((void)); void realm_deathgram __P((Server *)); @@ -355,6 +371,10 @@ extern int nfds; /* number to look at in select() */ extern int zdebug; extern char myname[]; /* domain name of this host */ extern char list_file[]; +#ifdef HAVE_KRB5 +extern char keytab_file[]; +extern krb5_ccache Z_krb5_ccache; +#endif #ifdef HAVE_KRB4 extern char srvtab_file[]; extern char my_realm[]; @@ -385,7 +405,7 @@ extern int nservers; /* number of other servers*/ extern String *empty; extern String *wildcard_instance; -extern Realm *otherrealms; +extern ZRealm *otherrealms; extern int nrealms; extern struct in_addr my_addr; /* my inet address */ -- cgit v1.2.3