components/net-snmp/patches/038.16032482.kernel_sunos5.patch
author Tomas Klacko <tomas.klacko@oracle.com>
Fri, 02 May 2014 12:23:29 +0200
branchs11u1-sru
changeset 3109 1940d0927363
parent 3022 7f059e598d55
permissions -rw-r--r--
17758422 50 or more exec options in snmpd.conf results in errors
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3022
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     1
--- net-snmp-5.4.1.old/snmplib/Makefile.in  2013-08-16 04:02:40.253396400 -0700
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     2
+++ net-snmp-5.4.1/snmplib/Makefile.in 2013-08-01 03:20:45.668713600 -0700
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     3
@@ -182,7 +182,7 @@
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     4
 TOBJS=$(LOBJS)
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     5
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     6
 # To satisfy -zdefs
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     7
-LIB_LD_ADD	=-lnsl -lsocket -L$(libdir)
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     8
+LIB_LD_ADD	=-lnsl -lsocket -ldladm -L$(libdir)
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
     9
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    10
 #
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    11
 CPPFLAGS = $(TOP_INCLUDES) -I. 	$(SNMPLIB_INCLUDES) @CPPFLAGS@
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    12
--- net-snmp-5.4.1.old/agent/mibgroup/kernel_sunos5.c	2014-02-25 06:04:49.253524010 -0500
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    13
+++ net-snmp-5.4.1/agent/mibgroup/kernel_sunos5.c	2014-02-26 05:32:10.697219080 -0500
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    14
@@ -60,6 +60,8 @@
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    15
 #include <net/if.h>
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    16
 #include <netinet/in.h>
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    17
 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    18
+#include <libdladm.h>
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    19
+#include <libdllink.h>
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    20
 /*-
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    21
  * Includes of local application header files 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    22
  */
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    23
@@ -172,7 +174,7 @@
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    24
 set_if_info(mib2_ifEntry_t *ifp, unsigned index, char *name, uint64_t flags,
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    25
             boolean_t flags_unknown, int mtu);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    26
 static int get_if_stats(mib2_ifEntry_t *ifp);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    27
-
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    28
+static int link_to_phydev(char *link, char *phy_devname);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    29
 #if defined(HAVE_IF_NAMEINDEX) && defined(NETSNMP_INCLUDE_IFTABLE_REWRITES)
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    30
 static int _dlpi_open(const char *devname);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    31
 static int _dlpi_get_phys_address(int fd, char *paddr, int maxlen,
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    32
@@ -1724,11 +1726,155 @@
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    33
 }
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    34
 #endif /*defined(HAVE_IF_NAMEINDEX)&&defined(NETSNMP_INCLUDE_IFTABLE_REWRITES)*/
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    35
 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    36
