Lines Matching refs:li
174 void set_utmp_time(struct logininfo *li, struct utmp *ut);
175 void construct_utmp(struct logininfo *li, struct utmp *ut);
179 void set_utmpx_time(struct logininfo *li, struct utmpx *ut);
180 void construct_utmpx(struct logininfo *li, struct utmpx *ut);
183 int utmp_write_entry(struct logininfo *li);
184 int utmpx_write_entry(struct logininfo *li);
185 int wtmp_write_entry(struct logininfo *li);
186 int wtmpx_write_entry(struct logininfo *li);
187 int lastlog_write_entry(struct logininfo *li);
188 int syslogin_write_entry(struct logininfo *li);
190 int getlast_entry(struct logininfo *li);
191 int lastlog_get_entry(struct logininfo *li);
192 int utmpx_get_entry(struct logininfo *li);
193 int wtmp_get_entry(struct logininfo *li);
194 int wtmpx_get_entry(struct logininfo *li);
216 login_login(struct logininfo *li) in login_login() argument
218 li->type = LTYPE_LOGIN; in login_login()
219 return (login_write(li)); in login_login()
233 login_logout(struct logininfo *li) in login_logout() argument
235 li->type = LTYPE_LOGOUT; in login_logout()
236 return (login_write(li)); in login_logout()
260 struct logininfo li; in login_get_lastlog_time() local
262 if (login_get_lastlog(&li, uid)) in login_get_lastlog_time()
263 return (li.tv_sec); in login_get_lastlog_time()
282 login_get_lastlog(struct logininfo *li, const uid_t uid) in login_get_lastlog() argument
286 memset(li, '\0', sizeof(*li)); in login_get_lastlog()
287 li->uid = uid; in login_get_lastlog()
299 if (strlcpy(li->username, pw->pw_name, sizeof(li->username)) >= in login_get_lastlog()
300 sizeof(li->username)) { in login_get_lastlog()
303 (unsigned long)sizeof(li->username) - 1); in login_get_lastlog()
307 if (getlast_entry(li)) in login_get_lastlog()
308 return (li); in login_get_lastlog()
337 login_free_entry(struct logininfo *li) in login_free_entry() argument
339 free(li); in login_free_entry()
352 login_init_entry(struct logininfo *li, pid_t pid, const char *username, in login_init_entry() argument
357 memset(li, 0, sizeof(*li)); in login_init_entry()
359 li->pid = pid; in login_init_entry()
363 line_fullname(li->line, line, sizeof(li->line)); in login_init_entry()
366 strlcpy(li->username, username, sizeof(li->username)); in login_init_entry()
367 pw = getpwnam(li->username); in login_init_entry()
370 li->username); in login_init_entry()
372 li->uid = pw->pw_uid; in login_init_entry()
376 strlcpy(li->hostname, hostname, sizeof(li->hostname)); in login_init_entry()
389 login_set_current_time(struct logininfo *li) in login_set_current_time() argument
395 li->tv_sec = tv.tv_sec; in login_set_current_time()
396 li->tv_usec = tv.tv_usec; in login_set_current_time()
401 login_set_addr(struct logininfo *li, const struct sockaddr *sa, in login_set_addr() argument
407 if (sizeof(li->hostaddr) < sa_size) in login_set_addr()
408 bufsize = sizeof(li->hostaddr); in login_set_addr()
410 memcpy(&li->hostaddr.sa, sa, bufsize); in login_set_addr()
419 login_write(struct logininfo *li) in login_write() argument
429 login_set_current_time(li); in login_write()
431 syslogin_write_entry(li); in login_write()
434 if (li->type == LTYPE_LOGIN) in login_write()
435 lastlog_write_entry(li); in login_write()
438 utmp_write_entry(li); in login_write()
441 wtmp_write_entry(li); in login_write()
444 utmpx_write_entry(li); in login_write()
447 wtmpx_write_entry(li); in login_write()
450 if (li->type == LTYPE_LOGIN && in login_write()
451 !sys_auth_record_login(li->username,li->hostname,li->line, in login_write()
453 logit("Writing login record failed for %s", li->username); in login_write()
456 if (li->type == LTYPE_LOGIN) in login_write()
457 audit_session_open(li); in login_write()
458 else if (li->type == LTYPE_LOGOUT) in login_write()
459 audit_session_close(li); in login_write()
466 login_utmp_only(struct logininfo *li) in login_utmp_only() argument
468 li->type = LTYPE_LOGIN; in login_utmp_only()
469 login_set_current_time(li); in login_utmp_only()
471 utmp_write_entry(li); in login_utmp_only()
474 wtmp_write_entry(li); in login_utmp_only()
477 utmpx_write_entry(li); in login_utmp_only()
480 wtmpx_write_entry(li); in login_utmp_only()
493 getlast_entry(struct logininfo *li) in getlast_entry() argument
496 return(lastlog_get_entry(li)); in getlast_entry()
500 return (utmpx_get_entry(li)); in getlast_entry()
510 return (wtmp_get_entry(li)); in getlast_entry()
514 return (wtmpx_get_entry(li)); in getlast_entry()
621 set_utmp_time(struct logininfo *li, struct utmp *ut) in set_utmp_time() argument
624 ut->ut_tv.tv_sec = li->tv_sec; in set_utmp_time()
625 ut->ut_tv.tv_usec = li->tv_usec; in set_utmp_time()
627 ut->ut_time = li->tv_sec; in set_utmp_time()
632 construct_utmp(struct logininfo *li, in construct_utmp() argument
644 line_abbrevname(ut->ut_id, li->line, sizeof(ut->ut_id)); in construct_utmp()
649 switch (li->type) { in construct_utmp()
658 set_utmp_time(li, ut); in construct_utmp()
660 line_stripname(ut->ut_line, li->line, sizeof(ut->ut_line)); in construct_utmp()
663 ut->ut_pid = li->pid; in construct_utmp()
667 if (li->type == LTYPE_LOGOUT) in construct_utmp()
676 strncpy(ut->ut_name, li->username, in construct_utmp()
677 MIN_SIZEOF(ut->ut_name, li->username)); in construct_utmp()
679 strncpy(ut->ut_host, li->hostname, in construct_utmp()
680 MIN_SIZEOF(ut->ut_host, li->hostname)); in construct_utmp()
684 if (li->hostaddr.sa.sa_family == AF_INET) in construct_utmp()
685 ut->ut_addr = li->hostaddr.sa_in.sin_addr.s_addr; in construct_utmp()
689 if (li->hostaddr.sa.sa_family == AF_INET6) { in construct_utmp()
690 sa6 = ((struct sockaddr_in6 *)&li->hostaddr.sa); in construct_utmp()
713 set_utmpx_time(struct logininfo *li, struct utmpx *utx) in set_utmpx_time() argument
716 utx->ut_tv.tv_sec = li->tv_sec; in set_utmpx_time()
717 utx->ut_tv.tv_usec = li->tv_usec; in set_utmpx_time()
719 utx->ut_time = li->tv_sec; in set_utmpx_time()
724 construct_utmpx(struct logininfo *li, struct utmpx *utx) in construct_utmpx() argument
732 line_abbrevname(utx->ut_id, li->line, sizeof(utx->ut_id)); in construct_utmpx()
736 switch (li->type) { in construct_utmpx()
744 line_stripname(utx->ut_line, li->line, sizeof(utx->ut_line)); in construct_utmpx()
745 set_utmpx_time(li, utx); in construct_utmpx()
746 utx->ut_pid = li->pid; in construct_utmpx()
749 strncpy(utx->ut_user, li->username, in construct_utmpx()
750 MIN_SIZEOF(utx->ut_user, li->username)); in construct_utmpx()
752 if (li->type == LTYPE_LOGOUT) in construct_utmpx()
761 strncpy(utx->ut_host, li->hostname, in construct_utmpx()
762 MIN_SIZEOF(utx->ut_host, li->hostname)); in construct_utmpx()
765 utx->ut_ss = li->hostaddr.sa_storage; in construct_utmpx()
769 if (li->hostaddr.sa.sa_family == AF_INET) in construct_utmpx()
770 utx->ut_addr = li->hostaddr.sa_in.sin_addr.s_addr; in construct_utmpx()
774 if (li->hostaddr.sa.sa_family == AF_INET6) { in construct_utmpx()
775 sa6 = ((struct sockaddr_in6 *)&li->hostaddr.sa); in construct_utmpx()
787 utx->ut_syslen = MINIMUM(strlen(li->hostname), sizeof(utx->ut_host)); in construct_utmpx()
809 utmp_write_library(struct logininfo *li, struct utmp *ut) in utmp_write_library() argument
825 utmp_write_direct(struct logininfo *li, struct utmp *ut) in utmp_write_direct() argument
908 utmp_perform_login(struct logininfo *li) in utmp_perform_login() argument
912 construct_utmp(li, &ut); in utmp_perform_login()
914 if (!utmp_write_library(li, &ut)) { in utmp_perform_login()
919 if (!utmp_write_direct(li, &ut)) { in utmp_perform_login()
929 utmp_perform_logout(struct logininfo *li) in utmp_perform_logout() argument
933 construct_utmp(li, &ut); in utmp_perform_logout()
935 if (!utmp_write_library(li, &ut)) { in utmp_perform_logout()
940 if (!utmp_write_direct(li, &ut)) { in utmp_perform_logout()
950 utmp_write_entry(struct logininfo *li) in utmp_write_entry() argument
952 switch(li->type) { in utmp_write_entry()
954 return (utmp_perform_login(li)); in utmp_write_entry()
957 return (utmp_perform_logout(li)); in utmp_write_entry()
984 utmpx_write_library(struct logininfo *li, struct utmpx *utx) in utmpx_write_library() argument
999 utmpx_write_direct(struct logininfo *li, struct utmpx *utx) in utmpx_write_direct() argument
1007 utmpx_perform_login(struct logininfo *li) in utmpx_perform_login() argument
1011 construct_utmpx(li, &utx); in utmpx_perform_login()
1013 if (!utmpx_write_library(li, &utx)) { in utmpx_perform_login()
1018 if (!utmpx_write_direct(li, &ut)) { in utmpx_perform_login()
1028 utmpx_perform_logout(struct logininfo *li) in utmpx_perform_logout() argument
1032 construct_utmpx(li, &utx); in utmpx_perform_logout()
1034 line_abbrevname(utx.ut_id, li->line, sizeof(utx.ut_id)); in utmpx_perform_logout()
1041 utmpx_write_library(li, &utx); in utmpx_perform_logout()
1043 utmpx_write_direct(li, &utx); in utmpx_perform_logout()
1049 utmpx_write_entry(struct logininfo *li) in utmpx_write_entry() argument
1051 switch(li->type) { in utmpx_write_entry()
1053 return (utmpx_perform_login(li)); in utmpx_write_entry()
1055 return (utmpx_perform_logout(li)); in utmpx_write_entry()
1075 wtmp_write(struct logininfo *li, struct utmp *ut) in wtmp_write() argument
1097 wtmp_perform_login(struct logininfo *li) in wtmp_perform_login() argument
1101 construct_utmp(li, &ut); in wtmp_perform_login()
1102 return (wtmp_write(li, &ut)); in wtmp_perform_login()
1107 wtmp_perform_logout(struct logininfo *li) in wtmp_perform_logout() argument
1111 construct_utmp(li, &ut); in wtmp_perform_logout()
1112 return (wtmp_write(li, &ut)); in wtmp_perform_logout()
1117 wtmp_write_entry(struct logininfo *li) in wtmp_write_entry() argument
1119 switch(li->type) { in wtmp_write_entry()
1121 return (wtmp_perform_login(li)); in wtmp_write_entry()
1123 return (wtmp_perform_logout(li)); in wtmp_write_entry()
1150 wtmp_islogin(struct logininfo *li, struct utmp *ut) in wtmp_islogin() argument
1152 if (strncmp(li->username, ut->ut_name, in wtmp_islogin()
1153 MIN_SIZEOF(li->username, ut->ut_name)) == 0) { in wtmp_islogin()
1165 wtmp_get_entry(struct logininfo *li) in wtmp_get_entry() argument
1172 li->tv_sec = li->tv_usec = 0; in wtmp_get_entry()
1200 if (wtmp_islogin(li, &ut) ) { in wtmp_get_entry()
1207 li->tv_sec = ut.ut_time; in wtmp_get_entry()
1210 li->tv_sec = ut.ut_tv.tv_sec; in wtmp_get_entry()
1213 line_fullname(li->line, ut.ut_line, in wtmp_get_entry()
1214 MIN_SIZEOF(li->line, ut.ut_line)); in wtmp_get_entry()
1216 strlcpy(li->hostname, ut.ut_host, in wtmp_get_entry()
1217 MIN_SIZEOF(li->hostname, ut.ut_host)); in wtmp_get_entry()
1246 wtmpx_write(struct logininfo *li, struct utmpx *utx) in wtmpx_write() argument
1276 wtmpx_perform_login(struct logininfo *li) in wtmpx_perform_login() argument
1280 construct_utmpx(li, &utx); in wtmpx_perform_login()
1281 return (wtmpx_write(li, &utx)); in wtmpx_perform_login()
1286 wtmpx_perform_logout(struct logininfo *li) in wtmpx_perform_logout() argument
1290 construct_utmpx(li, &utx); in wtmpx_perform_logout()
1291 return (wtmpx_write(li, &utx)); in wtmpx_perform_logout()
1296 wtmpx_write_entry(struct logininfo *li) in wtmpx_write_entry() argument
1298 switch(li->type) { in wtmpx_write_entry()
1300 return (wtmpx_perform_login(li)); in wtmpx_write_entry()
1302 return (wtmpx_perform_logout(li)); in wtmpx_write_entry()
1314 wtmpx_islogin(struct logininfo *li, struct utmpx *utx) in wtmpx_islogin() argument
1316 if (strncmp(li->username, utx->ut_user, in wtmpx_islogin()
1317 MIN_SIZEOF(li->username, utx->ut_user)) == 0 ) { in wtmpx_islogin()
1330 wtmpx_get_entry(struct logininfo *li) in wtmpx_get_entry() argument
1337 li->tv_sec = li->tv_usec = 0; in wtmpx_get_entry()
1369 if (wtmpx_islogin(li, &utx)) { in wtmpx_get_entry()
1372 li->tv_sec = utx.ut_tv.tv_sec; in wtmpx_get_entry()
1374 li->tv_sec = utx.ut_time; in wtmpx_get_entry()
1376 line_fullname(li->line, utx.ut_line, sizeof(li->line)); in wtmpx_get_entry()
1378 strlcpy(li->hostname, utx.ut_host, in wtmpx_get_entry()
1379 MIN_SIZEOF(li->hostname, utx.ut_host)); in wtmpx_get_entry()
1400 syslogin_perform_login(struct logininfo *li) in syslogin_perform_login() argument
1405 construct_utmp(li, ut); in syslogin_perform_login()
1413 syslogin_perform_logout(struct logininfo *li) in syslogin_perform_logout() argument
1418 (void)line_stripname(line, li->line, sizeof(line)); in syslogin_perform_logout()
1435 syslogin_write_entry(struct logininfo *li) in syslogin_write_entry() argument
1437 switch (li->type) { in syslogin_write_entry()
1439 return (syslogin_perform_login(li)); in syslogin_write_entry()
1441 return (syslogin_perform_logout(li)); in syslogin_write_entry()
1460 lastlog_openseek(struct logininfo *li, int *fd, int filemode) in lastlog_openseek() argument
1473 LASTLOG_FILE, li->username); in lastlog_openseek()
1491 offset = (off_t) ((u_long)li->uid * sizeof(struct lastlog)); in lastlog_openseek()
1507 lastlog_write_entry(struct logininfo *li) in lastlog_write_entry() argument
1509 switch(li->type) { in lastlog_write_entry()
1519 lastlog_write_entry(struct logininfo *li) in lastlog_write_entry() argument
1524 switch(li->type) { in lastlog_write_entry()
1528 line_stripname(last.ll_line, li->line, sizeof(last.ll_line)); in lastlog_write_entry()
1529 strlcpy(last.ll_host, li->hostname, in lastlog_write_entry()
1530 MIN_SIZEOF(last.ll_host, li->hostname)); in lastlog_write_entry()
1531 last.ll_time = li->tv_sec; in lastlog_write_entry()
1533 if (!lastlog_openseek(li, &fd, O_RDWR|O_CREAT)) in lastlog_write_entry()
1555 lastlog_get_entry(struct logininfo *li) in lastlog_get_entry() argument
1559 if ((ll = getlastlogxbyname(li->username, &l)) == NULL) { in lastlog_get_entry()
1563 line_fullname(li->line, ll->ll_line, sizeof(li->line)); in lastlog_get_entry()
1564 strlcpy(li->hostname, ll->ll_host, in lastlog_get_entry()
1565 MIN_SIZEOF(li->hostname, ll->ll_host)); in lastlog_get_entry()
1566 li->tv_sec = ll->ll_tv.tv_sec; in lastlog_get_entry()
1567 li->tv_usec = ll->ll_tv.tv_usec; in lastlog_get_entry()
1572 lastlog_get_entry(struct logininfo *li) in lastlog_get_entry() argument
1577 if (!lastlog_openseek(li, &fd, O_RDONLY)) in lastlog_get_entry()
1588 line_fullname(li->line, last.ll_line, sizeof(li->line)); in lastlog_get_entry()
1589 strlcpy(li->hostname, last.ll_host, in lastlog_get_entry()
1590 MIN_SIZEOF(li->hostname, last.ll_host)); in lastlog_get_entry()
1591 li->tv_sec = last.ll_time; in lastlog_get_entry()
1612 utmpx_get_entry(struct logininfo *li) in utmpx_get_entry() argument
1618 utx = getutxuser(li->username); in utmpx_get_entry()
1624 line_fullname(li->line, utx->ut_line, in utmpx_get_entry()
1625 MIN_SIZEOF(li->line, utx->ut_line)); in utmpx_get_entry()
1626 strlcpy(li->hostname, utx->ut_host, in utmpx_get_entry()
1627 MIN_SIZEOF(li->hostname, utx->ut_host)); in utmpx_get_entry()
1628 li->tv_sec = utx->ut_tv.tv_sec; in utmpx_get_entry()
1629 li->tv_usec = utx->ut_tv.tv_usec; in utmpx_get_entry()
1648 struct logininfo li; in record_failed_login() local
1649 socklen_t fromlen = sizeof(li.hostaddr); in record_failed_login()
1672 memset(&li, 0, sizeof(li)); in record_failed_login()
1673 li.type = LTYPE_LOGIN; in record_failed_login()
1674 li.pid = getpid(); in record_failed_login()
1675 strlcpy(li.line, "ssh:notty", sizeof(li.line)); in record_failed_login()
1676 strlcpy(li.username, username, sizeof(li.username)); in record_failed_login()
1677 strlcpy(li.hostname, hostname, sizeof(li.hostname)); in record_failed_login()
1679 li.tv_sec = t > 0 ? (unsigned long)t : 0; in record_failed_login()
1682 &li.hostaddr.sa, &fromlen); in record_failed_login()
1684 construct_utmp(&li, &ut); in record_failed_login()