From 61e67250dc0d6a3406c4b2cd6cb787663d194481 Mon Sep 17 00:00:00 2001 From: andre Date: Sun, 4 Jun 2000 17:07:49 +0000 Subject: 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 --- loginrec.h | 66 +++++++++++++++++++------------------------------------------- 1 file changed, 20 insertions(+), 46 deletions(-) (limited to 'loginrec.h') diff --git a/loginrec.h b/loginrec.h index 0f268ce6..ed9828c2 100644 --- a/loginrec.h +++ b/loginrec.h @@ -40,28 +40,21 @@ #include #include -/* 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); -- cgit v1.2.3