| diff -urNp oold/agent/mibgroup/hardware/fsys/fsys_mntctl.c nnew/agent/mibgroup/hardware/fsys/fsys_mntctl.c |
| |
| |
| @@ -43,8 +43,9 @@ _fsys_type( int type) |
| |
| case MNT_NFS: |
| case MNT_NFS3: |
| - case MNT_AUTOFS: |
| return NETSNMP_FS_TYPE_NFS; |
| + case MNT_AUTOFS: |
| + return NETSNMP_FS_TYPE_AUTOFS; |
| |
| /* |
| * The following code covers selected filesystems |
| @@ -153,10 +154,12 @@ netsnmp_fsys_arch_load( void ) |
| |
| /* |
| * Optionally skip retrieving statistics for remote mounts |
| + * AUTOFS is skipped by default |
| */ |
| - if ( (entry->flags & NETSNMP_FS_FLAG_REMOTE) && |
| + if ( ((entry->flags & NETSNMP_FS_FLAG_REMOTE) && |
| netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, |
| - NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES)) |
| + NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES)) || |
| + entry->type == (NETSNMP_FS_TYPE_AUTOFS)) |
| continue; |
| |
| if ( statfs( entry->path, &stat_buf ) < 0 ) { |
| diff -urNp oold/agent/mibgroup/hardware/fsys/fsys_mntent.c nnew/agent/mibgroup/hardware/fsys/fsys_mntent.c |
| |
| |
| @@ -145,6 +145,13 @@ _fsys_type( char *typename ) |
| !strcmp(typename, MNTTYPE_LOFS)) |
| return NETSNMP_FS_TYPE_OTHER; |
| |
| + /* Detection of AUTOFS. |
| + * This file system will be ignored by default |
| + */ |
| + else if ( !strcmp(typename, MNTTYPE_AUTOFS)) |
| + return NETSNMP_FS_TYPE_AUTOFS; |
| + |
| + |
| /* |
| * All other types are silently skipped |
| */ |
| @@ -239,6 +246,10 @@ netsnmp_fsys_arch_load( void ) |
| NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES)) |
| continue; |
| |
| + /* Skip AUTOFS enteries */ |
| + if ( entry->type == (NETSNMP_FS_TYPE_AUTOFS)) |
| + continue; |
| + |
| #ifdef irix6 |
| if ( NSFS_STATFS( entry->path, &stat_buf, sizeof(struct statfs), 0) < 0 ) |
| #else |
| diff -urNp oold/agent/mibgroup/hardware/fsys/mnttypes.h nnew/agent/mibgroup/hardware/fsys/mnttypes.h |
| |
| |
| @@ -159,6 +159,9 @@ |
| #ifndef MNTTYPE_APP |
| #define MNTTYPE_APP "app" |
| #endif |
| +#ifndef MNTTYPE_AUTOFS |
| +#define MNTTYPE_AUTOFS "autofs" |
| +#endif |
| #ifndef MNTTYPE_DEVPTS |
| #define MNTTYPE_DEVPTS "devpts" |
| #endif |
| diff -urNp oold/agent/mibgroup/host/hr_filesys.c nnew/agent/mibgroup/host/hr_filesys.c |
| |
| |
| @@ -839,6 +839,27 @@ Check_HR_FileSys_NFS (void) |
| return 0; /* no NFS file system */ |
| } |
| |
| +/* This function checks whether current file system is an AutoFs |
| + * HRFS_entry must be valid prior to calling this function |
| + * return 1 if AutoFs, 0 otherwise |
| + */ |
| +int |
| +Check_HR_FileSys_AutoFs (void) |
| +{ |
| +#if HAVE_GETFSSTAT |
| + if ( HRFS_entry->HRFS_type != NULL && |
| +#if defined(MNTTYPE_AUTOFS) |
| + !strcmp( HRFS_entry->HRFS_type, MNTTYPE_AUTOFS) |
| +#else |
| + !strcmp( HRFS_entry->HRFS_type, "autofs") |
| +#endif |
| + ) |
| +#endif /* HAVE_GETFSSTAT */ |
| + return 1; /* AUTOFS */ |
| + |
| + return 0; /* no AUTOFS */ |
| +} |
| + |
| void |
| End_HR_FileSys(void) |
| { |
| diff -urNp oold/agent/mibgroup/host/hr_filesys.h nnew/agent/mibgroup/host/hr_filesys.h |
| |
| |
| @@ -10,6 +10,7 @@ extern void Init_HR_FileSys(void); |
| extern FindVarMethod var_hrfilesys; |
| extern int Get_Next_HR_FileSys(void); |
| extern int Check_HR_FileSys_NFS(void); |
| +extern int Check_HR_FileSys_AutoFs(void); |
| |
| extern int Get_FSIndex(char *); |
| extern long Get_FSSize(char *); /* Temporary */ |
| diff -urNp oold/agent/mibgroup/host/hrh_filesys.c nnew/agent/mibgroup/host/hrh_filesys.c |
| |
| |
| @@ -427,3 +427,9 @@ Check_HR_FileSys_NFS (void) |
| { |
| return (HRFS_entry->flags & NETSNMP_FS_FLAG_REMOTE) ? 1 : 0; |
| } |
| + |
| +int |
| +Check_HR_FileSys_AutoFs (void) |
| +{ |
| + return (HRFS_entry->type == (NETSNMP_FS_TYPE_AUTOFS)) ? 1 : 0; |
| +} |
| diff -urNp oold/agent/mibgroup/host/hrh_filesys.h nnew/agent/mibgroup/host/hrh_filesys.h |
| |
| |
| @@ -10,6 +10,7 @@ extern void Init_HR_FileSys(void); |
| extern FindVarMethod var_hrhfilesys; |
| extern int Get_Next_HR_FileSys(void); |
| extern int Check_HR_FileSys_NFS(void); |
| +extern int Check_HR_FileSys_AutoFs(void); |
| |
| extern int Get_FSIndex(char *); |
| extern long Get_FSSize(char *); /* Temporary */ |
| diff -urNp oold/agent/mibgroup/host/hrh_storage.c nnew/agent/mibgroup/host/hrh_storage.c |
| |
| |
| @@ -368,9 +368,10 @@ really_try_next: |
| 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_get_boolean(NETSNMP_DS_APPLICATION_ID, |
| NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES) && |
| - Check_HR_FileSys_NFS()) |
| + Check_HR_FileSys_NFS()) || |
| + Check_HR_FileSys_AutoFs())) |
| return NULL; |
| if (store_idx <= NETSNMP_MEM_TYPE_MAX ) { |
| mem = (netsnmp_memory_info*)ptr; |
| @@ -509,7 +510,8 @@ Get_Next_HR_Store(void) |
| if (HRS_index >= 0) { |
| if (!(netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, |
| NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES) && |
| - Check_HR_FileSys_NFS())) { |
| + Check_HR_FileSys_NFS()) && |
| + !Check_HR_FileSys_AutoFs()) { |
| return HRS_index + NETSNMP_MEM_TYPE_MAX; |
| } |
| } else { |
| diff -urNp oold/agent/mibgroup/host/hr_storage.c nnew/agent/mibgroup/host/hr_storage.c |
| |
| |
| @@ -545,9 +545,10 @@ really_try_next: |
| |
| store_idx = name[ HRSTORE_ENTRY_NAME_LENGTH ]; |
| if (store_idx > NETSNMP_MEM_TYPE_MAX ) { |
| - if ( netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, |
| + if ( (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, |
| NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES) && |
| - Check_HR_FileSys_NFS()) |
| + Check_HR_FileSys_NFS()) || |
| + Check_HR_FileSys_AutoFs()) |
| return NULL; /* or goto try_next; */ |
| if (HRFS_statfs(HRFS_entry->HRFS_mount, &stat_buf) < 0) { |
| snmp_log_perror(HRFS_entry->HRFS_mount); |
| @@ -688,7 +689,8 @@ Get_Next_HR_Store(void) |
| if (HRS_index >= 0) { |
| if (!(netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, |
| NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES) && |
| - Check_HR_FileSys_NFS())) { |
| + Check_HR_FileSys_NFS()) && |
| + !Check_HR_FileSys_AutoFs()) { |
| return HRS_index + NETSNMP_MEM_TYPE_MAX; |
| } |
| } else { |
| diff -urNp oold/include/net-snmp/agent/hardware/fsys.h nnew/include/net-snmp/agent/hardware/fsys.h |
| |
| |
| @@ -41,6 +41,7 @@ typedef struct netsnmp_fsys_info_s netsn |
| #define NETSNMP_FS_TYPE_SYSFS 4 | _NETSNMP_FS_TYPE_LOCAL | _NETSNMP_FS_TYPE_SKIP_BIT |
| #define NETSNMP_FS_TYPE_TMPFS 5 | _NETSNMP_FS_TYPE_LOCAL |
| #define NETSNMP_FS_TYPE_USBFS 6 | _NETSNMP_FS_TYPE_LOCAL |
| +#define NETSNMP_FS_TYPE_AUTOFS 7 | _NETSNMP_FS_TYPE_LOCAL | _NETSNMP_FS_TYPE_SKIP_BIT |
| |
| #define NETSNMP_FS_FLAG_ACTIVE 0x01 |
| #define NETSNMP_FS_FLAG_REMOTE 0x02 |