The FreeRADIUS server $Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
Loading...
Searching...
No Matches
sysutmp.h
Go to the documentation of this file.
1#pragma once
2/*
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation; either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
16 */
17
18/**
19 * $Id: 1b236ef092acb77dff503ae33a8dbc594abd382e $
20 *
21 * @file lib/server/sysutmp.h
22 * @brief Compatibility stuff for the different UTMP systems.
23 *
24 * @copyright 2015 The FreeRADIUS server project
25 */
26RCSIDH(sysutmp_h, "$Id: 1b236ef092acb77dff503ae33a8dbc594abd382e $")
27
28#include <freeradius-devel/autoconf.h>
29
30/*
31 * If we have BOTH utmp.h and utmpx.h, then
32 * we prefer to use utmp.h, but only on systems other than Solaris.
33 */
34#if !defined(__sun) && !defined(sgi) && !defined(hpux)
35# ifdef HAVE_UTMP_H
36# undef HAVE_UTMPX_H
37# endif
38#endif
39
40#if defined(HAVE_UTMP_H) || defined(HAVE_UTMPX_H)
41
42/* UTMP stuff. Uses utmpx on svr4 */
43#ifdef HAVE_UTMPX_H
44# include <utmpx.h>
45# include <sys/fcntl.h>
46# define USE_UTMPX 1
47# define UT_NAMESIZE 32
48# define UT_LINESIZE 32
49# define UT_HOSTSIZE 257
50#if defined(hpux) || defined(__FreeBSD__)
51# define ut_name ut_user
52#endif
53#if defined(__FreeBSD__)
54# define utmp utmpx
55#endif
56#else
57# include <utmp.h>
58#endif
59
60#ifdef __cplusplus
61extern "C" {
62#endif
63
64#ifdef __osf__
65# define UT_NAMESIZE 32
66# define UT_LINESIZE 32
67# define UT_HOSTSIZE 64
68#endif
69
70#if (defined(__FreeBSD__) && !defined(HAVE_UTMPX_H)) || defined(__NetBSD__) || defined(bsdi) || defined(__OpenBSD__) || defined(__APPLE__)
71# ifndef UTMP_FILE
72# define UTMP_FILE "/var/run/utmp"
73# endif
74# define ut_user ut_name
75#endif
76
77/*
78 * Generate definitions for systems which are too broken to
79 * do it themselves.
80 *
81 * Hmm... this means that we can probably get rid of a lot of
82 * the static defines above, as the following lines will generate
83 * the proper defines for any system.
84 */
85#ifndef UT_LINESIZE
86#define UT_LINESIZE sizeof(((struct utmp *) NULL)->ut_line)
87#endif
88
89#ifndef UT_NAMESIZE
90#define UT_NAMESIZE sizeof(((struct utmp *) NULL)->ut_user)
91#endif
92
93#ifndef UT_HOSTSIZE
94#define UT_HOSTSIZE sizeof(((struct utmp *) NULL)->ut_host)
95#endif
96
97#else /* HAVE_UTMP_H */
98
99/*
100 * No <utmp.h> file - define stuff ourselves (minimally).
101 */
102#define UT_LINESIZE 16
103#define UT_NAMESIZE 16
104#define UT_HOSTSIZE 16
105
106#define USER_PROCESS 7
107#define DEAD_PROCESS 8
108
109#define UTMP_FILE "/var/run/utmp"
110#define ut_name ut_user
111
122
123#endif /* HAVE_UTMP_H */
124
125#ifdef __cplusplus
126}
127#endif
#define RCSIDH(h, id)
Definition build.h:484
char ut_id[4]
Definition sysutmp.h:116
char ut_line[UT_LINESIZE]
Definition sysutmp.h:115
#define UT_NAMESIZE
Definition sysutmp.h:103
char ut_host[UT_HOSTSIZE]
Definition sysutmp.h:119
int ut_pid
Definition sysutmp.h:114
#define UT_LINESIZE
Definition sysutmp.h:102
char ut_user[UT_NAMESIZE]
Definition sysutmp.h:118
long ut_addr
Definition sysutmp.h:120
long ut_time
Definition sysutmp.h:117
#define UT_HOSTSIZE
Definition sysutmp.h:104
short ut_type
Definition sysutmp.h:113