Mercurial > flash_v2
view packages/net/snmp/agent/current/utils/mib2c/mib2c.conf @ 1777:c16341b1bac6 default tip
* Added execute permissions to files missed in conversion from CVS
| author | alexs |
|---|---|
| date | Mon, 12 Oct 2009 02:26:09 +0100 |
| parents | d2c90368aeef |
| children |
line wrap: on
line source
# # Define types of data by mib type, and translate into needed C code. # ############################################################################ # source variable typing information: include: mib2c.vartypes.conf # Begin code template section ############################################################################ # variable statemnts used in a couple of places below ############################################################################ type: code-varInits code: /* variables we may use later */ code: static long long_ret; code: static unsigned char string[SPRINT_MAX_LEN]; code: static oid objid[MAX_OID_LEN]; code: static struct counter64 c64; ############################################################################ # The .h file ############################################################################ type: code-dot-h code: //========================================================================== code: // code: // snmp/snmpagent/current/include/mibgroup/mibII/$outputName.h code: // code: // code: //========================================================================== #####ECOSGPLCOPYRIGHTBEGIN#### ## ------------------------------------------- ## This file is part of eCos, the Embedded Configurable Operating System. ## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. ## ## eCos is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free ## Software Foundation; either version 2 or (at your option) any later version. ## ## eCos is distributed in the hope that it will be useful, but WITHOUT ANY ## WARRANTY; without even the implied warranty of MERCHANTABILITY or ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## for more details. ## ## You should have received a copy of the GNU General Public License along ## with eCos; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. ## ## As a special exception, if other files instantiate templates or use macros ## or inline functions from this file, or you compile this file and link it ## with other works to produce a work based on this file, this file does not ## by itself cause the resulting work to be covered by the GNU General Public ## License. However the source code for this file must still be made available ## in accordance with section (3) of the GNU General Public License. ## ## This exception does not invalidate any other reasons why a work based on ## this file might be covered by the GNU General Public License. ## ## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. ## at http://sources.redhat.com/ecos/ecos-license/ ## ------------------------------------------- #####ECOSGPLCOPYRIGHTEND#### code: //####UCDSNMPCOPYRIGHTBEGIN#### code: // code: // ------------------------------------------- code: // code: // Portions of this software may have been derived from the UCD-SNMP code: // project, <http://ucd-snmp.ucdavis.edu/> from the University of code: // California at Davis, which was originally based on the Carnegie Mellon code: // University SNMP implementation. Portions of this software are therefore code: // covered by the appropriate copyright disclaimers included herein. code: // code: // The release used was version 4.1.2 of May 2000. \"ucd-snmp-4.1.2\" code: // ------------------------------------------- code: // code: //####UCDSNMPCOPYRIGHTEND#### code: //========================================================================== code: //#####DESCRIPTIONBEGIN#### code: // code: // Author(s): hmt code: // Contributors: hmt code: // Date: 2000-05-30 code: // Purpose: Port of UCD-SNMP distribution to eCos. code: // Description: code: // code: // code: //####DESCRIPTIONEND#### code: // code: //========================================================================== code: /******************************************************************** code: Copyright 1989, 1991, 1992 by Carnegie Mellon University code: \ code: Derivative Work - code: Copyright 1996, 1998, 1999, 2000 The Regents of the University of California code: \ code: All Rights Reserved code: \ code: Permission to use, copy, modify and distribute this software and its code: documentation for any purpose and without fee is hereby granted, code: provided that the above copyright notice appears in all copies and code: that both that copyright notice and this permission notice appear in code: supporting documentation, and that the name of CMU and The Regents of code: the University of California not be used in advertising or publicity code: pertaining to distribution of the software without specific written code: permission. code: \ code: CMU AND THE REGENTS OF THE UNIVERSITY OF CALIFORNIA DISCLAIM ALL code: WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED code: WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL CMU OR code: THE REGENTS OF THE UNIVERSITY OF CALIFORNIA BE LIABLE FOR ANY SPECIAL, code: INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING code: FROM THE LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF code: CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN code: CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. code: *********************************************************************/ code: /* This file was generated by mib2c and is intended for use as a mib module code: for the ucd-snmp snmpd agent. */ code: code: #ifndef _MIBGROUP_${OUTPUTNAME}_H code: #define _MIBGROUP_${OUTPUTNAME}_H code: code: /* we may use header_generic and header_simple_table from the util_funcs module */ code: code: config_require(util_funcs) code: code: /* function prototypes */ code: code: void init_$outputName(void); code: FindVarMethod var_$outputName; code: $variables{'code-var_table-decl'}{'processed'} code: $variables{'code-write-func-decl'}{'processed'} code: code: #endif /* _MIBGROUP_${OUTPUTNAME}_H */ ############################################################################ # The .c file, top ############################################################################ type: code-main-part code: //========================================================================== code: // code: // snmp/snmpagent/current/src/mibgroup/mibII/$outputName.c code: // code: // code: //========================================================================== #####ECOSGPLCOPYRIGHTBEGIN#### ## ------------------------------------------- ## This file is part of eCos, the Embedded Configurable Operating System. ## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. ## ## eCos is free software; you can redistribute it and/or modify it under ## the terms of the GNU General Public License as published by the Free ## Software Foundation; either version 2 or (at your option) any later version. ## ## eCos is distributed in the hope that it will be useful, but WITHOUT ANY ## WARRANTY; without even the implied warranty of MERCHANTABILITY or ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## for more details. ## ## You should have received a copy of the GNU General Public License along ## with eCos; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. ## ## As a special exception, if other files instantiate templates or use macros ## or inline functions from this file, or you compile this file and link it ## with other works to produce a work based on this file, this file does not ## by itself cause the resulting work to be covered by the GNU General Public ## License. However the source code for this file must still be made available ## in accordance with section (3) of the GNU General Public License. ## ## This exception does not invalidate any other reasons why a work based on ## this file might be covered by the GNU General Public License. ## ## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. ## at http://sources.redhat.com/ecos/ecos-license/ ## ------------------------------------------- #####ECOSGPLCOPYRIGHTEND#### code: //####UCDSNMPCOPYRIGHTBEGIN#### code: // code: // ------------------------------------------- code: // code: // Portions of this software may have been derived from the UCD-SNMP code: // project, <http://ucd-snmp.ucdavis.edu/> from the University of code: // California at Davis, which was originally based on the Carnegie Mellon code: // University SNMP implementation. Portions of this software are therefore code: // covered by the appropriate copyright disclaimers included herein. code: // code: // The release used was version 4.1.2 of May 2000. \"ucd-snmp-4.1.2\" code: // ------------------------------------------- code: // code: //####UCDSNMPCOPYRIGHTEND#### code: //========================================================================== code: //#####DESCRIPTIONBEGIN#### code: // code: // Author(s): hmt code: // Contributors: hmt code: // Date: 2000-05-30 code: // Purpose: Port of UCD-SNMP distribution to eCos. code: // Description: code: // code: // code: //####DESCRIPTIONEND#### code: // code: //========================================================================== code: /******************************************************************** code: Copyright 1989, 1991, 1992 by Carnegie Mellon University code: \ code: Derivative Work - code: Copyright 1996, 1998, 1999, 2000 The Regents of the University of California code: \ code: All Rights Reserved code: \ code: Permission to use, copy, modify and distribute this software and its code: documentation for any purpose and without fee is hereby granted, code: provided that the above copyright notice appears in all copies and code: that both that copyright notice and this permission notice appear in code: supporting documentation, and that the name of CMU and The Regents of code: the University of California not be used in advertising or publicity code: pertaining to distribution of the software without specific written code: permission. code: \ code: CMU AND THE REGENTS OF THE UNIVERSITY OF CALIFORNIA DISCLAIM ALL code: WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED code: WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL CMU OR code: THE REGENTS OF THE UNIVERSITY OF CALIFORNIA BE LIABLE FOR ANY SPECIAL, code: INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING code: FROM THE LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF code: CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN code: CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. code: *********************************************************************/ code: /* This file was generated by mib2c and is intended for use as a mib module code: for the ucd-snmp snmpd agent. */ code: code: /* This should always be included first before anything else */ code: #include <config.h> code: code: /* minimal include directives */ code: #include \"mibincl.h\" code: #include \"mibgroup/util_funcs.h\" code: #include \"mibgroup/mibII/$outputName.h\" code: code: /* code: * ${outputName}_variables_oid: code: * this is the top level oid that we want to register under. This code: * is essentially a prefix, with the suffix appearing in the code: * variable below. code: */ code: code: oid ${outputName}_variables_oid[] = { $commaoid }; code: code: /* code: * variable$varlen ${outputName}_variables: code: * this variable defines function callbacks and type return information code: * for the $outputName mib section code: */ code: code: struct variable$varlen ${outputName}_variables[] = { code: /* magic number , variable type , ro/rw , callback fn , L, oidsuffix */ code: $variables{'variable-structure-info'}{'processed'} code: }; code: /* (L = length of the oidsuffix) */ code: code: /* code: * init_$outputName(): code: * Initialization routine. This is called when the agent starts up. code: * At a minimum, registration of your variables should take place here. code: */ code: void init_$outputName(void) { code: code: /* register ourselves with the agent to handle our mib tree */ code: REGISTER_MIB(\"$outputName\", ${outputName}_variables, variable$varlen,\ code: ${outputName}_variables_oid); code: code: /* place any other initialization junk you need here */ code: } code: code: /* code: * var_$outputName(): code: * This function is called every time the agent gets a request for code: * a scalar variable that might be found within your mib section code: * registered above. It is up to you to do the right thing and code: * return the correct value. code: * You should also correct the value of \"var_len\" if necessary. code: * code: * Please see the documentation for more information about writing code: * module extensions, and check out the examples in the examples code: * and mibII directories. code: */ code: unsigned char * code: var_$outputName(struct variable *vp, code: oid *name, code: size_t *length, code: int exact, code: size_t *var_len, code: WriteMethod **write_method) code: { code: code: $variables{'code-varInits'}{'code'} code: code: if (header_generic(vp,name,length,exact,var_len,write_method) code: == MATCH_FAILED ) code: return NULL; code: code: /* code: * this is where we do the value assignments for the mib results. code: */ code: switch(vp->magic) {\n\n code: $variables{$outputName}{'code-case-statements'}{'processed'} code: default: code: ERROR_MSG(\"\"); code: } code: return NULL; code: } code: code: $variables{'code-var_table'}{'processed'} code: code: $variables{'code-write-func'}{'processed'} ############################################################################ # var_ function for tables, which is handled specially and used above # # Note: $vtable is set to the table name in the processtable loop. ############################################################################ # # header file defs first # type: code-var_table-decl processtable: code-var_table-decl code: FindVarMethod var_$vtable; # # Code code per table # type: code-var_table processtable: code-var_table code: /* code: * var_$vtable(): code: * Handle this table separately from the scalar value case. code: * The workings of this are basically the same as for var_$outputName above. code: */ code: unsigned char * code: var_$vtable(struct variable *vp, code: oid *name, code: size_t *length, code: int exact, code: size_t *var_len, code: WriteMethod **write_method) code: { code: code: $variables{'code-varInits'}{'code'} code: code: /* code: * This assumes that the table is a \'simple\' table. code: * See the implementation documentation for the meaning of this. code: * You will need to provide the correct value for the TABLE_SIZE parameter code: * code: * If this table does not meet the requirements for a simple table, code: * you will need to provide the replacement code yourself. code: * Mib2c is not smart enough to write this for you. code: * Again, see the implementation documentation for what is required. code: */ code: if (header_simple_table(vp,name,length,exact,var_len,write_method, TABLE_SIZE) code: == MATCH_FAILED ) code: return NULL; code: code: /* code: * this is where we do the value assignments for the mib results. code: */ code: switch(vp->magic) {\n\n code: $variables{$vtable}{'code-case-statements'}{'processed'} code: default: code: ERROR_MSG(\"\"); code: } code: return NULL; code: } ############################################################################ # case statement sections ############################################################################ type: code-case-statements process: code-case-statements skipif: $mib->{'access'} =~ /NoAccess/ code: case $NAME: code: " . (($mib->{'access'} =~ /ReadWrite|WriteOnly|Create/) ? "*write_method = write_$mib->{label};" : "") . " code: $variables{$mib->{'type'}}{'case'} code: ############################################################################ # storage structure information ############################################################################ type: variable-structure-info process: variable-structure-info skipif: $mib->{'access'} =~ /NoAccess/ code: " . sprintf("#define %-20s $count", $NAME) . " code: " . sprintf(" { %-20s, %-14s, %-6.6s, %s, %d, { %s } },", $NAME, $variables{$mib->{'type'}}{'asnType'}, $accessToUCD{$mib->{'access'}}, "var_$vroutine", $depth-1, $subid) . " ############################################################################ # write function defitition, also appended to the end of the .c file. ############################################################################ # # Header info: declair write functions for set processing # process: code-write-func-decl type: code-write-func-decl skipif: $mib->{'access'} !~ /Write|Create/ code: WriteMethod write_$name; # # C code # type: code-write-func process: code-write-func skipif: $mib->{'access'} !~ /Write|Create/ code: int code: write_$name(int action, code: u_char *var_val, code: u_char var_val_type, code: size_t var_val_len, code: u_char *statP, code: oid *name, code: size_t name_len) code: { code: $variables{$mib->{'type'}}{writeInit} code: int size; code: code: switch ( action ) { code: case RESERVE1: code: if (var_val_type != $variables{$mib->{'type'}}{asnType}){ code: fprintf(stderr, \"write to $name not $variables{$mib->{'type'}}{asnType}\\n\"); code: return SNMP_ERR_WRONGTYPE; code: } code: if (var_val_len > sizeof($variables{$mib->{'type'}}{variable})){ code: fprintf(stderr,\"write to $name: bad length\\n\"); code: return SNMP_ERR_WRONGLENGTH; code: } code: break; code: code: case RESERVE2: code: size = var_val_len; code: $variables{$mib->{'type'}}{variable} = ($variables{$mib->{'type'}}{cast}) var_val; code: code: break; code: code: case FREE: code: /* Release any resources that have been allocated */ code: break; code: code: case ACTION: code: /* The variable has been stored in $variables{$mib->{'type'}}{variable} for code: you to use, and you have just been asked to do something with code: it. Note that anything done here must be reversable in the UNDO case */ code: break; code: code: case UNDO: code: /* Back out any changes made in the ACTION case */ code: break; code: code: case COMMIT: code: /* Things are working well, so it's now safe to make the change code: permanently. Make sure that anything done here can't fail! */ code: break; code: } code: return SNMP_ERR_NOERROR; code: } code: code:
