Blame agent/mibgroup/host/hrh_filesys.c

Packit Service b38f0b
/*
Packit Service b38f0b
 *  Host Resources MIB - File System device group implementation (HAL rewrite) - hrh_filesys.c
Packit Service b38f0b
 *
Packit Service b38f0b
 */
Packit Service b38f0b
/* Portions of this file are subject to the following copyright(s).  See
Packit Service b38f0b
 * the Net-SNMP's COPYING file for more details and other copyrights
Packit Service b38f0b
 * that may apply:
Packit Service b38f0b
 */
Packit Service b38f0b
/*
Packit Service b38f0b
 * Portions of this file are copyrighted by:
Packit Service b38f0b
 * Copyright (C) 2007 Apple, Inc. All rights reserved.
Packit Service b38f0b
 * Use is subject to license terms specified in the COPYING file
Packit Service b38f0b
 * distributed with the Net-SNMP package.
Packit Service b38f0b
 */
Packit Service b38f0b
Packit Service b38f0b
#include <net-snmp/net-snmp-config.h>
Packit Service b38f0b
#include <net-snmp/net-snmp-features.h>
Packit Service b38f0b
#include <net-snmp/net-snmp-includes.h>
Packit Service b38f0b
#include <net-snmp/agent/net-snmp-agent-includes.h>
Packit Service b38f0b
#include <net-snmp/agent/hardware/memory.h>
Packit Service b38f0b
#include <net-snmp/agent/hardware/fsys.h>
Packit Service b38f0b
#include "host_res.h"
Packit Service b38f0b
#include "hrh_filesys.h"
Packit Service b38f0b
#include "hrh_storage.h"
Packit Service b38f0b
#include "hr_disk.h"
Packit Service b38f0b
#include "hr_filesys.h"
Packit Service b38f0b
#include <net-snmp/utilities.h>
Packit Service b38f0b
Packit Service b38f0b
#if HAVE_MNTENT_H
Packit Service b38f0b
#include <mntent.h>
Packit Service b38f0b
#endif
Packit Service b38f0b
#if HAVE_SYS_MNTENT_H
Packit Service b38f0b
#include <sys/mntent.h>
Packit Service b38f0b
#endif
Packit Service b38f0b
#if HAVE_SYS_MNTTAB_H
Packit Service b38f0b
#include <sys/mnttab.h>
Packit Service b38f0b
#endif
Packit Service b38f0b
#if HAVE_SYS_STATVFS_H
Packit Service b38f0b
#include <sys/statvfs.h>
Packit Service b38f0b
#endif
Packit Service b38f0b
#if HAVE_SYS_VFS_H
Packit Service b38f0b
#include <sys/vfs.h>
Packit Service b38f0b
#endif
Packit Service b38f0b
#ifdef HAVE_SYS_PARAM_H
Packit Service b38f0b
#include <sys/param.h>
Packit Service b38f0b
#endif
Packit Service b38f0b
#ifdef HAVE_SYS_MOUNT_H
Packit Service b38f0b
#include <sys/mount.h>
Packit Service b38f0b
#endif
Packit Service b38f0b
Packit Service b38f0b
#include <ctype.h>
Packit Service b38f0b
#if HAVE_STRING_H
Packit Service b38f0b
#include <string.h>
Packit Service b38f0b
#endif
Packit Service b38f0b
#if HAVE_STDLIB_H
Packit Service b38f0b
#include <stdlib.h>
Packit Service b38f0b
#endif
Packit Service b38f0b
Packit Service b38f0b
#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
Packit Service b38f0b
#include <sys/mntctl.h>
Packit Service b38f0b
#include <sys/vmount.h>
Packit Service b38f0b
#include <sys/statfs.h>
Packit Service b38f0b
#endif
Packit Service b38f0b
Packit Service b38f0b
netsnmp_feature_require(date_n_time)
Packit Service b38f0b
netsnmp_feature_require(ctime_to_timet)
Packit Service b38f0b
Packit Service b38f0b
#define HRFS_MONOTONICALLY_INCREASING
Packit Service b38f0b
Packit Service b38f0b
        /*********************
Packit Service b38f0b
	 *
Packit Service b38f0b
	 *  Kernel & interface information,
Packit Service b38f0b
	 *   and internal forward declarations
Packit Service b38f0b
	 *
Packit Service b38f0b
	 *********************/
