diff -urNp oold/agent/mibgroup/hardware/fsys/fsys_mntctl.c nnew/agent/mibgroup/hardware/fsys/fsys_mntctl.c --- oold/agent/mibgroup/hardware/fsys/fsys_mntctl.c 2012-10-10 00:28:58.000000000 +0200 +++ nnew/agent/mibgroup/hardware/fsys/fsys_mntctl.c 2017-10-31 10:21:53.433280099 +0100 @@ -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 --- oold/agent/mibgroup/hardware/fsys/fsys_mntent.c 2017-10-30 14:50:41.784743150 +0100 +++ nnew/agent/mibgroup/hardware/fsys/fsys_mntent.c 2017-10-31 08:59:08.953114110 +0100 @@ -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 --- oold/agent/mibgroup/hardware/fsys/mnttypes.h 2017-10-30 14:50:41.741743139 +0100 +++ nnew/agent/mibgroup/hardware/fsys/mnttypes.h 2017-10-31 09:01:40.462427047 +0100 @@ -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 --- oold/agent/mibgroup/host/hr_filesys.c 2012-10-10 00:28:58.000000000 +0200 +++ nnew/agent/mibgroup/host/hr_filesys.c 2017-10-31 09:28:46.926093897 +0100 @@ -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 --- oold/agent/mibgroup/host/hr_filesys.h 2012-10-10 00:28:58.000000000 +0200 +++ nnew/agent/mibgroup/host/hr_filesys.h 2017-10-31 09:29:44.541837515 +0100 @@ -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 --- oold/agent/mibgroup/host/hrh_filesys.c 2012-10-10 00:28:58.000000000 +0200 +++ nnew/agent/mibgroup/host/hrh_filesys.c 2017-10-31 09:37:36.787634605 +0100 @@ -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 --- oold/agent/mibgroup/host/hrh_filesys.h 2012-10-10 00:28:58.000000000 +0200 +++ nnew/agent/mibgroup/host/hrh_filesys.h 2017-10-31 09:38:00.644616572 +0100 @@ -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 --- oold/agent/mibgroup/host/hrh_storage.c 2017-10-30 14:50:41.766743146 +0100 +++ nnew/agent/mibgroup/host/hrh_storage.c 2017-10-31 10:08:25.482217951 +0100 @@ -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 --- oold/agent/mibgroup/host/hr_storage.c 2012-10-10 00:28:58.000000000 +0200 +++ nnew/agent/mibgroup/host/hr_storage.c 2017-10-31 10:11:41.161064352 +0100 @@ -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 --- oold/include/net-snmp/agent/hardware/fsys.h 2012-10-10 00:28:58.000000000 +0200 +++ nnew/include/net-snmp/agent/hardware/fsys.h 2017-10-31 10:14:59.560581680 +0100 @@ -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