1 #ifndef DAEMON_H
2 #define DAEMON_H
3 
4 typedef struct {
5 	int updateinterval, saveinterval;
6 	short running, dodbsave, rundaemon;
7 	short dbsaved, showhelp, sync, forcesave, noadd, initdb;
8 	short bootdetected, cleanuphour, dbretrycount;
9 	uint32_t iflisthash;
10 	uint64_t dbifcount;
11 	char cfgfile[512];
12 	char user[33], group[33];
13 	time_t current, prevdbupdate, prevdbsave, prevwaldbcheckpoint;
14 	datacache *dcache;
15 } DSTATE;
16 
17 void daemonize(void);
18 void debugtimestamp(void);
19 
20 unsigned int addinterfaces(DSTATE *s);
21 void initdstate(DSTATE *s);
22 void preparedatabase(DSTATE *s);
23 unsigned int importlegacydbs(DSTATE *s);
24 void setsignaltraps(void);
25 void filldatabaselist(DSTATE *s);
26 void adjustsaveinterval(DSTATE *s);
27 void checkdbsaveneed(DSTATE *s);
28 void processdatacache(DSTATE *s);
29 void processdatalist(DSTATE *s);
30 void handleintsignals(DSTATE *s);
31 void preparedirs(DSTATE *s);
32 void detectboot(DSTATE *s);
33 
34 int initcachevalues(DSTATE *s, datacache **dc);
35 int processifinfo(DSTATE *s, datacache **dc);
36 void flushcachetodisk(DSTATE *s);
37 void handledatabaseerror(DSTATE *s);
38 void cleanremovedinterfaces(DSTATE *s);
39 void rescandatabaseforinterfaces(DSTATE *s);
40 
41 void datacache_status(datacache **dc);
42 
43 void interfacechangecheck(DSTATE *s);
44 uint32_t simplehash(const char *data, int len);
45 
46 void errorexitdaemon(DSTATE *s, const int fataldberror) __attribute__((noreturn));
47 
48 short getcurrenthour(void);
49 int waittimesync(DSTATE *s);
50 
51 #endif
52