236b5adb141ec95b67ed9757f9117e1faa1db732
[freeradius.git] / src / include / sysutmp.h
1 /*
2  * sysutmp.h    Compatibility stuff for the different UTMP systems.
3  *
4  * Version:     $Id$
5  */
6
7 #ifndef SYSUTMP_H_INCLUDED
8 #define SYSUTMP_H_INCLUDED
9
10 #ifdef HAVE_UTMP_H
11
12 /* UTMP stuff. Uses utmpx on svr4 */
13 #ifdef __svr4__
14 #  include <utmpx.h>
15 #  include <sys/fcntl.h>
16 #  define utmp utmpx
17 #  define UT_NAMESIZE   32
18 #  define UT_LINESIZE   32
19 #  define UT_HOSTSIZE   257
20 #else
21 #  include <utmp.h>
22 #endif
23
24 #ifdef __osf__
25 #  define UT_NAMESIZE   32
26 #  define UT_LINESIZE   32
27 #  define UT_HOSTSIZE   64
28 #endif
29
30 #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(bsdi) || defined(__OpenBSD__)
31 #  ifndef UTMP_FILE
32 #    define UTMP_FILE "/var/run/utmp"
33 #  endif
34 #  define ut_user ut_name
35 #endif
36
37 /*
38  *      Generate definitions for systems which are too broken to
39  *      do it themselves.
40  *
41  *      Hmm... this means that we can probably get rid of a lot of
42  *      the static defines above, as the following lines will generate
43  *      the proper defines for any system.
44  */
45 #ifndef UT_LINESIZE
46 #define UT_LINESIZE sizeof(((struct utmp *) NULL)->ut_line)
47 #endif
48
49 #ifndef UT_NAMESIZE
50 #define UT_NAMESIZE sizeof(((struct utmp *) NULL)->ut_user)
51 #endif
52
53 #ifndef UT_HOSTSIZE
54 #define UT_HOSTSIZE sizeof(((struct utmp *) NULL)->ut_host)
55 #endif
56
57 #else /* HAVE_UTMP_H */
58
59 /*
60  *      No <utmp.h> file - define stuff ourselves (minimally).
61  */
62 #define UT_LINESIZE     16
63 #define UT_NAMESIZE     16
64 #define UT_HOSTSIZE     16
65
66 #define USER_PROCESS    7
67 #define DEAD_PROCESS    8
68
69 #define UTMP_FILE       "/var/run/utmp"
70 #define ut_name         ut_user
71
72 struct utmp {
73         short   ut_type;
74         int     ut_pid;
75         char    ut_line[UT_LINESIZE];
76         char    ut_id[4];
77         long    ut_time;
78         char    ut_user[UT_NAMESIZE];
79         char    ut_host[UT_HOSTSIZE];
80         long    ut_addr;
81 };
82
83 #endif /* HAVE_UTMP_H */
84
85 #endif /* SYSUTMP_H_INCLUDED */