From owner-p4-projects@FreeBSD.ORG Sat Aug 20 21:28:25 2005 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5092016A421; Sat, 20 Aug 2005 21:28:25 +0000 (GMT) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E77B116A41F for ; Sat, 20 Aug 2005 21:28:24 +0000 (GMT) (envelope-from soc-victor@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id A511C43D45 for ; Sat, 20 Aug 2005 21:28:24 +0000 (GMT) (envelope-from soc-victor@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j7KLSOrM075414 for ; Sat, 20 Aug 2005 21:28:24 GMT (envelope-from soc-victor@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j7KLSOtH075410 for perforce@freebsd.org; Sat, 20 Aug 2005 21:28:24 GMT (envelope-from soc-victor@freebsd.org) Date: Sat, 20 Aug 2005 21:28:24 GMT Message-Id: <200508202128.j7KLSOtH075410@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to soc-victor@freebsd.org using -f From: Victor Cruceru To: Perforce Change Reviews Cc: Subject: PERFORCE change 82338 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Aug 2005 21:28:26 -0000 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__ */