Packit Service b38f0b
netsnmp_fsys_info *HRFS_entry;
Packit Service b38f0b
Packit Service b38f0b
#define	FULL_DUMP	0
Packit Service b38f0b
#define	PART_DUMP	1
Packit Service b38f0b
Packit Service b38f0b
static u_char  *when_dumped(char *filesys, int level, size_t * length);
Packit Service b38f0b
int             header_hrhfilesys(struct variable *, oid *, size_t *, int,
Packit Service b38f0b
                                 size_t *, WriteMethod **);
Packit Service b38f0b
Packit Service b38f0b
        /*********************
Packit Service b38f0b
	 *
Packit Service b38f0b
	 *  Initialisation & common implementation functions
Packit Service b38f0b
	 *
Packit Service b38f0b
	 *********************/
Packit Service b38f0b
Packit Service b38f0b
#define HRFSYS_INDEX		1
Packit Service b38f0b
#define HRFSYS_MOUNT		2
Packit Service b38f0b
#define HRFSYS_RMOUNT		3
Packit Service b38f0b
#define HRFSYS_TYPE		4
Packit Service b38f0b
#define HRFSYS_ACCESS		5
Packit Service b38f0b
#define HRFSYS_BOOT		6
Packit Service b38f0b
#define HRFSYS_STOREIDX		7
Packit Service b38f0b
#define HRFSYS_FULLDUMP		8
Packit Service b38f0b
#define HRFSYS_PARTDUMP		9
Packit Service b38f0b
Packit Service b38f0b
struct variable4 hrfsys_variables[] = {
Packit Service b38f0b
    {HRFSYS_INDEX,    ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
Packit Service b38f0b
     var_hrhfilesys, 2, {1, 1}},
Packit Service b38f0b
    {HRFSYS_MOUNT,    ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
Packit Service b38f0b
     var_hrhfilesys, 2, {1, 2}},
Packit Service b38f0b
    {HRFSYS_RMOUNT,   ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
Packit Service b38f0b
     var_hrhfilesys, 2, {1, 3}},
Packit Service b38f0b
    {HRFSYS_TYPE,     ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
Packit Service b38f0b
     var_hrhfilesys, 2, {1, 4}},
Packit Service b38f0b
    {HRFSYS_ACCESS,   ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
Packit Service b38f0b
     var_hrhfilesys, 2, {1, 5}},
Packit Service b38f0b
    {HRFSYS_BOOT,     ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
Packit Service b38f0b
     var_hrhfilesys, 2, {1, 6}},
Packit Service b38f0b
    {HRFSYS_STOREIDX, ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
Packit Service b38f0b
     var_hrhfilesys, 2, {1, 7}},
Packit Service b38f0b
    {HRFSYS_FULLDUMP, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
Packit Service b38f0b
     var_hrhfilesys, 2, {1, 8}},
Packit Service b38f0b
    {HRFSYS_PARTDUMP, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
Packit Service b38f0b
     var_hrhfilesys, 2, {1, 9}},
Packit Service b38f0b
};
Packit Service b38f0b
oid             hrfsys_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 3, 8 };
Packit Service b38f0b
Packit Service b38f0b
void
Packit Service b38f0b
init_hrh_filesys(void)
Packit Service b38f0b
{
Packit Service b38f0b
    REGISTER_MIB("host/hr_filesys", hrfsys_variables, variable4,
Packit Service b38f0b
                 hrfsys_variables_oid);
Packit Service b38f0b
}
Packit Service b38f0b
Packit Service b38f0b
/*
Packit Service b38f0b
 * header_hrhfilesys(...
Packit Service b38f0b
 * Arguments:
Packit Service b38f0b
 * vp     IN      - pointer to variable entry that points here
Packit Service b38f0b
 * name    IN/OUT  - IN/name requested, OUT/name found
Packit Service b38f0b
 * length  IN/OUT  - length of IN/OUT oid's 
Packit Service b38f0b
 * exact   IN      - TRUE if an exact match was requested
Packit Service b38f0b
 * var_len OUT     - length of variable or 0 if function returned
Packit Service b38f0b
 * write_method
Packit Service b38f0b
 * 
Packit Service b38f0b
 */
Packit Service b38f0b
Packit Service b38f0b
int
Packit Service b38f0b
header_hrhfilesys(struct variable *vp,
Packit Service b38f0b
                 oid * name,
Packit Service b38f0b
                 size_t * length,
Packit Service b38f0b
                 int exact, size_t * var_len, WriteMethod ** write_method)
