| /* |
| * Host Resources 'wrapper' interface |
| * calls the per-group interfaces from 'hr_*.h' |
| */ |
| /* Portions of this file are subject to the following copyright(s). See |
| * the Net-SNMP's COPYING file for more details and other copyrights |
| * that may apply: |
| */ |
| /* |
| * Portions of this file are copyrighted by: |
| * Copyright (C) 2007 Apple, Inc. All rights reserved. |
| * Use is subject to license terms specified in the COPYING file |
| * distributed with the Net-SNMP package. |
| */ |
| |
| config_require(host/hr_system) |
| config_require(host/hr_device) |
| config_require(host/hr_other) |
| config_require(host/hr_proc) |
| config_require(host/hr_network) |
| config_require(host/hr_print) |
| config_require(host/hr_disk) |
| config_require(host/hr_partition) |
| |
| config_version_require((host/hr_storage, 5.7, host/hrh_storage)) |
| config_version_require((host/hr_filesys, 5.7, host/hrh_filesys)) |
| |
| config_version_require((host/hr_swinst, 5.6, host/hrSWInstalledTable)) |
| config_version_require((host/hr_swrun, 5.6, host/hrSWRunTable)) |
| |
| /* add the host resources mib to the default mibs to load */ |
| config_add_mib(HOST-RESOURCES-MIB) |
| config_add_mib(HOST-RESOURCES-TYPES) |
| |
| /********************************************* |
| * |
| * A few words about the design of the Host Resources |
| * implementation - particularly as regards the hrDevice |
| * group and hrDeviceIndex. This (and hrStorageIndex) make |
| * use of the non-consecutive nature of SNMP instance identifiers. |
| * |
| * hrDeviceIndex is structured in a 'major/minor' form, |
| * with the high end indicating the type of device |
| * (following the enumerations of hrDeviceType) and the low |
| * end being used to differentiate between devices of that type. |
| * |
| * The implementation of walking through the available devices |
| * uses a pair of arrays of functions - indexed by hrDeviceType |
| * These are used to perform any initialisation needed for that |
| * type of device, and to step through the instances of that type. |
| * This latter 'get_next' routing returns the hrDeviceIndex (including |
| * the hrDeviceType major number), or -1 if there are no further |
| * instances of that type. |
| * When all devices of a particular type have been processed, the |
| * initialisation function for the next device type is called, |
| * and so on until all devices have been proceesed. |
| * |
| * Similar arrays are used to provide type-specific functions to |
| * return the "common" device information (description, ID, status |
| * and error count), and to save any internal structures needed |
| * to provide these. |
| * A final array is used to indicate whether hrDeviceIndexes are |
| * returned in a random order, or strictly increasing. In the |
| * latter case, this allows the search for a particular index to |
| * terminate as soon as the 'next' device is reached, without needing |
| * to check the rest of them. Similarly, once a particular type of |
| * device has been scanned, further types will not be examined unless |
| * a suitable index has not yet been found. |
| * |
| * The index used for hrFSIndex is also used as hrStorageIndex, |
| * for those storage areas corresponding to filestore. |
| * Additional storage areas (such as memory or swap space) are |
| * distinguished by index values greater than a defined constant. |
| * Currently these are individually defined entries, but other |
| * ranges could be implemented similarly. |
| * If hrFSIndex was re-implemented to reflect internal identifiers, |
| * it would be possible to reverse the sense of the current |
| * implementation, with non-filestore storage having indices |
| * less than a defined constant, rather than greater. |
| * |
| * |
| * Much of the detailed implementation of this group (as opposed to |
| * the implementation infrastructure outlined about) is likely to |
| * be very system-specific. |
| * The initial implementation (for HP-UX 9 and Linux) should be |
| * regarded as a 'proof of concept' example, rather than as |
| * finished, releasable code. This particularly hold for the |
| * disk device discovery code, which is gross in the extreme, |
| * and should never have seen the light of day! |
| * Hopefully this can be ripped out and given a quiet burial as |
| * soon as is decently possible. |
| * |
| * Now it's up to the rest of you to hammer this into some sort of |
| * sensible shape. |
| * Dave Shield |
| * |
| *********************************************/ |