components/net-snmp/patches/048.16439911.hr_filesys.patch
author Radhika Siravara<radhika.siravara@oracle.com>
Tue, 17 Nov 2015 09:12:59 -0800
changeset 5098 77b8086c6247
parent 2034 c533107e2bd5
permissions -rw-r--r--
22082287 stunnel's use of the syslog LOG_AUTHPRIV facility level needs looking into
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2034
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     1
This fix has been submitted upstream as part of a combined patch
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     2
which has fixes for CR15758982(027.7118090.hr_filesys.patch) and this CR(16439911).
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     3
This can be found in the following location.
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     4
https://sourceforge.net/p/net-snmp/patches/1287/. 
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     5
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     6
This patch has not been accepted yet. 
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     7
--- net-snmp-5.4.1.old/agent/mibgroup/host/hr_filesys.c	2014-07-15 01:53:05.131000348 -0700
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     8
+++ net-snmp-5.4.1/agent/mibgroup/host/hr_filesys.c	2014-07-15 01:48:04.221278640 -0700
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     9
@@ -698,20 +698,25 @@
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    10
 static int 
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    11
 load_mnttab_cache_solaris()
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    12
 {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    13
-    char buf[512] = {NULL};
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    14
+    char buf[MNT_LINE_MAX] = {NULL};
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    15
     int i = 0;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    16
     struct stat file_stat;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    17
     const char **cpp;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    18
-    char *ch;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    19
+    char *ch, *token_ptr;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    20
     int token_flag = 0;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    21
     int skip_flag = 0;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    22
     int ignore_flag = 0;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    23
     int j = 0;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    24
     int lines = 0;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    25
     int ret = 0;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    26
+    int chk_mnt = -1;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    27
     HRFS_index = 0;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    28
 
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    29
-    stat(ETC_MNTTAB, &file_stat);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    30
+    if(stat(ETC_MNTTAB, &file_stat) != 0)
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    31
+    {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    32
+        DEBUGMSGTL(("host/hr_filesys", "stat failed for mnttab.\n"));
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    33
+        return -1;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    34
+    }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    35
     if (last_access == -1 || last_access != file_stat.st_mtime) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    36
         fp = fopen(ETC_MNTTAB, "r");
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    37
         if(fp == NULL)
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    38
@@ -731,7 +736,7 @@
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    39
              * which determines the valid entries.
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    40
              */
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    41
 
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    42
-            ch = strtok(buf, " \t");
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    43
+            ch = strtok_r(buf, " \t", &token_ptr);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    44
             while (ch != NULL) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    45
                 j++;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    46
                 if(j == 3) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    47
@@ -745,7 +750,7 @@
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    48
                 }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    49
                 if(token_flag)
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    50
                     break;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    51
-                ch = strtok(NULL, " \t");
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    52
+                ch = strtok_r(NULL, " \t", &token_ptr);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    53
              }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    54
              if(!skip_flag)
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    55
                  lines++;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    56
@@ -765,25 +770,43 @@
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    57
             free(HRFS_list);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    58
             return -1;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    59
         }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    60
-
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    61
-        while (i < fscount) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    62
-            if (getmntent(fp, &HRFS_entry_struct) == 0) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    63
-                 for (cpp = HRFS_ignores; *cpp != NULL; ++cpp) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    64
-                     if (!strcmp(HRFS_entry_struct.HRFS_type, *cpp)) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    65
-                         ignore_flag = 1;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    66
-                         break;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    67
-                     }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    68
+        while ((chk_mnt = getmntent(fp, &HRFS_entry_struct)) != -1) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    69
+             if(chk_mnt != 0)
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    70
+                 continue;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    71
+             for (cpp = HRFS_ignores; *cpp != NULL; ++cpp) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    72
+                 if (!strcmp(HRFS_entry_struct.mnt_fstype, *cpp)) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    73
+                     ignore_flag = 1;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    74
+                     break;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    75
                  }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    76
-
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    77
-                 if(!ignore_flag) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    78
-                     HRFS_list[i].mnt_special = strdup(HRFS_entry_struct.mnt_special);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    79
-                     HRFS_list[i].mnt_mountp = strdup(HRFS_entry_struct.mnt_mountp);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    80
-                     HRFS_list[i].mnt_fstype = strdup(HRFS_entry_struct.mnt_fstype);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    81
-                     HRFS_list[i].mnt_mntopts = strdup(HRFS_entry_struct.mnt_mntopts);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    82
-                     i++;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    83
+             }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    84
+             if(!ignore_flag) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    85
+                 if(i >= fscount)
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    86
+                 {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    87
+                    DEBUGMSGTL(("host/hr_filesys","increasing cachesize from %d to %d",fscount,i+1));
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    88
+                    HRFS_list = realloc(HRFS_list, sizeof(struct mnttab) * (i+1));
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    89
+                    fscount = i+1;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    90
+                    if(HRFS_list == NULL)
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    91
+                    {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    92
+                        DEBUGMSGTL(("host/hr_filesys","\nrealloc failed for mnttab cache.\n"));
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    93
+                        return -1;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    94
+                    }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    95
                  }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    96
-
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    97
-                 ignore_flag = 0;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    98
+                 HRFS_list[i].mnt_special = strdup(HRFS_entry_struct.mnt_special);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    99
+                 HRFS_list[i].mnt_mountp = strdup(HRFS_entry_struct.mnt_mountp);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   100
+                 HRFS_list[i].mnt_fstype = strdup(HRFS_entry_struct.mnt_fstype);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   101
+                 HRFS_list[i].mnt_mntopts = strdup(HRFS_entry_struct.mnt_mntopts);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   102
+                 i++;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   103
+             }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   104
+             ignore_flag = 0;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   105
+        }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   106
+        if(i < fscount)
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   107
+        {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   108
+            DEBUGMSGTL(("host/hr_filesys","\ndecreasing cachesize from %d to %d\n",fscount,i));
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   109
+            HRFS_list = realloc(HRFS_list, sizeof(struct mnttab) * i );
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   110
+            if(HRFS_list == NULL)
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   111
+            {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   112
+                DEBUGMSGTL(("host/hr_filesys","\nrealloc failed for mnttab cache.\n"));
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   113
+                return -1;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   114
             }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   115
         }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   116
 
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   117
@@ -925,19 +948,19 @@
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   118
         HRFS_entry = NULL;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   119
     }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   120
 #else
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   121
-    int i = 0;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   122
     if (fp != NULL)
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   123
         fclose(fp);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   124
     fp = NULL;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   125
 
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   126
 #ifdef solaris2
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   127
-while (i < fscount) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   128
-    free(HRFS_list[i].mnt_special);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   129
-    free(HRFS_list[i].mnt_mountp);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   130
-    free(HRFS_list[i].mnt_fstype);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   131
-    free(HRFS_list[i].mnt_mntopts);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   132
-    i++;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   133
-}
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   134
+    int i = 0;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   135
+    while (i < fscount) {
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   136
+        free(HRFS_list[i].mnt_special);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   137
+        free(HRFS_list[i].mnt_mountp);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   138
+        free(HRFS_list[i].mnt_fstype);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   139
+        free(HRFS_list[i].mnt_mntopts);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   140
+        i++;
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   141
+    }
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   142
     if (HRFS_list != NULL)
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   143
         free(HRFS_list);
c533107e2bd5 16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   144
     last_access = -1;