- style(9)
This commit is contained in:
parent
d94abab5ed
commit
7506f09907
43
ifstatd.c
43
ifstatd.c
@ -121,7 +121,6 @@ fill_iftot(struct iftot *st)
|
|||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
st->ift_ip += IFA_STAT(ipackets);
|
st->ift_ip += IFA_STAT(ipackets);
|
||||||
st->ift_ib += IFA_STAT(ibytes);
|
st->ift_ib += IFA_STAT(ibytes);
|
||||||
st->ift_op += IFA_STAT(opackets);
|
st->ift_op += IFA_STAT(opackets);
|
||||||
@ -140,7 +139,8 @@ fill_iftot(struct iftot *st)
|
|||||||
int
|
int
|
||||||
config(char *iface)
|
config(char *iface)
|
||||||
{
|
{
|
||||||
printf("graph_order rbytes obytes\n"
|
printf(
|
||||||
|
"graph_order rbytes obytes\n"
|
||||||
"graph_title %s Interface (%d seconds sampling)\n"
|
"graph_title %s Interface (%d seconds sampling)\n"
|
||||||
"graph_category network\n"
|
"graph_category network\n"
|
||||||
"graph_vlabel bits per second\n"
|
"graph_vlabel bits per second\n"
|
||||||
@ -156,7 +156,9 @@ config(char *iface)
|
|||||||
"obytes.negative rbytes\n"
|
"obytes.negative rbytes\n"
|
||||||
"obytes.cdef obytes,8,*\n"
|
"obytes.cdef obytes,8,*\n"
|
||||||
"obytes.min 0\n"
|
"obytes.min 0\n"
|
||||||
"obytes.draw AREA\n", iface, RESOLUTION, RESOLUTION, RESOLUTION);
|
"obytes.draw AREA\n"
|
||||||
|
,iface, RESOLUTION, RESOLUTION, RESOLUTION
|
||||||
|
);
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
@ -169,6 +171,7 @@ wait_for(int seconds)
|
|||||||
{
|
{
|
||||||
|
|
||||||
struct timespec tp;
|
struct timespec tp;
|
||||||
|
|
||||||
clock_gettime(CLOCK_REALTIME, &tp);
|
clock_gettime(CLOCK_REALTIME, &tp);
|
||||||
|
|
||||||
time_t current_epoch = tp.tv_sec;
|
time_t current_epoch = tp.tv_sec;
|
||||||
@ -180,7 +183,6 @@ wait_for(int seconds)
|
|||||||
tp.tv_nsec = nsec_to_sleep;
|
tp.tv_nsec = nsec_to_sleep;
|
||||||
nanosleep(&tp, NULL);
|
nanosleep(&tp, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return current_epoch + seconds;
|
return current_epoch + seconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,6 +201,7 @@ daemon_start()
|
|||||||
tot = &ift;
|
tot = &ift;
|
||||||
|
|
||||||
char *no_fork = getenv("no_fork");
|
char *no_fork = getenv("no_fork");
|
||||||
|
|
||||||
if (!no_fork || strcmp("1", no_fork)) {
|
if (!no_fork || strcmp("1", no_fork)) {
|
||||||
|
|
||||||
/* Check if parent process id is set */
|
/* Check if parent process id is set */
|
||||||
@ -206,24 +209,19 @@ daemon_start()
|
|||||||
/* PPID exists, therefore we are already a daemon */
|
/* PPID exists, therefore we are already a daemon */
|
||||||
return (EXIT_FAILURE);
|
return (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if we can acquire the pid file */
|
/* Check if we can acquire the pid file */
|
||||||
pfh = pidfile_open(pid_filename, 0600, &otherpid);
|
pfh = pidfile_open(pid_filename, 0600, &otherpid);
|
||||||
|
|
||||||
if (pfh == NULL) {
|
if (pfh == NULL) {
|
||||||
if (errno == EEXIST) {
|
if (errno == EEXIST) {
|
||||||
errx(EXIT_FAILURE,
|
errx(EXIT_FAILURE, "Daemon already running, pid: %jd.", (intmax_t)otherpid);
|
||||||
"Daemon already running, pid: %jd.",
|
|
||||||
(intmax_t) otherpid);
|
|
||||||
}
|
}
|
||||||
warn("Cannot open or create pidfile: %s", pid_filename);
|
warn("Cannot open or create pidfile: %s", pid_filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fork ourselves if not asked otherwise */
|
/* fork ourselves if not asked otherwise */
|
||||||
if (fork()) {
|
if (fork()) {
|
||||||
return (EXIT_SUCCESS);
|
return (EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* we are the child, complete the daemonization */
|
/* we are the child, complete the daemonization */
|
||||||
|
|
||||||
/* Close standard IO */
|
/* Close standard IO */
|
||||||
@ -233,13 +231,14 @@ daemon_start()
|
|||||||
|
|
||||||
/* Block unnecessary signals */
|
/* Block unnecessary signals */
|
||||||
sigemptyset(&sig_set);
|
sigemptyset(&sig_set);
|
||||||
sigaddset(&sig_set, SIGCHLD); /* ignore child - i.e. we don't need
|
sigaddset(&sig_set, SIGCHLD); /* ignore child - i.e. we
|
||||||
* to wait for it */
|
* don't need to wait for it */
|
||||||
sigaddset(&sig_set, SIGTSTP); /* ignore Tty stop signals */
|
sigaddset(&sig_set, SIGTSTP); /* ignore Tty stop signals */
|
||||||
sigaddset(&sig_set, SIGTTOU); /* ignore Tty background writes */
|
sigaddset(&sig_set, SIGTTOU); /* ignore Tty background
|
||||||
|
* writes */
|
||||||
sigaddset(&sig_set, SIGTTIN); /* ignore Tty background reads */
|
sigaddset(&sig_set, SIGTTIN); /* ignore Tty background reads */
|
||||||
sigprocmask(SIG_BLOCK, &sig_set, NULL); /* Block the above specified
|
sigprocmask(SIG_BLOCK, &sig_set, NULL); /* Block the above
|
||||||
* signals */
|
* specified signals */
|
||||||
|
|
||||||
/* Catch necessary signals */
|
/* Catch necessary signals */
|
||||||
sig_action.sa_handler = signal_handler;
|
sig_action.sa_handler = signal_handler;
|
||||||
@ -257,7 +256,6 @@ daemon_start()
|
|||||||
pidfile_write(pfh);
|
pidfile_write(pfh);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FILE *cache_file = fopen(cache_filename, "a");
|
FILE *cache_file = fopen(cache_filename, "a");
|
||||||
|
|
||||||
/* looping to collect traffic stat every RESOLUTION seconds */
|
/* looping to collect traffic stat every RESOLUTION seconds */
|
||||||
@ -268,8 +266,7 @@ daemon_start()
|
|||||||
flockfile(cache_file);
|
flockfile(cache_file);
|
||||||
|
|
||||||
fill_iftot(tot);
|
fill_iftot(tot);
|
||||||
fprintf(cache_file, "obytes.value %ld:%lu\nrbytes.value %ld:%lu\n",
|
fprintf(cache_file, "obytes.value %ld:%lu\nrbytes.value %ld:%lu\n", epoch, tot->ift_ob, epoch, tot->ift_ib);
|
||||||
epoch, tot->ift_ob, epoch, tot->ift_ib);
|
|
||||||
fflush(cache_file);
|
fflush(cache_file);
|
||||||
|
|
||||||
funlockfile(cache_file);
|
funlockfile(cache_file);
|
||||||
@ -290,6 +287,7 @@ fetch()
|
|||||||
|
|
||||||
/* cat the cache_file to stdout */
|
/* cat the cache_file to stdout */
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
|
|
||||||
while (fgets(buffer, 1024, cache_file)) {
|
while (fgets(buffer, 1024, cache_file)) {
|
||||||
printf("%s", buffer);
|
printf("%s", buffer);
|
||||||
}
|
}
|
||||||
@ -315,12 +313,12 @@ main(int argc, char *argv[])
|
|||||||
if (strchr(program_name, '_')) {
|
if (strchr(program_name, '_')) {
|
||||||
interface = strchr(program_name, '_') + 1;
|
interface = strchr(program_name, '_') + 1;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
/* program should always run with a valid executable name */
|
* program should always run with a valid executable name
|
||||||
|
*/
|
||||||
if (strlen(interface) < 1) {
|
if (strlen(interface) < 1) {
|
||||||
errx(EX_USAGE, "Please run from symlink");
|
errx(EX_USAGE, "Please run from symlink");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* resolve paths */
|
/* resolve paths */
|
||||||
char *MUNIN_PLUGSTATE = getenv("MUNIN_PLUGSTATE");
|
char *MUNIN_PLUGSTATE = getenv("MUNIN_PLUGSTATE");
|
||||||
|
|
||||||
@ -333,14 +331,13 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
char *first_arg = argv[1];
|
char *first_arg = argv[1];
|
||||||
|
|
||||||
if (!strcmp(first_arg, "config")) {
|
if (!strcmp(first_arg, "config")) {
|
||||||
return config(interface);
|
return config(interface);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(first_arg, "acquire")) {
|
if (!strcmp(first_arg, "acquire")) {
|
||||||
return daemon_start();
|
return daemon_start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return fetch();
|
return fetch();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user