Packit Service b38f0b
{
Packit Service b38f0b
#define HRFSYS_ENTRY_NAME_LENGTH	11
Packit Service b38f0b
    oid             newname[MAX_OID_LEN];
Packit Service b38f0b
    int             fsys_idx, LowIndex = -1;
Packit Service b38f0b
    int             result;
Packit Service b38f0b
Packit Service b38f0b
    DEBUGMSGTL(("host/hr_filesys", "var_hrhfilesys: "));
Packit Service b38f0b
    DEBUGMSGOID(("host/hr_filesys", name, *length));
Packit Service b38f0b
    DEBUGMSG(("host/hr_filesys", " %d\n", exact));
Packit Service b38f0b
Packit Service b38f0b
    memcpy((char *) newname, (char *) vp->name, vp->namelen * sizeof(oid));
Packit Service b38f0b
    /*
Packit Service b38f0b
     * Find "next" file system entry 
Packit Service b38f0b
     */
Packit Service b38f0b
Packit Service b38f0b
    Init_HR_FileSys();
Packit Service b38f0b
    for (;;) {
Packit Service b38f0b
        fsys_idx = Get_Next_HR_FileSys();
Packit Service b38f0b
        if (fsys_idx == -1)
Packit Service b38f0b
            break;
Packit Service b38f0b
        newname[HRFSYS_ENTRY_NAME_LENGTH] = fsys_idx;
Packit Service b38f0b
        result = snmp_oid_compare(name, *length, newname, vp->namelen + 1);
Packit Service b38f0b
        if (exact && (result == 0)) {
Packit Service b38f0b
            LowIndex = fsys_idx;
Packit Service b38f0b
            break;
Packit Service b38f0b
        }
Packit Service b38f0b
        if ((!exact && (result < 0)) &&
Packit Service b38f0b
            (LowIndex == -1 || fsys_idx < LowIndex)) {
Packit Service b38f0b
            LowIndex = fsys_idx;
Packit Service b38f0b
#ifdef HRFS_MONOTONICALLY_INCREASING
Packit Service b38f0b
            break;
Packit Service b38f0b
#endif
Packit Service b38f0b
        }
Packit Service b38f0b
    }
Packit Service b38f0b
Packit Service b38f0b
    if (LowIndex == -1) {
Packit Service b38f0b
        DEBUGMSGTL(("host/hr_filesys", "... index out of range\n"));
Packit Service b38f0b
        return (MATCH_FAILED);
Packit Service b38f0b
    }
Packit Service b38f0b
Packit Service b38f0b
    memcpy((char *) name, (char *) newname,
Packit Service b38f0b
           (vp->namelen + 1) * sizeof(oid));
Packit Service b38f0b
    *length = vp->namelen + 1;
Packit Service b38f0b
    *write_method = NULL;
Packit Service b38f0b
    *var_len = sizeof(long);    /* default to 'long' results */
Packit Service b38f0b
Packit Service b38f0b
    DEBUGMSGTL(("host/hr_filesys", "... get filesys stats "));
Packit Service b38f0b
    DEBUGMSGOID(("host/hr_filesys", name, *length));
Packit Service b38f0b
    DEBUGMSG(("host/hr_filesys", "\n"));
Packit Service b38f0b
Packit Service b38f0b
    return LowIndex;
Packit Service b38f0b
}
Packit Service b38f0b
Packit Service b38f0b
Packit Service b38f0b
oid             fsys_type_id[] = { 1, 3, 6, 1, 2, 1, 25, 3, 9, 1 };     /* hrFSOther */
Packit Service b38f0b
int             fsys_type_len =
Packit Service b38f0b
    sizeof(fsys_type_id) / sizeof(fsys_type_id[0]);
Packit Service b38f0b
Packit Service b38f0b
Packit Service b38f0b
Packit Service b38f0b
        /*********************
Packit Service b38f0b
	 *
Packit Service b38f0b
	 *  System specific implementation functions
Packit Service b38f0b
	 *
Packit Service b38f0b
	 *********************/
Packit Service b38f0b
Packit Service b38f0b
Packit Service b38f0b
u_char         *
Packit Service b38f0b
var_hrhfilesys(struct variable *vp,
Packit Service b38f0b
              oid * name,
Packit Service b38f0b
              size_t * length,
Packit Service b38f0b
              int exact, size_t * var_len, WriteMethod ** write_method)
