1 #include <net-snmp/net-snmp-config.h>
7 # include <sys/timeb.h>
14 # include <sys/time.h>
30 #include <net-snmp/net-snmp-includes.h>
31 #include <net-snmp/agent/net-snmp-agent-includes.h>
35 #include "util_funcs.h"
43 struct filestat fileTable[MAXFILE];
49 struct variable2 file_table[] = {
50 {FILE_INDEX, ASN_INTEGER, RONLY, var_file_table, 1, {1}},
51 {FILE_NAME, ASN_OCTET_STR, RONLY, var_file_table, 1, {2}},
52 {FILE_SIZE, ASN_INTEGER, RONLY, var_file_table, 1, {3}},
53 {FILE_MAX, ASN_INTEGER, RONLY, var_file_table, 1, {4}},
54 {FILE_ERROR, ASN_INTEGER, RONLY, var_file_table, 1, {100}},
55 {FILE_MSG, ASN_OCTET_STR, RONLY, var_file_table, 1, {101}}
59 * Define the OID pointer to the top of the mib tree that we're
60 * registering underneath
62 oid file_variables_oid[] = { UCDAVIS_MIB, 15, 1 };
65 * register ourselves with the agent to handle our mib tree
67 REGISTER_MIB("ucd-snmp/file", file_table, variable2,
70 snmpd_register_config_handler("file", file_parse_config,
71 file_free_config, "file [maxsize]");
76 file_free_config(void)
82 file_parse_config(const char *token, char *cptr)
84 if (fileCount < MAXFILE) {
85 fileTable[fileCount].max = -1;
88 fileTable[fileCount].name, &fileTable[fileCount].max);
95 updateFile(int iindex)
99 if (stat(fileTable[iindex].name, &sb) == 0)
100 fileTable[iindex].size = sb.st_size >> 10;
108 var_file_table(struct variable *vp,
111 int exact, size_t * var_len, WriteMethod ** write_method)
113 static long long_ret;
114 static char error[256];
116 struct filestat *file;
118 if (header_simple_table
119 (vp, name, length, exact, var_len, write_method, fileCount))
122 iindex = name[*length - 1] - 1;
126 file = &fileTable[iindex];
130 long_ret = iindex + 1;
131 return (u_char *) & long_ret;
134 *var_len = strlen(file->name);
135 return (u_char *) file->name;
138 long_ret = file->size;
139 return (u_char *) & long_ret;
142 long_ret = file->max;
143 return (u_char *) & long_ret;
146 if (file->max >= 0 && file->size > file->max)
151 return (u_char *) & long_ret;
154 if (file->max >= 0 && file->size > file->max)
155 sprintf(error, FILE_ERROR_MSG, file->name, file->max,
160 *var_len = strlen(error);
161 return (u_char *) error;
164 DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_file_table\n",