|
@ -0,0 +1,60 @@ |
|
|
|
|
|
--- a/src/daemon.c
|
|
|
|
|
|
+++ b/src/daemon.c
|
|
|
|
|
|
@@ -252,6 +252,7 @@ void initdstate(DSTATE *s)
|
|
|
|
|
|
s->sync = 0; |
|
|
|
|
|
s->forcesave = 0; |
|
|
|
|
|
s->noadd = 0; |
|
|
|
|
|
+ s->noexit = 0;
|
|
|
|
|
|
s->initdb = 0; |
|
|
|
|
|
s->iflisthash = 0; |
|
|
|
|
|
s->cfgfile[0] = '\0'; |
|
|
|
|
|
@@ -282,6 +283,9 @@ void preparedatabase(DSTATE *s)
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (s->noadd) { |
|
|
|
|
|
+ if (s->noexit) {
|
|
|
|
|
|
+ return;
|
|
|
|
|
|
+ }
|
|
|
|
|
|
printf("No interfaces found in database, exiting.\n"); |
|
|
|
|
|
exit(EXIT_FAILURE); |
|
|
|
|
|
} |
|
|
|
|
|
@@ -300,6 +304,9 @@ void preparedatabase(DSTATE *s)
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!addinterfaces(s) && s->dbifcount == 0) { |
|
|
|
|
|
+ if (s->noexit) {
|
|
|
|
|
|
+ return;
|
|
|
|
|
|
+ }
|
|
|
|
|
|
printf("Nothing to do, exiting.\n"); |
|
|
|
|
|
exit(EXIT_FAILURE); |
|
|
|
|
|
} |
|
|
|
|
|
--- a/src/daemon.h
|
|
|
|
|
|
+++ b/src/daemon.h
|
|
|
|
|
|
@@ -4,7 +4,7 @@
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
int updateinterval, saveinterval; |
|
|
|
|
|
short running, dodbsave, rundaemon; |
|
|
|
|
|
- short dbsaved, showhelp, sync, forcesave, noadd, initdb;
|
|
|
|
|
|
+ short dbsaved, showhelp, sync, forcesave, noadd, noexit, initdb;
|
|
|
|
|
|
short bootdetected, cleanuphour, dbretrycount; |
|
|
|
|
|
uint32_t iflisthash; |
|
|
|
|
|
uint64_t dbifcount; |
|
|
|
|
|
--- a/src/vnstatd.c
|
|
|
|
|
|
+++ b/src/vnstatd.c
|
|
|
|
|
|
@@ -248,6 +248,7 @@ void showhelp(void)
|
|
|
|
|
|
printf(" --config <config file> select used config file\n"); |
|
|
|
|
|
printf(" --noadd prevent startup if database has no interfaces\n"); |
|
|
|
|
|
printf(" --alwaysadd [mode] automatically start monitoring all new interfaces\n"); |
|
|
|
|
|
+ printf(" --noexit keep running even when database has no interfaces\n");
|
|
|
|
|
|
printf(" --initdb create empty database and exit\n\n"); |
|
|
|
|
|
|
|
|
|
|
|
printf("See also \"man vnstatd\".\n"); |
|
|
|
|
|
@@ -319,6 +320,8 @@ void parseargs(DSTATE *s, int argc, char
|
|
|
|
|
|
} else { |
|
|
|
|
|
cfg.alwaysadd = 1; |
|
|
|
|
|
} |
|
|
|
|
|
+ } else if (strcmp(argv[currentarg], "--noexit") == 0) {
|
|
|
|
|
|
+ s->noexit = 1;
|
|
|
|
|
|
} else if (strcmp(argv[currentarg], "--initdb") == 0) { |
|
|
|
|
|
s->initdb = 1; |
|
|
|
|
|
s->showhelp = 0; |