60643d379b
(Including all changes for FreeBSD - importing the original eBones distribution would be too complex at this stage, since I don't have access to Piero's CVS.) (If you want to include eBones in your system, don't forget to include MAKE_EBONES in /etc/make.conf.) (This stuff is now also suppable from braae.ru.ac.za.) Bones originally from MIT SIPB. Original port to FreeBSD 1.x by Piero Serini. Moved to FreeBSD 2.0 by Doug Rabson and Geoff Rehmet. Nice bug fixes from Doug Rabson.
194 lines
3.6 KiB
C
194 lines
3.6 KiB
C
/*
|
|
* Copyright 1988 by the Massachusetts Institute of Technology.
|
|
* For copying and distribution information, please see the file
|
|
* <Copyright.MIT>.
|
|
*
|
|
* This is where a cache would be implemented, if it were necessary.
|
|
*
|
|
* from: krb_cache.c,v 4.5 89/01/24 18:12:34 jon Exp $
|
|
* $Id: krb_cache.c,v 1.2 1994/07/19 19:23:35 g89r4222 Exp $
|
|
*/
|
|
|
|
#ifndef lint
|
|
static char rcsid[] =
|
|
"$Id: krb_cache.c,v 1.2 1994/07/19 19:23:35 g89r4222 Exp $";
|
|
#endif lint
|
|
|
|
#include <stdio.h>
|
|
#include <sys/types.h>
|
|
#include <netinet/in.h>
|
|
#include <sys/uio.h>
|
|
#include <sys/time.h>
|
|
#include <sys/resource.h>
|
|
#include <strings.h>
|
|
#include <des.h>
|
|
#include <krb.h>
|
|
#include <krb_db.h>
|
|
|
|
extern char *strncpy();
|
|
|
|
#ifdef DEBUG
|
|
extern int debug;
|
|
extern long kerb_debug;
|
|
#endif
|
|
static init = 0;
|
|
|
|
/*
|
|
* initialization routine for cache
|
|
*/
|
|
|
|
int
|
|
kerb_cache_init()
|
|
{
|
|
init = 1;
|
|
return (0);
|
|
}
|
|
|
|
/*
|
|
* look up a principal in the cache returns number of principals found
|
|
*/
|
|
|
|
int
|
|
kerb_cache_get_principal(serv, inst, principal, max)
|
|
char *serv; /* could have wild card */
|
|
char *inst; /* could have wild card */
|
|
Principal *principal;
|
|
unsigned int max; /* max number of name structs to return */
|
|
|
|
{
|
|
int found = 0;
|
|
u_long i;
|
|
|
|
if (!init)
|
|
kerb_cache_init();
|
|
#ifdef DEBUG
|
|
if (kerb_debug & 2)
|
|
fprintf(stderr, "cache_get_principal for %s %s max = %d\n",
|
|
serv, inst, max);
|
|
#endif DEBUG
|
|
|
|
#ifdef DEBUG
|
|
if (kerb_debug & 2) {
|
|
if (found) {
|
|
fprintf(stderr, "cache get %s %s found %s %s sid = %d\n",
|
|
serv, inst, principal->name, principal->instance);
|
|
} else {
|
|
fprintf(stderr, "cache %s %s not found\n", serv,
|
|
inst);
|
|
}
|
|
}
|
|
#endif
|
|
return (found);
|
|
}
|
|
|
|
/*
|
|
* insert/replace a principal in the cache returns number of principals
|
|
* inserted
|
|
*/
|
|
|
|
int
|
|
kerb_cache_put_principal(principal, max)
|
|
Principal *principal;
|
|
unsigned int max; /* max number of principal structs to
|
|
* insert */
|
|
|
|
{
|
|
int found = 0;
|
|
u_long i;
|
|
int count = 0;
|
|
|
|
if (!init)
|
|
kerb_cache_init();
|
|
|
|
#ifdef DEBUG
|
|
if (kerb_debug & 2) {
|
|
fprintf(stderr, "kerb_cache_put_principal max = %d",
|
|
max);
|
|
}
|
|
#endif
|
|
|
|
for (i = 0; i < max; i++) {
|
|
#ifdef DEBUG
|
|
if (kerb_debug & 2)
|
|
fprintf(stderr, "\n %s %s",
|
|
principal->name, principal->instance);
|
|
#endif
|
|
/* DO IT */
|
|
count++;
|
|
principal++;
|
|
}
|
|
return count;
|
|
}
|
|
|
|
/*
|
|
* look up a dba in the cache returns number of dbas found
|
|
*/
|
|
|
|
int
|
|
kerb_cache_get_dba(serv, inst, dba, max)
|
|
char *serv; /* could have wild card */
|
|
char *inst; /* could have wild card */
|
|
Dba *dba;
|
|
unsigned int max; /* max number of name structs to return */
|
|
|
|
{
|
|
int found = 0;
|
|
u_long i;
|
|
|
|
if (!init)
|
|
kerb_cache_init();
|
|
|
|
#ifdef DEBUG
|
|
if (kerb_debug & 2)
|
|
fprintf(stderr, "cache_get_dba for %s %s max = %d\n",
|
|
serv, inst, max);
|
|
#endif
|
|
|
|
#ifdef DEBUG
|
|
if (kerb_debug & 2) {
|
|
if (found) {
|
|
fprintf(stderr, "cache get %s %s found %s %s sid = %d\n",
|
|
serv, inst, dba->name, dba->instance);
|
|
} else {
|
|
fprintf(stderr, "cache %s %s not found\n", serv, inst);
|
|
}
|
|
}
|
|
#endif
|
|
return (found);
|
|
}
|
|
|
|
/*
|
|
* insert/replace a dba in the cache returns number of dbas inserted
|
|
*/
|
|
|
|
int
|
|
kerb_cache_put_dba(dba, max)
|
|
Dba *dba;
|
|
unsigned int max; /* max number of dba structs to insert */
|
|
|
|
{
|
|
int found = 0;
|
|
u_long i;
|
|
int count = 0;
|
|
|
|
if (!init)
|
|
kerb_cache_init();
|
|
#ifdef DEBUG
|
|
if (kerb_debug & 2) {
|
|
fprintf(stderr, "kerb_cache_put_dba max = %d", max);
|
|
}
|
|
#endif
|
|
for (i = 0; i < max; i++) {
|
|
#ifdef DEBUG
|
|
if (kerb_debug & 2)
|
|
fprintf(stderr, "\n %s %s",
|
|
dba->name, dba->instance);
|
|
#endif
|
|
/* DO IT */
|
|
count++;
|
|
dba++;
|
|
}
|
|
return count;
|
|
}
|
|
|