dessert_internal.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef DESSERT_INTERNAL_H
00027 #define DESSERT_INTERNAL_H
00028
00029
00030 #include <stdlib.h>
00031 #include <stdio.h>
00032 #include <fcntl.h>
00033 #include <string.h>
00034 #include <stdarg.h>
00035 #include <unistd.h>
00036 #include <errno.h>
00037 #include <pthread.h>
00038 #include <syslog.h>
00039 #include <sys/socket.h>
00040 #include <sys/ioctl.h>
00041 #include <sys/sysctl.h>
00042 #include <net/route.h>
00043 #include <arpa/inet.h>
00044 #include <netinet/in.h>
00045 #include <libcli.h>
00046 #include <net-snmp/net-snmp-config.h>
00047 #include <net-snmp/net-snmp-includes.h>
00048 #include <net-snmp/agent/net-snmp-agent-includes.h>
00049 #include <utlist.h>
00050
00051
00052 #include "dessertObjects.h"
00053 #include "dessertMeshifTable.h"
00054 #include "dessertSysifTable.h"
00055 #include "dessertAppStatsTable.h"
00056 #include "dessertAppParamsTable.h"
00057
00058
00059
00060
00061
00062
00063
00064
00065
00067 #define _DESSERT_STATUS_DAEMON 0x1
00068
00070 extern int _dessert_status;
00071
00072 dessert_frameid_t _dessert_newframeid(void);
00073
00074 int _dessert_cli_cmd_shutdown(struct cli_def *cli, char *command, char *argv[], int argc);
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084 int _dessert_cli_init(void);
00085
00086
00087
00088
00089
00090
00091
00092
00093
00095 #define DESSERT_LOGLINE_MAX 1024
00096
00098 extern FILE *dessert_logfd;
00099
00100 int _dessert_cli_cmd_logging(struct cli_def *cli, char *command, char *argv[], int argc);
00101 int _dessert_cli_logging_file(struct cli_def *cli, char *command, char *argv[], int argc);
00102 int _dessert_cli_no_logging_file(struct cli_def *cli, char *command, char *argv[], int argc);
00103 int _dessert_cli_logging_ringbuffer(struct cli_def *cli, char *command, char *argv[], int argc);
00104 int _dessert_cli_no_logging_ringbuffer(struct cli_def *cli, char *command, char *argv[], int argc);
00105
00106
00107
00108
00109
00110
00111
00112
00113
00115 typedef struct dessert_meshrxcbe {
00117 dessert_meshrxcb_t *c;
00119 int prio;
00121 struct dessert_meshrxcbe *next;
00122 } dessert_meshrxcbe_t;
00123
00124 int _dessert_meshif_gethwaddr(dessert_meshif_t *meshif);
00125 int _dessert_meshrxcb_runall(dessert_msg_t* msg_in, size_t len, dessert_msg_proc_t *proc_in, const dessert_meshif_t *meshif, dessert_frameid_t id);
00126
00127
00128
00129
00130
00131
00132
00133
00134
00136 typedef struct dessert_sysrxcbe {
00138 dessert_sysrxcb_t *c;
00140 int prio;
00142 struct dessert_sysrxcbe *next;
00143 } dessert_sysrxcbe_t;
00144
00145 extern dessert_sysif_t *_dessert_sysif;
00146
00147
00148
00149
00150
00151
00152
00153
00154
00156 #define DESSERT_MSGLEN sizeof(struct dessert_msg)
00157
00159 #define DESSERT_MSGPROCLEN sizeof(struct dessert_msg_proc)
00160
00162 #define DESSERT_MAXFRAMEBUFLEN DESSERT_MAXFRAMELEN
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172 void _dessert_periodic_init(void);
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186 #define AGENT "dessertAGENTX"
00187
00188 #define DESSERT_AGENTX_SYSIFTABLE_CACHE_TIMEOUT 10
00189 #define DESSERT_AGENTX_MESHIFTABLE_CACHE_TIMEOUT 10
00190 #define DESSERT_AGENTX_APPSTATSTABLE_CACHE_TIMEOUT 10
00191 #define DESSERT_AGENTX_APPPARAMTABLE_CACHE_TIMEOUT 1
00192
00193
00194
00195
00196
00197 extern pthread_rwlock_t _dessert_appstats_cblist_lock;
00198 extern dessert_agentx_appstats_cb_entry_t *_dessert_appstats_cblist;
00199
00200 extern pthread_rwlock_t _dessert_appparams_cblist_lock;
00201 extern dessert_agentx_appparams_cb_entry_t *_dessert_appparams_cblist;
00202
00203
00204
00205
00206 int _dessert_agentx_appstats_harvest_callbacks(dessert_agentx_appstats_t **appstats_list);
00207 void _dessert_agentx_appstats_free(dessert_agentx_appstats_t *appstat);
00208 void _dessert_agentx_appstats_free_list(dessert_agentx_appstats_t **appstats_list);
00209
00210 int _dessert_agentx_appparams_harvest_callbacks(dessert_agentx_appparams_t **appparams_list);
00211 void _dessert_agentx_appparams_free(dessert_agentx_appparams_t *appparam);
00212 void _dessert_agentx_appparams_free_list(dessert_agentx_appparams_t **appparams_list);
00213 dessert_agentx_appparamscb_set_t *_dessert_agentx_appparams_getsettercbforindex(int index);
00214
00215 void _dessert_agentx_init_subagent(void);
00216 void dessert_agentx_stop_subagent(void);
00217
00218
00219 #endif