u_char * var_hrfilesys(struct variable *vp, oid * name, size_t * length, int exact, size_t * var_len, WriteMethod ** write_method) { int fsys_idx; static char string[1024]; char *mnt_type; fsys_idx = header_hrfilesys(vp, name, length, exact, var_len, write_method); if (fsys_idx == MATCH_FAILED) return NULL; switch (vp->magic) { case HRFSYS_INDEX: long_return = fsys_idx; return (u_char *) & long_return; case HRFSYS_MOUNT: snprintf(string, sizeof(string), HRFS_entry->HRFS_mount); string[ sizeof(string)-1 ] = 0; *var_len = strlen(string); return (u_char *) string; case HRFSYS_RMOUNT: if (Check_HR_FileSys_NFS()) { snprintf(string, sizeof(string), HRFS_entry->HRFS_name); string[ sizeof(string)-1 ] = 0; } else string[0] = '\0'; *var_len = strlen(string); return (u_char *) string; case HRFSYS_TYPE: if (Check_HR_FileSys_NFS()) fsys_type_id[fsys_type_len - 1] = 14; else { /* * Not sufficient to identity the file * type precisely, but it's a start. */ #if HAVE_GETFSSTAT && !defined(MFSNAMELEN) switch (HRFS_entry->HRFS_type) { case MOUNT_UFS: fsys_type_id[fsys_type_len - 1] = 3; break; case MOUNT_NFS: fsys_type_id[fsys_type_len - 1] = 14; break; case MOUNT_HFS: fsys_type_id[fsys_type_len - 1] = 7; break; case MOUNT_MFS: fsys_type_id[fsys_type_len - 1] = 8; break; case MOUNT_MSDOS: fsys_type_id[fsys_type_len - 1] = 5; break; case MOUNT_LFS: fsys_type_id[fsys_type_len - 1] = 1; break; case MOUNT_LOFS: fsys_type_id[fsys_type_len - 1] = 1; break; case MOUNT_FDESC: fsys_type_id[fsys_type_len - 1] = 1; break; case MOUNT_PORTAL: fsys_type_id[fsys_type_len - 1] = 1; break; case MOUNT_NULL: fsys_type_id[fsys_type_len - 1] = 1; break; case MOUNT_UMAP: fsys_type_id[fsys_type_len - 1] = 1; break; case MOUNT_KERNFS: fsys_type_id[fsys_type_len - 1] = 1; break; case MOUNT_PROCFS: fsys_type_id[fsys_type_len - 1] = 1; break; case MOUNT_AFS: fsys_type_id[fsys_type_len - 1] = 16; break; case MOUNT_CD9660: fsys_type_id[fsys_type_len - 1] = 12; break; case MOUNT_UNION: fsys_type_id[fsys_type_len - 1] = 1; break; case MOUNT_DEVFS: fsys_type_id[fsys_type_len - 1] = 1; break; #ifdef MOUNT_EXT2FS case MOUNT_EXT2FS: fsys_type_id[fsys_type_len - 1] = 23; break; #endif #ifdef MOUNT_TFS case MOUNT_TFS: fsys_type_id[fsys_type_len - 1] = 15; break; #endif } #elif defined(aix4) || defined(aix5) || defined(aix6) switch (HRFS_entry->HRFS_type) { case MNT_AIX: case MNT_JFS: fsys_type_id[fsys_type_len - 1] = 3; break; case MNT_CDROM: fsys_type_id[fsys_type_len - 1] = 12; break; #ifdef MNT_NAMEFS case MNT_NAMEFS: #endif #ifdef MNT_PROCFS case MNT_PROCFS: #endif case MNT_SFS: case MNT_CACHEFS: fsys_type_id[fsys_type_len - 1] = 1; break; case MNT_NFS: case MNT_NFS3: case MNT_AUTOFS: fsys_type_id[fsys_type_len - 1] = 14; break; } #else mnt_type = HRFS_entry->HRFS_type; if (mnt_type == NULL) fsys_type_id[fsys_type_len - 1] = 2; /* unknown */ #ifdef MNTTYPE_HFS else if (!strcmp(mnt_type, MNTTYPE_HFS)) fsys_type_id[fsys_type_len - 1] = 7; #endif #ifdef MNTTYPE_UFS else if (!strcmp(mnt_type, MNTTYPE_UFS)) #if (defined(BerkelyFS) && !defined(MNTTYPE_HFS)) || defined(solaris2) fsys_type_id[fsys_type_len - 1] = 3; #else /* SysV */ fsys_type_id[fsys_type_len - 1] = 4; /* or 3? XXX */ #endif #endif #ifdef MNTTYPE_SYSV else if (!strcmp(mnt_type, MNTTYPE_SYSV)) fsys_type_id[fsys_type_len - 1] = 4; #endif #ifdef MNTTYPE_PC else if (!strcmp(mnt_type, MNTTYPE_PC)) fsys_type_id[fsys_type_len - 1] = 5; #endif #ifdef MNTTYPE_MSDOS else if (!strcmp(mnt_type, MNTTYPE_MSDOS)) fsys_type_id[fsys_type_len - 1] = 5; #endif #ifdef MNTTYPE_FAT32 else if (!strcmp(mnt_type, MNTTYPE_FAT32)) fsys_type_id[fsys_type_len - 1] = 22; #endif #ifdef MNTTYPE_CDFS else if (!strcmp(mnt_type, MNTTYPE_CDFS)) #ifdef RockRidge fsys_type_id[fsys_type_len - 1] = 13; #else /* ISO 9660 */ fsys_type_id[fsys_type_len - 1] = 12; #endif #endif #ifdef MNTTYPE_HSFS else if (!strcmp(mnt_type, MNTTYPE_HSFS)) fsys_type_id[fsys_type_len - 1] = 13; #endif #ifdef MNTTYPE_ISO9660 else if (!strcmp(mnt_type, MNTTYPE_ISO9660)) fsys_type_id[fsys_type_len - 1] = 12; #endif #ifdef MNTTYPE_CD9660 else if (!strcmp(mnt_type, MNTTYPE_CD9660)) fsys_type_id[fsys_type_len - 1] = 12; #endif #ifdef MNTTYPE_SMBFS else if (!strcmp(mnt_type, MNTTYPE_SMBFS)) fsys_type_id[fsys_type_len - 1] = 14; #endif #ifdef MNTTYPE_NFS else if (!strcmp(mnt_type, MNTTYPE_NFS)) fsys_type_id[fsys_type_len - 1] = 14; #endif #ifdef MNTTYPE_NFS3 else if (!strcmp(mnt_type, MNTTYPE_NFS3)) fsys_type_id[fsys_type_len - 1] = 14; #endif #ifdef MNTTYPE_NFS4 else if (!strcmp(mnt_type, MNTTYPE_NFS4)) fsys_type_id[fsys_type_len - 1] = 14; #endif #ifdef MNTTYPE_MFS else if (!strcmp(mnt_type, MNTTYPE_MFS)) fsys_type_id[fsys_type_len - 1] = 8; #endif #ifdef MNTTYPE_EXT2FS else if (!strcmp(mnt_type, MNTTYPE_EXT2FS)) fsys_type_id[fsys_type_len - 1] = 23; #endif #ifdef MNTTYPE_EXT3FS else if (!strcmp(mnt_type, MNTTYPE_EXT3FS)) fsys_type_id[fsys_type_len - 1] = 23; #endif #ifdef MNTTYPE_NTFS else if (!strcmp(mnt_type, MNTTYPE_NTFS)) fsys_type_id[fsys_type_len - 1] = 9; #endif else fsys_type_id[fsys_type_len - 1] = 1; /* Other */ #endif /* HAVE_GETFSSTAT */ }
u_char * var_hrstore(struct variable *vp, oid * name, size_t * length, int exact, size_t * var_len, WriteMethod ** write_method) { int store_idx = 0; static char string[1024]; struct HRFS_statfs stat_buf; void *ptr; netsnmp_memory_info *mem = NULL; really_try_next: ptr = header_hrstoreEntry(vp, name, length, exact, var_len, write_method); if (ptr == NULL) return NULL; store_idx = name[ HRSTORE_ENTRY_NAME_LENGTH ]; if (store_idx > NETSNMP_MEM_TYPE_MAX ) { if ( netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES) && Check_HR_FileSys_NFS()) return NULL; /* or goto try_next; */ if (HRFS_statfs(HRFS_entry->HRFS_mount, &stat_buf) < 0) { snmp_log_perror(HRFS_entry->HRFS_mount); goto try_next; } } else { mem = (netsnmp_memory_info*)ptr; } switch (vp->magic) { case HRSTORE_INDEX: long_return = store_idx; return (u_char *) & long_return; case HRSTORE_TYPE: if (store_idx > NETSNMP_MEM_TYPE_MAX) if (storageUseNFS && Check_HR_FileSys_NFS()) storage_type_id[storage_type_len - 1] = 10; /* Network Disk */ #if HAVE_HASMNTOPT && !(defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)) /* * hasmntopt takes "const struct mntent*", but HRFS_entry has been * defined differently for AIX, so skip this for AIX */ else if (hasmntopt(HRFS_entry, "loop") != NULL) storage_type_id[storage_type_len - 1] = 5; /* Removable Disk */ #endif else storage_type_id[storage_type_len - 1] = 4; /* Assume fixed */ else switch (store_idx) { case NETSNMP_MEM_TYPE_PHYSMEM: case NETSNMP_MEM_TYPE_USERMEM: storage_type_id[storage_type_len - 1] = 2; /* RAM */ break; case NETSNMP_MEM_TYPE_VIRTMEM: case NETSNMP_MEM_TYPE_SWAP: storage_type_id[storage_type_len - 1] = 3; /* Virtual Mem */ break; default: storage_type_id[storage_type_len - 1] = 1; /* Other */ break; } *var_len = sizeof(storage_type_id); return (u_char *) storage_type_id; case HRSTORE_DESCR: if (store_idx > NETSNMP_MEM_TYPE_MAX) { strlcpy(string, HRFS_entry->HRFS_mount, sizeof(string)); *var_len = strlen(string); return (u_char *) string; } else { if ( !mem || !mem->descr ) goto try_next; *var_len = strlen(mem->descr); return (u_char *) mem->descr; } case HRSTORE_UNITS: if (store_idx > NETSNMP_MEM_TYPE_MAX) #if HRFS_HAS_FRSIZE long_return = stat_buf.f_frsize; #else long_return = stat_buf.f_bsize; #endif else { if ( !mem || mem->units == -1 ) goto try_next; long_return = mem->units; } return (u_char *) & long_return; case HRSTORE_SIZE: if (store_idx > NETSNMP_MEM_TYPE_MAX) long_return = stat_buf.f_blocks; else { if ( !mem || mem->size == -1 ) goto try_next; long_return = mem->size; } return (u_char *) & long_return; case HRSTORE_USED: if (store_idx > NETSNMP_MEM_TYPE_MAX) long_return = (stat_buf.f_blocks - stat_buf.f_bfree); else { if ( !mem || mem->size == -1 || mem->free == -1 ) goto try_next; long_return = mem->size - mem->free; } return (u_char *) & long_return; case HRSTORE_FAILS: if (store_idx > NETSNMP_MEM_TYPE_MAX) #if NETSNMP_NO_DUMMY_VALUES goto try_next; #else long_return = 0; #endif else { if ( !mem || mem->other == -1 )
u_char * var_hrstore(struct variable *vp, oid * name, size_t * length, int exact, size_t * var_len, WriteMethod ** write_method) { int store_idx = 0; static char string[1024]; void *ptr; netsnmp_memory_info *mem = NULL; really_try_next: ptr = header_hrstoreEntry(vp, name, length, exact, var_len, write_method); if (ptr == NULL) return NULL; store_idx = name[ HRSTORE_ENTRY_NAME_LENGTH ]; if (HRFS_entry && store_idx > NETSNMP_MEM_TYPE_MAX && netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES) && Check_HR_FileSys_NFS()) return NULL; if (store_idx <= NETSNMP_MEM_TYPE_MAX ) { mem = (netsnmp_memory_info*)ptr; } switch (vp->magic) { case HRSTORE_INDEX: long_return = store_idx; return (u_char *) & long_return; case HRSTORE_TYPE: if (store_idx > NETSNMP_MEM_TYPE_MAX) if (HRFS_entry->flags & NETSNMP_FS_FLAG_REMOTE && storageUseNFS) storage_type_id[storage_type_len - 1] = 10; /* Network Disk */ else if (HRFS_entry->flags & NETSNMP_FS_FLAG_REMOVE ) storage_type_id[storage_type_len - 1] = 5; /* Removable Disk */ else storage_type_id[storage_type_len - 1] = 4; /* Assume fixed */ else switch (store_idx) { case NETSNMP_MEM_TYPE_PHYSMEM: case NETSNMP_MEM_TYPE_USERMEM: storage_type_id[storage_type_len - 1] = 2; /* RAM */ break; case NETSNMP_MEM_TYPE_VIRTMEM: case NETSNMP_MEM_TYPE_SWAP: storage_type_id[storage_type_len - 1] = 3; /* Virtual Mem */ break; default: storage_type_id[storage_type_len - 1] = 1; /* Other */ break; } *var_len = sizeof(storage_type_id); return (u_char *) storage_type_id; case HRSTORE_DESCR: if (store_idx > NETSNMP_MEM_TYPE_MAX) { strlcpy(string, HRFS_entry->path, sizeof(string)); *var_len = strlen(string); return (u_char *) string; } else { if ( !mem || !mem->descr ) goto try_next; *var_len = strlen(mem->descr); return (u_char *) mem->descr; } case HRSTORE_UNITS: if (store_idx > NETSNMP_MEM_TYPE_MAX) { if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_REALSTORAGEUNITS)) long_return = HRFS_entry->units & 0x7fffffff; else long_return = HRFS_entry->units_32; } else { if ( !mem || mem->units == -1 ) goto try_next; long_return = mem->units & 0x7fffffff; } return (u_char *) & long_return; case HRSTORE_SIZE: if (store_idx > NETSNMP_MEM_TYPE_MAX) { if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_REALSTORAGEUNITS)) long_return = HRFS_entry->size & 0x7fffffff; else long_return = HRFS_entry->size_32; } else { if ( !mem || mem->size == -1 ) goto try_next; long_return = mem->size & 0x7fffffff; } return (u_char *) & long_return; case HRSTORE_USED: if (store_idx > NETSNMP_MEM_TYPE_MAX) { if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_REALSTORAGEUNITS)) long_return = HRFS_entry->used & 0x7fffffff; else long_return = HRFS_entry->used_32; } else { if ( !mem || mem->size == -1 || mem->free == -1 ) goto try_next; long_return = (mem->size - mem->free) & 0x7fffffff; } return (u_char *) & long_return; case HRSTORE_FAILS: if (store_idx > NETSNMP_MEM_TYPE_MAX) #if NETSNMP_NO_DUMMY_VALUES goto try_next; #else long_return = 0; #endif else { if ( !mem || mem->other == -1 ) goto try_next; long_return = mem->other; } return (u_char *) & long_return; default: DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_hrstore\n", vp->magic)); }
u_char * var_hrstore(struct variable *vp, oid * name, size_t * length, int exact, size_t * var_len, WriteMethod ** write_method) { int store_idx = 0; #if !defined(linux) #if defined(solaris2) int freemem; int swap_total, swap_used; #elif defined(hpux10) || defined(hpux11) struct pst_dynamic pst_buf; #elif defined(darwin8) vm_statistics_data_t vm_stat; int count = HOST_VM_INFO_COUNT; #elif defined(TOTAL_MEMORY_SYMBOL) || defined(USE_SYSCTL_VM) #ifdef VM_UVMEXP struct uvmexp uvmexp_totals; #endif struct vmtotal memory_totals; #endif #if HAVE_KVM_GETSWAPINFO struct kvm_swap swapinfo; static kvm_t *kd = NULL; #endif #if HAVE_SYS_POOL_H struct pool mbpool, mclpool; int i; #endif #ifdef MBSTAT_SYMBOL struct mbstat mbstat; #endif #endif /* !linux */ static char string[1024]; struct HRFS_statfs stat_buf; if (vp->magic == HRSTORE_MEMSIZE) { if (header_hrstore(vp, name, length, exact, var_len, write_method) == MATCH_FAILED) return NULL; } else { really_try_next: store_idx = header_hrstoreEntry(vp, name, length, exact, var_len, write_method); if (store_idx == MATCH_FAILED) return NULL; if (store_idx > HRS_TYPE_FIXED_MAX) { if (HRFS_statfs(HRFS_entry->HRFS_mount, &stat_buf) < 0) { snmp_log_perror(HRFS_entry->HRFS_mount); goto try_next; } } #if !defined(linux) && !defined(solaris2) else switch (store_idx) { case HRS_TYPE_MEM: case HRS_TYPE_SWAP: #ifdef USE_SYSCTL_VM { int mib[2]; size_t len = sizeof(memory_totals); mib[0] = CTL_VM; mib[1] = VM_METER; sysctl(mib, 2, &memory_totals, &len, NULL, 0); #ifdef VM_UVMEXP mib[1] = VM_UVMEXP; len = sizeof(uvmexp_totals); sysctl(mib, 2, &uvmexp_totals, &len, NULL, 0); #endif } #elif defined(darwin8) host_statistics(myHost,HOST_VM_INFO,&vm_stat,&count); #elif defined(hpux10) || defined(hpux11) pstat_getdynamic(&pst_buf, sizeof(struct pst_dynamic), 1, 0); #elif defined(TOTAL_MEMORY_SYMBOL) auto_nlist(TOTAL_MEMORY_SYMBOL, (char *) &memory_totals, sizeof(struct vmtotal)); #endif #if HAVE_KVM_GETSWAPINFO if (kd == NULL) kd = kvm_openfiles(NULL, NULL, NULL, O_RDONLY, NULL); if (!kd) { snmp_log_perror("kvm_openfiles"); goto try_next; } if (kvm_getswapinfo(kd, &swapinfo, 1, 0) < 0) { snmp_log_perror("kvm_getswapinfo"); goto try_next; } #endif break; #if !defined(hpux10) && !defined(hpux11) case HRS_TYPE_MBUF: #if HAVE_SYS_POOL_H auto_nlist(MBPOOL_SYMBOL, (char *) &mbpool, sizeof(mbpool)); auto_nlist(MCLPOOL_SYMBOL, (char *) &mclpool, sizeof(mclpool)); #endif #ifdef MBSTAT_SYMBOL auto_nlist(MBSTAT_SYMBOL, (char *) &mbstat, sizeof(mbstat)); #endif break; #endif /* !hpux10 && !hpux11 */ default: break; } #endif /* !linux && !solaris2 */ } switch (vp->magic) { case HRSTORE_MEMSIZE: long_return = physmem * (pagesize / 1024); return (u_char *) & long_return; case HRSTORE_INDEX: long_return = store_idx; return (u_char *) & long_return; case HRSTORE_TYPE: if (store_idx > HRS_TYPE_FIXED_MAX) if (storageUseNFS && Check_HR_FileSys_NFS()) storage_type_id[storage_type_len - 1] = 10; /* Network Disk */ else storage_type_id[storage_type_len - 1] = 4; /* Assume fixed */ else switch (store_idx) { case HRS_TYPE_MEM: storage_type_id[storage_type_len - 1] = 2; /* RAM */ break; case HRS_TYPE_SWAP: storage_type_id[storage_type_len - 1] = 3; /* Virtual Mem */ break; case HRS_TYPE_MBUF: storage_type_id[storage_type_len - 1] = 1; /* Other */ break; default: storage_type_id[storage_type_len - 1] = 1; /* Other */ break; } *var_len = sizeof(storage_type_id); return (u_char *) storage_type_id; case HRSTORE_DESCR: if (store_idx > HRS_TYPE_FIXED_MAX) { strncpy(string, HRFS_entry->HRFS_mount, sizeof(string)-1); string[ sizeof(string)-1 ] = 0; *var_len = strlen(string); return (u_char *) string; } else { /* store_idx = store_idx - 1; */ *var_len = strlen(hrs_descr[store_idx]); return (u_char *) hrs_descr[store_idx]; } case HRSTORE_UNITS: if (store_idx > HRS_TYPE_FIXED_MAX) #if HRFS_HAS_FRSIZE long_return = stat_buf.f_frsize; #else long_return = stat_buf.f_bsize; #endif else switch (store_idx) { case HRS_TYPE_MEM: case HRS_TYPE_SWAP: #if defined(USE_SYSCTL) || defined(solaris2) long_return = pagesize; #elif defined(NBPG) long_return = NBPG; #else long_return = 1024; /* Report in Kb */ #endif break; case HRS_TYPE_MBUF: #ifdef MSIZE long_return = MSIZE; #elif defined(linux) long_return = 1024; #else long_return = 256; #endif break; default: #if NO_DUMMY_VALUES goto try_next; #endif long_return = 1024; /* As likely as any! */ break; } return (u_char *) & long_return; case HRSTORE_SIZE: if (store_idx > HRS_TYPE_FIXED_MAX) long_return = stat_buf.f_blocks; else switch (store_idx) { #if defined(linux) case HRS_TYPE_MEM: case HRS_TYPE_SWAP: long_return = linux_mem(store_idx, HRSTORE_SIZE); break; #elif defined(solaris2) case HRS_TYPE_MEM: long_return = physmem; break; case HRS_TYPE_SWAP: sol_get_swapinfo(&swap_total, &swap_used); long_return = swap_total; break; #elif defined(hpux10) || defined(hpux11) case HRS_TYPE_MEM: long_return = pst_buf.psd_rm; break; case HRS_TYPE_SWAP: long_return = pst_buf.psd_vm; break; #elif defined(darwin8) case HRS_TYPE_MEM: long_return = physmem; break; case HRS_TYPE_SWAP: long_return = -1; break; #if defined(MBSTAT_SYMBOL) case HRS_TYPE_MBUF: long_return = mbstat.m_mbufs; break; #endif #elif defined(TOTAL_MEMORY_SYMBOL) || defined(USE_SYSCTL_VM) case HRS_TYPE_MEM: long_return = memory_totals.t_rm; break; case HRS_TYPE_SWAP: #if HAVE_KVM_GETSWAPINFO long_return = swapinfo.ksw_total; #elif defined(VM_UVMEXP) long_return = uvmexp_totals.swpages; #else long_return = memory_totals.t_vm; #endif break; #else /* !linux && !solaris2 && !hpux10 && !hpux11 && ... */ case HRS_TYPE_MEM: long_return = physmem; break; case HRS_TYPE_SWAP: #if NO_DUMMY_VALUES goto try_next; #endif long_return = 0; break; #endif /* !linux && !solaris2 && !hpux10 && !hpux11 && ... */ case HRS_TYPE_MBUF: #ifdef linux long_return = linux_mem(store_idx, HRSTORE_SIZE); #elif HAVE_SYS_POOL_H long_return = 0; for (i = 0; i < sizeof(mbstat.m_mtypes) / sizeof(mbstat.m_mtypes[0]); i++) long_return += mbstat.m_mtypes[i]; #elif defined(MBSTAT_SYMBOL) && defined(STRUCT_MBSTAT_HAS_M_MBUFS) long_return = mbstat.m_mbufs; #elif defined(NO_DUMMY_VALUES) goto try_next; #else long_return = 0; #endif break; default: #if NO_DUMMY_VALUES goto try_next; #endif long_return = 1024; break; } return (u_char *) & long_return; case HRSTORE_USED: if (store_idx > HRS_TYPE_FIXED_MAX) long_return = (stat_buf.f_blocks - stat_buf.f_bfree); else switch (store_idx) { #if defined(linux) case HRS_TYPE_MBUF: case HRS_TYPE_MEM: case HRS_TYPE_SWAP: long_return = linux_mem(store_idx, HRSTORE_USED); break; #elif defined(solaris2) case HRS_TYPE_MEM: getKstatInt("unix", "system_pages", "freemem", &freemem); long_return = physmem - freemem; break; case HRS_TYPE_SWAP: sol_get_swapinfo(&swap_total, &swap_used); long_return = swap_used; break; #elif defined(hpux10) || defined(hpux11) case HRS_TYPE_MEM: long_return = pst_buf.psd_arm; break; case HRS_TYPE_SWAP: long_return = pst_buf.psd_avm; break; #elif defined(darwin8) case HRS_TYPE_MEM: long_return = vm_stat.active_count + vm_stat.inactive_count + vm_stat.wire_count; break; case HRS_TYPE_SWAP: long_return = -1; break; #if defined(MBSTAT_SYMBOL) case HRS_TYPE_MBUF: long_return = mbstat.m_mbufs; break; #endif #elif defined(TOTAL_MEMORY_SYMBOL) || defined(USE_SYSCTL_VM) case HRS_TYPE_MEM: long_return = memory_totals.t_arm; break; case HRS_TYPE_SWAP: #if HAVE_KVM_GETSWAPINFO long_return = swapinfo.ksw_used; #elif defined(VM_UVMEXP) long_return = uvmexp_totals.swpginuse; #else long_return = memory_totals.t_avm; #endif 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 = (mbpool.pr_nget - mbpool.pr_nput) * mbpool.pr_size + (mclpool.pr_nget - mclpool.pr_nput) * mclpool.pr_size; #ifdef MSIZE long_return /= MSIZE; #else long_return /= 256; #endif #elif defined(MBSTAT_SYMBOL) && defined(STRUCT_MBSTAT_HAS_M_CLUSTERS) long_return = mbstat.m_clusters - mbstat.m_clfree; /* unlikely, but... */ #elif defined(NO_DUMMY_VALUES) goto try_next; #else long_return = 0; #endif break; #endif /* !linux && !solaris2 && !hpux10 && !hpux11 && ... */ default: #if NO_DUMMY_VALUES goto try_next; #endif long_return = 1024; break; } return (u_char *) & long_return; case HRSTORE_FAILS: if (store_idx > HRS_TYPE_FIXED_MAX) #if NO_DUMMY_VALUES goto try_next; #else long_return = 0; #endif else switch (store_idx) {