Lines Matching defs:li

191 void set_utmp_time(struct logininfo *li, struct utmp *ut);
192 void construct_utmp(struct logininfo *li, struct utmp *ut);
196 void set_utmpx_time(struct logininfo *li, struct utmpx *ut);
197 void construct_utmpx(struct logininfo *li, struct utmpx *ut);
200 int utmp_write_entry(struct logininfo *li);
201 int utmpx_write_entry(struct logininfo *li);
202 int wtmp_write_entry(struct logininfo *li);
203 int wtmpx_write_entry(struct logininfo *li);
204 int lastlog_write_entry(struct logininfo *li);
205 int syslogin_write_entry(struct logininfo *li);
207 int getlast_entry(struct logininfo *li);
208 int lastlog_get_entry(struct logininfo *li);
209 int utmpx_get_entry(struct logininfo *li);
210 int wtmp_get_entry(struct logininfo *li);
211 int wtmpx_get_entry(struct logininfo *li);
233 login_login(struct logininfo *li)
235 li->type = LTYPE_LOGIN;
236 return (login_write(li));
250 login_logout(struct logininfo *li)
252 li->type = LTYPE_LOGOUT;
253 return (login_write(li));
277 struct logininfo li;
279 if (login_get_lastlog(&li, uid))
280 return (li.tv_sec);
299 login_get_lastlog(struct logininfo *li, const uid_t uid)
303 memset(li, '\0', sizeof(*li));
304 li->uid = uid;
316 if (strlcpy(li->username, pw->pw_name, sizeof(li->username)) >=
317 sizeof(li->username)) {
320 (unsigned long)sizeof(li->username) - 1);
324 if (getlast_entry(li))
325 return (li);
354 login_free_entry(struct logininfo *li)
356 free(li);
369 login_init_entry(struct logininfo *li, pid_t pid, const char *username,
374 memset(li, 0, sizeof(*li));
376 li->pid = pid;
380 line_fullname(li->line, line, sizeof(li->line));
383 strlcpy(li->username, username, sizeof(li->username));
384 pw = getpwnam(li->username);
387 li->username);
389 li->uid = pw->pw_uid;
393 strlcpy(li->hostname, hostname, sizeof(li->hostname));
406 login_set_current_time(struct logininfo *li)
412 li->tv_sec = tv.tv_sec;
413 li->tv_usec = tv.tv_usec;
418 login_set_addr(struct logininfo *li, const struct sockaddr *sa,
424 if (sizeof(li->hostaddr) < sa_size)
425 bufsize = sizeof(li->hostaddr);
427 memcpy(&li->hostaddr.sa, sa, bufsize);
436 login_write(struct logininfo *li)
446 login_set_current_time(li);
448 syslogin_write_entry(li);
451 if (li->type == LTYPE_LOGIN)
452 lastlog_write_entry(li);
455 utmp_write_entry(li);
458 wtmp_write_entry(li);
461 utmpx_write_entry(li);
464 wtmpx_write_entry(li);
467 if (li->type == LTYPE_LOGIN &&
468 !sys_auth_record_login(li->username,li->hostname,li->line,
470 logit("Writing login record failed for %s", li->username);
473 if (li->type == LTYPE_LOGIN)
474 audit_session_open(li);
475 else if (li->type == LTYPE_LOGOUT)
476 audit_session_close(li);
483 login_utmp_only(struct logininfo *li)
485 li->type = LTYPE_LOGIN;
486 login_set_current_time(li);
488 utmp_write_entry(li);
491 wtmp_write_entry(li);
494 utmpx_write_entry(li);
497 wtmpx_write_entry(li);
508 /* take the uid in li and return the last login time */
510 getlast_entry(struct logininfo *li)
513 return(lastlog_get_entry(li));
517 return (utmpx_get_entry(li));
527 return (wtmp_get_entry(li));
531 return (wtmpx_get_entry(li));
635 set_utmp_time(struct logininfo *li, struct utmp *ut)
638 ut->ut_tv.tv_sec = li->tv_sec;
639 ut->ut_tv.tv_usec = li->tv_usec;
641 ut->ut_time = li->tv_sec;
646 construct_utmp(struct logininfo *li,
658 line_abbrevname(ut->ut_id, li->line, sizeof(ut->ut_id));
663 switch (li->type) {
673 cray_retain_utmp(ut, li->pid);
678 set_utmp_time(li, ut);
680 line_stripname(ut->ut_line, li->line, sizeof(ut->ut_line));
683 ut->ut_pid = li->pid;
687 if (li->type == LTYPE_LOGOUT)
696 strncpy(ut->ut_name, li->username,
697 MIN_SIZEOF(ut->ut_name, li->username));
699 strncpy(ut->ut_host, li->hostname,
700 MIN_SIZEOF(ut->ut_host, li->hostname));
704 if (li->hostaddr.sa.sa_family == AF_INET)
705 ut->ut_addr = li->hostaddr.sa_in.sin_addr.s_addr;
709 if (li->hostaddr.sa.sa_family == AF_INET6) {
710 sa6 = ((struct sockaddr_in6 *)&li->hostaddr.sa);
733 set_utmpx_time(struct logininfo *li, struct utmpx *utx)
736 utx->ut_tv.tv_sec = li->tv_sec;
737 utx->ut_tv.tv_usec = li->tv_usec;
739 utx->ut_time = li->tv_sec;
744 construct_utmpx(struct logininfo *li, struct utmpx *utx)
752 line_abbrevname(utx->ut_id, li->line, sizeof(utx->ut_id));
756 switch (li->type) {
764 line_stripname(utx->ut_line, li->line, sizeof(utx->ut_line));
765 set_utmpx_time(li, utx);
766 utx->ut_pid = li->pid;
769 strncpy(utx->ut_user, li->username,
770 MIN_SIZEOF(utx->ut_user, li->username));
772 if (li->type == LTYPE_LOGOUT)
781 strncpy(utx->ut_host, li->hostname,
782 MIN_SIZEOF(utx->ut_host, li->hostname));
786 if (li->hostaddr.sa.sa_family == AF_INET)
787 utx->ut_addr = li->hostaddr.sa_in.sin_addr.s_addr;
791 if (li->hostaddr.sa.sa_family == AF_INET6) {
792 sa6 = ((struct sockaddr_in6 *)&li->hostaddr.sa);
804 utx->ut_syslen = MIN(strlen(li->hostname), sizeof(utx->ut_host));
826 utmp_write_library(struct logininfo *li, struct utmp *ut)
842 utmp_write_direct(struct logininfo *li, struct utmp *ut)
925 utmp_perform_login(struct logininfo *li)
929 construct_utmp(li, &ut);
931 if (!utmp_write_library(li, &ut)) {
936 if (!utmp_write_direct(li, &ut)) {
946 utmp_perform_logout(struct logininfo *li)
950 construct_utmp(li, &ut);
952 if (!utmp_write_library(li, &ut)) {
957 if (!utmp_write_direct(li, &ut)) {
967 utmp_write_entry(struct logininfo *li)
969 switch(li->type) {
971 return (utmp_perform_login(li));
974 return (utmp_perform_logout(li));
1001 utmpx_write_library(struct logininfo *li, struct utmpx *utx)
1016 utmpx_write_direct(struct logininfo *li, struct utmpx *utx)
1024 utmpx_perform_login(struct logininfo *li)
1028 construct_utmpx(li, &utx);
1030 if (!utmpx_write_library(li, &utx)) {
1035 if (!utmpx_write_direct(li, &ut)) {
1045 utmpx_perform_logout(struct logininfo *li)
1049 construct_utmpx(li, &utx);
1051 line_abbrevname(utx.ut_id, li->line, sizeof(utx.ut_id));
1058 utmpx_write_library(li, &utx);
1060 utmpx_write_direct(li, &utx);
1066 utmpx_write_entry(struct logininfo *li)
1068 switch(li->type) {
1070 return (utmpx_perform_login(li));
1072 return (utmpx_perform_logout(li));
1092 wtmp_write(struct logininfo *li, struct utmp *ut)
1114 wtmp_perform_login(struct logininfo *li)
1118 construct_utmp(li, &ut);
1119 return (wtmp_write(li, &ut));
1124 wtmp_perform_logout(struct logininfo *li)
1128 construct_utmp(li, &ut);
1129 return (wtmp_write(li, &ut));
1134 wtmp_write_entry(struct logininfo *li)
1136 switch(li->type) {
1138 return (wtmp_perform_login(li));
1140 return (wtmp_perform_logout(li));
1167 wtmp_islogin(struct logininfo *li, struct utmp *ut)
1169 if (strncmp(li->username, ut->ut_name,
1170 MIN_SIZEOF(li->username, ut->ut_name)) == 0) {
1182 wtmp_get_entry(struct logininfo *li)
1189 li->tv_sec = li->tv_usec = 0;
1217 if (wtmp_islogin(li, &ut) ) {
1224 li->tv_sec = ut.ut_time;
1227 li->tv_sec = ut.ut_tv.tv_sec;
1230 line_fullname(li->line, ut.ut_line,
1231 MIN_SIZEOF(li->line, ut.ut_line));
1233 strlcpy(li->hostname, ut.ut_host,
1234 MIN_SIZEOF(li->hostname, ut.ut_host));
1263 wtmpx_write(struct logininfo *li, struct utmpx *utx)
1293 wtmpx_perform_login(struct logininfo *li)
1297 construct_utmpx(li, &utx);
1298 return (wtmpx_write(li, &utx));
1303 wtmpx_perform_logout(struct logininfo *li)
1307 construct_utmpx(li, &utx);
1308 return (wtmpx_write(li, &utx));
1313 wtmpx_write_entry(struct logininfo *li)
1315 switch(li->type) {
1317 return (wtmpx_perform_login(li));
1319 return (wtmpx_perform_logout(li));
1331 wtmpx_islogin(struct logininfo *li, struct utmpx *utx)
1333 if (strncmp(li->username, utx->ut_user,
1334 MIN_SIZEOF(li->username, utx->ut_user)) == 0 ) {
1347 wtmpx_get_entry(struct logininfo *li)
1354 li->tv_sec = li->tv_usec = 0;
1386 if (wtmpx_islogin(li, &utx)) {
1389 li->tv_sec = utx.ut_tv.tv_sec;
1391 li->tv_sec = utx.ut_time;
1393 line_fullname(li->line, utx.ut_line, sizeof(li->line));
1395 strlcpy(li->hostname, utx.ut_host,
1396 MIN_SIZEOF(li->hostname, utx.ut_host));
1417 syslogin_perform_login(struct logininfo *li)
1422 construct_utmp(li, ut);
1430 syslogin_perform_logout(struct logininfo *li)
1435 (void)line_stripname(line, li->line, sizeof(line));
1452 syslogin_write_entry(struct logininfo *li)
1454 switch (li->type) {
1456 return (syslogin_perform_login(li));
1458 return (syslogin_perform_logout(li));
1477 lastlog_openseek(struct logininfo *li, int *fd, int filemode)
1490 LASTLOG_FILE, li->username);
1508 offset = (off_t) ((u_long)li->uid * sizeof(struct lastlog));
1524 lastlog_write_entry(struct logininfo *li)
1526 switch(li->type) {
1536 lastlog_write_entry(struct logininfo *li)
1541 switch(li->type) {
1545 line_stripname(last.ll_line, li->line, sizeof(last.ll_line));
1546 strlcpy(last.ll_host, li->hostname,
1547 MIN_SIZEOF(last.ll_host, li->hostname));
1548 last.ll_time = li->tv_sec;
1550 if (!lastlog_openseek(li, &fd, O_RDWR|O_CREAT))
1572 lastlog_get_entry(struct logininfo *li)
1576 if ((ll = getlastlogxbyname(li->username, &l)) == NULL) {
1580 line_fullname(li->line, ll->ll_line, sizeof(li->line));
1581 strlcpy(li->hostname, ll->ll_host,
1582 MIN_SIZEOF(li->hostname, ll->ll_host));
1583 li->tv_sec = ll->ll_tv.tv_sec;
1584 li->tv_usec = ll->ll_tv.tv_usec;
1589 lastlog_get_entry(struct logininfo *li)
1594 if (!lastlog_openseek(li, &fd, O_RDONLY))
1605 line_fullname(li->line, last.ll_line, sizeof(li->line));
1606 strlcpy(li->hostname, last.ll_host,
1607 MIN_SIZEOF(li->hostname, last.ll_host));
1608 li->tv_sec = last.ll_time;
1629 utmpx_get_entry(struct logininfo *li)
1635 utx = getutxuser(li->username);
1641 line_fullname(li->line, utx->ut_line,
1642 MIN_SIZEOF(li->line, utx->ut_line));
1643 strlcpy(li->hostname, utx->ut_host,
1644 MIN_SIZEOF(li->hostname, utx->ut_host));
1645 li->tv_sec = utx->ut_tv.tv_sec;
1646 li->tv_usec = utx->ut_tv.tv_usec;