summaryrefslogtreecommitdiffstats
path: root/loginrec.h
diff options
context:
space:
mode:
authorandre <andre>2000-06-04 17:07:49 +0000
committerandre <andre>2000-06-04 17:07:49 +0000
commit61e67250dc0d6a3406c4b2cd6cb787663d194481 (patch)
tree96fa7767605aa224256e26a3ac8977ba3019ea57 /loginrec.h
parenta86c7eccbf2d2c53bac38b8194cb7fa8b71ad290 (diff)
Many changes to new login code based on Damien's feedback:
- Removed many redundant accessor/mutator methods as they're not necesary in OpenSSH - Added proper credits for OpenBSD code in loginrec.c - Changed function definitions to the OpenBSD style - Removed spurious 'L' prefix in line filename abbreviation for ut_line - Added some documentation in loginrec.c - Changed lastlog access function names - Removed #include lines in mid-file loginrec.c - loginrec.h, login.c and logintest.c changed to reflect new interface - Added TODO note for ttyslot() replacement
Diffstat (limited to 'loginrec.h')
-rw-r--r--loginrec.h66
1 files changed, 20 insertions, 46 deletions
diff --git a/loginrec.h b/loginrec.h
index 0f268ce6..ed9828c2 100644
--- a/loginrec.h
+++ b/loginrec.h
@@ -40,28 +40,21 @@
#include <netinet/in.h>
#include <sys/socket.h>
-/* RCSID("$Id: loginrec.h,v 1.1 2000/06/03 14:57:40 andre Exp $"); */
+/* RCSID("$Id: loginrec.h,v 1.2 2000/06/04 17:07:49 andre Exp $"); */
/**
** you should use the login_* calls to work around platform dependencies
**/
-/* check if we have IP6 on this system */
-#if defined(AF_INET6) || defined(INET6_ADDRSTRLEN)
-# define LOGIN_HAVE_IP6
-#endif
-
/*
* login_netinfo structure
*/
-struct login_netinfo {
- struct sockaddr_in sa_in4;
-#ifdef LOGIN_HAVE_IP6
- struct sockaddr_in6 sa_in6;
-#endif
-
-}; /* struct login_netinfo */
+union login_netinfo {
+ struct sockaddr sa;
+ struct sockaddr_in sa_in;
+ struct sockaddr_storage sa_storage;
+};
/*
@@ -102,8 +95,7 @@ struct logininfo {
unsigned int tv_sec;
unsigned int tv_usec;
- struct login_netinfo hostaddr; /* caller's host address(es) */
-
+ union login_netinfo hostaddr; /* caller's host address(es) */
}; /* struct logininfo */
@@ -111,34 +103,20 @@ struct logininfo {
* login recording functions
*/
/* construct a new login entry */
-struct logininfo *login_alloc_entry(int pid,
- const char *username,
+struct logininfo *login_alloc_entry(int pid, const char *username,
const char *hostname, const char *line);
+/* free a structure */
void login_free_entry(struct logininfo *li);
-int login_init_entry(struct logininfo *li,
- int pid, const char *username,
- const char *hostname, const char *line);
-void login_set_progname(struct logininfo *li,
- const char *progname);
-/* set the type field (skip if using ...login or ...logout) */
-void login_set_type(struct logininfo *li, int type);
-void login_set_pid(struct logininfo *li, int pid);
-void login_set_uid(struct logininfo *li, int uid);
-void login_set_line(struct logininfo *li, const char *line);
-void login_set_username(struct logininfo *li, const char *username);
-void login_set_hostname(struct logininfo *li, const char *hostname);
-/* set the exit status (used by [uw]tmpx) */
-void login_set_exitstatus(struct logininfo *li, int exit, int termination);
-void login_set_time(struct logininfo *li, unsigned int tv_sec,
- unsigned int tv_usec);
+/* fill out a pre-allocated structure with useful information */
+int login_init_entry(struct logininfo *li, int pid, const char *username,
+ const char *hostname, const char *line);
+/* place the current time in a logininfo struct */
void login_set_current_time(struct logininfo *li);
+
/* set the network address based on network address type */
-void login_set_ip4(struct logininfo *li,
- const struct sockaddr_in *sa_in4);
-# ifdef LOGIN_HAVE_IP6
-void login_set_ip6(struct logininfo *li,
- const struct sockaddr_in6 *sa_in6);
-# endif /* LOGIN_HAVE_IP6 */
+void login_set_addr(struct logininfo *li, const struct sockaddr *sa,
+ const unsigned int sa_size);
+
/* record the entry */
int login_write (struct logininfo *li);
int login_login (struct logininfo *li);
@@ -146,16 +124,12 @@ int login_logout(struct logininfo *li);
int login_log_entry(struct logininfo *li);
/*
- * login record retrieval functions
+ * lastlog retrieval functions
*/
/* lastlog *entry* functions fill out a logininfo */
-struct logininfo *login_getlastentry_name(struct logininfo *li,
- const char *username);
-struct logininfo *login_getlastentry_uid(struct logininfo *li,
- const int pid);
+struct logininfo *login_get_lastlog(struct logininfo *li, const int uid);
/* lastlog *time* functions return time_t equivalent (uint) */
-unsigned int login_getlasttime_name(const char *username);
-unsigned int login_getlasttime_uid(const int pid);
+unsigned int login_get_lastlog_time(const int uid);
/* produce various forms of the line filename */
char *line_fullname(char *dst, const char *src, int dstsize);