Packit Service b38f0b
{
Packit Service b38f0b
    int             fsys_idx;
Packit Service b38f0b
    static char    *string;
Packit Service b38f0b
Packit Service b38f0b
    fsys_idx =
Packit Service b38f0b
        header_hrhfilesys(vp, name, length, exact, var_len, write_method);
Packit Service b38f0b
    if (fsys_idx == MATCH_FAILED)
Packit Service b38f0b
        return NULL;
Packit Service b38f0b
Packit Service b38f0b
    switch (vp->magic) {
Packit Service b38f0b
    case HRFSYS_INDEX:
Packit Service b38f0b
        long_return = fsys_idx;
Packit Service b38f0b
        return (u_char *) & long_return;
Packit Service b38f0b
    case HRFSYS_MOUNT:
Packit Service b38f0b
        free(string);
Packit Service b38f0b
        string = NULL;
Packit Service b38f0b
        *var_len = 0;
Packit Service b38f0b
        if (asprintf(&string, "%s", HRFS_entry->path) >= 0)
Packit Service b38f0b
            *var_len = strlen(string);
Packit Service b38f0b
        return (u_char *) string;
Packit Service b38f0b
    case HRFSYS_RMOUNT:
Packit Service b38f0b
        free(string);
Packit Service b38f0b
        if (HRFS_entry->flags & NETSNMP_FS_FLAG_REMOTE) {
Packit Service b38f0b
            if (asprintf(&string, "%s", HRFS_entry->device) < 0)
Packit Service b38f0b
                string = NULL;
Packit Service b38f0b
        } else {
Packit Service b38f0b
            string = strdup("");
Packit Service b38f0b
        }
Packit Service b38f0b
        *var_len = string ? strlen(string) : 0;
Packit Service b38f0b
        return (u_char *) string;
Packit Service b38f0b
Packit Service b38f0b
    case HRFSYS_TYPE:
Packit Service b38f0b
        fsys_type_id[fsys_type_len - 1] = 
Packit Service b38f0b
            (HRFS_entry->type > _NETSNMP_FS_TYPE_LOCAL ?
Packit Service b38f0b
                                 NETSNMP_FS_TYPE_OTHER : HRFS_entry->type);
Packit Service b38f0b
        *var_len = sizeof(fsys_type_id);
Packit Service b38f0b
        return (u_char *) fsys_type_id;
Packit Service b38f0b
Packit Service b38f0b
    case HRFSYS_ACCESS:
Packit Service b38f0b
	long_return = HRFS_entry->flags & NETSNMP_FS_FLAG_RONLY ? 2 : 1;
Packit Service b38f0b
        return (u_char *) & long_return;
Packit Service b38f0b
    case HRFSYS_BOOT:
Packit Service b38f0b
	long_return = HRFS_entry->flags & NETSNMP_FS_FLAG_BOOTABLE ? 1 : 2;
Packit Service b38f0b
        return (u_char *) & long_return;
Packit Service b38f0b
    case HRFSYS_STOREIDX:
Packit Service b38f0b
        long_return = fsys_idx + NETSNMP_MEM_TYPE_MAX;
Packit Service b38f0b
        return (u_char *) & long_return;
Packit Service b38f0b
    case HRFSYS_FULLDUMP:
Packit Service b38f0b
        return when_dumped(HRFS_entry->path, FULL_DUMP, var_len);
Packit Service b38f0b
    case HRFSYS_PARTDUMP:
Packit Service b38f0b
        return when_dumped(HRFS_entry->path, PART_DUMP, var_len);
Packit Service b38f0b
    default:
Packit Service b38f0b
        DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_hrhfilesys\n",
Packit Service b38f0b
                    vp->magic));
Packit Service b38f0b
    }
Packit Service b38f0b
    return NULL;
Packit Service b38f0b
}
Packit Service b38f0b
Packit Service b38f0b
Packit Service b38f0b
        /*********************
Packit Service b38f0b
	 *
Packit Service b38f0b
	 *  Internal implementation functions
Packit Service b38f0b
	 *
Packit Service b38f0b
	 *********************/
