diff --git a/net-mgmt/net-snmp-devel/Makefile b/net-mgmt/net-snmp-devel/Makefile index 7ed0ecf9652c..3a9fa1edcb21 100644 --- a/net-mgmt/net-snmp-devel/Makefile +++ b/net-mgmt/net-snmp-devel/Makefile @@ -1,267 +1,267 @@ # New ports collection makefile for: ucd-snmp # Date created: 26 June 1996 # Whom: gpalmer # # $FreeBSD$ # PORTNAME= snmp PORTVERSION= 5.1.1 -PORTREVISION= 2 +PORTREVISION= 3 PKGNAMEPREFIX= net- CATEGORIES= net-mgmt ipv6 MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} MASTER_SITE_SUBDIR= net-snmp DISTNAME= ${PKGNAMEPREFIX}${PORTNAME}-${PORTVERSION} .if defined(WITH_INETADDRESS_HACK) EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-snmplib::mib.c .endif .if !defined(WITH_TKMIB) EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-local:Makefile.in .endif MAINTAINER= kuriyama@FreeBSD.org COMMENT= An extendable SNMP implementation .if defined(WITH_TKMIB) RUN_DEPEND= ${SITE_PERL}/${PERL_ARCH}/Tk.pm:${PORTSDIR}/x11-toolkits/p5-Tk .endif USE_REINPLACE= yes USE_AUTOCONF_VER=257 USE_LIBTOOL_VER=13 USE_RC_SUBR= yes INSTALLS_SHLIB= yes LIBTOOLFLAGS= --disable-ltlibs --release-ignore NO_LATEST_LINK= yes .if !defined(WITHOUT_PERL) USE_PERL5= yes .endif CONFIGURE_ENV+= PERLPROG="${PERL}" PSPROG="${PS_CMD}" SED="${SED}" CONFIGURE_ARGS+=--enable-shared --enable-internal-md5 \ --with-mib-modules="${_NET_SNMP_MIB_MODULES}" \ --with-default-snmp-version="${DEFAULT_SNMP_VERSION}" \ --with-sys-contact="${NET_SNMP_SYS_CONTACT}" \ --with-sys-location="${NET_SNMP_SYS_LOCATION}" \ --with-logfile="${NET_SNMP_LOGFILE}" \ --with-persistent-directory="${NET_SNMP_PERSISTENTDIR}" \ --with-gnu-ld --with-libwrap --with-libs="-lkvm -ldevstat" .if defined(BATCH) CONFIGURE_ARGS+=--with-defaults .endif .if !defined(WITHOUT_DUMMY_VALUES) CONFIGURE_ARGS+=--with-dummy-values .endif .include .if defined(WITHOUT_PERL) PLIST_SUB+= WITH_PERL="@comment " .else CONFIGURE_ARGS+=--enable-embedded-perl --with-perl-modules PLIST_SUB+= WITH_PERL="" .endif .if defined(WITH_TKMIB) PLIST_SUB+= WITH_TKMIB="" .else PLIST_SUB+= WITH_TKMIB="@comment " .endif .if ${OSVERSION} >= 400014 && !defined(WITHOUT_IPV6) CONFIGURE_ARGS+=--enable-ipv6 # --with-transport="UDPIPv6 TCPIPv6" --with-modules=mibII/ipv6" PLIST_SUB+= WITH_IPV6="" .else PLIST_SUB+= WITH_IPV6="@comment " .endif SHLIB_VERSION= 6 PLIST_SUB+= SHLIB_VERSION=${SHLIB_VERSION} LIBTOOL_SUB= LTCONFIG=${LIBTOOL_SHAREDIR}/ltconfig${LIBTOOL_VERSION} \ LTMAIN=${LIBTOOL_SHAREDIR}/ltmain.sh SCRIPTS_SUB= PREFIX=${PREFIX} PERL=${PERL} RC_SCRIPTS_SUB= PREFIX=${PREFIX} RC_SUBR=${RC_SUBR} DEFAULT_SNMP_VERSION?= 3 NET_SNMP_SYS_CONTACT?= nobody@nowhere.invalid NET_SNMP_SYS_LOCATION?= somewhere NET_SNMP_LOGFILE?= /var/log/snmpd.log NET_SNMP_PERSISTENTDIR?=/var/net-snmp NET_SNMP_MIB_MODULES?= ${NET_SNMP_MIB_MODULE_LIST} NET_SNMP_MIB_MODULE_LIST=host disman/event-mib smux mibII/mta_sendmail mibII/tcpTable ucd-snmp/diskio _NET_SNMP_MIB_MODULES= .for module1 in ${NET_SNMP_MIB_MODULE_LIST} _module1=${module1} _define= false . for module2 in ${NET_SNMP_MIB_MODULES} _module2=${module2} . if ${_module1} == ${_module2} _define= true . endif . endfor . if ${_define} == true _NET_SNMP_MIB_MODULES+= ${module1} PLIST_SUB+= WITH_${module1:C|.*/||:U}="" . else PLIST_SUB+= WITH_${module1:C|.*/||:U}="@comment " . endif .endfor MAN1= mib2c.1 \ snmpbulkget.1 snmpbulkwalk.1 snmpcmd.1 snmpconf.1 \ snmpdelta.1 snmpdf.1 snmpget.1 snmpgetnext.1 snmpinform.1 \ snmpnetstat.1 snmpset.1 snmpstatus.1 snmptable.1 snmptest.1 \ snmptranslate.1 snmptrap.1 snmpusm.1 snmpvacm.1 snmpwalk.1 MAN3= add_mibdir.3 add_module_replacement.3 default_store.3 \ get_module_node.3 init_mib.3 init_mib_internals.3 mib_api.3 \ netsnmp_agent.3 netsnmp_bulk_to_next.3 netsnmp_debug.3 \ netsnmp_example_scalar_int.3 netsnmp_handler.3 \ netsnmp_instance.3 netsnmp_library.3 \ netsnmp_mib_handler_methods.3 netsnmp_mib_utilities.3 \ netsnmp_mode_end_call.3 netsnmp_multiplexer.3 \ netsnmp_old_api.3 netsnmp_read_only.3 netsnmp_scalar.3 \ netsnmp_serialize.3 netsnmp_table.3 netsnmp_table_array.3 \ netsnmp_table_data.3 netsnmp_table_dataset.3 \ netsnmp_table_iterator.3 netsnmp_todo.3 netsnmp_watcher.3 \ print_description.3 print_mib.3 print_objid.3 print_value.3 \ print_variable.3 read_all_mibs.3 read_config.3 read_mib.3 \ read_module.3 read_module_node.3 read_objid.3 shutdown_mib.3 \ snmp_agent_api.3 snmp_alarm.3 snmp_api.3 \ snmp_api_errstring.3 snmp_close.3 \ snmp_error.3 snmp_free_pdu.3 snmp_open.3 snmp_perror.3 \ snmp_read.3 snmp_select_info.3 \ snmp_send.3 snmp_sess_api.3 snmp_sess_async_send.3 \ snmp_sess_close.3 snmp_sess_error.3 snmp_sess_init.3 \ snmp_sess_open.3 snmp_sess_perror.3 \ snmp_sess_read.3 snmp_sess_select_info.3 \ snmp_sess_send.3 snmp_sess_session.3 snmp_sess_timeout.3 \ snmp_set_mib_warnings.3 snmp_set_save_descriptions.3 \ snmp_timeout.3 snmp_trap_api.3 \ netsnmp_Container_iterator.3 netsnmp_baby_steps.3 \ netsnmp_cache_handler.3 netsnmp_container.3 \ netsnmp_deprecated.3 netsnmp_iterator_info_s.3 \ netsnmp_leaf.3 \ netsnmp_row_merge.3 netsnmp_scalar_group_group.3 \ netsnmp_stash_cache.3 netsnmp_utilities.3 .if !defined(WITHOUT_PERL) MAN3PERL= NetSNMP::ASN.3 NetSNMP::OID.3 NetSNMP::agent.3 \ NetSNMP::agent::default_store.3 \ NetSNMP::default_store.3 \ NetSNMP::netsnmp_request_infoPtr.3 SNMP.3 MAN3PERLPREFIX= ${PREFIX}/lib/perl5/${PERL_VERSION} _MANPAGES+= ${MAN3PERL:S%^%${MAN3PERLPREFIX}/man/man3/%} .endif MAN5= snmp.conf.5 snmp_config.5 snmpd.conf.5 \ snmptrapd.conf.5 variables.5 MAN8= snmpd.8 snmptrapd.8 BIN_FILES= snmpbulkwalk snmpget snmpgetnext snmpnetstat snmpset \ snmpstatus snmptest snmptranslate snmptrap snmpwalk SBIN_FILES= snmpd snmptrapd STARTUP_DIR= ${PREFIX}/etc/rc.d STARTUP_FILES= snmpd.sh snmptrapd.sh SCRIPT_FILES= snmpcheck.def mib2c fixproc ipf-mod.pl snmpconf \ traptoemail .if defined(WITH_TKMIB) SCRIPT_FILES+= tkmib .endif DOC_FILES= AGENT.txt COPYING FAQ NEWS README \ README.agentx README.krb5 README.snmpv3 README.thread \ agent/mibgroup/README.smux PS_CMD?= /bin/ps pre-everything:: @${ECHO_MSG} @${ECHO_MSG} "You may use the following build options:" @${ECHO_MSG} @${ECHO_MSG} "WITH_INETADDRESS_HACK=yes builds with the inetaddress hack" @${ECHO_MSG} "WITH_TKMIB=yes Install a graphical Perl/Tk/SNMP based mib browser" @${ECHO_MSG} "WITHOUT_DUMMY_VALUES=yes Provide 'placeholder' dummy values where" @${ECHO_MSG} " the necessary information is not available." @${ECHO_MSG} "WITHOUT_PERL=yes Install the perl modules along with the rest" @${ECHO_MSG} " of the net-snmp toolkit." @${ECHO_MSG} "WITHOUT_IPV6=yes Disable IPv6." @${ECHO_MSG} @${ECHO_MSG} "DEFAULT_SNMP_VERSION=\"3\" Default version of SNMP to use." @${ECHO_MSG} "NET_SNMP_SYS_CONTACT=\"${NET_SNMP_SYS_CONTACT}\"" @${ECHO_MSG} " Default system contact." @${ECHO_MSG} "NET_SNMP_SYS_LOCATION=\"${NET_SNMP_SYS_LOCATION}\"" @${ECHO_MSG} " Default system location." @${ECHO_MSG} "NET_SNMP_LOGFILE=\"${NET_SNMP_LOGFILE}\"" @${ECHO_MSG} " Default log file location for snmpd." @${ECHO_MSG} "NET_SNMP_PERSISTENTDIR=\"${NET_SNMP_PERSISTENTDIR}\"" @${ECHO_MSG} " Default directory for persistent data storage." @${ECHO_MSG} "NET_SNMP_MIB_MODULES=\"${NET_SNMP_MIB_MODULE_LIST}\"" @${ECHO_MSG} " Optional mib modules that can be built into the" @${ECHO_MSG} " agent" @${ECHO_MSG} post-patch: patch-autoconf patch-script-files patch-startup-files patch-autoconf: @${REINPLACE_CMD} ${LIBTOOL_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \ ${WRKSRC}/aclocal.m4 patch-script-files: .for file in ${SCRIPT_FILES} @${REINPLACE_CMD} ${SCRIPTS_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \ ${WRKSRC}/local/${file} .endfor patch-startup-files: .for file in ${STARTUP_FILES} @${SED} ${RC_SCRIPTS_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \ ${FILESDIR}/${file}.sample > ${WRKDIR}/${file} .endfor post-configure: @${FIND} ${WRKSRC} -name Makefile | \ ${XARGS} ${REINPLACE_CMD} -E -e '/^INSTALL[ ]+=/s|$$| -m 755|' .if !defined(WITHOUT_PERL) post-build: ${FIND} ${WRKSRC}/perl -name Makefile | \ ${XARGS} ${REINPLACE_CMD} -E -e '\ s!^(PREFIX) = .*!\1 = ${PREFIX}!; \ s!^(INSTALLMAN3DIR) = .*!\1 = ${MAN3PERLPREFIX}/man/man3!; \ s! doc_(perl|site|\$$\(INSTALLDIRS\))_install$$!!; \ ' .endif post-install: strip-files install-startup-files install-doc-files display-message strip-files: @cd ${PREFIX}/bin; ${STRIP_CMD} ${BIN_FILES} @cd ${PREFIX}/sbin; ${STRIP_CMD} ${SBIN_FILES} install-startup-files: .for file in ${STARTUP_FILES} @${INSTALL_SCRIPT} ${WRKDIR}/${file} ${STARTUP_DIR} .endfor install-doc-files: .if !defined(NOPORTDOCS) @${MKDIR} ${DOCSDIR} . for file in ${DOC_FILES} @${INSTALL_DATA} ${WRKSRC}/${file} ${DOCSDIR} . endfor .endif display-message: @${ECHO_MSG} @${CAT} ${PKGMESSAGE} # Maintainer's note: # Don't forget to bump library version in these ports. # lang/php4,lang/php5,net-mgmt/braa,net-mgmt/docsis,net/ethereal,net-mgmt/mbrowse,net/quagga,net/tethereal,net-mgmt/zabbix,security/libfwbuilder .include diff --git a/net-mgmt/net-snmp-devel/files/patch-hr_storage.c b/net-mgmt/net-snmp-devel/files/patch-hr_storage.c index b7c0a845fee1..1f7ae7a5e969 100644 --- a/net-mgmt/net-snmp-devel/files/patch-hr_storage.c +++ b/net-mgmt/net-snmp-devel/files/patch-hr_storage.c @@ -1,220 +1,223 @@ --- agent/mibgroup/host/hr_storage.c.orig Thu Jan 29 22:53:59 2004 -+++ agent/mibgroup/host/hr_storage.c Tue May 4 17:06:38 2004 ++++ agent/mibgroup/host/hr_storage.c Wed May 5 16:08:06 2004 @@ -148,7 +148,7 @@ #define HRFS_mount mnt_mountp #define HRFS_statfs statvfs -#elif defined(HAVE_STATVFS) +#elif defined(HAVE_STATVFS) && defined(HAVE_MNTENT) extern struct mntent *HRFS_entry; extern int fscount; @@ -193,6 +193,10 @@ void sol_get_swapinfo(int *, int *); #endif +#if defined(__FreeBSD__) && __FreeBSD_version >= 500024 -+void collect_mbuf(long *long_mbuf, long *long_mbuf_max); ++void collect_mbuf(long *long_mbuf, long *long_mbufc); +#endif + #define HRSTORE_MEMSIZE 1 #define HRSTORE_INDEX 2 #define HRSTORE_TYPE 3 -@@ -567,7 +571,7 @@ +@@ -431,7 +435,8 @@ + NULL, + "Memory Buffers", /* HRS_TYPE_MBUF */ + "Real Memory", /* HRS_TYPE_MEM */ +- "Swap Space" /* HRS_TYPE_SWAP */ ++ "Swap Space", /* HRS_TYPE_SWAP */ ++ "Memory Buffer Clusters" /* HRS_TYPE_MBUFCLUSTER */ + }; + + +@@ -546,6 +551,7 @@ + storage_type_id[storage_type_len - 1] = 3; /* Virtual Mem */ + break; + case HRS_TYPE_MBUF: ++ case HRS_TYPE_MBUFCLUSTER: + storage_type_id[storage_type_len - 1] = 1; /* Other */ + break; + default: +@@ -567,7 +573,7 @@ } case HRSTORE_UNITS: if (store_idx > HRS_TYPE_FIXED_MAX) -#if STRUCT_STATVFS_HAS_F_FRSIZE +#if defined(STRUCT_STATVFS_HAS_F_FRSIZE) && defined(HAVE_MNTENT) long_return = stat_buf.f_frsize; #else long_return = stat_buf.f_bsize; -@@ -631,7 +635,7 @@ +@@ -631,7 +637,7 @@ case HRS_TYPE_SWAP: long_return = memory_totals.t_vm; break; -#else /* !linux && !solaris2 && !hpux10 && !hpux11 && ... */ +#else case HRS_TYPE_MEM: long_return = physmem; break; -@@ -641,6 +645,8 @@ +@@ -641,6 +647,8 @@ #endif long_return = 0; break; +#endif /* linux || solaris2 || hpux10 || hpux11 || ... */ +#if !defined(linux) && !defined(solaris2) && !defined(hpux10) && !defined(hpux11) case HRS_TYPE_MBUF: #if HAVE_SYS_POOL_H long_return = 0; -@@ -650,7 +656,18 @@ +@@ -650,7 +658,26 @@ i++) long_return += mbstat.m_mtypes[i]; #elif defined(MBSTAT_SYMBOL) +#if !defined(__FreeBSD__) || __FreeBSD_version < 500021 long_return = mbstat.m_mbufs; +#elif defined(__FreeBSD__) && __FreeBSD_version < 500024 -+ /* mbuf stats disabled */ -+ return NULL; ++ /* mbuf stats disabled */ ++ return NULL; +#elif defined(__FreeBSD__) -+ collect_mbuf((long*)NULL, (long*)&long_return); -+ break; ++ { ++ size_t mlen = sizeof(int); ++ int nmbufs; ++ if (sysctlbyname("kern.ipc.nmbufs", &nmbufs, &mlen, ++ NULL, 0) < 0) { ++ return NULL; ++ } ++ long_return = nmbufs; ++ break; ++ } +#else -+ /* XXX TODO: implement new method */ -+ return NULL; ++ /* XXX TODO: implement new method */ ++ return NULL; +#endif /* __FreeBSD__ */ #elif defined(NO_DUMMY_VALUES) goto try_next; #else -@@ -708,7 +725,18 @@ +@@ -658,6 +685,18 @@ + #endif + break; + #endif /* !linux && !solaris2 && !hpux10 && !hpux11 && ... */ ++#if defined(__FreeBSD__) && __FreeBSD_version >= 500024 ++ case HRS_TYPE_MBUFCLUSTER: { ++ size_t mlen = sizeof(int); ++ int nmbclusters; ++ if (sysctlbyname("kern.ipc.nmbclusters", &nmbclusters, &mlen, ++ NULL, 0) < 0) { ++ return NULL; ++ } ++ long_return = nmbclusters; ++ break; ++ } ++#endif + default: + #if NO_DUMMY_VALUES + goto try_next; +@@ -708,7 +747,18 @@ * mbpool.pr_size + (mclpool.pr_nget - mclpool.pr_nput) * mclpool.pr_size; #elif defined(MBSTAT_SYMBOL) +#if !defined(__FreeBSD__) || __FreeBSD_version < 500021 long_return = mbstat.m_clusters - mbstat.m_clfree; /* unlikely, but... */ +#elif defined(__FreeBSD__) && __FreeBSD_version < 500024 + /* mbuf stats disabled */ + return NULL; +#elif defined(__FreeBSD__) + collect_mbuf((long*)&long_return, (long*)NULL); + break; +#else + /* XXX not supported. */ + return NULL; +#endif #elif defined(NO_DUMMY_VALUES) goto try_next; #else -@@ -853,3 +881,132 @@ +@@ -716,6 +766,11 @@ + #endif + break; + #endif /* !linux && !solaris2 && !hpux10 && !hpux11 && ... */ ++#if defined(__FreeBSD__) && __FreeBSD_version >= 500024 ++ case HRS_TYPE_MBUFCLUSTER: ++ collect_mbuf(NULL, &long_return); ++ break; ++#endif + default: + #if NO_DUMMY_VALUES + goto try_next; +@@ -853,3 +908,78 @@ *usedP = ainfo.ani_resv; } #endif /* solaris2 */ + +#if defined(__FreeBSD__) && __FreeBSD_version >= 500024 +void -+collect_mbuf(long *long_mbuf, long *long_mbuf_max) ++collect_mbuf(long *long_mbuf, long *long_mbufc) +{ -+ int i, j, nmbufs, nmbclusters, page_size, num_objs; -+ short nmbtypes; ++ int i, j, num_objs; + size_t mlen; -+ long *mbtypes = NULL; -+ u_int mbuf_hiwm, clust_hiwm, mbuf_lowm, clust_lowm; -+ u_long totspace[2], totused[2]; ++ u_long totused[2]; + u_long totnum, totfree; + struct mbstat mbstat; + struct mbpstat **mbpstat = NULL; -+ int *seen = NULL; + + if (sysctlbyname("kern.ipc.mb_statpcpu", NULL, &mlen, NULL, 0) < 0) { + warn("sysctl: retrieving mb_statpcpu len"); + goto err; + } + num_objs = (int)(mlen / sizeof(struct mbpstat)); + if ((mbpstat = calloc(num_objs, sizeof(struct mbpstat *))) == NULL) { + warn("calloc: cannot allocate memory for mbpstats pointers"); + goto err; + } + if ((mbpstat[0] = calloc(num_objs, sizeof(struct mbpstat))) == NULL) { + warn("calloc: cannot allocate memory for mbpstats"); + goto err; + } + + if (sysctlbyname("kern.ipc.mb_statpcpu", mbpstat[0], &mlen, NULL, 0) < 0) { + warn("sysctl: retrieving mb_statpcpu"); + goto err; + } + mlen = sizeof mbstat; + if (sysctlbyname("kern.ipc.mbstat", &mbstat, &mlen, NULL, 0) < 0) { + warn("sysctl: retrieving mbstat"); + goto err; + } -+ mlen = sizeof(int); -+ if (sysctlbyname("kern.ipc.nmbclusters", &nmbclusters, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving nmbclusters"); -+ goto err; -+ } -+ mlen = sizeof(int); -+ if (sysctlbyname("kern.ipc.nmbufs", &nmbufs, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving nmbufs"); -+ goto err; -+ } -+ mlen = sizeof(u_int); -+ if (sysctlbyname("kern.ipc.mbuf_hiwm", &mbuf_hiwm, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving mbuf_hiwm"); -+ goto err; -+ } -+ mlen = sizeof(u_int); -+ if (sysctlbyname("kern.ipc.clust_hiwm", &clust_hiwm, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving clust_hiwm"); -+ goto err; -+ } -+ mlen = sizeof(u_int); -+ if (sysctlbyname("kern.ipc.mbuf_lowm", &mbuf_lowm, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving mbuf_lowm"); -+ goto err; -+ } -+ mlen = sizeof(u_int); -+ if (sysctlbyname("kern.ipc.clust_lowm", &clust_lowm, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving clust_lowm"); -+ goto err; -+ } -+ mlen = sizeof(int); -+ if (sysctlbyname("hw.pagesize", &page_size, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving hw.pagesize"); -+ goto err; -+ } -+ -+ nmbtypes = mbstat.m_numtypes; -+ if ((seen = calloc(nmbtypes, sizeof(*seen))) == NULL) { -+ warn("calloc: cannot allocate memory for mbtypes seen flag"); -+ goto err; -+ } -+ if ((mbtypes = calloc(nmbtypes, sizeof(long *))) == NULL) { -+ warn("calloc: cannot allocate memory for mbtypes"); -+ goto err; -+ } + + for (i = 0; i < num_objs; i++) + mbpstat[i] = mbpstat[0] + i; + -+#undef MSIZE -+#define MSIZE (mbstat.m_msize) -+#undef MCLBYTES -+#define MCLBYTES (mbstat.m_mclbytes) +#define GENLST (num_objs - 1) + + totnum = mbpstat[GENLST]->mb_mbbucks * mbstat.m_mbperbuck; + totfree = mbpstat[GENLST]->mb_mbfree; -+ for (j = 1; j < nmbtypes; j++) -+ mbtypes[j] += mbpstat[GENLST]->mb_mbtypes[j]; -+ totspace[0] = mbpstat[GENLST]->mb_mbbucks * mbstat.m_mbperbuck * MSIZE; + for (i = 0; i < (num_objs - 1); i++) { + if (mbpstat[i]->mb_active == 0) + continue; -+ totspace[0] += mbpstat[i]->mb_mbbucks*mbstat.m_mbperbuck*MSIZE; + totnum += mbpstat[i]->mb_mbbucks * mbstat.m_mbperbuck; + totfree += mbpstat[i]->mb_mbfree; -+ for (j = 1; j < nmbtypes; j++) -+ mbtypes[j] += mbpstat[i]->mb_mbtypes[j]; + } + totused[0] = totnum - totfree; ++ totnum = mbpstat[GENLST]->mb_clbucks * mbstat.m_clperbuck; ++ totfree = mbpstat[GENLST]->mb_clfree; ++ for (i = 0; i < (num_objs - 1); i++) { ++ if (mbpstat[i]->mb_active == 0) ++ continue; ++ totnum += mbpstat[i]->mb_clbucks * mbstat.m_clperbuck; ++ totfree += mbpstat[i]->mb_clfree; ++ } ++ totused[1] = totnum - totfree; + + if (long_mbuf) { + *long_mbuf = totused[0]; + } -+ if (long_mbuf_max) { -+ *long_mbuf_max = nmbufs; ++ if (long_mbufc) { ++ *long_mbufc = totused[1]; + } + + err: -+ if (mbtypes != NULL) -+ free(mbtypes); -+ if (seen != NULL) -+ free(seen); + if (mbpstat != NULL) { + if (mbpstat[0] != NULL) + free(mbpstat[0]); + free(mbpstat); + } +} +#endif diff --git a/net-mgmt/net-snmp-devel/files/patch-hr_storage.h b/net-mgmt/net-snmp-devel/files/patch-hr_storage.h new file mode 100644 index 000000000000..a14eb9f1043c --- /dev/null +++ b/net-mgmt/net-snmp-devel/files/patch-hr_storage.h @@ -0,0 +1,11 @@ +--- agent/mibgroup/host/hr_storage.h.orig Tue Feb 25 22:17:48 2003 ++++ agent/mibgroup/host/hr_storage.h Wed May 5 15:27:40 2004 +@@ -12,6 +12,7 @@ + #define HRS_TYPE_MBUF 1 + #define HRS_TYPE_MEM 2 + #define HRS_TYPE_SWAP 3 +-#define HRS_TYPE_FIXED_MAX 3 /* the largest fixed type */ ++#define HRS_TYPE_MBUFCLUSTER 4 ++#define HRS_TYPE_FIXED_MAX 4 /* the largest fixed type */ + + #endif /* _MIBGROUP_HRSTORAGE_H */ diff --git a/net-mgmt/net-snmp/Makefile b/net-mgmt/net-snmp/Makefile index 7ed0ecf9652c..3a9fa1edcb21 100644 --- a/net-mgmt/net-snmp/Makefile +++ b/net-mgmt/net-snmp/Makefile @@ -1,267 +1,267 @@ # New ports collection makefile for: ucd-snmp # Date created: 26 June 1996 # Whom: gpalmer # # $FreeBSD$ # PORTNAME= snmp PORTVERSION= 5.1.1 -PORTREVISION= 2 +PORTREVISION= 3 PKGNAMEPREFIX= net- CATEGORIES= net-mgmt ipv6 MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} MASTER_SITE_SUBDIR= net-snmp DISTNAME= ${PKGNAMEPREFIX}${PORTNAME}-${PORTVERSION} .if defined(WITH_INETADDRESS_HACK) EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-snmplib::mib.c .endif .if !defined(WITH_TKMIB) EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-local:Makefile.in .endif MAINTAINER= kuriyama@FreeBSD.org COMMENT= An extendable SNMP implementation .if defined(WITH_TKMIB) RUN_DEPEND= ${SITE_PERL}/${PERL_ARCH}/Tk.pm:${PORTSDIR}/x11-toolkits/p5-Tk .endif USE_REINPLACE= yes USE_AUTOCONF_VER=257 USE_LIBTOOL_VER=13 USE_RC_SUBR= yes INSTALLS_SHLIB= yes LIBTOOLFLAGS= --disable-ltlibs --release-ignore NO_LATEST_LINK= yes .if !defined(WITHOUT_PERL) USE_PERL5= yes .endif CONFIGURE_ENV+= PERLPROG="${PERL}" PSPROG="${PS_CMD}" SED="${SED}" CONFIGURE_ARGS+=--enable-shared --enable-internal-md5 \ --with-mib-modules="${_NET_SNMP_MIB_MODULES}" \ --with-default-snmp-version="${DEFAULT_SNMP_VERSION}" \ --with-sys-contact="${NET_SNMP_SYS_CONTACT}" \ --with-sys-location="${NET_SNMP_SYS_LOCATION}" \ --with-logfile="${NET_SNMP_LOGFILE}" \ --with-persistent-directory="${NET_SNMP_PERSISTENTDIR}" \ --with-gnu-ld --with-libwrap --with-libs="-lkvm -ldevstat" .if defined(BATCH) CONFIGURE_ARGS+=--with-defaults .endif .if !defined(WITHOUT_DUMMY_VALUES) CONFIGURE_ARGS+=--with-dummy-values .endif .include .if defined(WITHOUT_PERL) PLIST_SUB+= WITH_PERL="@comment " .else CONFIGURE_ARGS+=--enable-embedded-perl --with-perl-modules PLIST_SUB+= WITH_PERL="" .endif .if defined(WITH_TKMIB) PLIST_SUB+= WITH_TKMIB="" .else PLIST_SUB+= WITH_TKMIB="@comment " .endif .if ${OSVERSION} >= 400014 && !defined(WITHOUT_IPV6) CONFIGURE_ARGS+=--enable-ipv6 # --with-transport="UDPIPv6 TCPIPv6" --with-modules=mibII/ipv6" PLIST_SUB+= WITH_IPV6="" .else PLIST_SUB+= WITH_IPV6="@comment " .endif SHLIB_VERSION= 6 PLIST_SUB+= SHLIB_VERSION=${SHLIB_VERSION} LIBTOOL_SUB= LTCONFIG=${LIBTOOL_SHAREDIR}/ltconfig${LIBTOOL_VERSION} \ LTMAIN=${LIBTOOL_SHAREDIR}/ltmain.sh SCRIPTS_SUB= PREFIX=${PREFIX} PERL=${PERL} RC_SCRIPTS_SUB= PREFIX=${PREFIX} RC_SUBR=${RC_SUBR} DEFAULT_SNMP_VERSION?= 3 NET_SNMP_SYS_CONTACT?= nobody@nowhere.invalid NET_SNMP_SYS_LOCATION?= somewhere NET_SNMP_LOGFILE?= /var/log/snmpd.log NET_SNMP_PERSISTENTDIR?=/var/net-snmp NET_SNMP_MIB_MODULES?= ${NET_SNMP_MIB_MODULE_LIST} NET_SNMP_MIB_MODULE_LIST=host disman/event-mib smux mibII/mta_sendmail mibII/tcpTable ucd-snmp/diskio _NET_SNMP_MIB_MODULES= .for module1 in ${NET_SNMP_MIB_MODULE_LIST} _module1=${module1} _define= false . for module2 in ${NET_SNMP_MIB_MODULES} _module2=${module2} . if ${_module1} == ${_module2} _define= true . endif . endfor . if ${_define} == true _NET_SNMP_MIB_MODULES+= ${module1} PLIST_SUB+= WITH_${module1:C|.*/||:U}="" . else PLIST_SUB+= WITH_${module1:C|.*/||:U}="@comment " . endif .endfor MAN1= mib2c.1 \ snmpbulkget.1 snmpbulkwalk.1 snmpcmd.1 snmpconf.1 \ snmpdelta.1 snmpdf.1 snmpget.1 snmpgetnext.1 snmpinform.1 \ snmpnetstat.1 snmpset.1 snmpstatus.1 snmptable.1 snmptest.1 \ snmptranslate.1 snmptrap.1 snmpusm.1 snmpvacm.1 snmpwalk.1 MAN3= add_mibdir.3 add_module_replacement.3 default_store.3 \ get_module_node.3 init_mib.3 init_mib_internals.3 mib_api.3 \ netsnmp_agent.3 netsnmp_bulk_to_next.3 netsnmp_debug.3 \ netsnmp_example_scalar_int.3 netsnmp_handler.3 \ netsnmp_instance.3 netsnmp_library.3 \ netsnmp_mib_handler_methods.3 netsnmp_mib_utilities.3 \ netsnmp_mode_end_call.3 netsnmp_multiplexer.3 \ netsnmp_old_api.3 netsnmp_read_only.3 netsnmp_scalar.3 \ netsnmp_serialize.3 netsnmp_table.3 netsnmp_table_array.3 \ netsnmp_table_data.3 netsnmp_table_dataset.3 \ netsnmp_table_iterator.3 netsnmp_todo.3 netsnmp_watcher.3 \ print_description.3 print_mib.3 print_objid.3 print_value.3 \ print_variable.3 read_all_mibs.3 read_config.3 read_mib.3 \ read_module.3 read_module_node.3 read_objid.3 shutdown_mib.3 \ snmp_agent_api.3 snmp_alarm.3 snmp_api.3 \ snmp_api_errstring.3 snmp_close.3 \ snmp_error.3 snmp_free_pdu.3 snmp_open.3 snmp_perror.3 \ snmp_read.3 snmp_select_info.3 \ snmp_send.3 snmp_sess_api.3 snmp_sess_async_send.3 \ snmp_sess_close.3 snmp_sess_error.3 snmp_sess_init.3 \ snmp_sess_open.3 snmp_sess_perror.3 \ snmp_sess_read.3 snmp_sess_select_info.3 \ snmp_sess_send.3 snmp_sess_session.3 snmp_sess_timeout.3 \ snmp_set_mib_warnings.3 snmp_set_save_descriptions.3 \ snmp_timeout.3 snmp_trap_api.3 \ netsnmp_Container_iterator.3 netsnmp_baby_steps.3 \ netsnmp_cache_handler.3 netsnmp_container.3 \ netsnmp_deprecated.3 netsnmp_iterator_info_s.3 \ netsnmp_leaf.3 \ netsnmp_row_merge.3 netsnmp_scalar_group_group.3 \ netsnmp_stash_cache.3 netsnmp_utilities.3 .if !defined(WITHOUT_PERL) MAN3PERL= NetSNMP::ASN.3 NetSNMP::OID.3 NetSNMP::agent.3 \ NetSNMP::agent::default_store.3 \ NetSNMP::default_store.3 \ NetSNMP::netsnmp_request_infoPtr.3 SNMP.3 MAN3PERLPREFIX= ${PREFIX}/lib/perl5/${PERL_VERSION} _MANPAGES+= ${MAN3PERL:S%^%${MAN3PERLPREFIX}/man/man3/%} .endif MAN5= snmp.conf.5 snmp_config.5 snmpd.conf.5 \ snmptrapd.conf.5 variables.5 MAN8= snmpd.8 snmptrapd.8 BIN_FILES= snmpbulkwalk snmpget snmpgetnext snmpnetstat snmpset \ snmpstatus snmptest snmptranslate snmptrap snmpwalk SBIN_FILES= snmpd snmptrapd STARTUP_DIR= ${PREFIX}/etc/rc.d STARTUP_FILES= snmpd.sh snmptrapd.sh SCRIPT_FILES= snmpcheck.def mib2c fixproc ipf-mod.pl snmpconf \ traptoemail .if defined(WITH_TKMIB) SCRIPT_FILES+= tkmib .endif DOC_FILES= AGENT.txt COPYING FAQ NEWS README \ README.agentx README.krb5 README.snmpv3 README.thread \ agent/mibgroup/README.smux PS_CMD?= /bin/ps pre-everything:: @${ECHO_MSG} @${ECHO_MSG} "You may use the following build options:" @${ECHO_MSG} @${ECHO_MSG} "WITH_INETADDRESS_HACK=yes builds with the inetaddress hack" @${ECHO_MSG} "WITH_TKMIB=yes Install a graphical Perl/Tk/SNMP based mib browser" @${ECHO_MSG} "WITHOUT_DUMMY_VALUES=yes Provide 'placeholder' dummy values where" @${ECHO_MSG} " the necessary information is not available." @${ECHO_MSG} "WITHOUT_PERL=yes Install the perl modules along with the rest" @${ECHO_MSG} " of the net-snmp toolkit." @${ECHO_MSG} "WITHOUT_IPV6=yes Disable IPv6." @${ECHO_MSG} @${ECHO_MSG} "DEFAULT_SNMP_VERSION=\"3\" Default version of SNMP to use." @${ECHO_MSG} "NET_SNMP_SYS_CONTACT=\"${NET_SNMP_SYS_CONTACT}\"" @${ECHO_MSG} " Default system contact." @${ECHO_MSG} "NET_SNMP_SYS_LOCATION=\"${NET_SNMP_SYS_LOCATION}\"" @${ECHO_MSG} " Default system location." @${ECHO_MSG} "NET_SNMP_LOGFILE=\"${NET_SNMP_LOGFILE}\"" @${ECHO_MSG} " Default log file location for snmpd." @${ECHO_MSG} "NET_SNMP_PERSISTENTDIR=\"${NET_SNMP_PERSISTENTDIR}\"" @${ECHO_MSG} " Default directory for persistent data storage." @${ECHO_MSG} "NET_SNMP_MIB_MODULES=\"${NET_SNMP_MIB_MODULE_LIST}\"" @${ECHO_MSG} " Optional mib modules that can be built into the" @${ECHO_MSG} " agent" @${ECHO_MSG} post-patch: patch-autoconf patch-script-files patch-startup-files patch-autoconf: @${REINPLACE_CMD} ${LIBTOOL_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \ ${WRKSRC}/aclocal.m4 patch-script-files: .for file in ${SCRIPT_FILES} @${REINPLACE_CMD} ${SCRIPTS_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \ ${WRKSRC}/local/${file} .endfor patch-startup-files: .for file in ${STARTUP_FILES} @${SED} ${RC_SCRIPTS_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \ ${FILESDIR}/${file}.sample > ${WRKDIR}/${file} .endfor post-configure: @${FIND} ${WRKSRC} -name Makefile | \ ${XARGS} ${REINPLACE_CMD} -E -e '/^INSTALL[ ]+=/s|$$| -m 755|' .if !defined(WITHOUT_PERL) post-build: ${FIND} ${WRKSRC}/perl -name Makefile | \ ${XARGS} ${REINPLACE_CMD} -E -e '\ s!^(PREFIX) = .*!\1 = ${PREFIX}!; \ s!^(INSTALLMAN3DIR) = .*!\1 = ${MAN3PERLPREFIX}/man/man3!; \ s! doc_(perl|site|\$$\(INSTALLDIRS\))_install$$!!; \ ' .endif post-install: strip-files install-startup-files install-doc-files display-message strip-files: @cd ${PREFIX}/bin; ${STRIP_CMD} ${BIN_FILES} @cd ${PREFIX}/sbin; ${STRIP_CMD} ${SBIN_FILES} install-startup-files: .for file in ${STARTUP_FILES} @${INSTALL_SCRIPT} ${WRKDIR}/${file} ${STARTUP_DIR} .endfor install-doc-files: .if !defined(NOPORTDOCS) @${MKDIR} ${DOCSDIR} . for file in ${DOC_FILES} @${INSTALL_DATA} ${WRKSRC}/${file} ${DOCSDIR} . endfor .endif display-message: @${ECHO_MSG} @${CAT} ${PKGMESSAGE} # Maintainer's note: # Don't forget to bump library version in these ports. # lang/php4,lang/php5,net-mgmt/braa,net-mgmt/docsis,net/ethereal,net-mgmt/mbrowse,net/quagga,net/tethereal,net-mgmt/zabbix,security/libfwbuilder .include diff --git a/net-mgmt/net-snmp/files/patch-hr_storage.c b/net-mgmt/net-snmp/files/patch-hr_storage.c index b7c0a845fee1..1f7ae7a5e969 100644 --- a/net-mgmt/net-snmp/files/patch-hr_storage.c +++ b/net-mgmt/net-snmp/files/patch-hr_storage.c @@ -1,220 +1,223 @@ --- agent/mibgroup/host/hr_storage.c.orig Thu Jan 29 22:53:59 2004 -+++ agent/mibgroup/host/hr_storage.c Tue May 4 17:06:38 2004 ++++ agent/mibgroup/host/hr_storage.c Wed May 5 16:08:06 2004 @@ -148,7 +148,7 @@ #define HRFS_mount mnt_mountp #define HRFS_statfs statvfs -#elif defined(HAVE_STATVFS) +#elif defined(HAVE_STATVFS) && defined(HAVE_MNTENT) extern struct mntent *HRFS_entry; extern int fscount; @@ -193,6 +193,10 @@ void sol_get_swapinfo(int *, int *); #endif +#if defined(__FreeBSD__) && __FreeBSD_version >= 500024 -+void collect_mbuf(long *long_mbuf, long *long_mbuf_max); ++void collect_mbuf(long *long_mbuf, long *long_mbufc); +#endif + #define HRSTORE_MEMSIZE 1 #define HRSTORE_INDEX 2 #define HRSTORE_TYPE 3 -@@ -567,7 +571,7 @@ +@@ -431,7 +435,8 @@ + NULL, + "Memory Buffers", /* HRS_TYPE_MBUF */ + "Real Memory", /* HRS_TYPE_MEM */ +- "Swap Space" /* HRS_TYPE_SWAP */ ++ "Swap Space", /* HRS_TYPE_SWAP */ ++ "Memory Buffer Clusters" /* HRS_TYPE_MBUFCLUSTER */ + }; + + +@@ -546,6 +551,7 @@ + storage_type_id[storage_type_len - 1] = 3; /* Virtual Mem */ + break; + case HRS_TYPE_MBUF: ++ case HRS_TYPE_MBUFCLUSTER: + storage_type_id[storage_type_len - 1] = 1; /* Other */ + break; + default: +@@ -567,7 +573,7 @@ } case HRSTORE_UNITS: if (store_idx > HRS_TYPE_FIXED_MAX) -#if STRUCT_STATVFS_HAS_F_FRSIZE +#if defined(STRUCT_STATVFS_HAS_F_FRSIZE) && defined(HAVE_MNTENT) long_return = stat_buf.f_frsize; #else long_return = stat_buf.f_bsize; -@@ -631,7 +635,7 @@ +@@ -631,7 +637,7 @@ case HRS_TYPE_SWAP: long_return = memory_totals.t_vm; break; -#else /* !linux && !solaris2 && !hpux10 && !hpux11 && ... */ +#else case HRS_TYPE_MEM: long_return = physmem; break; -@@ -641,6 +645,8 @@ +@@ -641,6 +647,8 @@ #endif long_return = 0; break; +#endif /* linux || solaris2 || hpux10 || hpux11 || ... */ +#if !defined(linux) && !defined(solaris2) && !defined(hpux10) && !defined(hpux11) case HRS_TYPE_MBUF: #if HAVE_SYS_POOL_H long_return = 0; -@@ -650,7 +656,18 @@ +@@ -650,7 +658,26 @@ i++) long_return += mbstat.m_mtypes[i]; #elif defined(MBSTAT_SYMBOL) +#if !defined(__FreeBSD__) || __FreeBSD_version < 500021 long_return = mbstat.m_mbufs; +#elif defined(__FreeBSD__) && __FreeBSD_version < 500024 -+ /* mbuf stats disabled */ -+ return NULL; ++ /* mbuf stats disabled */ ++ return NULL; +#elif defined(__FreeBSD__) -+ collect_mbuf((long*)NULL, (long*)&long_return); -+ break; ++ { ++ size_t mlen = sizeof(int); ++ int nmbufs; ++ if (sysctlbyname("kern.ipc.nmbufs", &nmbufs, &mlen, ++ NULL, 0) < 0) { ++ return NULL; ++ } ++ long_return = nmbufs; ++ break; ++ } +#else -+ /* XXX TODO: implement new method */ -+ return NULL; ++ /* XXX TODO: implement new method */ ++ return NULL; +#endif /* __FreeBSD__ */ #elif defined(NO_DUMMY_VALUES) goto try_next; #else -@@ -708,7 +725,18 @@ +@@ -658,6 +685,18 @@ + #endif + break; + #endif /* !linux && !solaris2 && !hpux10 && !hpux11 && ... */ ++#if defined(__FreeBSD__) && __FreeBSD_version >= 500024 ++ case HRS_TYPE_MBUFCLUSTER: { ++ size_t mlen = sizeof(int); ++ int nmbclusters; ++ if (sysctlbyname("kern.ipc.nmbclusters", &nmbclusters, &mlen, ++ NULL, 0) < 0) { ++ return NULL; ++ } ++ long_return = nmbclusters; ++ break; ++ } ++#endif + default: + #if NO_DUMMY_VALUES + goto try_next; +@@ -708,7 +747,18 @@ * mbpool.pr_size + (mclpool.pr_nget - mclpool.pr_nput) * mclpool.pr_size; #elif defined(MBSTAT_SYMBOL) +#if !defined(__FreeBSD__) || __FreeBSD_version < 500021 long_return = mbstat.m_clusters - mbstat.m_clfree; /* unlikely, but... */ +#elif defined(__FreeBSD__) && __FreeBSD_version < 500024 + /* mbuf stats disabled */ + return NULL; +#elif defined(__FreeBSD__) + collect_mbuf((long*)&long_return, (long*)NULL); + break; +#else + /* XXX not supported. */ + return NULL; +#endif #elif defined(NO_DUMMY_VALUES) goto try_next; #else -@@ -853,3 +881,132 @@ +@@ -716,6 +766,11 @@ + #endif + break; + #endif /* !linux && !solaris2 && !hpux10 && !hpux11 && ... */ ++#if defined(__FreeBSD__) && __FreeBSD_version >= 500024 ++ case HRS_TYPE_MBUFCLUSTER: ++ collect_mbuf(NULL, &long_return); ++ break; ++#endif + default: + #if NO_DUMMY_VALUES + goto try_next; +@@ -853,3 +908,78 @@ *usedP = ainfo.ani_resv; } #endif /* solaris2 */ + +#if defined(__FreeBSD__) && __FreeBSD_version >= 500024 +void -+collect_mbuf(long *long_mbuf, long *long_mbuf_max) ++collect_mbuf(long *long_mbuf, long *long_mbufc) +{ -+ int i, j, nmbufs, nmbclusters, page_size, num_objs; -+ short nmbtypes; ++ int i, j, num_objs; + size_t mlen; -+ long *mbtypes = NULL; -+ u_int mbuf_hiwm, clust_hiwm, mbuf_lowm, clust_lowm; -+ u_long totspace[2], totused[2]; ++ u_long totused[2]; + u_long totnum, totfree; + struct mbstat mbstat; + struct mbpstat **mbpstat = NULL; -+ int *seen = NULL; + + if (sysctlbyname("kern.ipc.mb_statpcpu", NULL, &mlen, NULL, 0) < 0) { + warn("sysctl: retrieving mb_statpcpu len"); + goto err; + } + num_objs = (int)(mlen / sizeof(struct mbpstat)); + if ((mbpstat = calloc(num_objs, sizeof(struct mbpstat *))) == NULL) { + warn("calloc: cannot allocate memory for mbpstats pointers"); + goto err; + } + if ((mbpstat[0] = calloc(num_objs, sizeof(struct mbpstat))) == NULL) { + warn("calloc: cannot allocate memory for mbpstats"); + goto err; + } + + if (sysctlbyname("kern.ipc.mb_statpcpu", mbpstat[0], &mlen, NULL, 0) < 0) { + warn("sysctl: retrieving mb_statpcpu"); + goto err; + } + mlen = sizeof mbstat; + if (sysctlbyname("kern.ipc.mbstat", &mbstat, &mlen, NULL, 0) < 0) { + warn("sysctl: retrieving mbstat"); + goto err; + } -+ mlen = sizeof(int); -+ if (sysctlbyname("kern.ipc.nmbclusters", &nmbclusters, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving nmbclusters"); -+ goto err; -+ } -+ mlen = sizeof(int); -+ if (sysctlbyname("kern.ipc.nmbufs", &nmbufs, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving nmbufs"); -+ goto err; -+ } -+ mlen = sizeof(u_int); -+ if (sysctlbyname("kern.ipc.mbuf_hiwm", &mbuf_hiwm, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving mbuf_hiwm"); -+ goto err; -+ } -+ mlen = sizeof(u_int); -+ if (sysctlbyname("kern.ipc.clust_hiwm", &clust_hiwm, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving clust_hiwm"); -+ goto err; -+ } -+ mlen = sizeof(u_int); -+ if (sysctlbyname("kern.ipc.mbuf_lowm", &mbuf_lowm, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving mbuf_lowm"); -+ goto err; -+ } -+ mlen = sizeof(u_int); -+ if (sysctlbyname("kern.ipc.clust_lowm", &clust_lowm, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving clust_lowm"); -+ goto err; -+ } -+ mlen = sizeof(int); -+ if (sysctlbyname("hw.pagesize", &page_size, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving hw.pagesize"); -+ goto err; -+ } -+ -+ nmbtypes = mbstat.m_numtypes; -+ if ((seen = calloc(nmbtypes, sizeof(*seen))) == NULL) { -+ warn("calloc: cannot allocate memory for mbtypes seen flag"); -+ goto err; -+ } -+ if ((mbtypes = calloc(nmbtypes, sizeof(long *))) == NULL) { -+ warn("calloc: cannot allocate memory for mbtypes"); -+ goto err; -+ } + + for (i = 0; i < num_objs; i++) + mbpstat[i] = mbpstat[0] + i; + -+#undef MSIZE -+#define MSIZE (mbstat.m_msize) -+#undef MCLBYTES -+#define MCLBYTES (mbstat.m_mclbytes) +#define GENLST (num_objs - 1) + + totnum = mbpstat[GENLST]->mb_mbbucks * mbstat.m_mbperbuck; + totfree = mbpstat[GENLST]->mb_mbfree; -+ for (j = 1; j < nmbtypes; j++) -+ mbtypes[j] += mbpstat[GENLST]->mb_mbtypes[j]; -+ totspace[0] = mbpstat[GENLST]->mb_mbbucks * mbstat.m_mbperbuck * MSIZE; + for (i = 0; i < (num_objs - 1); i++) { + if (mbpstat[i]->mb_active == 0) + continue; -+ totspace[0] += mbpstat[i]->mb_mbbucks*mbstat.m_mbperbuck*MSIZE; + totnum += mbpstat[i]->mb_mbbucks * mbstat.m_mbperbuck; + totfree += mbpstat[i]->mb_mbfree; -+ for (j = 1; j < nmbtypes; j++) -+ mbtypes[j] += mbpstat[i]->mb_mbtypes[j]; + } + totused[0] = totnum - totfree; ++ totnum = mbpstat[GENLST]->mb_clbucks * mbstat.m_clperbuck; ++ totfree = mbpstat[GENLST]->mb_clfree; ++ for (i = 0; i < (num_objs - 1); i++) { ++ if (mbpstat[i]->mb_active == 0) ++ continue; ++ totnum += mbpstat[i]->mb_clbucks * mbstat.m_clperbuck; ++ totfree += mbpstat[i]->mb_clfree; ++ } ++ totused[1] = totnum - totfree; + + if (long_mbuf) { + *long_mbuf = totused[0]; + } -+ if (long_mbuf_max) { -+ *long_mbuf_max = nmbufs; ++ if (long_mbufc) { ++ *long_mbufc = totused[1]; + } + + err: -+ if (mbtypes != NULL) -+ free(mbtypes); -+ if (seen != NULL) -+ free(seen); + if (mbpstat != NULL) { + if (mbpstat[0] != NULL) + free(mbpstat[0]); + free(mbpstat); + } +} +#endif diff --git a/net-mgmt/net-snmp/files/patch-hr_storage.h b/net-mgmt/net-snmp/files/patch-hr_storage.h new file mode 100644 index 000000000000..a14eb9f1043c --- /dev/null +++ b/net-mgmt/net-snmp/files/patch-hr_storage.h @@ -0,0 +1,11 @@ +--- agent/mibgroup/host/hr_storage.h.orig Tue Feb 25 22:17:48 2003 ++++ agent/mibgroup/host/hr_storage.h Wed May 5 15:27:40 2004 +@@ -12,6 +12,7 @@ + #define HRS_TYPE_MBUF 1 + #define HRS_TYPE_MEM 2 + #define HRS_TYPE_SWAP 3 +-#define HRS_TYPE_FIXED_MAX 3 /* the largest fixed type */ ++#define HRS_TYPE_MBUFCLUSTER 4 ++#define HRS_TYPE_FIXED_MAX 4 /* the largest fixed type */ + + #endif /* _MIBGROUP_HRSTORAGE_H */ diff --git a/net-mgmt/net-snmp53/Makefile b/net-mgmt/net-snmp53/Makefile index 7ed0ecf9652c..3a9fa1edcb21 100644 --- a/net-mgmt/net-snmp53/Makefile +++ b/net-mgmt/net-snmp53/Makefile @@ -1,267 +1,267 @@ # New ports collection makefile for: ucd-snmp # Date created: 26 June 1996 # Whom: gpalmer # # $FreeBSD$ # PORTNAME= snmp PORTVERSION= 5.1.1 -PORTREVISION= 2 +PORTREVISION= 3 PKGNAMEPREFIX= net- CATEGORIES= net-mgmt ipv6 MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} MASTER_SITE_SUBDIR= net-snmp DISTNAME= ${PKGNAMEPREFIX}${PORTNAME}-${PORTVERSION} .if defined(WITH_INETADDRESS_HACK) EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-snmplib::mib.c .endif .if !defined(WITH_TKMIB) EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-local:Makefile.in .endif MAINTAINER= kuriyama@FreeBSD.org COMMENT= An extendable SNMP implementation .if defined(WITH_TKMIB) RUN_DEPEND= ${SITE_PERL}/${PERL_ARCH}/Tk.pm:${PORTSDIR}/x11-toolkits/p5-Tk .endif USE_REINPLACE= yes USE_AUTOCONF_VER=257 USE_LIBTOOL_VER=13 USE_RC_SUBR= yes INSTALLS_SHLIB= yes LIBTOOLFLAGS= --disable-ltlibs --release-ignore NO_LATEST_LINK= yes .if !defined(WITHOUT_PERL) USE_PERL5= yes .endif CONFIGURE_ENV+= PERLPROG="${PERL}" PSPROG="${PS_CMD}" SED="${SED}" CONFIGURE_ARGS+=--enable-shared --enable-internal-md5 \ --with-mib-modules="${_NET_SNMP_MIB_MODULES}" \ --with-default-snmp-version="${DEFAULT_SNMP_VERSION}" \ --with-sys-contact="${NET_SNMP_SYS_CONTACT}" \ --with-sys-location="${NET_SNMP_SYS_LOCATION}" \ --with-logfile="${NET_SNMP_LOGFILE}" \ --with-persistent-directory="${NET_SNMP_PERSISTENTDIR}" \ --with-gnu-ld --with-libwrap --with-libs="-lkvm -ldevstat" .if defined(BATCH) CONFIGURE_ARGS+=--with-defaults .endif .if !defined(WITHOUT_DUMMY_VALUES) CONFIGURE_ARGS+=--with-dummy-values .endif .include .if defined(WITHOUT_PERL) PLIST_SUB+= WITH_PERL="@comment " .else CONFIGURE_ARGS+=--enable-embedded-perl --with-perl-modules PLIST_SUB+= WITH_PERL="" .endif .if defined(WITH_TKMIB) PLIST_SUB+= WITH_TKMIB="" .else PLIST_SUB+= WITH_TKMIB="@comment " .endif .if ${OSVERSION} >= 400014 && !defined(WITHOUT_IPV6) CONFIGURE_ARGS+=--enable-ipv6 # --with-transport="UDPIPv6 TCPIPv6" --with-modules=mibII/ipv6" PLIST_SUB+= WITH_IPV6="" .else PLIST_SUB+= WITH_IPV6="@comment " .endif SHLIB_VERSION= 6 PLIST_SUB+= SHLIB_VERSION=${SHLIB_VERSION} LIBTOOL_SUB= LTCONFIG=${LIBTOOL_SHAREDIR}/ltconfig${LIBTOOL_VERSION} \ LTMAIN=${LIBTOOL_SHAREDIR}/ltmain.sh SCRIPTS_SUB= PREFIX=${PREFIX} PERL=${PERL} RC_SCRIPTS_SUB= PREFIX=${PREFIX} RC_SUBR=${RC_SUBR} DEFAULT_SNMP_VERSION?= 3 NET_SNMP_SYS_CONTACT?= nobody@nowhere.invalid NET_SNMP_SYS_LOCATION?= somewhere NET_SNMP_LOGFILE?= /var/log/snmpd.log NET_SNMP_PERSISTENTDIR?=/var/net-snmp NET_SNMP_MIB_MODULES?= ${NET_SNMP_MIB_MODULE_LIST} NET_SNMP_MIB_MODULE_LIST=host disman/event-mib smux mibII/mta_sendmail mibII/tcpTable ucd-snmp/diskio _NET_SNMP_MIB_MODULES= .for module1 in ${NET_SNMP_MIB_MODULE_LIST} _module1=${module1} _define= false . for module2 in ${NET_SNMP_MIB_MODULES} _module2=${module2} . if ${_module1} == ${_module2} _define= true . endif . endfor . if ${_define} == true _NET_SNMP_MIB_MODULES+= ${module1} PLIST_SUB+= WITH_${module1:C|.*/||:U}="" . else PLIST_SUB+= WITH_${module1:C|.*/||:U}="@comment " . endif .endfor MAN1= mib2c.1 \ snmpbulkget.1 snmpbulkwalk.1 snmpcmd.1 snmpconf.1 \ snmpdelta.1 snmpdf.1 snmpget.1 snmpgetnext.1 snmpinform.1 \ snmpnetstat.1 snmpset.1 snmpstatus.1 snmptable.1 snmptest.1 \ snmptranslate.1 snmptrap.1 snmpusm.1 snmpvacm.1 snmpwalk.1 MAN3= add_mibdir.3 add_module_replacement.3 default_store.3 \ get_module_node.3 init_mib.3 init_mib_internals.3 mib_api.3 \ netsnmp_agent.3 netsnmp_bulk_to_next.3 netsnmp_debug.3 \ netsnmp_example_scalar_int.3 netsnmp_handler.3 \ netsnmp_instance.3 netsnmp_library.3 \ netsnmp_mib_handler_methods.3 netsnmp_mib_utilities.3 \ netsnmp_mode_end_call.3 netsnmp_multiplexer.3 \ netsnmp_old_api.3 netsnmp_read_only.3 netsnmp_scalar.3 \ netsnmp_serialize.3 netsnmp_table.3 netsnmp_table_array.3 \ netsnmp_table_data.3 netsnmp_table_dataset.3 \ netsnmp_table_iterator.3 netsnmp_todo.3 netsnmp_watcher.3 \ print_description.3 print_mib.3 print_objid.3 print_value.3 \ print_variable.3 read_all_mibs.3 read_config.3 read_mib.3 \ read_module.3 read_module_node.3 read_objid.3 shutdown_mib.3 \ snmp_agent_api.3 snmp_alarm.3 snmp_api.3 \ snmp_api_errstring.3 snmp_close.3 \ snmp_error.3 snmp_free_pdu.3 snmp_open.3 snmp_perror.3 \ snmp_read.3 snmp_select_info.3 \ snmp_send.3 snmp_sess_api.3 snmp_sess_async_send.3 \ snmp_sess_close.3 snmp_sess_error.3 snmp_sess_init.3 \ snmp_sess_open.3 snmp_sess_perror.3 \ snmp_sess_read.3 snmp_sess_select_info.3 \ snmp_sess_send.3 snmp_sess_session.3 snmp_sess_timeout.3 \ snmp_set_mib_warnings.3 snmp_set_save_descriptions.3 \ snmp_timeout.3 snmp_trap_api.3 \ netsnmp_Container_iterator.3 netsnmp_baby_steps.3 \ netsnmp_cache_handler.3 netsnmp_container.3 \ netsnmp_deprecated.3 netsnmp_iterator_info_s.3 \ netsnmp_leaf.3 \ netsnmp_row_merge.3 netsnmp_scalar_group_group.3 \ netsnmp_stash_cache.3 netsnmp_utilities.3 .if !defined(WITHOUT_PERL) MAN3PERL= NetSNMP::ASN.3 NetSNMP::OID.3 NetSNMP::agent.3 \ NetSNMP::agent::default_store.3 \ NetSNMP::default_store.3 \ NetSNMP::netsnmp_request_infoPtr.3 SNMP.3 MAN3PERLPREFIX= ${PREFIX}/lib/perl5/${PERL_VERSION} _MANPAGES+= ${MAN3PERL:S%^%${MAN3PERLPREFIX}/man/man3/%} .endif MAN5= snmp.conf.5 snmp_config.5 snmpd.conf.5 \ snmptrapd.conf.5 variables.5 MAN8= snmpd.8 snmptrapd.8 BIN_FILES= snmpbulkwalk snmpget snmpgetnext snmpnetstat snmpset \ snmpstatus snmptest snmptranslate snmptrap snmpwalk SBIN_FILES= snmpd snmptrapd STARTUP_DIR= ${PREFIX}/etc/rc.d STARTUP_FILES= snmpd.sh snmptrapd.sh SCRIPT_FILES= snmpcheck.def mib2c fixproc ipf-mod.pl snmpconf \ traptoemail .if defined(WITH_TKMIB) SCRIPT_FILES+= tkmib .endif DOC_FILES= AGENT.txt COPYING FAQ NEWS README \ README.agentx README.krb5 README.snmpv3 README.thread \ agent/mibgroup/README.smux PS_CMD?= /bin/ps pre-everything:: @${ECHO_MSG} @${ECHO_MSG} "You may use the following build options:" @${ECHO_MSG} @${ECHO_MSG} "WITH_INETADDRESS_HACK=yes builds with the inetaddress hack" @${ECHO_MSG} "WITH_TKMIB=yes Install a graphical Perl/Tk/SNMP based mib browser" @${ECHO_MSG} "WITHOUT_DUMMY_VALUES=yes Provide 'placeholder' dummy values where" @${ECHO_MSG} " the necessary information is not available." @${ECHO_MSG} "WITHOUT_PERL=yes Install the perl modules along with the rest" @${ECHO_MSG} " of the net-snmp toolkit." @${ECHO_MSG} "WITHOUT_IPV6=yes Disable IPv6." @${ECHO_MSG} @${ECHO_MSG} "DEFAULT_SNMP_VERSION=\"3\" Default version of SNMP to use." @${ECHO_MSG} "NET_SNMP_SYS_CONTACT=\"${NET_SNMP_SYS_CONTACT}\"" @${ECHO_MSG} " Default system contact." @${ECHO_MSG} "NET_SNMP_SYS_LOCATION=\"${NET_SNMP_SYS_LOCATION}\"" @${ECHO_MSG} " Default system location." @${ECHO_MSG} "NET_SNMP_LOGFILE=\"${NET_SNMP_LOGFILE}\"" @${ECHO_MSG} " Default log file location for snmpd." @${ECHO_MSG} "NET_SNMP_PERSISTENTDIR=\"${NET_SNMP_PERSISTENTDIR}\"" @${ECHO_MSG} " Default directory for persistent data storage." @${ECHO_MSG} "NET_SNMP_MIB_MODULES=\"${NET_SNMP_MIB_MODULE_LIST}\"" @${ECHO_MSG} " Optional mib modules that can be built into the" @${ECHO_MSG} " agent" @${ECHO_MSG} post-patch: patch-autoconf patch-script-files patch-startup-files patch-autoconf: @${REINPLACE_CMD} ${LIBTOOL_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \ ${WRKSRC}/aclocal.m4 patch-script-files: .for file in ${SCRIPT_FILES} @${REINPLACE_CMD} ${SCRIPTS_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \ ${WRKSRC}/local/${file} .endfor patch-startup-files: .for file in ${STARTUP_FILES} @${SED} ${RC_SCRIPTS_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} \ ${FILESDIR}/${file}.sample > ${WRKDIR}/${file} .endfor post-configure: @${FIND} ${WRKSRC} -name Makefile | \ ${XARGS} ${REINPLACE_CMD} -E -e '/^INSTALL[ ]+=/s|$$| -m 755|' .if !defined(WITHOUT_PERL) post-build: ${FIND} ${WRKSRC}/perl -name Makefile | \ ${XARGS} ${REINPLACE_CMD} -E -e '\ s!^(PREFIX) = .*!\1 = ${PREFIX}!; \ s!^(INSTALLMAN3DIR) = .*!\1 = ${MAN3PERLPREFIX}/man/man3!; \ s! doc_(perl|site|\$$\(INSTALLDIRS\))_install$$!!; \ ' .endif post-install: strip-files install-startup-files install-doc-files display-message strip-files: @cd ${PREFIX}/bin; ${STRIP_CMD} ${BIN_FILES} @cd ${PREFIX}/sbin; ${STRIP_CMD} ${SBIN_FILES} install-startup-files: .for file in ${STARTUP_FILES} @${INSTALL_SCRIPT} ${WRKDIR}/${file} ${STARTUP_DIR} .endfor install-doc-files: .if !defined(NOPORTDOCS) @${MKDIR} ${DOCSDIR} . for file in ${DOC_FILES} @${INSTALL_DATA} ${WRKSRC}/${file} ${DOCSDIR} . endfor .endif display-message: @${ECHO_MSG} @${CAT} ${PKGMESSAGE} # Maintainer's note: # Don't forget to bump library version in these ports. # lang/php4,lang/php5,net-mgmt/braa,net-mgmt/docsis,net/ethereal,net-mgmt/mbrowse,net/quagga,net/tethereal,net-mgmt/zabbix,security/libfwbuilder .include diff --git a/net-mgmt/net-snmp53/files/patch-hr_storage.c b/net-mgmt/net-snmp53/files/patch-hr_storage.c index b7c0a845fee1..1f7ae7a5e969 100644 --- a/net-mgmt/net-snmp53/files/patch-hr_storage.c +++ b/net-mgmt/net-snmp53/files/patch-hr_storage.c @@ -1,220 +1,223 @@ --- agent/mibgroup/host/hr_storage.c.orig Thu Jan 29 22:53:59 2004 -+++ agent/mibgroup/host/hr_storage.c Tue May 4 17:06:38 2004 ++++ agent/mibgroup/host/hr_storage.c Wed May 5 16:08:06 2004 @@ -148,7 +148,7 @@ #define HRFS_mount mnt_mountp #define HRFS_statfs statvfs -#elif defined(HAVE_STATVFS) +#elif defined(HAVE_STATVFS) && defined(HAVE_MNTENT) extern struct mntent *HRFS_entry; extern int fscount; @@ -193,6 +193,10 @@ void sol_get_swapinfo(int *, int *); #endif +#if defined(__FreeBSD__) && __FreeBSD_version >= 500024 -+void collect_mbuf(long *long_mbuf, long *long_mbuf_max); ++void collect_mbuf(long *long_mbuf, long *long_mbufc); +#endif + #define HRSTORE_MEMSIZE 1 #define HRSTORE_INDEX 2 #define HRSTORE_TYPE 3 -@@ -567,7 +571,7 @@ +@@ -431,7 +435,8 @@ + NULL, + "Memory Buffers", /* HRS_TYPE_MBUF */ + "Real Memory", /* HRS_TYPE_MEM */ +- "Swap Space" /* HRS_TYPE_SWAP */ ++ "Swap Space", /* HRS_TYPE_SWAP */ ++ "Memory Buffer Clusters" /* HRS_TYPE_MBUFCLUSTER */ + }; + + +@@ -546,6 +551,7 @@ + storage_type_id[storage_type_len - 1] = 3; /* Virtual Mem */ + break; + case HRS_TYPE_MBUF: ++ case HRS_TYPE_MBUFCLUSTER: + storage_type_id[storage_type_len - 1] = 1; /* Other */ + break; + default: +@@ -567,7 +573,7 @@ } case HRSTORE_UNITS: if (store_idx > HRS_TYPE_FIXED_MAX) -#if STRUCT_STATVFS_HAS_F_FRSIZE +#if defined(STRUCT_STATVFS_HAS_F_FRSIZE) && defined(HAVE_MNTENT) long_return = stat_buf.f_frsize; #else long_return = stat_buf.f_bsize; -@@ -631,7 +635,7 @@ +@@ -631,7 +637,7 @@ case HRS_TYPE_SWAP: long_return = memory_totals.t_vm; break; -#else /* !linux && !solaris2 && !hpux10 && !hpux11 && ... */ +#else case HRS_TYPE_MEM: long_return = physmem; break; -@@ -641,6 +645,8 @@ +@@ -641,6 +647,8 @@ #endif long_return = 0; break; +#endif /* linux || solaris2 || hpux10 || hpux11 || ... */ +#if !defined(linux) && !defined(solaris2) && !defined(hpux10) && !defined(hpux11) case HRS_TYPE_MBUF: #if HAVE_SYS_POOL_H long_return = 0; -@@ -650,7 +656,18 @@ +@@ -650,7 +658,26 @@ i++) long_return += mbstat.m_mtypes[i]; #elif defined(MBSTAT_SYMBOL) +#if !defined(__FreeBSD__) || __FreeBSD_version < 500021 long_return = mbstat.m_mbufs; +#elif defined(__FreeBSD__) && __FreeBSD_version < 500024 -+ /* mbuf stats disabled */ -+ return NULL; ++ /* mbuf stats disabled */ ++ return NULL; +#elif defined(__FreeBSD__) -+ collect_mbuf((long*)NULL, (long*)&long_return); -+ break; ++ { ++ size_t mlen = sizeof(int); ++ int nmbufs; ++ if (sysctlbyname("kern.ipc.nmbufs", &nmbufs, &mlen, ++ NULL, 0) < 0) { ++ return NULL; ++ } ++ long_return = nmbufs; ++ break; ++ } +#else -+ /* XXX TODO: implement new method */ -+ return NULL; ++ /* XXX TODO: implement new method */ ++ return NULL; +#endif /* __FreeBSD__ */ #elif defined(NO_DUMMY_VALUES) goto try_next; #else -@@ -708,7 +725,18 @@ +@@ -658,6 +685,18 @@ + #endif + break; + #endif /* !linux && !solaris2 && !hpux10 && !hpux11 && ... */ ++#if defined(__FreeBSD__) && __FreeBSD_version >= 500024 ++ case HRS_TYPE_MBUFCLUSTER: { ++ size_t mlen = sizeof(int); ++ int nmbclusters; ++ if (sysctlbyname("kern.ipc.nmbclusters", &nmbclusters, &mlen, ++ NULL, 0) < 0) { ++ return NULL; ++ } ++ long_return = nmbclusters; ++ break; ++ } ++#endif + default: + #if NO_DUMMY_VALUES + goto try_next; +@@ -708,7 +747,18 @@ * mbpool.pr_size + (mclpool.pr_nget - mclpool.pr_nput) * mclpool.pr_size; #elif defined(MBSTAT_SYMBOL) +#if !defined(__FreeBSD__) || __FreeBSD_version < 500021 long_return = mbstat.m_clusters - mbstat.m_clfree; /* unlikely, but... */ +#elif defined(__FreeBSD__) && __FreeBSD_version < 500024 + /* mbuf stats disabled */ + return NULL; +#elif defined(__FreeBSD__) + collect_mbuf((long*)&long_return, (long*)NULL); + break; +#else + /* XXX not supported. */ + return NULL; +#endif #elif defined(NO_DUMMY_VALUES) goto try_next; #else -@@ -853,3 +881,132 @@ +@@ -716,6 +766,11 @@ + #endif + break; + #endif /* !linux && !solaris2 && !hpux10 && !hpux11 && ... */ ++#if defined(__FreeBSD__) && __FreeBSD_version >= 500024 ++ case HRS_TYPE_MBUFCLUSTER: ++ collect_mbuf(NULL, &long_return); ++ break; ++#endif + default: + #if NO_DUMMY_VALUES + goto try_next; +@@ -853,3 +908,78 @@ *usedP = ainfo.ani_resv; } #endif /* solaris2 */ + +#if defined(__FreeBSD__) && __FreeBSD_version >= 500024 +void -+collect_mbuf(long *long_mbuf, long *long_mbuf_max) ++collect_mbuf(long *long_mbuf, long *long_mbufc) +{ -+ int i, j, nmbufs, nmbclusters, page_size, num_objs; -+ short nmbtypes; ++ int i, j, num_objs; + size_t mlen; -+ long *mbtypes = NULL; -+ u_int mbuf_hiwm, clust_hiwm, mbuf_lowm, clust_lowm; -+ u_long totspace[2], totused[2]; ++ u_long totused[2]; + u_long totnum, totfree; + struct mbstat mbstat; + struct mbpstat **mbpstat = NULL; -+ int *seen = NULL; + + if (sysctlbyname("kern.ipc.mb_statpcpu", NULL, &mlen, NULL, 0) < 0) { + warn("sysctl: retrieving mb_statpcpu len"); + goto err; + } + num_objs = (int)(mlen / sizeof(struct mbpstat)); + if ((mbpstat = calloc(num_objs, sizeof(struct mbpstat *))) == NULL) { + warn("calloc: cannot allocate memory for mbpstats pointers"); + goto err; + } + if ((mbpstat[0] = calloc(num_objs, sizeof(struct mbpstat))) == NULL) { + warn("calloc: cannot allocate memory for mbpstats"); + goto err; + } + + if (sysctlbyname("kern.ipc.mb_statpcpu", mbpstat[0], &mlen, NULL, 0) < 0) { + warn("sysctl: retrieving mb_statpcpu"); + goto err; + } + mlen = sizeof mbstat; + if (sysctlbyname("kern.ipc.mbstat", &mbstat, &mlen, NULL, 0) < 0) { + warn("sysctl: retrieving mbstat"); + goto err; + } -+ mlen = sizeof(int); -+ if (sysctlbyname("kern.ipc.nmbclusters", &nmbclusters, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving nmbclusters"); -+ goto err; -+ } -+ mlen = sizeof(int); -+ if (sysctlbyname("kern.ipc.nmbufs", &nmbufs, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving nmbufs"); -+ goto err; -+ } -+ mlen = sizeof(u_int); -+ if (sysctlbyname("kern.ipc.mbuf_hiwm", &mbuf_hiwm, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving mbuf_hiwm"); -+ goto err; -+ } -+ mlen = sizeof(u_int); -+ if (sysctlbyname("kern.ipc.clust_hiwm", &clust_hiwm, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving clust_hiwm"); -+ goto err; -+ } -+ mlen = sizeof(u_int); -+ if (sysctlbyname("kern.ipc.mbuf_lowm", &mbuf_lowm, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving mbuf_lowm"); -+ goto err; -+ } -+ mlen = sizeof(u_int); -+ if (sysctlbyname("kern.ipc.clust_lowm", &clust_lowm, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving clust_lowm"); -+ goto err; -+ } -+ mlen = sizeof(int); -+ if (sysctlbyname("hw.pagesize", &page_size, &mlen, NULL, 0) < 0) { -+ warn("sysctl: retrieving hw.pagesize"); -+ goto err; -+ } -+ -+ nmbtypes = mbstat.m_numtypes; -+ if ((seen = calloc(nmbtypes, sizeof(*seen))) == NULL) { -+ warn("calloc: cannot allocate memory for mbtypes seen flag"); -+ goto err; -+ } -+ if ((mbtypes = calloc(nmbtypes, sizeof(long *))) == NULL) { -+ warn("calloc: cannot allocate memory for mbtypes"); -+ goto err; -+ } + + for (i = 0; i < num_objs; i++) + mbpstat[i] = mbpstat[0] + i; + -+#undef MSIZE -+#define MSIZE (mbstat.m_msize) -+#undef MCLBYTES -+#define MCLBYTES (mbstat.m_mclbytes) +#define GENLST (num_objs - 1) + + totnum = mbpstat[GENLST]->mb_mbbucks * mbstat.m_mbperbuck; + totfree = mbpstat[GENLST]->mb_mbfree; -+ for (j = 1; j < nmbtypes; j++) -+ mbtypes[j] += mbpstat[GENLST]->mb_mbtypes[j]; -+ totspace[0] = mbpstat[GENLST]->mb_mbbucks * mbstat.m_mbperbuck * MSIZE; + for (i = 0; i < (num_objs - 1); i++) { + if (mbpstat[i]->mb_active == 0) + continue; -+ totspace[0] += mbpstat[i]->mb_mbbucks*mbstat.m_mbperbuck*MSIZE; + totnum += mbpstat[i]->mb_mbbucks * mbstat.m_mbperbuck; + totfree += mbpstat[i]->mb_mbfree; -+ for (j = 1; j < nmbtypes; j++) -+ mbtypes[j] += mbpstat[i]->mb_mbtypes[j]; + } + totused[0] = totnum - totfree; ++ totnum = mbpstat[GENLST]->mb_clbucks * mbstat.m_clperbuck; ++ totfree = mbpstat[GENLST]->mb_clfree; ++ for (i = 0; i < (num_objs - 1); i++) { ++ if (mbpstat[i]->mb_active == 0) ++ continue; ++ totnum += mbpstat[i]->mb_clbucks * mbstat.m_clperbuck; ++ totfree += mbpstat[i]->mb_clfree; ++ } ++ totused[1] = totnum - totfree; + + if (long_mbuf) { + *long_mbuf = totused[0]; + } -+ if (long_mbuf_max) { -+ *long_mbuf_max = nmbufs; ++ if (long_mbufc) { ++ *long_mbufc = totused[1]; + } + + err: -+ if (mbtypes != NULL) -+ free(mbtypes); -+ if (seen != NULL) -+ free(seen); + if (mbpstat != NULL) { + if (mbpstat[0] != NULL) + free(mbpstat[0]); + free(mbpstat); + } +} +#endif diff --git a/net-mgmt/net-snmp53/files/patch-hr_storage.h b/net-mgmt/net-snmp53/files/patch-hr_storage.h new file mode 100644 index 000000000000..a14eb9f1043c --- /dev/null +++ b/net-mgmt/net-snmp53/files/patch-hr_storage.h @@ -0,0 +1,11 @@ +--- agent/mibgroup/host/hr_storage.h.orig Tue Feb 25 22:17:48 2003 ++++ agent/mibgroup/host/hr_storage.h Wed May 5 15:27:40 2004 +@@ -12,6 +12,7 @@ + #define HRS_TYPE_MBUF 1 + #define HRS_TYPE_MEM 2 + #define HRS_TYPE_SWAP 3 +-#define HRS_TYPE_FIXED_MAX 3 /* the largest fixed type */ ++#define HRS_TYPE_MBUFCLUSTER 4 ++#define HRS_TYPE_FIXED_MAX 4 /* the largest fixed type */ + + #endif /* _MIBGROUP_HRSTORAGE_H */