/*	@(#)logerr.h	13.1 (RC International) 91/02/02	*/

/*
 *  logerr.h -- log error message data structure
 */

#define	LE_ARGMAX	12		/* max # arguments */
#define	LE_STRMAX	64		/* max aggregate string 
					   argument length */
#define	LE_MAGIC	0x6ce5f6da

struct log_emsg
{
    u_long		le_magic;	/* == LE_MAGIC */
    UID_T		le_uid;		/* message identification */
    u_long		le_machine;	/* RPU serial number */
    long		le_time;	/* time of error (sec UT) */
    u_int		le_number;	/* error number + bits */
    u_short		le_strargs;	/* bit vector of string args */
    u_short		le_flags;	/* has been locally printed */
    long		le_args[LE_ARGMAX];	/* arguments */
    char		le_strings[LE_STRMAX];	/* string arguments */
};

/*
 * define flags within le_number
 */
#ifndef ERR
#define ERR_RPU		0x08000000
#define ERR_INFO	0x00000000
#define ERR_WARN	0x20000000
#define ERR_SEVERE	0x40000000
#define ERR_FATAL	0x60000000
#endif ERR

/*
 * le_flags definitions
 */

#define LE_PRINTED	(1 << 0)	/* has been locally printed */
#define LE_QUIET	(1 << 1)	/* don't print */
#define	LE_RESENT	(1 << 2)	/* re-sent message */
#define	LE_NOFLUSH	(1 << 3)	/* guaranteed delivery */
#define	LE_LOCAL	(1 << 4)	/* local delivery only */

/*
 * define some macros to manipulate error numbers
 */
#define	ERR_SUBSHIFT		 16
#define	ERR_SEVSHIFT		 27
#define	ERR_CODE(num)		 (num & 0x0000ffff)
#define	ERR_SUBSYS(num)		((num & 0x07ff0000) >> ERR_SUBSHIFT)
#define	ERR_SEVERITY(num)	((num & 0xf8000000) >> ERR_SEVSHIFT)