Packit Service b38f0b
static int      HRFS_index;
Packit Service b38f0b
Packit Service b38f0b
void
Packit Service b38f0b
Init_HR_FileSys(void)
Packit Service b38f0b
{
Packit Service b38f0b
    netsnmp_cache *c = netsnmp_fsys_get_cache();
Packit Service b38f0b
    netsnmp_cache_check_and_reload( c );
Packit Service b38f0b
Packit Service b38f0b
    HRFS_entry = NULL;
Packit Service b38f0b
    HRFS_index = 0;
Packit Service b38f0b
}
Packit Service b38f0b
Packit Service b38f0b
int
Packit Service b38f0b
Get_Next_HR_FileSys(void)
Packit Service b38f0b
{
Packit Service b38f0b
    if ( HRFS_entry ) {
Packit Service b38f0b
        HRFS_entry = netsnmp_fsys_get_next( HRFS_entry );
Packit Service b38f0b
    } else {     
Packit Service b38f0b
        HRFS_entry = netsnmp_fsys_get_first();
Packit Service b38f0b
    }
Packit Service b38f0b
    /* Skip "inactive" entries */
Packit Service b38f0b
    while ( HRFS_entry && !(HRFS_entry->flags & NETSNMP_FS_FLAG_ACTIVE))
Packit Service b38f0b
        HRFS_entry = netsnmp_fsys_get_next( HRFS_entry );
Packit Service b38f0b
Packit Service b38f0b
    HRFS_index = (HRFS_entry ? HRFS_entry->idx.oids[0] : -1 );
Packit Service b38f0b
    return HRFS_index;
Packit Service b38f0b
}
Packit Service b38f0b
Packit Service b38f0b
Packit Service b38f0b
Packit Service b38f0b
static u_char  *
Packit Service b38f0b
when_dumped(char *filesys, int level, size_t * length)
Packit Service b38f0b
{
Packit Service b38f0b
    time_t          dumpdate = 0, tmp;
Packit Service b38f0b
    FILE           *dump_fp;
Packit Service b38f0b
    char            line[1024];
Packit Service b38f0b
    char           *cp1, *cp2, *cp3;
Packit Service b38f0b
Packit Service b38f0b
    /*
Packit Service b38f0b
     * Look for the relevent entries in /etc/dumpdates
Packit Service b38f0b
     *
Packit Service b38f0b
     * This is complicated by the fact that disks are
Packit Service b38f0b
     *   mounted using block devices, but dumps are
Packit Service b38f0b
     *   done via the raw character devices.
Packit Service b38f0b
     * Thus the device names in /etc/dumpdates and
Packit Service b38f0b
     *   /etc/mnttab don't match.
Packit Service b38f0b
     *   These comparisons are therefore made using the
Packit Service b38f0b
     *   final portion of the device name only.
Packit Service b38f0b
     */
Packit Service b38f0b
Packit Service b38f0b
    if (*filesys == '\0')       /* No filesystem name? */
Packit Service b38f0b
        return date_n_time(NULL, length);
Packit Service b38f0b
    cp1 = strrchr(filesys, '/');        /* Find the last element of the current FS */
Packit Service b38f0b
Packit Service b38f0b
    if (cp1 == NULL)
Packit Service b38f0b
        cp1 = filesys;
Packit Service b38f0b
Packit Service b38f0b
    if ((dump_fp = fopen("/etc/dumpdates", "r")) == NULL)
Packit Service b38f0b
        return date_n_time(NULL, length);
Packit Service b38f0b
Packit Service b38f0b
    while (fgets(line, sizeof(line), dump_fp) != NULL) {
Packit Service b38f0b
        cp2 = strchr(line, ' ');        /* Start by looking at the device name only */
Packit Service b38f0b
        if (cp2 != NULL) {
Packit Service b38f0b
            *cp2 = '\0';
Packit Service b38f0b
            cp3 = strrchr(line, '/');   /* and find the last element */
Packit Service b38f0b
            if (cp3 == NULL)
Packit Service b38f0b
                cp3 = line;
Packit Service b38f0b
Packit Service b38f0b
            if (strcmp(cp1, cp3) != 0)  /* Wrong FS */
Packit Service b38f0b
                continue;
Packit Service b38f0b
Packit Service b38f0b
            ++cp2;
Packit Service b38f0b
            while (isspace(0xFF & *cp2))
Packit Service b38f0b
                ++cp2;          /* Now find the dump level */
Packit Service b38f0b
Packit Service b38f0b
            if (level == FULL_DUMP) {
Packit Service b38f0b
                if (*(cp2++) != '0')
Packit Service b38f0b
                    continue;   /* Not interested in partial dumps */
Packit Service b38f0b
                while (isspace(0xFF & *cp2))
Packit Service b38f0b
                    ++cp2;
Packit Service b38f0b
Packit Service b38f0b
                dumpdate = ctime_to_timet(cp2);
Packit Service b38f0b
                fclose(dump_fp);
Packit Service b38f0b
                return date_n_time(&dumpdate, length);
Packit Service b38f0b
            } else {            /* Partial Dump */
Packit Service b38f0b
                if (*(cp2++) == '0')
Packit Service b38f0b
                    continue;   /* Not interested in full dumps */
Packit Service b38f0b
                while (isspace(0xFF & *cp2))
Packit Service b38f0b
                    ++cp2;
Packit Service b38f0b
Packit Service b38f0b
                tmp = ctime_to_timet(cp2);
Packit Service b38f0b
                if (tmp > dumpdate)
Packit Service b38f0b
                    dumpdate = tmp;     /* Remember the 'latest' partial dump */
Packit Service b38f0b
            }
Packit Service b38f0b
        }
Packit Service b38f0b
    }
Packit Service b38f0b
Packit Service b38f0b
    fclose(dump_fp);
Packit Service b38f0b
Packit Service b38f0b
    return date_n_time(&dumpdate, length);
Packit Service b38f0b
}
Packit Service b38f0b
Packit Service b38f0b
Packit Service b38f0b
#define RAW_DEVICE_PREFIX	"/dev/rdsk"
Packit Service b38f0b
#define COOKED_DEVICE_PREFIX	"/dev/dsk"
Packit Service b38f0b
Packit Service b38f0b
char           *
Packit Service b38f0b
cook_device(char *dev)
Packit Service b38f0b
{
Packit Service b38f0b
    static char     cooked_dev[SNMP_MAXPATH+1];
Packit Service b38f0b
Packit Service b38f0b
    if (!strncmp(dev, RAW_DEVICE_PREFIX, strlen(RAW_DEVICE_PREFIX))) {
Packit Service b38f0b
        strlcpy(cooked_dev, COOKED_DEVICE_PREFIX, sizeof(cooked_dev));
Packit Service b38f0b
        strlcat(cooked_dev, dev + strlen(RAW_DEVICE_PREFIX),
Packit Service b38f0b
                sizeof(cooked_dev));
Packit Service b38f0b
    } else {
Packit Service b38f0b
        strlcpy(cooked_dev, dev, sizeof(cooked_dev));
Packit Service b38f0b
    }
Packit Service b38f0b
Packit Service b38f0b
    return cooked_dev;
Packit Service b38f0b
}
Packit Service b38f0b
Packit Service b38f0b
Packit Service b38f0b
int
Packit Service b38f0b
Get_FSIndex(char *dev)
Packit Service b38f0b
{
Packit Service b38f0b
    netsnmp_fsys_info *fsys;
Packit Service b38f0b
Packit Service b38f0b
    fsys = netsnmp_fsys_by_device( dev, NETSNMP_FS_FIND_EXIST );
Packit Service b38f0b
    return (fsys ? fsys->idx.oids[0] : -1 );
Packit Service b38f0b
}
Packit Service b38f0b
Packit Service b38f0b
long
Packit Service b38f0b
Get_FSSize(char *dev)
Packit Service b38f0b
{
Packit Service b38f0b
    netsnmp_fsys_info *fsys;
Packit Service b38f0b
Packit Service b38f0b
    fsys = netsnmp_fsys_by_device( dev, NETSNMP_FS_FIND_EXIST );
Packit Service b38f0b
    if ( fsys )       
Packit Service b38f0b
        return netsnmp_fsys_size( fsys );
Packit Service b38f0b
    else
Packit Service b38f0b
        return -1;
Packit Service b38f0b
}
Packit Service b38f0b
Packit Service b38f0b
int
Packit Service b38f0b
Check_HR_FileSys_NFS (void)
Packit Service b38f0b
{
Packit Service b38f0b
    return (HRFS_entry->flags & NETSNMP_FS_FLAG_REMOTE) ? 1 : 0;
Packit Service b38f0b
}
Packit Service 99e695
Packit Service 99e695
int
Packit Service 99e695
Check_HR_FileSys_AutoFs (void)
Packit Service 99e695
{
Packit Service 99e695
    return (HRFS_entry->type == (NETSNMP_FS_TYPE_AUTOFS)) ? 1 : 0;
Packit Service 99e695
}