ulogd: moved to github
[openwrt.org/packages.git] / net / 002-patch8-utmp.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
--- a/src/racoon/isakmp_cfg.c
+++ b/src/racoon/isakmp_cfg.c
@@ -38,7 +38,7 @@
 #include <sys/socket.h>
 #include <sys/queue.h>
 
-#include <utmpx.h>
+#include <utmp.h>
 #if defined(__APPLE__) && defined(__MACH__)
 #include <util.h>
 #endif
@@ -1661,7 +1661,8 @@ isakmp_cfg_accounting_system(port, raddr
        int inout;
 {
        int error = 0;
-       struct utmpx ut;
+       struct utmp ut;
+       char term[UT_LINESIZE];
        char addr[NI_MAXHOST];
        
        if (usr == NULL || usr[0]=='\0') {
@@ -1670,34 +1671,37 @@ isakmp_cfg_accounting_system(port, raddr
                return -1;
        }
 
-       memset(&ut, 0, sizeof ut);
-       gettimeofday((struct timeval *)&ut.ut_tv, NULL);
-       snprintf(ut.ut_id, sizeof ut.ut_id, TERMSPEC, port);
+       sprintf(term, TERMSPEC, port);
 
        switch (inout) {
        case ISAKMP_CFG_LOGIN:
-               ut.ut_type = USER_PROCESS;
-               strncpy(ut.ut_user, usr, sizeof ut.ut_user);
+               strncpy(ut.ut_name, usr, UT_NAMESIZE);
+               ut.ut_name[UT_NAMESIZE - 1] = '\0';
+               
+               strncpy(ut.ut_line, term, UT_LINESIZE);
+               ut.ut_line[UT_LINESIZE - 1] = '\0';
 
                GETNAMEINFO_NULL(raddr, addr);
-               strncpy(ut.ut_host, addr, sizeof ut.ut_host);
+               strncpy(ut.ut_host, addr, UT_HOSTSIZE);
+               ut.ut_host[UT_HOSTSIZE - 1] = '\0';
+
+               ut.ut_time = time(NULL);
 
                plog(LLV_INFO, LOCATION, NULL,
                        "Accounting : '%s' logging on '%s' from %s.\n",
-                       ut.ut_user, ut.ut_id, addr);
-
-               pututxline(&ut);
+                       ut.ut_name, ut.ut_line, ut.ut_host);
 
+               login(&ut);
+               
                break;
        case ISAKMP_CFG_LOGOUT: 
-               ut.ut_type = DEAD_PROCESS;
 
                plog(LLV_INFO, LOCATION, NULL,
                        "Accounting : '%s' unlogging from '%s'.\n",
-                       usr, ut.ut_id);
-
-               pututxline(&ut);
+                       usr, term);
 
+               logout(term);
+               
                break;
        default:
                plog(LLV_ERROR, LOCATION, NULL, "Unepected inout\n");
 
comments