Date: Sat, 20 Aug 2005 21:28:24 GMT From: Victor Cruceru <soc-victor@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 82338 for review Message-ID: <200508202128.j7KLSOtH075410@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=82338 Change 82338 by soc-victor@soc-victor_82.76.158.176 on 2005/08/20 21:28:04 Step #1 instrumenting hrPrinterTable: "borrowed" some code form /usr/src/usr.sbin/lpr. A lot of cleanup needed. Affected files ... .. //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/Makefile#21 edit .. //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_printer_tbl.c#1 add .. //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_snmp.c#20 edit .. //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_snmp.h#24 edit Differences ... ==== //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/Makefile#21 (text+ko) ==== @@ -37,9 +37,10 @@ hostres_diskstorage_tbl.c \ hostres_partition_tbl.c \ hostres_network_tbl.c \ - hostres_swinstalled_tbl.c + hostres_swinstalled_tbl.c \ + hostres_printer_tbl.c -WARNS?= 6 +WARNS?= 3 #Not having NDEBUG defined will enable assertions and a lot of output on stderr CFLAGS+= -DNDEBUG XSYM= host hrStorageOther hrStorageRam hrStorageVirtualMemory \ ==== //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_snmp.c#20 (text+ko) ==== @@ -216,7 +216,13 @@ hrState_g.hrSWInstalled_tbl_age = 0; hrState_g.os_pkg_last_change = 0; hrState_g.hr_sw_installed_full_upd_tick = 0; - + + + /*data structures initialization for hrPrinterTable*/ + TAILQ_INIT(&hrState_g.hr_printer_tbl); + hrState_g._printcapdb = NULL; + + hrState_g.hr_storage_tick = 0; hrState_g.hr_fs_tick = 0; hrState_g.hr_swrun_tick = 0; @@ -225,6 +231,7 @@ hrState_g.hr_disk_storage_tick = 0; hrState_g.hr_partition_tick = 0; hrState_g.hr_network_tick = 0; + hrState_g.hr_printer_tick = 0; hrState_g.hrStorage_tbl_age = 0; hrState_g.hrFS_tbl_age = 0; @@ -232,7 +239,8 @@ hrState_g.hrDevice_tbl_age = 0; hrState_g.hrDiskStorage_age = 0; hrState_g.hrPartition_tbl_age = 0; - hrState_g.hrNetwork_tbl_age = 0; + hrState_g.hrNetwork_tbl_age = 0; + hrState_g.hrPrinter_tbl_age = 0; init_hrStorage_tbl_v(); init_hrFS_tbl_v(); @@ -246,6 +254,7 @@ init_hrNetwork_tbl_v(); init_hrSWInstalled_tbl_v(); + init_hrPrinter_tbl_v(); if ((hrState_g.devd_sock = create_devd_socket()) < 0) { HR_DPRINTF((stderr, "Failed to create the socket to devd pipe.\n")); @@ -320,6 +329,7 @@ fini_hrPartition_tbl_v(); fini_hrNetwork_tbl_v(); fini_hrSWInstalled_tbl_v(); + fini_hrPrinter_tbl_v(); hrState_g.hr_storage_tick = 0; hrState_g.hr_fs_tick = 0; @@ -375,36 +385,7 @@ return (0); } -/* -HOST RESOURCES mib module idle function -returns nothing -*/ -static -void hostres_idle_v(void) { -#if 0 - if ( (time(NULL) - hrState_g.hrStorage_tbl_age) > HR_STORAGE_TBL_REFRESH ) { - HR_DPRINTF((stderr, "%s: hrStorageTable needs refresh\n ", __func__)); - refresh_hrStorage_tbl_v(); - } - - if ( (time(NULL) - hrState_g.hrFS_tbl_age) > HR_FS_TBL_REFRESH ) { - HR_DPRINTF((stderr, "%s: hrFSTable needs refresh\n ", __func__)); - refresh_hrFS_tbl_v(); - } - if ( (time(NULL) - hrState_g.hrSWRun_tbl_age) > HR_SWRUN_TBL_REFRESH ) { - HR_DPRINTF((stderr, "%s: hrSWRunTable needs refresh\n ", __func__)); - refresh_hrSWRun_tbl_v(); - } - - if ( (time(NULL) - hrState_g.hrDevice_tbl_age) > HR_DEVICE_TBL_REFRESH ) { - HR_DPRINTF((stderr, "%s: hrDeviceTable needs refresh\n ", __func__)); - refresh_hrDevice_tbl_v(); - } - - HR_DPRINTF((stderr, "[%s] done.\n ", __func__)); -#endif -} /* HOST RESOURCES mib module dump function @@ -475,7 +456,7 @@ "This module implements the host resource mib (rfc 2790)", hostres_init, hostres_fini, - hostres_idle_v, + NULL, /*idle function, do not use it*/ hostres_dump_v, hostres_config_v, hostres_start_v, @@ -486,23 +467,6 @@ }; -/* -Next items are not implemented yet. -Once one of them is implemented it will be moved into its own C file -*/ - - - - -int op_hrPrinterTable(struct snmp_context *ctx __unused, - struct snmp_value *value __unused, - u_int sub __unused, - u_int iidx __unused, - enum snmp_op curr_op __unused) -{ - return (SNMP_ERR_NOSUCHNAME); -} - ==== //depot/projects/soc2005/bsnmp/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_snmp.h#24 (text+ko) ==== @@ -294,15 +294,7 @@ STAILQ_HEAD(partition_map_list, PartitionNameMapEntry); -enum DeviceStatus { - DS_UNKNOWN = 1, - DR_RUNNING = 2, - DS_WARNING = 3, - DS_TESTING = 4, - DS_DOWN = 5 -}; - /* * This structure is used to hold a SNMP table entry * for HOST-RESOURCES-MIB's hrNetworkTable @@ -321,6 +313,37 @@ /* * This structure is used to hold a SNMP table entry + * for HOST-RESOURCES-MIB's hrPrinterTable + */ + +struct hrPrinterTblEntry { + int32_t index; + int32_t status; + u_char detectedErrorState[2]; + TAILQ_ENTRY(hrPrinterTblEntry) link; +#define HR_PRINTER_FOUND 0x001 + uint32_t flags; + +}; +TAILQ_HEAD(printer_tbl, hrPrinterTblEntry); + + + + + +enum DeviceStatus { + DS_UNKNOWN = 1, + DR_RUNNING = 2, + DS_WARNING = 3, + DS_TESTING = 4, + DS_DOWN = 5 +}; + + + + +/* + * This structure is used to hold a SNMP table entry * for HOST-RESOURCES-MIB's hrDeviceTable */ struct hrDeviceTblEntry { @@ -513,7 +536,7 @@ partition_tbl hr_partition_tbl; /*the head of the list with hrPatitionTable's entries */ uint32_t next_hrPartition_index; /*next int available for indexing the hrPartitionTable*/ time_t hrPartition_tbl_age; - uint64_t hr_partition_tick; /*last (agent) tick when hrDeviceTable was updated */ + uint64_t hr_partition_tick; /*last (agent) tick when hrPartitionTable was updated */ /* * next items are used for hrNetworksTable @@ -522,7 +545,7 @@ struct network_tbl hr_network_tbl; /*the head of the list with hrNetworkTable's entries */ time_t hrNetwork_tbl_age; - uint64_t hr_network_tick; /*last (agent) tick when hrDeviceTable was updated */ + uint64_t hr_network_tick; /*last (agent) tick when hrNetworkTable was updated */ /* * next items are used for hrSWInstalledTable @@ -539,7 +562,17 @@ time_t hrSWInstalled_tbl_age; time_t os_pkg_last_change; - + + /* + * next items are used for hrSWInstalledTable + */ + + struct + printer_tbl hr_printer_tbl; /*the head of the list with hrPrinterTable's entries */ + time_t hrPrinter_tbl_age; + uint64_t hr_printer_tick; /*last (agent) tick when hrPrinterTable was updated */ + char ** _printcapdb; + }; /* @@ -772,5 +805,22 @@ void refresh_hrSWInstalled_tbl_v(void); + +/* + * Init the things for hrPrinterTable + */ +void init_hrPrinter_tbl_v(void); + +/* + * Finalization routine for hrPrinterTable + * It destroys the lists and frees any allocated heap memory + */ +void fini_hrPrinter_tbl_v(void); + +#define HR_PRINTER_TBL_REFRESH 7 + +void refresh_hrPrinter_tbl_v(void); + + #endif /*__HOSTRES_SNMP_H_INCLUDED__ */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200508202128.j7KLSOtH075410>