Lines Matching defs:li

188 void set_utmp_time(struct logininfo *li, struct utmp *ut);
189 void construct_utmp(struct logininfo *li, struct utmp *ut);
193 void set_utmpx_time(struct logininfo *li, struct utmpx *ut);
194 void construct_utmpx(struct logininfo *li, struct utmpx *ut);
197 int utmp_write_entry(struct logininfo *li);
198 int utmpx_write_entry(struct logininfo *li);
199 int wtmp_write_entry(struct logininfo *li);
200 int wtmpx_write_entry(struct logininfo *li);
201 int lastlog_write_entry(struct logininfo *li);
202 int syslogin_write_entry(struct logininfo *li);
204 int getlast_entry(struct logininfo *li);
205 int lastlog_get_entry(struct logininfo *li);
206 int utmpx_get_entry(struct logininfo *li);
207 int wtmp_get_entry(struct logininfo *li);
208 int wtmpx_get_entry(struct logininfo *li);
230 login_login(struct logininfo *li)
232 li->type = LTYPE_LOGIN;
233 return (login_write(li));
247 login_logout(struct logininfo *li)
249 li->type = LTYPE_LOGOUT;
250 return (login_write(li));
274 struct logininfo li;
276 if (login_get_lastlog(&li, uid))
277 return (li.tv_sec);
296 login_get_lastlog(struct logininfo *li, const uid_t uid)
300 memset(li, '\0', sizeof(*li));
301 li->uid = uid;
315 strlcpy(li->username, pw->pw_name, sizeof(li->username));
317 if (getlast_entry(li))
318 return (li);
348 login_free_entry(struct logininfo *li)
350 free(li);
363 login_init_entry(struct logininfo *li, pid_t pid, const char *username,
368 memset(li, 0, sizeof(*li));
370 li->pid = pid;
374 line_fullname(li->line, line, sizeof(li->line));
377 strlcpy(li->username, username, sizeof(li->username));
378 pw = getpwnam(li->username);
381 li->username);
383 li->uid = pw->pw_uid;
387 strlcpy(li->hostname, hostname, sizeof(li->hostname));
400 login_set_current_time(struct logininfo *li)
406 li->tv_sec = tv.tv_sec;
407 li->tv_usec = tv.tv_usec;
412 login_set_addr(struct logininfo *li, const struct sockaddr *sa,
418 if (sizeof(li->hostaddr) < sa_size)
419 bufsize = sizeof(li->hostaddr);
421 memcpy(&li->hostaddr.sa, sa, bufsize);
430 login_write(struct logininfo *li)
440 login_set_current_time(li);
442 syslogin_write_entry(li);
445 if (li->type == LTYPE_LOGIN)
446 lastlog_write_entry(li);
449 utmp_write_entry(li);
452 wtmp_write_entry(li);
455 utmpx_write_entry(li);
458 wtmpx_write_entry(li);
461 if (li->type == LTYPE_LOGIN &&
462 !sys_auth_record_login(li->username,li->hostname,li->line,
464 logit("Writing login record failed for %s", li->username);
467 if (li->type == LTYPE_LOGIN)
468 audit_session_open(li);
469 else if (li->type == LTYPE_LOGOUT)
470 audit_session_close(li);
477 login_utmp_only(struct logininfo *li)
479 li->type = LTYPE_LOGIN;
480 login_set_current_time(li);
482 utmp_write_entry(li);
485 wtmp_write_entry(li);
488 utmpx_write_entry(li);
491 wtmpx_write_entry(li);
502 /* take the uid in li and return the last login time */
504 getlast_entry(struct logininfo *li)
507 return(lastlog_get_entry(li));
511 return (utmpx_get_entry(li));
521 return (wtmp_get_entry(li));
525 return (wtmpx_get_entry(li));
629 set_utmp_time(struct logininfo *li, struct utmp *ut)
632 ut->ut_tv.tv_sec = li->tv_sec;
633 ut->ut_tv.tv_usec = li->tv_usec;
635 ut->ut_time = li->tv_sec;
640 construct_utmp(struct logininfo *li,
652 line_abbrevname(ut->ut_id, li->line, sizeof(ut->ut_id));
657 switch (li->type) {
667 cray_retain_utmp(ut, li->pid);
672 set_utmp_time(li, ut);
674 line_stripname(ut->ut_line, li->line, sizeof(ut->ut_line));
677 ut->ut_pid = li->pid;
681 if (li->type == LTYPE_LOGOUT)
690 strncpy(ut->ut_name, li->username,
691 MIN_SIZEOF(ut->ut_name, li->username));
693 strncpy(ut->ut_host, li->hostname,
694 MIN_SIZEOF(ut->ut_host, li->hostname));
698 if (li->hostaddr.sa.sa_family == AF_INET)
699 ut->ut_addr = li->hostaddr.sa_in.sin_addr.s_addr;
703 if (li->hostaddr.sa.sa_family == AF_INET6) {
704 sa6 = ((struct sockaddr_in6 *)&li->hostaddr.sa);
727 set_utmpx_time(struct logininfo *li, struct utmpx *utx)
730 utx->ut_tv.tv_sec = li->tv_sec;
731 utx->ut_tv.tv_usec = li->tv_usec;
733 utx->ut_time = li->tv_sec;
738 construct_utmpx(struct logininfo *li, struct utmpx *utx)
746 line_abbrevname(utx->ut_id, li->line, sizeof(utx->ut_id));
750 switch (li->type) {
758 line_stripname(utx->ut_line, li->line, sizeof(utx->ut_line));
759 set_utmpx_time(li, utx);
760 utx->ut_pid = li->pid;
763 strncpy(utx->ut_user, li->username,
764 MIN_SIZEOF(utx->ut_user, li->username));
766 if (li->type == LTYPE_LOGOUT)
775 strncpy(utx->ut_host, li->hostname,
776 MIN_SIZEOF(utx->ut_host, li->hostname));
780 if (li->hostaddr.sa.sa_family == AF_INET)
781 utx->ut_addr = li->hostaddr.sa_in.sin_addr.s_addr;
785 if (li->hostaddr.sa.sa_family == AF_INET6) {
786 sa6 = ((struct sockaddr_in6 *)&li->hostaddr.sa);
798 utx->ut_syslen = MIN(strlen(li->hostname), sizeof(utx->ut_host));
820 utmp_write_library(struct logininfo *li, struct utmp *ut)
836 utmp_write_direct(struct logininfo *li, struct utmp *ut)
919 utmp_perform_login(struct logininfo *li)
923 construct_utmp(li, &ut);
925 if (!utmp_write_library(li, &ut)) {
930 if (!utmp_write_direct(li, &ut)) {
940 utmp_perform_logout(struct logininfo *li)
944 construct_utmp(li, &ut);
946 if (!utmp_write_library(li, &ut)) {
951 if (!utmp_write_direct(li, &ut)) {
961 utmp_write_entry(struct logininfo *li)
963 switch(li->type) {
965 return (utmp_perform_login(li));
968 return (utmp_perform_logout(li));
995 utmpx_write_library(struct logininfo *li, struct utmpx *utx)
1010 utmpx_write_direct(struct logininfo *li, struct utmpx *utx)
1018 utmpx_perform_login(struct logininfo *li)
1022 construct_utmpx(li, &utx);
1024 if (!utmpx_write_library(li, &utx)) {
1029 if (!utmpx_write_direct(li, &ut)) {
1039 utmpx_perform_logout(struct logininfo *li)
1043 construct_utmpx(li, &utx);
1045 line_abbrevname(utx.ut_id, li->line, sizeof(utx.ut_id));
1052 utmpx_write_library(li, &utx);
1054 utmpx_write_direct(li, &utx);
1060 utmpx_write_entry(struct logininfo *li)
1062 switch(li->type) {
1064 return (utmpx_perform_login(li));
1066 return (utmpx_perform_logout(li));
1086 wtmp_write(struct logininfo *li, struct utmp *ut)
1108 wtmp_perform_login(struct logininfo *li)
1112 construct_utmp(li, &ut);
1113 return (wtmp_write(li, &ut));
1118 wtmp_perform_logout(struct logininfo *li)
1122 construct_utmp(li, &ut);
1123 return (wtmp_write(li, &ut));
1128 wtmp_write_entry(struct logininfo *li)
1130 switch(li->type) {
1132 return (wtmp_perform_login(li));
1134 return (wtmp_perform_logout(li));
1161 wtmp_islogin(struct logininfo *li, struct utmp *ut)
1163 if (strncmp(li->username, ut->ut_name,
1164 MIN_SIZEOF(li->username, ut->ut_name)) == 0) {
1176 wtmp_get_entry(struct logininfo *li)
1183 li->tv_sec = li->tv_usec = 0;
1211 if (wtmp_islogin(li, &ut) ) {
1218 li->tv_sec = ut.ut_time;
1221 li->tv_sec = ut.ut_tv.tv_sec;
1224 line_fullname(li->line, ut.ut_line,
1225 MIN_SIZEOF(li->line, ut.ut_line));
1227 strlcpy(li->hostname, ut.ut_host,
1228 MIN_SIZEOF(li->hostname, ut.ut_host));
1257 wtmpx_write(struct logininfo *li, struct utmpx *utx)
1287 wtmpx_perform_login(struct logininfo *li)
1291 construct_utmpx(li, &utx);
1292 return (wtmpx_write(li, &utx));
1297 wtmpx_perform_logout(struct logininfo *li)
1301 construct_utmpx(li, &utx);
1302 return (wtmpx_write(li, &utx));
1307 wtmpx_write_entry(struct logininfo *li)
1309 switch(li->type) {
1311 return (wtmpx_perform_login(li));
1313 return (wtmpx_perform_logout(li));
1325 wtmpx_islogin(struct logininfo *li, struct utmpx *utx)
1327 if (strncmp(li->username, utx->ut_user,
1328 MIN_SIZEOF(li->username, utx->ut_user)) == 0 ) {
1341 wtmpx_get_entry(struct logininfo *li)
1348 li->tv_sec = li->tv_usec = 0;
1380 if (wtmpx_islogin(li, &utx)) {
1383 li->tv_sec = utx.ut_tv.tv_sec;
1385 li->tv_sec = utx.ut_time;
1387 line_fullname(li->line, utx.ut_line, sizeof(li->line));
1389 strlcpy(li->hostname, utx.ut_host,
1390 MIN_SIZEOF(li->hostname, utx.ut_host));
1411 syslogin_perform_login(struct logininfo *li)
1416 construct_utmp(li, ut);
1424 syslogin_perform_logout(struct logininfo *li)
1429 (void)line_stripname(line, li->line, sizeof(line));
1446 syslogin_write_entry(struct logininfo *li)
1448 switch (li->type) {
1450 return (syslogin_perform_login(li));
1452 return (syslogin_perform_logout(li));
1471 lastlog_openseek(struct logininfo *li, int *fd, int filemode)
1484 LASTLOG_FILE, li->username);
1502 offset = (off_t) ((u_long)li->uid * sizeof(struct lastlog));
1518 lastlog_write_entry(struct logininfo *li)
1520 switch(li->type) {
1530 lastlog_write_entry(struct logininfo *li)
1535 switch(li->type) {
1539 line_stripname(last.ll_line, li->line, sizeof(last.ll_line));
1540 strlcpy(last.ll_host, li->hostname,
1541 MIN_SIZEOF(last.ll_host, li->hostname));
1542 last.ll_time = li->tv_sec;
1544 if (!lastlog_openseek(li, &fd, O_RDWR|O_CREAT))
1566 lastlog_get_entry(struct logininfo *li)
1570 if ((ll = getlastlogxbyname(li->username, &l)) == NULL) {
1574 line_fullname(li->line, ll->ll_line, sizeof(li->line));
1575 strlcpy(li->hostname, ll->ll_host,
1576 MIN_SIZEOF(li->hostname, ll->ll_host));
1577 li->tv_sec = ll->ll_tv.tv_sec;
1578 li->tv_usec = ll->ll_tv.tv_usec;
1583 lastlog_get_entry(struct logininfo *li)
1588 if (!lastlog_openseek(li, &fd, O_RDONLY))
1599 line_fullname(li->line, last.ll_line, sizeof(li->line));
1600 strlcpy(li->hostname, last.ll_host,
1601 MIN_SIZEOF(li->hostname, last.ll_host));
1602 li->tv_sec = last.ll_time;
1623 utmpx_get_entry(struct logininfo *li)
1629 utx = getutxuser(li->username);
1635 line_fullname(li->line, utx->ut_line,
1636 MIN_SIZEOF(li->line, utx->ut_line));
1637 strlcpy(li->hostname, utx->ut_host,
1638 MIN_SIZEOF(li->hostname, utx->ut_host));
1639 li->tv_sec = utx->ut_tv.tv_sec;
1640 li->tv_usec = utx->ut_tv.tv_usec;