lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

002-patch8-utmp.patch (1720B)


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