aboutsummaryrefslogtreecommitdiffstats
path: root/src/firemon
diff options
context:
space:
mode:
authorLibravatar startx2017 <vradu.startx@yandex.com>2017-07-07 07:50:51 -0400
committerLibravatar startx2017 <vradu.startx@yandex.com>2017-07-07 07:50:51 -0400
commita76c80859abb53b75a2438f548c8e137305e6fbc (patch)
treeffac2fdcdc3ceaee7aa9c487843979028795b636 /src/firemon
parentshorter firejail name in --top and --netstats (diff)
downloadfirejail-a76c80859abb53b75a2438f548c8e137305e6fbc.tar.gz
firejail-a76c80859abb53b75a2438f548c8e137305e6fbc.tar.zst
firejail-a76c80859abb53b75a2438f548c8e137305e6fbc.zip
run --netstats on 1s interval; caching user name.
Diffstat (limited to 'src/firemon')
-rw-r--r--src/firemon/netstats.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/firemon/netstats.c b/src/firemon/netstats.c
index 53399300c..f83be9823 100644
--- a/src/firemon/netstats.c
+++ b/src/firemon/netstats.c
@@ -29,6 +29,20 @@
29// ip -s link: device stats 29// ip -s link: device stats
30// ss -s: socket stats 30// ss -s: socket stats
31 31
32static uid_t cached_uid = 0;
33static char *cached_user_name = NULL;
34
35static char *get_user_name(uid_t uid) {
36 if (cached_user_name == NULL) {
37 cached_uid = uid;
38 cached_user_name = pid_get_user_name(uid);
39 return strdup(cached_user_name);
40 }
41 else if (uid == cached_uid)
42 return strdup(cached_user_name);
43 else
44 return pid_get_user_name(uid);
45}
32 46
33static char *get_header(void) { 47static char *get_header(void) {
34 char *rv; 48 char *rv;
@@ -151,7 +165,7 @@ static void print_proc(int index, int itv, int col) {
151 snprintf(pidstr, 10, "%u", index); 165 snprintf(pidstr, 10, "%u", index);
152 166
153 // user 167 // user
154 char *user = pid_get_user_name(pids[index].uid); 168 char *user = get_user_name(pids[index].uid);
155 char *ptruser; 169 char *ptruser;
156 if (user) 170 if (user)
157 ptruser = user; 171 ptruser = user;
@@ -190,7 +204,7 @@ void netstats(void) {
190 while (1) { 204 while (1) {
191 // set pid table 205 // set pid table
192 int i; 206 int i;
193 int itv = 5; // 5 second interval 207 int itv = 1; // 1 second interval
194 pid_read(0); 208 pid_read(0);
195 209
196 // start rx/tx measurements 210 // start rx/tx measurements
@@ -199,7 +213,7 @@ void netstats(void) {
199 get_stats(i); 213 get_stats(i);
200 } 214 }
201 215
202 // wait 5 seconds 216 // wait 1 seconds
203 firemon_sleep(itv); 217 firemon_sleep(itv);
204 218
205 // grab screen size 219 // grab screen size