Lines Matching full:li
178 void set_utmp_time(struct logininfo *li, struct utmp *ut);
179 void construct_utmp(struct logininfo *li, struct utmp *ut);
183 void set_utmpx_time(struct logininfo *li, struct utmpx *ut);
184 void construct_utmpx(struct logininfo *li, struct utmpx *ut);
187 int utmp_write_entry(struct logininfo *li);
188 int utmpx_write_entry(struct logininfo *li);
189 int wtmp_write_entry(struct logininfo *li);
190 int wtmpx_write_entry(struct logininfo *li);
191 int lastlog_write_entry(struct logininfo *li);
192 int syslogin_write_entry(struct logininfo *li);
194 int wtmpdb_write_entry(struct logininfo *li);
197 int getlast_entry(struct logininfo *li);
198 int lastlog_get_entry(struct logininfo *li);
199 int utmpx_get_entry(struct logininfo *li);
200 int wtmp_get_entry(struct logininfo *li);
201 int wtmpx_get_entry(struct logininfo *li);
223 login_login(struct logininfo *li) in login_login() argument
225 li->type = LTYPE_LOGIN; in login_login()
226 return (login_write(li)); in login_login()
240 login_logout(struct logininfo *li) in login_logout() argument
242 li->type = LTYPE_LOGOUT; in login_logout()
243 return (login_write(li)); in login_logout()
267 struct logininfo li; in login_get_lastlog_time() local
269 if (login_get_lastlog(&li, uid)) in login_get_lastlog_time()
270 return (li.tv_sec); in login_get_lastlog_time()
289 login_get_lastlog(struct logininfo *li, const uid_t uid) in login_get_lastlog() argument
293 memset(li, '\0', sizeof(*li)); in login_get_lastlog()
294 li->uid = uid; in login_get_lastlog()
306 if (strlcpy(li->username, pw->pw_name, sizeof(li->username)) >= in login_get_lastlog()
307 sizeof(li->username)) { in login_get_lastlog()
310 (unsigned long)sizeof(li->username) - 1); in login_get_lastlog()
314 if (getlast_entry(li)) in login_get_lastlog()
315 return (li); in login_get_lastlog()
344 login_free_entry(struct logininfo *li) in login_free_entry() argument
346 free(li); in login_free_entry()
359 login_init_entry(struct logininfo *li, pid_t pid, const char *username, in login_init_entry() argument
364 memset(li, 0, sizeof(*li)); in login_init_entry()
366 li->pid = pid; in login_init_entry()
370 line_fullname(li->line, line, sizeof(li->line)); in login_init_entry()
373 strlcpy(li->username, username, sizeof(li->username)); in login_init_entry()
374 pw = getpwnam(li->username); in login_init_entry()
377 li->username); in login_init_entry()
379 li->uid = pw->pw_uid; in login_init_entry()
383 strlcpy(li->hostname, hostname, sizeof(li->hostname)); in login_init_entry()
396 login_set_current_time(struct logininfo *li) in login_set_current_time() argument
402 li->tv_sec = tv.tv_sec; in login_set_current_time()
403 li->tv_usec = tv.tv_usec; in login_set_current_time()
408 login_set_addr(struct logininfo *li, const struct sockaddr *sa, in login_set_addr() argument
414 if (sizeof(li->hostaddr) < sa_size) in login_set_addr()
415 bufsize = sizeof(li->hostaddr); in login_set_addr()
417 memcpy(&li->hostaddr.sa, sa, bufsize); in login_set_addr()
426 login_write(struct logininfo *li) in login_write() argument
436 login_set_current_time(li); in login_write()
438 syslogin_write_entry(li); in login_write()
441 if (li->type == LTYPE_LOGIN) in login_write()
442 lastlog_write_entry(li); in login_write()
445 utmp_write_entry(li); in login_write()
448 wtmp_write_entry(li); in login_write()
451 utmpx_write_entry(li); in login_write()
454 wtmpx_write_entry(li); in login_write()
457 wtmpdb_write_entry(li); in login_write()
460 if (li->type == LTYPE_LOGIN && in login_write()
461 !sys_auth_record_login(li->username,li->hostname,li->line, in login_write()
463 logit("Writing login record failed for %s", li->username); in login_write()
466 if (li->type == LTYPE_LOGIN) in login_write()
467 audit_session_open(li); in login_write()
468 else if (li->type == LTYPE_LOGOUT) in login_write()
469 audit_session_close(li); in login_write()
476 login_utmp_only(struct logininfo *li) in login_utmp_only() argument
478 li->type = LTYPE_LOGIN; in login_utmp_only()
479 login_set_current_time(li); in login_utmp_only()
481 utmp_write_entry(li); in login_utmp_only()
484 wtmp_write_entry(li); in login_utmp_only()
487 utmpx_write_entry(li); in login_utmp_only()
490 wtmpx_write_entry(li); in login_utmp_only()
501 /* take the uid in li and return the last login time */
503 getlast_entry(struct logininfo *li) in getlast_entry() argument
506 return(lastlog_get_entry(li)); in getlast_entry()
510 return (utmpx_get_entry(li)); in getlast_entry()
520 return (wtmp_get_entry(li)); in getlast_entry()
524 return (wtmpx_get_entry(li)); in getlast_entry()
631 set_utmp_time(struct logininfo *li, struct utmp *ut) in set_utmp_time() argument
634 ut->ut_tv.tv_sec = li->tv_sec; in set_utmp_time()
635 ut->ut_tv.tv_usec = li->tv_usec; in set_utmp_time()
637 ut->ut_time = li->tv_sec; in set_utmp_time()
642 construct_utmp(struct logininfo *li, in construct_utmp() argument
654 line_abbrevname(ut->ut_id, li->line, sizeof(ut->ut_id)); in construct_utmp()
659 switch (li->type) { in construct_utmp()
668 set_utmp_time(li, ut); in construct_utmp()
670 line_stripname(ut->ut_line, li->line, sizeof(ut->ut_line)); in construct_utmp()
673 ut->ut_pid = li->pid; in construct_utmp()
677 if (li->type == LTYPE_LOGOUT) in construct_utmp()
686 strncpy(ut->ut_name, li->username, in construct_utmp()
687 MIN_SIZEOF(ut->ut_name, li->username)); in construct_utmp()
689 strncpy(ut->ut_host, li->hostname, in construct_utmp()
690 MIN_SIZEOF(ut->ut_host, li->hostname)); in construct_utmp()
694 if (li->hostaddr.sa.sa_family == AF_INET) in construct_utmp()
695 ut->ut_addr = li->hostaddr.sa_in.sin_addr.s_addr; in construct_utmp()
699 if (li->hostaddr.sa.sa_family == AF_INET6) { in construct_utmp()
700 sa6 = ((struct sockaddr_in6 *)&li->hostaddr.sa); in construct_utmp()
723 set_utmpx_time(struct logininfo *li, struct utmpx *utx) in set_utmpx_time() argument
726 utx->ut_tv.tv_sec = li->tv_sec; in set_utmpx_time()
727 utx->ut_tv.tv_usec = li->tv_usec; in set_utmpx_time()
729 utx->ut_time = li->tv_sec; in set_utmpx_time()
734 construct_utmpx(struct logininfo *li, struct utmpx *utx) in construct_utmpx() argument
742 line_abbrevname(utx->ut_id, li->line, sizeof(utx->ut_id)); in construct_utmpx()
746 switch (li->type) { in construct_utmpx()
754 line_stripname(utx->ut_line, li->line, sizeof(utx->ut_line)); in construct_utmpx()
755 set_utmpx_time(li, utx); in construct_utmpx()
756 utx->ut_pid = li->pid; in construct_utmpx()
759 strncpy(utx->ut_user, li->username, in construct_utmpx()
760 MIN_SIZEOF(utx->ut_user, li->username)); in construct_utmpx()
762 if (li->type == LTYPE_LOGOUT) in construct_utmpx()
771 strncpy(utx->ut_host, li->hostname, in construct_utmpx()
772 MIN_SIZEOF(utx->ut_host, li->hostname)); in construct_utmpx()
775 utx->ut_ss = li->hostaddr.sa_storage; in construct_utmpx()
779 if (li->hostaddr.sa.sa_family == AF_INET) in construct_utmpx()
780 utx->ut_addr = li->hostaddr.sa_in.sin_addr.s_addr; in construct_utmpx()
784 if (li->hostaddr.sa.sa_family == AF_INET6) { in construct_utmpx()
785 sa6 = ((struct sockaddr_in6 *)&li->hostaddr.sa); in construct_utmpx()
797 utx->ut_syslen = MINIMUM(strlen(li->hostname), sizeof(utx->ut_host)); in construct_utmpx()
819 utmp_write_library(struct logininfo *li, struct utmp *ut) in utmp_write_library() argument
835 utmp_write_direct(struct logininfo *li, struct utmp *ut) in utmp_write_direct() argument
918 utmp_perform_login(struct logininfo *li) in utmp_perform_login() argument
922 construct_utmp(li, &ut); in utmp_perform_login()
924 if (!utmp_write_library(li, &ut)) { in utmp_perform_login()
929 if (!utmp_write_direct(li, &ut)) { in utmp_perform_login()
939 utmp_perform_logout(struct logininfo *li) in utmp_perform_logout() argument
943 construct_utmp(li, &ut); in utmp_perform_logout()
945 if (!utmp_write_library(li, &ut)) { in utmp_perform_logout()
950 if (!utmp_write_direct(li, &ut)) { in utmp_perform_logout()
960 utmp_write_entry(struct logininfo *li) in utmp_write_entry() argument
962 switch(li->type) { in utmp_write_entry()
964 return (utmp_perform_login(li)); in utmp_write_entry()
967 return (utmp_perform_logout(li)); in utmp_write_entry()
994 utmpx_write_library(struct logininfo *li, struct utmpx *utx) in utmpx_write_library() argument
1009 utmpx_write_direct(struct logininfo *li, struct utmpx *utx) in utmpx_write_direct() argument
1017 utmpx_perform_login(struct logininfo *li) in utmpx_perform_login() argument
1021 construct_utmpx(li, &utx); in utmpx_perform_login()
1023 if (!utmpx_write_library(li, &utx)) { in utmpx_perform_login()
1028 if (!utmpx_write_direct(li, &utx)) { in utmpx_perform_login()
1038 utmpx_perform_logout(struct logininfo *li) in utmpx_perform_logout() argument
1042 construct_utmpx(li, &utx); in utmpx_perform_logout()
1044 line_abbrevname(utx.ut_id, li->line, sizeof(utx.ut_id)); in utmpx_perform_logout()
1051 utmpx_write_library(li, &utx); in utmpx_perform_logout()
1053 utmpx_write_direct(li, &utx); in utmpx_perform_logout()
1059 utmpx_write_entry(struct logininfo *li) in utmpx_write_entry() argument
1061 switch(li->type) { in utmpx_write_entry()
1063 return (utmpx_perform_login(li)); in utmpx_write_entry()
1065 return (utmpx_perform_logout(li)); in utmpx_write_entry()
1085 wtmp_write(struct logininfo *li, struct utmp *ut) in wtmp_write() argument
1107 wtmp_perform_login(struct logininfo *li) in wtmp_perform_login() argument
1111 construct_utmp(li, &ut); in wtmp_perform_login()
1112 return (wtmp_write(li, &ut)); in wtmp_perform_login()
1117 wtmp_perform_logout(struct logininfo *li) in wtmp_perform_logout() argument
1121 construct_utmp(li, &ut); in wtmp_perform_logout()
1122 return (wtmp_write(li, &ut)); in wtmp_perform_logout()
1127 wtmp_write_entry(struct logininfo *li) in wtmp_write_entry() argument
1129 switch(li->type) { in wtmp_write_entry()
1131 return (wtmp_perform_login(li)); in wtmp_write_entry()
1133 return (wtmp_perform_logout(li)); in wtmp_write_entry()
1160 wtmp_islogin(struct logininfo *li, struct utmp *ut) in wtmp_islogin() argument
1162 if (strncmp(li->username, ut->ut_name, in wtmp_islogin()
1163 MIN_SIZEOF(li->username, ut->ut_name)) == 0) { in wtmp_islogin()
1175 wtmp_get_entry(struct logininfo *li) in wtmp_get_entry() argument
1182 li->tv_sec = li->tv_usec = 0; in wtmp_get_entry()
1210 if (wtmp_islogin(li, &ut) ) { in wtmp_get_entry()
1217 li->tv_sec = ut.ut_time; in wtmp_get_entry()
1220 li->tv_sec = ut.ut_tv.tv_sec; in wtmp_get_entry()
1223 line_fullname(li->line, ut.ut_line, in wtmp_get_entry()
1224 MIN_SIZEOF(li->line, ut.ut_line)); in wtmp_get_entry()
1226 strlcpy(li->hostname, ut.ut_host, in wtmp_get_entry()
1227 MIN_SIZEOF(li->hostname, ut.ut_host)); in wtmp_get_entry()
1256 wtmpx_write(struct logininfo *li, struct utmpx *utx) in wtmpx_write() argument
1286 wtmpx_perform_login(struct logininfo *li) in wtmpx_perform_login() argument
1290 construct_utmpx(li, &utx); in wtmpx_perform_login()
1291 return (wtmpx_write(li, &utx)); in wtmpx_perform_login()
1296 wtmpx_perform_logout(struct logininfo *li) in wtmpx_perform_logout() argument
1300 construct_utmpx(li, &utx); in wtmpx_perform_logout()
1301 return (wtmpx_write(li, &utx)); in wtmpx_perform_logout()
1306 wtmpx_write_entry(struct logininfo *li) in wtmpx_write_entry() argument
1308 switch(li->type) { in wtmpx_write_entry()
1310 return (wtmpx_perform_login(li)); in wtmpx_write_entry()
1312 return (wtmpx_perform_logout(li)); in wtmpx_write_entry()
1324 wtmpx_islogin(struct logininfo *li, struct utmpx *utx) in wtmpx_islogin() argument
1326 if (strncmp(li->username, utx->ut_user, in wtmpx_islogin()
1327 MIN_SIZEOF(li->username, utx->ut_user)) == 0 ) { in wtmpx_islogin()
1340 wtmpx_get_entry(struct logininfo *li) in wtmpx_get_entry() argument
1347 li->tv_sec = li->tv_usec = 0; in wtmpx_get_entry()
1379 if (wtmpx_islogin(li, &utx)) { in wtmpx_get_entry()
1382 li->tv_sec = utx.ut_tv.tv_sec; in wtmpx_get_entry()
1384 li->tv_sec = utx.ut_time; in wtmpx_get_entry()
1386 line_fullname(li->line, utx.ut_line, sizeof(li->line)); in wtmpx_get_entry()
1388 strlcpy(li->hostname, utx.ut_host, in wtmpx_get_entry()
1389 MIN_SIZEOF(li->hostname, utx.ut_host)); in wtmpx_get_entry()
1406 wtmpdb_perform_login(struct logininfo *li) in wtmpdb_perform_login() argument
1408 uint64_t login_time = li->tv_sec * ((uint64_t) 1000000ULL) + in wtmpdb_perform_login()
1409 li->tv_usec; in wtmpdb_perform_login()
1412 if (strncmp(li->line, "/dev/", 5) == 0) in wtmpdb_perform_login()
1413 tty = &(li->line[5]); in wtmpdb_perform_login()
1415 tty = li->line; in wtmpdb_perform_login()
1417 li->wtmpdb_id = wtmpdb_login(NULL, USER_PROCESS, li->username, in wtmpdb_perform_login()
1418 login_time, tty, li->hostname, 0, 0); in wtmpdb_perform_login()
1420 if (li->wtmpdb_id < 0) in wtmpdb_perform_login()
1427 wtmpdb_perform_logout(struct logininfo *li) in wtmpdb_perform_logout() argument
1429 uint64_t logout_time = li->tv_sec * ((uint64_t) 1000000ULL) + in wtmpdb_perform_logout()
1430 li->tv_usec; in wtmpdb_perform_logout()
1432 if (li->wtmpdb_id == 0) { in wtmpdb_perform_logout()
1435 if (strncmp(li->line, "/dev/", 5) == 0) in wtmpdb_perform_logout()
1436 tty = &(li->line[5]); in wtmpdb_perform_logout()
1438 tty = li->line; in wtmpdb_perform_logout()
1440 li->wtmpdb_id = wtmpdb_get_id(NULL, tty, NULL); in wtmpdb_perform_logout()
1442 wtmpdb_logout(NULL, li->wtmpdb_id, logout_time, NULL); in wtmpdb_perform_logout()
1448 wtmpdb_write_entry(struct logininfo *li) in wtmpdb_write_entry() argument
1450 switch(li->type) { in wtmpdb_write_entry()
1452 return (wtmpdb_perform_login(li)); in wtmpdb_write_entry()
1454 return (wtmpdb_perform_logout(li)); in wtmpdb_write_entry()
1468 syslogin_perform_login(struct logininfo *li) in syslogin_perform_login() argument
1473 construct_utmp(li, ut); in syslogin_perform_login()
1481 syslogin_perform_logout(struct logininfo *li) in syslogin_perform_logout() argument
1486 (void)line_stripname(line, li->line, sizeof(line)); in syslogin_perform_logout()
1503 syslogin_write_entry(struct logininfo *li) in syslogin_write_entry() argument
1505 switch (li->type) { in syslogin_write_entry()
1507 return (syslogin_perform_login(li)); in syslogin_write_entry()
1509 return (syslogin_perform_logout(li)); in syslogin_write_entry()
1528 lastlog_openseek(struct logininfo *li, int *fd, int filemode) in lastlog_openseek() argument
1541 LASTLOG_FILE, li->username); in lastlog_openseek()
1559 offset = (off_t) ((u_long)li->uid * sizeof(struct lastlog)); in lastlog_openseek()
1575 lastlog_write_entry(struct logininfo *li) in lastlog_write_entry() argument
1577 switch(li->type) { in lastlog_write_entry()
1587 lastlog_write_entry(struct logininfo *li) in lastlog_write_entry() argument
1592 switch(li->type) { in lastlog_write_entry()
1596 line_stripname(last.ll_line, li->line, sizeof(last.ll_line)); in lastlog_write_entry()
1597 strlcpy(last.ll_host, li->hostname, in lastlog_write_entry()
1598 MIN_SIZEOF(last.ll_host, li->hostname)); in lastlog_write_entry()
1599 last.ll_time = li->tv_sec; in lastlog_write_entry()
1601 if (!lastlog_openseek(li, &fd, O_RDWR|O_CREAT)) in lastlog_write_entry()
1623 lastlog_get_entry(struct logininfo *li) in lastlog_get_entry() argument
1627 if ((ll = getlastlogxbyname(li->username, &l)) == NULL) { in lastlog_get_entry()
1631 line_fullname(li->line, ll->ll_line, sizeof(li->line)); in lastlog_get_entry()
1632 strlcpy(li->hostname, ll->ll_host, in lastlog_get_entry()
1633 MIN_SIZEOF(li->hostname, ll->ll_host)); in lastlog_get_entry()
1634 li->tv_sec = ll->ll_tv.tv_sec; in lastlog_get_entry()
1635 li->tv_usec = ll->ll_tv.tv_usec; in lastlog_get_entry()
1640 lastlog_get_entry(struct logininfo *li) in lastlog_get_entry() argument
1645 if (!lastlog_openseek(li, &fd, O_RDONLY)) in lastlog_get_entry()
1656 line_fullname(li->line, last.ll_line, sizeof(li->line)); in lastlog_get_entry()
1657 strlcpy(li->hostname, last.ll_host, in lastlog_get_entry()
1658 MIN_SIZEOF(li->hostname, last.ll_host)); in lastlog_get_entry()
1659 li->tv_sec = last.ll_time; in lastlog_get_entry()
1680 utmpx_get_entry(struct logininfo *li) in utmpx_get_entry() argument
1686 utx = getutxuser(li->username); in utmpx_get_entry()
1692 line_fullname(li->line, utx->ut_line, in utmpx_get_entry()
1693 MIN_SIZEOF(li->line, utx->ut_line)); in utmpx_get_entry()
1694 strlcpy(li->hostname, utx->ut_host, in utmpx_get_entry()
1695 MIN_SIZEOF(li->hostname, utx->ut_host)); in utmpx_get_entry()
1696 li->tv_sec = utx->ut_tv.tv_sec; in utmpx_get_entry()
1697 li->tv_usec = utx->ut_tv.tv_usec; in utmpx_get_entry()
1716 struct logininfo li; in record_failed_login() local
1717 socklen_t fromlen = sizeof(li.hostaddr); in record_failed_login()
1740 memset(&li, 0, sizeof(li)); in record_failed_login()
1741 li.type = LTYPE_LOGIN; in record_failed_login()
1742 li.pid = getpid(); in record_failed_login()
1743 strlcpy(li.line, "ssh:notty", sizeof(li.line)); in record_failed_login()
1744 strlcpy(li.username, username, sizeof(li.username)); in record_failed_login()
1745 strlcpy(li.hostname, hostname, sizeof(li.hostname)); in record_failed_login()
1747 li.tv_sec = t > 0 ? (unsigned long)t : 0; in record_failed_login()
1750 &li.hostaddr.sa, &fromlen); in record_failed_login()
1752 construct_utmp(&li, &ut); in record_failed_login()