+int link_to_phydev(char *link, char *phy_devname)
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    37
+{
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    38
+        char *key = NULL;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    39
+        datalink_id_t linkid;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    40
+        dladm_phys_attr_t dpa;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    41
+        dladm_handle_t handle;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    42
+
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    43
+        if (dladm_open(&handle, NULL) != DLADM_STATUS_OK) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    44
+            DEBUGMSGTL(("kernel_sunos5","dladm_open failed "
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    45
+                       "with errno=%d\n",errno));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    46
+            return (-1);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    47
+        }
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    48
+
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    49
+        if (dladm_name2info(handle, link, &linkid, NULL, NULL, NULL) !=
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    50
+            DLADM_STATUS_OK) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    51
+                DEBUGMSGTL(("kernel_sunos5","dladm_name2info failed "
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    52
+                           "with errno=%d\n",errno));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    53
+                dladm_close(handle);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    54
+                return (-1);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    55
+        }
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    56
+
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    57
+        /*
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    58
+         * Get the device name of the link, which will be used as the door
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    59
+         * file name used to communicate with the driver.
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    60
+         */
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    61
+        if (dladm_phys_info(handle, linkid, &dpa, DLADM_OPT_ACTIVE) !=
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    62
+            DLADM_STATUS_OK) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    63
+                DEBUGMSGTL(("kernel_sunos5","dladm_phys_info failed "
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    64
+                           "with errno=%d\n",errno));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    65
+                dladm_close(handle);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    66
+                return (-1);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    67
+        }
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    68
+
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    69
+        if(dpa.dp_dev == NULL) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    70
+            DEBUGMSGTL(("kernel_sunos5","device name from "
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    71
+                       "dladm_phys_info = NULL\n")); 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    72
+            dladm_close(handle);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    73
+            return -1;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    74
+        
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    75
+        }
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    76
+        strcpy(phy_devname, dpa.dp_dev);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    77
+        dladm_close(handle); 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    78
+        
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    79
+        return 0;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    80
+}
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    81
+
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    82
+
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    83
+static int getKstatIntInstance(const char *classname, int instance,
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    84
+                               const char *statname, const char *varname,
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    85
+                               int *value)
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    86
+{
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    87
+    kstat_ctl_t    *ksc;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    88
+    kstat_t        *ks;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    89
+    kid_t           kid;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    90
+    kstat_named_t  *named;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    91
+
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    92
+    int             ret = -1;        /* fail unless ... */
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    93
+    int             lookup_stat = 0;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    94
+    
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    95
+    DEBUGMSGTL(("kernel_sunos5","\n Inside getKstatIntInstance: variable = %s",
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    96
+               varname));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    97
+
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    98
+    if (kstat_fd == 0) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
    99
+        kstat_fd = kstat_open();
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   100
+        if (kstat_fd == 0) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   101
+            snmp_log_perror("kstat_open");
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   102
+        }
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   103
+    }
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   104
+    if ((ksc = kstat_fd) == NULL) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   105
+        goto Return;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   106
+    }
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   107
+
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   108
+    ks = kstat_lookup(ksc, classname, instance, statname);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   109
+    if (ks == NULL) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   110
+        DEBUGMSGTL(("kernel_sunos5","\nclass %s, stat %s not found\n",
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   111
+                   classname ? classname : "NULL",
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   112
+                   statname ? statname : "NULL"));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   113
+        goto Return;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   114
+    }
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   115
+
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   116
+    kid = kstat_read(ksc, ks, NULL);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   117
+    if (kid == -1) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   118
+        DEBUGMSGTL(("kernel_sunos5","\ncannot read class %s stats %s\n",
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   119
+                   classname ? classname : "NULL", 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   120
+                   statname ? statname : "NULL"));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   121
+        goto Return;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   122
+    }
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   123
+
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   124
+    named = kstat_data_lookup(ks, varname);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   125
+    if (named == NULL) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   126
+         DEBUGMSGTL(("kernel_sunos5","\nno var %s for class %s stat %s\n",
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   127
+                    varname, classname ? classname : "NULL",
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   128
+                    statname ? statname : "NULL"));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   129
+         goto Return;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   130
+    }
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   131
+    ret = 0;                /* maybe successful */
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   132
+    switch (named->data_type) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   133
+#ifdef KSTAT_DATA_INT32         /* Solaris 2.6 and up */
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   134
+    case KSTAT_DATA_INT32:
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   135
+        DEBUGMSGTL(("kernel_sunos5"," value: %d\n", named->value.i32));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   136
+        *value = named->value.i32; 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   137
+        break;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   138
+    case KSTAT_DATA_UINT32:
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   139
+        DEBUGMSGTL(("kernel_sunos5"," value: %u\n", named->value.ui32));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   140
+        *value = named->value.ui32; 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   141
+        break;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   142
+    case KSTAT_DATA_INT64:
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   143
+        DEBUGMSGTL(("kernel_sunos5"," value: %ld\n", named->value.i64));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   144
+        *value = named->value.i64;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   145
+        break;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   146
+    case KSTAT_DATA_UINT64:
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   147
+        DEBUGMSGTL(("kernel_sunos5"," value: %llu\n", named->value.ui64));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   148
+        *value = named->value.ui64; 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   149
+        break;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   150
+#else
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   151
+    case KSTAT_DATA_LONG:
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   152
+        DEBUGMSGTL(("kernel_sunos5"," value: %ld\n", named->value.l));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   153
+        *value = named->value.l; 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   154
+        break;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   155
+    case KSTAT_DATA_ULONG:
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   156
+        DEBUGMSGTL(("kernel_sunos5"," value: %lu\n", named->value.ul));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   157
+        *value = named->value.ul; 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   158
+        break;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   159
+    case KSTAT_DATA_LONGLONG:
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   160
+        DEBUGMSGTL(("kernel_sunos5"," value: %lld\n", (long) named->value.ll));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   161
+        *value = (long)named->value.ll;  
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   162
+        break;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   163
+    case KSTAT_DATA_ULONGLONG:
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   164
+        DEBUGMSGTL(("kernel_sunos5"," value: %llu\n",
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   165
+                   (unsigned long) named->value.ull));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   166
+        *value = (unsigned long)named->value.ull;  
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   167
+        break;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   168
+#endif
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   169
+    default:
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   170
+        ret = -1;            /* fail */
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   171
+        break;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   172
+    }
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   173
+ Return:
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   174
+    return ret;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   175
+}
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   176
+
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   177
 static void
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   178
 set_if_info(mib2_ifEntry_t *ifp, unsigned index, char *name, uint64_t flags,
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   179
             boolean_t flags_unknown, int mtu)
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   180
 { 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   181
     boolean_t havespeed = B_FALSE;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   182
+    char phydevname[100];
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   183
+    char devbasename[100];
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   184
+    int instance = -1;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   185
 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   186
     /*
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   187
      * Set basic information 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   188
@@ -1770,6 +1916,16 @@
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   189
         /* only UPed interfaces get correct link status - if any */
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   190
         if (getKstatInt(NULL, name,"link_up",&i_tmp) == 0) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   191
             ifp->ifOperStatus = i_tmp ? 1 : 2;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   192
+        } else if(link_to_phydev(name, phydevname) == 0) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   193
+                 strcpy(devbasename, phydevname);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   194
+                 DEBUGMSGTL(("kernel_sunos5","phydevname = %s\n", phydevname));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   195
+                 _dlpi_parse_devname(devbasename, &instance);
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   196
+                 DEBUGMSGTL(("kernel_sunos5","devbasename = %s, "
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   197
+                            "instance= %d\n", devbasename, instance));
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   198
+                 if(getKstatIntInstance(devbasename, instance, "phys",
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   199
+                                        "link_up", &i_tmp) == 0) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   200
+                     ifp->ifOperStatus = i_tmp ? 1 : 2;
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   201
+                 } 
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   202
 #ifdef IFF_FAILED
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   203
         } else if (flags & IFF_FAILED) {
7f059e598d55 16032482 Net-SNMP ifOperStatus on solaris11 VM guest domain is not correct.
Lijo George<lijo.x.george@oracle.com>
parents:
diff changeset
   204
             /*