summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKozlov Dmitry <dima@server>2010-12-27 16:03:35 +0300
committerKozlov Dmitry <dima@server>2010-12-27 16:03:35 +0300
commit453e170879f599dfe4a82f7880929a7040b8b724 (patch)
tree1e76a7c618aede3dda85d341bf1be16dca9e988c
parent2b34d862111f1fd84cdb9d744ac34c1c933f34da (diff)
downloadaccel-ppp-453e170879f599dfe4a82f7880929a7040b8b724.tar.gz
accel-ppp-453e170879f599dfe4a82f7880929a7040b8b724.zip
cli: changed terminate syntax
cli: fixed cpu/mem utilization statistics
-rw-r--r--accel-pptpd/cli/std_cmd.c18
-rw-r--r--accel-pptpd/log.c1
-rw-r--r--accel-pptpd/triton/triton.c11
-rw-r--r--accel-pptpd/triton/triton.h3
4 files changed, 20 insertions, 13 deletions
diff --git a/accel-pptpd/cli/std_cmd.c b/accel-pptpd/cli/std_cmd.c
index 3563db95..50f34593 100644
--- a/accel-pptpd/cli/std_cmd.c
+++ b/accel-pptpd/cli/std_cmd.c
@@ -37,8 +37,8 @@ static int show_stat_exec(const char *cmd, char * const *fields, int fields_cnt,
dt %= 60 * 60;
cli_sendv(client, "uptime: %i.%02i:%02i:%02i\r\n", day, hour, dt / 60, dt % 60);
- cli_sendv(client, "cpu: %i%% (%i/%i)\r\n", triton_stat.ru_utime + triton_stat.ru_stime, triton_stat.ru_utime, triton_stat.ru_stime);
- cli_sendv(client, "mem: %lu/%lu kB\r\n", vmrss / page_size_kb, vmsize / page_size_kb);
+ cli_sendv(client, "cpu: %i%%\r\n", triton_stat.cpu);
+ cli_sendv(client, "mem: %lu/%lu kB\r\n", vmrss * page_size_kb, vmsize * page_size_kb);
cli_send(client, "core:\r\n");
cli_sendv(client, " mempool_allocated: %u\r\n", triton_stat.mempool_allocated);
cli_sendv(client, " mempool_available: %u\r\n", triton_stat.mempool_available);
@@ -273,7 +273,7 @@ static int terminate_exec1(char * const *f, int f_cnt, void *cli)
hard = 1;
else if (strcmp(f[4], "soft"))
return CLI_CMD_SYNTAX;
- } else if (f_cnt != 4 || f_cnt > 5)
+ } else if (f_cnt != 4)
return CLI_CMD_SYNTAX;
re = pcre_compile2(f[3], 0, NULL, &pcre_err, &pcre_offset, NULL);
@@ -309,7 +309,7 @@ static int terminate_exec2(int key, char * const *f, int f_cnt, void *cli)
hard = 1;
else if (strcmp(f[3], "soft"))
return CLI_CMD_SYNTAX;
- } else if (f_cnt != 3 || f_cnt > 4)
+ } else if (f_cnt != 3)
return CLI_CMD_SYNTAX;
if (key == 1)
@@ -334,6 +334,10 @@ static int terminate_exec2(int key, char * const *f, int f_cnt, void *cli)
if (strcmp(ppp->sessionid, f[2]))
continue;
break;
+ case 4:
+ if (strcmp(ppp->ifname, f[2]))
+ continue;
+ break;
}
if (hard)
triton_context_call(ppp->ctrl->ctx, (triton_event_func)ppp_terminate_hard, ppp);
@@ -364,6 +368,8 @@ static int terminate_exec(const char *cmd, char * const *fields, int fields_cnt,
return terminate_exec2(2, fields, fields_cnt, client);
else if (!strcmp(fields[1], "sid"))
return terminate_exec2(3, fields, fields_cnt, client);
+ else if (!strcmp(fields[1], "if"))
+ return terminate_exec2(4, fields, fields_cnt, client);
else if (strcmp(fields[1], "all"))
return CLI_CMD_SYNTAX;
@@ -372,7 +378,7 @@ static int terminate_exec(const char *cmd, char * const *fields, int fields_cnt,
hard = 1;
else if (strcmp(fields[2], "soft"))
return CLI_CMD_SYNTAX;
- } else if (fields_cnt != 2 && fields_cnt > 3)
+ } else if (fields_cnt != 2)
return CLI_CMD_SYNTAX;
pthread_rwlock_rdlock(&ppp_lock);
@@ -389,7 +395,7 @@ static int terminate_exec(const char *cmd, char * const *fields, int fields_cnt,
static void terminate_help(char * const *fields, int fields_cnt, void *client)
{
- cli_send(client, "terminate <interface> [soft|hard]- terminate session by interface name\r\n");
+ cli_send(client, "terminate if <interface> [soft|hard]- terminate session by interface name\r\n");
cli_send(client, "\t[match] username <username> [soft|hard]- terminate session by username\r\n");
cli_send(client, "\tip <addresss> [soft|hard]- terminate session by ip address\r\n");
cli_send(client, "\tcsid <id> [soft|hard]- terminate session by calling station id\r\n");
diff --git a/accel-pptpd/log.c b/accel-pptpd/log.c
index 6994d86b..428feddf 100644
--- a/accel-pptpd/log.c
+++ b/accel-pptpd/log.c
@@ -450,7 +450,6 @@ static void sighup(int n)
static void load_config(void)
{
char *opt;
- FILE *f;
opt = conf_get_opt("log", "level");
if (opt && atoi(opt) >= 0)
diff --git a/accel-pptpd/triton/triton.c b/accel-pptpd/triton/triton.c
index 7d262512..c9ad646a 100644
--- a/accel-pptpd/triton/triton.c
+++ b/accel-pptpd/triton/triton.c
@@ -494,8 +494,7 @@ void __export triton_collect_cpu_usage(void)
clock_gettime(CLOCK_MONOTONIC, &ru_timestamp);
ru_utime = rusage.ru_utime;
ru_stime = rusage.ru_stime;
- triton_stat.ru_utime = 0;
- triton_stat.ru_stime = 0;
+ triton_stat.cpu = 0;
}
}
@@ -510,13 +509,17 @@ static void ru_update(struct triton_timer_t *t)
struct timespec ts;
struct rusage rusage;
unsigned int dt;
+ unsigned int val;
getrusage(RUSAGE_SELF, &rusage);
clock_gettime(CLOCK_MONOTONIC, &ts);
dt = (ts.tv_sec - ru_timestamp.tv_sec) * 1000000 + (ts.tv_nsec - ru_timestamp.tv_nsec) / 1000000;
- triton_stat.ru_utime = (double)((rusage.ru_utime.tv_sec - ru_utime.tv_sec) * 1000000 + (rusage.ru_utime.tv_usec - ru_utime.tv_usec)) / dt * 100;
- triton_stat.ru_stime = (double)((rusage.ru_stime.tv_sec - ru_stime.tv_sec) * 1000000 + (rusage.ru_stime.tv_usec - ru_stime.tv_usec)) / dt * 100;
+ val = (double)((rusage.ru_utime.tv_sec - ru_utime.tv_sec) * 1000000 + (rusage.ru_utime.tv_usec - ru_utime.tv_usec) +
+ (rusage.ru_stime.tv_sec - ru_stime.tv_sec) * 1000000 + (rusage.ru_stime.tv_usec - ru_stime.tv_usec)) / dt * 100;
+
+ if (val <= 100)
+ triton_stat.cpu = val;
ru_timestamp = ts;
ru_utime = rusage.ru_utime;
diff --git a/accel-pptpd/triton/triton.h b/accel-pptpd/triton/triton.h
index 2c3871ea..1dc0033d 100644
--- a/accel-pptpd/triton/triton.h
+++ b/accel-pptpd/triton/triton.h
@@ -64,8 +64,7 @@ struct triton_stat_t
unsigned int timer_count;
unsigned int timer_pending;
time_t start_time;
- int ru_utime;
- int ru_stime;
+ unsigned int cpu;
};
extern struct triton_stat_t triton_stat;