To: krbdev@MIT.EDU, gnu@cygnus.com
Date: Sun, 19 Mar 1995 15:18:06 -0800
From: John Gilmore <gnu@cygnus.com>

The KDC will no longer link, because including
/usr/kerberos/lib/libkrb.a also requires including
/usr/kerberos/lib/libdes.a, which contains a routine for getting the
time-of-day (because it was needed both in libdes for generating
random keys, and in libkrb for timing).

The new K5 Makefiles bring in /usr/kerberos/lib/libkrb.a but
substitute libdes425.a for libdes.a.

I suggest reverting the change.

	John

Date: Sun, 19 Mar 1995 18:56:37 -0500
From: "Theodore Ts'o" <tytso@MIT.EDU>
To: gnu@cygnus.com
Cc: krbdev@MIT.EDU, gnu@cygnus.com
In-Reply-To: <199503192318.PAA07842@cygnus.com> 
(message from John Gilmore on Sun, 19 Mar 1995 15:18:06 -0800)

   Date: Sun, 19 Mar 1995 15:18:06 -0800
   From: John Gilmore <gnu@cygnus.com>

   The KDC will no longer link, because including
   /usr/kerberos/lib/libkrb.a also requires including
   /usr/kerberos/lib/libdes.a, which contains a routine for getting the
   time-of-day (because it was needed both in libdes for generating
   random keys, and in libkrb for timing).

Oh, yeah.  I think we ran into this before.... the problem is that
Cygnus introduced a new function into des.a, that's not in MIT's des.a
(and hence isn't in des425.a).

The long term fix is that we need to include a copy of the V4 Kerberos
library into the V5 tree, both so that (a) it's easier to compile
Kerberos with v4 compatibility, and (b) to prevent skew problems like
this one.

I'd suggest the short-term fix of grabbing the Cygnus gettime of day
function, and dropping it into des425.a, instead of reverting the
change, though.  The whole point of des425.a is to avoid including two
copies of the DES library.  Which function is it that's missing from
des425.a, that the Cygnus krb.a needs?

						- Ted

To: "Theodore Ts'o" <tytso@MIT.EDU>
Cc: gnu@cygnus.com, krbdev@MIT.EDU, gnu@cygnus.com
In-Reply-To: Your message of "Sun, 19 Mar 1995 18:56:37 EST."
             <199503192356.SAA00395@localhost.mit.edu> 
Date: Sun, 19 Mar 1995 18:13:12 -0800
From: John Gilmore <gnu@cygnus.com>

> The whole point of des425.a is to avoid including two
> copies of the DES library.

Exactly.  Premature optimization -- the root of all evil.

> I'd suggest the short-term fix of grabbing the Cygnus gettime of day
> function, and dropping it into des425.a, instead of reverting the
> change, though.
>  Which function is it that's missing from
> des425.a, that the Cygnus krb.a needs?

It's called unix_time_gmt_unixsec, which is the Unix version of
a function that returns time, in zone GMT, in the Unix epoch, in seconds.
This is a heavily configured part of the tree, because it involves
very OS-specific stuff.  (On Windows, we read the hardware clock,
because Windows's time drifts too much!)

I *don't* recommend adding that to your lib425.  What I recommend is
not trying to break an interface in half and substitute for half of it.
If you bring in any piece of krb4, bring the whole thing in.  Saving
40K (or 400K) when built for V4-compatability is simply not a big deal.
Human time is what this project is really short on.  Disk space and RAM
we have gobs of.  Let's stop wasting our time on this.

	John

To: John Gilmore <gnu@cygnus.com>
Cc: "Theodore Ts'o" <tytso@MIT.EDU>, krbdev@MIT.EDU, gnu@cygnus.com
In-Reply-To: Your message of "Sun, 19 Mar 1995 18:13:12 PST."
             <199503200213.SAA10956@cygnus.com> 
Date: Mon, 20 Mar 1995 16:22:16 -0800
From: John Gilmore <gnu@cygnus.com>

What I recommend is not trying to break an interface in half and
substitute for half of it.  If you bring in any piece of krb4, bring
the whole thing in.

I have real work to do.

	John

Date: Mon, 20 Mar 1995 20:48:46 +0500
From: Theodore Ts'o <tytso@MIT.EDU>
To: John Gilmore <gnu@cygnus.com>
Cc: John Gilmore <gnu@cygnus.com>, "Theodore Ts'o" <tytso@MIT.EDU>,
        krbdev@MIT.EDU, gnu@cygnus.com
In-Reply-To: John Gilmore's message of Mon, 20 Mar 1995 16:22:16 -0800,
	< 199503210022.QAA16985@cygnus.com>

   1995 16:22:17 -0800
   Cc: "Theodore Ts'o" <tytso@MIT.EDU>, krbdev@MIT.EDU, gnu@cygnus.com
   Date: Mon, 20 Mar 1995 16:22:16 -0800
   From: John Gilmore <gnu@cygnus.com>

   What I recommend is not trying to break an interface in half and
   substitute for half of it.  If you bring in any piece of krb4, bring
   the whole thing in.

   I have real work to do.

As far as I'm concerned, the des.a represents a real interface, which
Cygnus *changed* when it added that function to des.a and made krb.a
depend on it.  You view all of krb4 plus its des library as one
interface.  I don't; I view them as two distinct interfaces.

In any case, all I need to do to fix things is to put in the Unix
version of the time routine.  The V4 compat libraries are only used by
the server-side code; they're not used by the clients.  Simply from a
perspective of *my* time, and the real work that *I* have to do, it's a
lot faster for me to slip in the necessary routines than to back out all
of the changes in all of the relevant Makefiles.

We'll have to revisit this decision later, but we can do so when we
finally get around to integrating the V4 libraries into the source tree.

							- Ted

P.S.  Note that we have a similar abstraction in the OS part of the
library --- krb5_os_gettimeofday().  So you're going to have to deal
with that "heavily conditionalized" time code eventually anyway.