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 <net/if_arp.h>
00044 #include <arpa/inet.h>
00045 #include <netinet/in.h>
00046 #include <libcli.h>
00047 #include <net-snmp/net-snmp-config.h>
00048 #include <net-snmp/net-snmp-includes.h>
00049 #include <net-snmp/agent/net-snmp-agent-includes.h>
00050 #include <uthash.h>
00051 #include <utlist.h>
00052
00053 #include "dessertObjects.h"
00054 #include "dessertMeshifTable.h"
00055 #include "dessertSysifTable.h"
00056 #include "dessertAppStatsTable.h"
00057 #include "dessertAppParamsTable.h"
00058
00059
00060
00061
00062
00063
00064
00065
00066
00068 #define _DESSERT_STATUS_DAEMON 0x1
00069
00071 extern int _dessert_status;
00072
00073 dessert_frameid_t _dessert_newframeid(void);
00074
00075 int _dessert_cli_cmd_shutdown(struct cli_def *cli, char *command, char *argv[], int argc);
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085 int _dessert_cli_init(void);
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095 int _dessert_signals_init(void);
00096
00097
00098
00099
00100
00101
00102
00103
00104
00106 #define DESSERT_LOGLINE_MAX 1024
00107
00109 extern FILE *dessert_logfd;
00110
00111 int _dessert_cli_cmd_set_loglevel(struct cli_def *cli, char *command, char *argv[], int argc);
00112 int _dessert_cli_cmd_show_loglevel(struct cli_def *cli, char *command, char *argv[], int argc);
00113 int _dessert_cli_cmd_logging(struct cli_def *cli, char *command, char *argv[], int argc);
00114 int _dessert_cli_logging_file(struct cli_def *cli, char *command, char *argv[], int argc);
00115 int _dessert_cli_no_logging_file(struct cli_def *cli, char *command, char *argv[], int argc);
00116 int _dessert_cli_logging_ringbuffer(struct cli_def *cli, char *command, char *argv[], int argc);
00117 int _dessert_cli_no_logging_ringbuffer(struct cli_def *cli, char *command, char *argv[], int argc);
00118
00119
00120
00121
00122
00123
00124
00125
00126
00128 typedef struct dessert_meshrxcbe {
00130 dessert_meshrxcb_t *c;
00132 int prio;
00134 struct dessert_meshrxcbe *next;
00135 } dessert_meshrxcbe_t;
00136
00137 int _dessert_meshif_gethwaddr(dessert_meshif_t *meshif);
00138 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);
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148 int _dessert_getHWAddr(char* device, char* hwaddr);
00149
00151 typedef struct dessert_sysrxcbe {
00153 dessert_sysrxcb_t *c;
00155 int prio;
00157 struct dessert_sysrxcbe *next;
00158 } dessert_sysrxcbe_t;
00159
00160 extern dessert_sysif_t *_dessert_sysif;
00161
00162
00163
00164
00165
00166
00167
00168
00169
00171 #define DESSERT_MSGLEN sizeof(struct dessert_msg)
00172
00174 #define DESSERT_MSGPROCLEN sizeof(struct dessert_msg_proc)
00175
00177 #define DESSERT_MAXFRAMEBUFLEN DESSERT_MAXFRAMELEN
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187 void _dessert_periodic_init(void);
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201 #define AGENT "dessertAGENTX"
00202
00203 #define DESSERT_AGENTX_SYSIFTABLE_CACHE_TIMEOUT 10
00204 #define DESSERT_AGENTX_MESHIFTABLE_CACHE_TIMEOUT 10
00205 #define DESSERT_AGENTX_APPSTATSTABLE_CACHE_TIMEOUT 10
00206 #define DESSERT_AGENTX_APPPARAMTABLE_CACHE_TIMEOUT 1
00207
00208
00209
00210
00211
00212 extern pthread_rwlock_t _dessert_appstats_cblist_lock;
00213 extern dessert_agentx_appstats_cb_entry_t *_dessert_appstats_cblist;
00214
00215 extern pthread_rwlock_t _dessert_appparams_cblist_lock;
00216 extern dessert_agentx_appparams_cb_entry_t *_dessert_appparams_cblist;
00217
00218
00219
00220
00221 int _dessert_agentx_appstats_harvest_callbacks(dessert_agentx_appstats_t **appstats_list);
00222 void _dessert_agentx_appstats_free(dessert_agentx_appstats_t *appstat);
00223 void _dessert_agentx_appstats_free_list(dessert_agentx_appstats_t **appstats_list);
00224
00225 int _dessert_agentx_appparams_harvest_callbacks(dessert_agentx_appparams_t **appparams_list);
00226 void _dessert_agentx_appparams_free(dessert_agentx_appparams_t *appparam);
00227 void _dessert_agentx_appparams_free_list(dessert_agentx_appparams_t **appparams_list);
00228 dessert_agentx_appparamscb_set_t *_dessert_agentx_appparams_getsettercbforindex(int index);
00229
00230 void _dessert_agentx_init_subagent(void);
00231 void dessert_agentx_stop_subagent(void);
00232
00233
00234 #endif