Mercurial > ecos
comparison packages/net/snmp/agent/current/utils/mib2c/mib2c.conf-ORIG @ 103:95f3e12a6327 ecos-sw-2000-06-23
Merge from eCos master repository on 2000-06-23-16:41:10-BST
| author | jlarmour |
|---|---|
| date | Fri, 23 Jun 2000 17:06:31 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 102:6409b6d94dd7 | 103:95f3e12a6327 |
|---|---|
| 1 # | |
| 2 # Define types of data by mib type, and translate into needed C code. | |
| 3 # | |
| 4 | |
| 5 ############################################################################ | |
| 6 # source variable typing information: | |
| 7 include: mib2c.vartypes.conf | |
| 8 | |
| 9 # Begin code template section | |
| 10 ############################################################################ | |
| 11 # variable statemnts used in a couple of places below | |
| 12 ############################################################################ | |
| 13 type: code-varInits | |
| 14 code: /* variables we may use later */ | |
| 15 code: static long long_ret; | |
| 16 code: static unsigned char string[SPRINT_MAX_LEN]; | |
| 17 code: static oid objid[MAX_OID_LEN]; | |
| 18 code: static struct counter64 c64; | |
| 19 | |
| 20 | |
| 21 ############################################################################ | |
| 22 # The .h file | |
| 23 ############################################################################ | |
| 24 type: code-dot-h | |
| 25 code: /* This file was generated by mib2c and is intended for use as a mib module | |
| 26 code: for the ucd-snmp snmpd agent. */ | |
| 27 code: | |
| 28 code: #ifndef _MIBGROUP_${OUTPUTNAME}_H | |
| 29 code: #define _MIBGROUP_${OUTPUTNAME}_H | |
| 30 code: | |
| 31 code: /* we may use header_generic and header_simple_table from the util_funcs module */ | |
| 32 code: | |
| 33 code: config_require(util_funcs) | |
| 34 code: | |
| 35 code: /* function prototypes */ | |
| 36 code: | |
| 37 code: void init_$outputName(void); | |
| 38 code: FindVarMethod var_$outputName; | |
| 39 code: $variables{'code-var_table-decl'}{'processed'} | |
| 40 code: $variables{'code-write-func-decl'}{'processed'} | |
| 41 code: | |
| 42 code: #endif /* _MIBGROUP_${OUTPUTNAME}_H */ | |
| 43 | |
| 44 ############################################################################ | |
| 45 # The .c file, top | |
| 46 ############################################################################ | |
| 47 type: code-main-part | |
| 48 code: /* This file was generated by mib2c and is intended for use as a mib module | |
| 49 code: for the ucd-snmp snmpd agent. */ | |
| 50 code: | |
| 51 code: #ifdef IN_UCD_SNMP_SOURCE | |
| 52 code: /* If we're compiling this file inside the ucd-snmp source tree */ | |
| 53 code: | |
| 54 code: /* This should always be included first before anything else */ | |
| 55 code: #include <config.h> | |
| 56 code: | |
| 57 code: /* minimal include directives */ | |
| 58 code: #include \"mibincl.h\" | |
| 59 code: #include \"util_funcs.h\" | |
| 60 code: | |
| 61 code: #else /* !IN_UCD_SNMP_SOURCE */ | |
| 62 code: | |
| 63 code: #include <ucd-snmp/ucd-snmp-config.h> | |
| 64 code: #include <ucd-snmp/ucd-snmp-includes.h> | |
| 65 code: #include <ucd-snmp/ucd-snmp-agent-includes.h> | |
| 66 code: | |
| 67 code: #endif /* !IN_UCD_SNMP_SOURCE */ | |
| 68 code: | |
| 69 code: #include \"$outputName.h\" | |
| 70 code: | |
| 71 code: /* | |
| 72 code: * ${outputName}_variables_oid: | |
| 73 code: * this is the top level oid that we want to register under. This | |
| 74 code: * is essentially a prefix, with the suffix appearing in the | |
| 75 code: * variable below. | |
| 76 code: */ | |
| 77 code: | |
| 78 code: oid ${outputName}_variables_oid[] = { $commaoid }; | |
| 79 code: | |
| 80 code: /* | |
| 81 code: * variable$varlen ${outputName}_variables: | |
| 82 code: * this variable defines function callbacks and type return information | |
| 83 code: * for the $outputName mib section | |
| 84 code: */ | |
| 85 code: | |
| 86 code: struct variable$varlen ${outputName}_variables[] = { | |
| 87 code: /* magic number , variable type , ro/rw , callback fn , L, oidsuffix */ | |
| 88 code: $variables{'variable-structure-info'}{'processed'} | |
| 89 code: }; | |
| 90 code: /* (L = length of the oidsuffix) */ | |
| 91 code: | |
| 92 code: /* | |
| 93 code: * init_$outputName(): | |
| 94 code: * Initialization routine. This is called when the agent starts up. | |
| 95 code: * At a minimum, registration of your variables should take place here. | |
| 96 code: */ | |
| 97 code: void init_$outputName(void) { | |
| 98 code: | |
| 99 code: /* register ourselves with the agent to handle our mib tree */ | |
| 100 code: REGISTER_MIB(\"$outputName\", ${outputName}_variables, variable$varlen,\ | |
| 101 code: ${outputName}_variables_oid); | |
| 102 code: | |
| 103 code: /* place any other initialization junk you need here */ | |
| 104 code: } | |
| 105 code: | |
| 106 code: /* | |
| 107 code: * var_$outputName(): | |
| 108 code: * This function is called every time the agent gets a request for | |
| 109 code: * a scalar variable that might be found within your mib section | |
| 110 code: * registered above. It is up to you to do the right thing and | |
| 111 code: * return the correct value. | |
| 112 code: * You should also correct the value of \"var_len\" if necessary. | |
| 113 code: * | |
| 114 code: * Please see the documentation for more information about writing | |
| 115 code: * module extensions, and check out the examples in the examples | |
| 116 code: * and mibII directories. | |
| 117 code: */ | |
| 118 code: unsigned char * | |
| 119 code: var_$outputName(struct variable *vp, | |
| 120 code: oid *name, | |
| 121 code: size_t *length, | |
| 122 code: int exact, | |
| 123 code: size_t *var_len, | |
| 124 code: WriteMethod **write_method) | |
| 125 code: { | |
| 126 code: | |
| 127 code: $variables{'code-varInits'}{'code'} | |
| 128 code: | |
| 129 code: if (header_generic(vp,name,length,exact,var_len,write_method) | |
| 130 code: == MATCH_FAILED ) | |
| 131 code: return NULL; | |
| 132 code: | |
| 133 code: /* | |
| 134 code: * this is where we do the value assignments for the mib results. | |
| 135 code: */ | |
| 136 code: switch(vp->magic) {\n\n | |
| 137 code: $variables{$outputName}{'code-case-statements'}{'processed'} | |
| 138 code: default: | |
| 139 code: ERROR_MSG(\"\"); | |
| 140 code: } | |
| 141 code: return NULL; | |
| 142 code: } | |
| 143 code: | |
| 144 code: $variables{'code-var_table'}{'processed'} | |
| 145 code: | |
| 146 code: $variables{'code-write-func'}{'processed'} | |
| 147 | |
| 148 ############################################################################ | |
| 149 # var_ function for tables, which is handled specially and used above | |
| 150 # | |
| 151 # Note: $vtable is set to the table name in the processtable loop. | |
| 152 ############################################################################ | |
| 153 | |
| 154 # | |
| 155 # header file defs first | |
| 156 # | |
| 157 type: code-var_table-decl | |
| 158 processtable: code-var_table-decl | |
| 159 | |
| 160 code: FindVarMethod var_$vtable; | |
| 161 | |
| 162 # | |
| 163 # Code code per table | |
| 164 # | |
| 165 type: code-var_table | |
| 166 processtable: code-var_table | |
| 167 | |
| 168 code: /* | |
| 169 code: * var_$vtable(): | |
| 170 code: * Handle this table separately from the scalar value case. | |
| 171 code: * The workings of this are basically the same as for var_$outputName above. | |
| 172 code: */ | |
| 173 code: unsigned char * | |
| 174 code: var_$vtable(struct variable *vp, | |
| 175 code: oid *name, | |
| 176 code: size_t *length, | |
| 177 code: int exact, | |
| 178 code: size_t *var_len, | |
| 179 code: WriteMethod **write_method) | |
| 180 code: { | |
| 181 code: | |
| 182 code: $variables{'code-varInits'}{'code'} | |
| 183 code: | |
| 184 code: /* | |
| 185 code: * This assumes that the table is a \'simple\' table. | |
| 186 code: * See the implementation documentation for the meaning of this. | |
| 187 code: * You will need to provide the correct value for the TABLE_SIZE parameter | |
| 188 code: * | |
| 189 code: * If this table does not meet the requirements for a simple table, | |
| 190 code: * you will need to provide the replacement code yourself. | |
| 191 code: * Mib2c is not smart enough to write this for you. | |
| 192 code: * Again, see the implementation documentation for what is required. | |
| 193 code: */ | |
| 194 code: if (header_simple_table(vp,name,length,exact,var_len,write_method, TABLE_SIZE) | |
| 195 code: == MATCH_FAILED ) | |
| 196 code: return NULL; | |
| 197 code: | |
| 198 code: /* | |
| 199 code: * this is where we do the value assignments for the mib results. | |
| 200 code: */ | |
| 201 code: switch(vp->magic) {\n\n | |
| 202 code: $variables{$vtable}{'code-case-statements'}{'processed'} | |
| 203 code: default: | |
| 204 code: ERROR_MSG(\"\"); | |
| 205 code: } | |
| 206 code: return NULL; | |
| 207 code: } | |
| 208 | |
| 209 | |
| 210 ############################################################################ | |
| 211 # case statement sections | |
| 212 ############################################################################ | |
| 213 type: code-case-statements | |
| 214 process: code-case-statements | |
| 215 skipif: $mib->{'access'} =~ /NoAccess/ | |
| 216 | |
| 217 code: case $NAME: | |
| 218 code: " . (($mib->{'access'} =~ /ReadWrite|WriteOnly|Create/) ? "*write_method = write_$mib->{label};" : "") . " | |
| 219 code: $variables{$mib->{'type'}}{'case'} | |
| 220 code: | |
| 221 | |
| 222 ############################################################################ | |
| 223 # storage structure information | |
| 224 ############################################################################ | |
| 225 type: variable-structure-info | |
| 226 process: variable-structure-info | |
| 227 skipif: $mib->{'access'} =~ /NoAccess/ | |
| 228 code: " . sprintf("#define %-20s $count", $NAME) . " | |
| 229 code: " . sprintf(" { %-20s, %-14s, %-6.6s, %s, %d, { %s } },", $NAME, $variables{$mib->{'type'}}{'asnType'}, $accessToUCD{$mib->{'access'}}, "var_$vroutine", $depth-1, $subid) . " | |
| 230 | |
| 231 ############################################################################ | |
| 232 # write function defitition, also appended to the end of the .c file. | |
| 233 ############################################################################ | |
| 234 # | |
| 235 # Header info: declair write functions for set processing | |
| 236 # | |
| 237 process: code-write-func-decl | |
| 238 type: code-write-func-decl | |
| 239 skipif: $mib->{'access'} !~ /Write|Create/ | |
| 240 code: WriteMethod write_$name; | |
| 241 # | |
| 242 # C code | |
| 243 # | |
| 244 type: code-write-func | |
| 245 process: code-write-func | |
| 246 skipif: $mib->{'access'} !~ /Write|Create/ | |
| 247 code: int | |
| 248 code: write_$name(int action, | |
| 249 code: u_char *var_val, | |
| 250 code: u_char var_val_type, | |
| 251 code: size_t var_val_len, | |
| 252 code: u_char *statP, | |
| 253 code: oid *name, | |
| 254 code: size_t name_len) | |
| 255 code: { | |
| 256 code: $variables{$mib->{'type'}}{writeInit} | |
| 257 code: int size; | |
| 258 code: | |
| 259 code: switch ( action ) { | |
| 260 code: case RESERVE1: | |
| 261 code: if (var_val_type != $variables{$mib->{'type'}}{asnType}){ | |
| 262 code: fprintf(stderr, \"write to $name not $variables{$mib->{'type'}}{asnType}\\n\"); | |
| 263 code: return SNMP_ERR_WRONGTYPE; | |
| 264 code: } | |
| 265 code: if (var_val_len > sizeof($variables{$mib->{'type'}}{variable})){ | |
| 266 code: fprintf(stderr,\"write to $name: bad length\\n\"); | |
| 267 code: return SNMP_ERR_WRONGLENGTH; | |
| 268 code: } | |
| 269 code: break; | |
| 270 code: | |
| 271 code: case RESERVE2: | |
| 272 code: size = var_val_len; | |
| 273 code: $variables{$mib->{'type'}}{variable} = ($variables{$mib->{'type'}}{cast}) var_val; | |
| 274 code: | |
| 275 code: break; | |
| 276 code: | |
| 277 code: case FREE: | |
| 278 code: /* Release any resources that have been allocated */ | |
| 279 code: break; | |
| 280 code: | |
| 281 code: case ACTION: | |
| 282 code: /* The variable has been stored in $variables{$mib->{'type'}}{variable} for | |
| 283 code: you to use, and you have just been asked to do something with | |
| 284 code: it. Note that anything done here must be reversable in the UNDO case */ | |
| 285 code: break; | |
| 286 code: | |
| 287 code: case UNDO: | |
| 288 code: /* Back out any changes made in the ACTION case */ | |
| 289 code: break; | |
| 290 code: | |
| 291 code: case COMMIT: | |
| 292 code: /* Things are working well, so it's now safe to make the change | |
| 293 code: permanently. Make sure that anything done here can't fail! */ | |
| 294 code: break; | |
| 295 code: } | |
| 296 code: return SNMP_ERR_NOERROR; | |
| 297 code: } | |
| 298 code: | |
| 299 code: |
