/*
 * Note: this file originally auto-generated by mib2c using
 *  : mib2c.container.conf,v 1.8 2006/07/26 15:58:26 dts12 Exp $
 */
#ifndef HRSWINSTALLEDTABLE_H
#define HRSWINSTALLEDTABLE_H

config_require(host/data_access/swinst)

/*
 * function declarations 
 */
void            init_hrSWInstalledTable(void);
void            shutdown_hrSWInstalledTable(void);
void            initialize_table_hrSWInstalledTable(void);
Netsnmp_Node_Handler hrSWInstalledTable_handler;

/*
 * column number definitions for table hrSWInstalledTable 
 */
#define COLUMN_HRSWINSTALLEDINDEX		1
#define COLUMN_HRSWINSTALLEDNAME		2
#define COLUMN_HRSWINSTALLEDID		3
#define COLUMN_HRSWINSTALLEDTYPE		4
#define COLUMN_HRSWINSTALLEDDATE		5
#endif                          /* HRSWINSTALLEDTABLE_H */
