diff options
author | andre <andre> | 2000-06-04 17:07:49 +0000 |
---|---|---|
committer | andre <andre> | 2000-06-04 17:07:49 +0000 |
commit | 61e67250dc0d6a3406c4b2cd6cb787663d194481 (patch) | |
tree | 96fa7767605aa224256e26a3ac8977ba3019ea57 /loginrec.h | |
parent | a86c7eccbf2d2c53bac38b8194cb7fa8b71ad290 (diff) | |
download | openssh-git-61e67250dc0d6a3406c4b2cd6cb787663d194481.tar.gz |
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.h | 66 |
1 files changed, 20 insertions, 46 deletions
@@ -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); |