msg_time_sec = (long) msg_time.tv_sec;
msg_time_sec = (int32_t) msg_time.tv_sec;
krb_mk_safe(in, out, length, key, sender, receiver)	u_char *in;		/* application data */	u_char *out;		/*				 * put msg here, leave room for header!				 * breaks if in and out (header stuff)				 * overlap				 */	u_int32_t length;	/* of in data */	des_cblock *key;	/* encryption key for seed and ivec */	struct sockaddr_in *sender; /* sender address */	struct sockaddr_in *receiver; /* receiver address */{    register u_char     *p,*q;    /*     * get the current time to use instead of a sequence #, since     * process lifetime may be shorter than the lifetime of a session     * key.     */    if (gettimeofday(&msg_time,(struct timezone *)0)) {        return  -1;    }    msg_time_sec = (long) msg_time.tv_sec;    msg_time_5ms = msg_time.tv_usec/5000; /* 5ms quanta */    p = out;    *p++ = KRB_PROT_VERSION;    *p++ = AUTH_MSG_SAFE | HOST_BYTE_ORDER;    q = p;			/* start for checksum stuff */    /* stuff input length */    bcopy((char *)&length,(char *)p,sizeof(length));    p += sizeof(length);    /* make all the stuff contiguous for checksum */    bcopy((char *)in,(char *)p,(int) length);    p += length;    /* stuff time 5ms */    bcopy((char *)&msg_time_5ms,(char *)p,sizeof(msg_time_5ms));    p += sizeof(msg_time_5ms);    /* stuff source address */    bcopy((char *) &sender->sin_addr.s_addr,(char *)p,          sizeof(sender->sin_addr.s_addr));    p += sizeof(sender->sin_addr.s_addr);    /*     * direction bit is the sign bit of the timestamp.  Ok until     * 2038??     */    /* For compatibility with broken old code, compares are done in VAX        byte order (LSBFIRST) */     if (lsb_net_ulong_less(sender->sin_addr.s_addr, /* src < recv */ 			  receiver->sin_addr.s_addr)==-1)         msg_time_sec =  -msg_time_sec;     else if (lsb_net_ulong_less(sender->sin_addr.s_addr, 				receiver->sin_addr.s_addr)==0)         if (lsb_net_ushort_less(sender->sin_port,receiver->sin_port) == -1)             msg_time_sec = -msg_time_sec;     /*     * all that for one tiny bit!  Heaven help those that talk to     * themselves.     */    /* stuff time sec */    bcopy((char *)&msg_time_sec,(char *)p,sizeof(msg_time_sec));    p += sizeof(msg_time_sec);#ifdef NOENCRYPTION    cksum = 0;    bzero(big_cksum, sizeof(big_cksum));#else    cksum = des_quad_cksum((des_cblock *)q,big_cksum,p-q,2,key);#endif    if (krb_debug)        printf("\ncksum = %u",(u_int) cksum);    /* stuff checksum */    bcopy((char *)big_cksum,(char *)p,sizeof(big_cksum));    p += sizeof(big_cksum);    return ((long)(p - out));	/* resulting size */}